1
0
Fork 0

Sorry, badcommit

This commit is contained in:
Malte Brandy 2018-04-02 17:52:16 +02:00
parent e558bb6e67
commit 1cde5d1099
No known key found for this signature in database
GPG key ID: 226A2D41EF5378C9
48 changed files with 1165 additions and 342 deletions

12
.gitmodules vendored
View file

@ -4,3 +4,15 @@
[submodule "system/modules/cdarknet/hosts"]
path = system/modules/cdarknet/hosts
url = git@git.darmstadt.ccc.de:cdark.net/hosts
[submodule "home-common/rofi/zzzfoo"]
path = home-common/rofi/zzzfoo
url = https://github.com/andersju/zzzfoo.git
[submodule "home-common/graphical/rofi/zzzfoo"]
path = home-common/graphical/rofi/zzzfoo
url = https://github.com/andersju/zzzfoo.git
[submodule "modules/cdarknet/hosts"]
path = modules/cdarknet/hosts
url = git@git.darmstadt.ccc.de:cdark.net/hosts
[submodule "modules/cdarknet/nixdark"]
path = modules/cdarknet/nixdark
url = git@git.darmstadt.ccc.de:cdark.net/nixdark

20
Makefile Normal file
View file

@ -0,0 +1,20 @@
default: all
all: links config
links:
ln -sfT data/aktuell/it/config ~/config
ln -sfT data/aktuell/it/config/dotfiles ~/.dotfiles
ln -sfT data/aktuell/it/config/bin ~/bin
ln -sfT ~/data/aktuell/it/config/nixos ~/.config/nixpkgs/config
ln -sfT data/aktuell/it/secrets/password-store ~/.password-store
ln -sfT data/aktuell/it/secrets/gnupg ~/.gnupg
system-links:
sudo ln -sfT ${HOME}/data/aktuell/it/config/nixos /etc/nixos/config
config:
rcup rcrc
rcup
mkdir -p ~/.vimhist/bak
touch .chpwd-recent-dirs

210
home-common/default.nix Normal file
View file

@ -0,0 +1,210 @@
{ pkgs, ... }:
{
programs = {
home-manager = {
enable = true;
path = https://github.com/rycee/home-manager/archive/master.tar.gz;
};
git = {
enable = true;
ignores = [
".syncthing*.tmp"
"*.swp"
"*.autosave~"
"*.aux"
"*.bbl"
"*.fls"
"*.idx"
"*.ilg"
"*.ind"
"*.log"
"*.out"
"*.toc"
"*.bcf"
"*.blg"
"*.fdb*"
"*.thm"
"*.run.xml"
"*.slnc"
"*.glade~"
"__pycache__"
".hledger-web_client_session_key.aes"
".nix-gc-roots"
];
userEmail = "malte.brandy@maralorn.de";
userName = "Malte Brandy";
};
htop = {
enable = true;
hideThreads = true;
hideUserlandThreads = true;
highlightBaseName = true;
shadowOtherUsers = true;
showProgramPath = false;
treeView = true;
};
ssh = {
controlMaster = "autoask";
enable = true;
matchBlocks = let
matheGwProxy = "ssh -q gw nc -q0 %h %p";
kivaHost = "fb04386.mathematik.tu-darmstadt.de";
agHost = "fb04217.mathematik.tu-darmstadt.de";
in [
{ host = "charon"; hostname = "charon.olymp.space"; }
{ host = "*.olymp.space"; user = "maralorn"; }
{ host = "ag-forward"; hostname = agHost; proxyCommand = matheGwProxy; }
{ host = "ag"; hostname = agHost; }
{ host = "kiva-forward"; hostname = kivaHost; proxyCommand = matheGwProxy; }
{ host = "kiva"; hostname = kivaHost; }
{ host = "gw"; hostname = "gwres4.mathematik.tu-darmstadt.de"; }
{ host = "*.mathematik.tu-darmstadt.de"; user = "brandy"; }
{ host = "shells"; hostname = "shells.darmstadt.ccc.de"; }
{ host = "vorstand"; hostname = "vorstand.darmstadt.ccc.de"; }
{ host = "*.darmstadt.ccc.de"; user = "maralorn"; }
{ host = "whisky"; hostname = "whisky.w17.io"; user = "chaos"; }
];
};
zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
history = {
save = 100000;
size = 100000;
};
initExtra = ''
if [[ -z "$TMUX" ]] {
session=$(tmux ls | grep -v attached | head -1 | cut -f1 -d:)
if [[ -n $session ]] {
exec tmux attach -t $session;
} else {
exec tmux;
}
}
precmd() {
local s=$? c=( $(fc -l -D -1 ) )
if [[ $launched && "''${c[2]}" != "0:00" ]] {
eventc command $([[ ''${s} == 0 ]] && echo success || echo failure) -d command="\"''${c[3,-1]}\"" -d time="\"''${c[2]}\"" -d host="\"$HOST\""
} else {
export launched=true;
}
}
alias c=cdr
alias s='sudo systemctl'
alias u='systemctl --user'
alias m=man
alias t="tmux attach"
alias tn="tmux new-session"
alias w="develop-here"
alias ls=exa
export BROWSER=qutebrowser
export EDITOR=nvim
export MANPAGER="most -s"
'';
};
};
systemd.user.startServices = true;
imports = [
./taskwarrior.nix
../modules/force-copies.nix
];
home.packages = with pkgs; [
htop
tree
rxvt_unicode.terminfo
most
socat
nmap
tcpdump
rcm
tmux
tig
exa
fzf
pythonPackages.qrcode
ranger
(pkgs.neovim.override {
vimAlias = true;
configure = {
customRC = ''
set spell spelllang=de,en
set background=dark
set autoindent
set nosmartindent
set listchars=tab:»\ ,trail:.,extends:#
set list
set ts=3
set number
set scrolloff=5
set sidescrolloff=5
set laststatus=2
set incsearch
set mouse=
set dir=~/.vimhist/
set backupdir=~/.vimhist/bak
set showcmd
nnoremap <silent><cr> :nohlsearch<CR>
vnoremap < <gv
vnoremap > >gv
nnoremap <silent><cr> :nohlsearch<CR>
vnoremap < <gv
vnoremap > >gv u
nnoremap <C-Down> <C-W><C-J>
nnoremap <C-Up> <C-W><C-K>
nnoremap <C-Right> <C-W><C-L>
nnoremap <C-Left> <C-W><C-H>
nnoremap <A-Left> gT
nnoremap <A-Right> gt
set colorcolumn=81,121
hi ColorColumn ctermbg=black
set winaltkeys=no
set noai
set si
set sw=3
set pt=<F4>
set ignorecase
set wildmenu
set hlsearch
noremap <buffer> <silent> <Up> gk
noremap <buffer> <silent> <Down> gj
noremap <buffer> <silent> <Home> g<Home>
noremap <buffer> <silent> <End> g<End>
'';
packages.myVimPackage = with pkgs.vimPlugins; {
start = [
deoplete-nvim
vim-nix
vimtex
Syntastic
UltiSnips
airline
rust-vim
deoplete-rust
fugitive
airline
vim-snippets
vim-trailing-whitespace
vim-racer
vim-pandoc
nerdcommenter
];
};
};
withPython3 = true;
})
];
xdg.enable = true;
}

View file

@ -0,0 +1,99 @@
{ pkgs, lib, ... }:
let
tasktree = with pkgs; callPackage ../../packages/tasktree {};
in {
imports = [
./i3.nix
../../modules/home-options.nix
];
common = {
workspaces = [
"tasks"
"chat"
"mail"
"code"
"research"
"work"
"ccc"
"orga"
"leisure"
"config"
];
terminal = "xterm";
colors = {
"foreground" = "#dddbff";
"background" = "#05004a";
"black" = "#030031";
"brightBlack" = "#55508f";
"red" = "#e34b4f";
"brightRed" = "#e34b4f";
"green" = "#67b779";
"brightGreen" = "#45b75e";
"yellow" = "#ff9c00";
"brightYellow" = "#ff9c00";
"blue" = "#5c67ff";
"brightBlue" = "#5c67ff";
"magenta" = "#cb85ff";
"brightMagenta" = "#cb85ff";
"cyan" = "#17d0f4";
"brightCyan" = "#17d0f4";
"white" = "#dddbff";
"brightWhite" = "#ffffff";
};
};
home = {
packages = with pkgs; [
tasktree
];
keyboard = {
layout = "de";
variant = "neo";
options = [ "altwin:swap_lalt_lwin" ];
};
};
gtk = {
enable = true;
iconTheme = {
name = "Arc";
package = pkgs.arc-icon-theme;
};
theme = {
name = "Arc-Dark";
package = pkgs.arc-theme;
};
};
xdg.enable = true;
services = {
compton = {
enable = true;
fade = true;
fadeDelta = 5;
};
gnome-keyring = {
enable = true;
components = [
"secrets"
"ssh"
];
};
random-background = {
enable = true;
imageDirectory = "%h/data/aktuell/media/bilder/wallpaper/";
interval = "15minutes";
};
gpg-agent = {
enable = true;
};
redshift = {
enable = true;
temperature.day = 6500;
latitude = "49.86667";
longitude = "8.65";
};
screen-locker = {
enable = true;
lockCmd = "${pkgs.i3lock}/bin/i3lock -n -f -i ~/data/aktuell/media/bilder/lockscreen.png";
};
};
xsession.enable = true;
}

View file

@ -0,0 +1,212 @@
{ pkgs, lib, config, ... }:
let
eventd-pkgs = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/fe61c3b84e8e81a8ec2bf6b3ed2a0e8652cea190.tar.gz) {};
eventd = with eventd-pkgs; callPackage ../../packages/eventd {};
colors = config.common.colors;
in {
home = {
packages = with pkgs; [
eventd
];
};
systemd.user = {
services = {
eventd = {
Unit = {
Description = "eventd";
After = [ "graphical-session-pre.target" ];
PartOf = [ "graphical-session.target" ];
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
Service = {
Type="notify";
Sockets="eventd-control.socket eventd.socket";
ExecStart="${eventd}/bin/eventd --listen systemd";
ExecReload="${eventd}/bin/eventdctl reload";
};
};
};
sockets = {
eventd-control = {
Unit = {
Description = "eventd control socket";
};
Socket = {
Service = "eventd.service";
SocketMode = "0600";
ListenStream = "%t/eventd/private";
};
};
eventd = {
Unit = {
Description = "eventd sockets";
};
Socket = {
SocketMode = "0660";
ListenStream= "%t/eventd/evp";
};
};
};
};
xdg = {
configFile = {
"eventd/eventd.conf".text = lib.generators.toINI {} {
"Queue default" = {
Margin = 10;
Spacing = 2;
Limit = 10;
};
"Queue mode" = {
Anchor = "top";
Margin = 300;
Limit = 1;
};
"Queue feedback" = {
Anchor = "top";
Margin = 450;
Limit = 1;
};
"Queue workspace" = {
Anchor = "bottom-left";
Margin = 10;
Limit = 1;
};
"Queue command" = {
Anchor = "bottom-right";
Margin = 10;
Spacing = 2;
Limit = 10;
};
"Queue critical" = {
Anchor = "top";
Margin = 10;
Spacing = 2;
Limit = 10;
};
"Queue state" = {
Anchor = "top-left";
Margin = 10;
Spacing = 2;
Limit = 10;
};
"Queue music" = {
Anchor = "bottom";
Margin = 10;
Limit = 1;
};
Notification = {
Text = "\${message}";
};
NotificationBubble = {
Padding = 10;
Radius = 0;
Border = 4;
BorderBlur = 4;
Timeout = 5000;
Colour = colors.background;
};
NotificationText = {
Font = "Linux Libertine 12";
Colour = colors.foreground;
};
};
"eventd/notification.event".text = lib.generators.toINI {} {
"Event mode *" = {
Actions = "mode";
};
"Event notification *" = {
Actions = "notification";
};
"Event feedback *" = {
Actions = "feedback";
};
"Event workspace *" = {
Actions = "workspace";
};
"Event command success" = {
Actions = "command-success";
};
"Event command failure" = {
Actions = "command-failure";
};
"Event critical *" = {
Actions = "critical";
};
"Event state *" = {
Actions = "state";
};
};
"eventd/mode.action".text = lib.generators.toINI {} {
Action = {
Name = "mode";
};
Notification = {
};
NotificationBubble = {
Timeout = 0;
Queue = "mode";
Padding = 40;
MinWidth = 10;
};
NotificationText = {
Font = "Linux Libertine 40";
};
};
"eventd/command-success.action".text = lib.generators.toINI {} {
Action = {
Name = "command-success";
};
Notification = {
Text="<b>\${command}</b>\\nsucceeded after \${time} @ \${host}";
};
NotificationBubble = {
Colour = colors.black;
};
};
"eventd/command-failure.action".text = lib.generators.toINI {} {
Action = {
Name = "command-failure";
};
Notification = {
Text="<b>\${command}</b>\\nfailed after \${time} @ \${host}";
};
NotificationBubble = {
Colour = colors.red;
};
};
"eventd/workspace.action".text = lib.generators.toINI {} {
Action = {
Name = "workspace";
};
Notification = {
};
NotificationBubble = {
Queue = "workspace";
MinWidth = 10;
};
};
"eventd/feedback.action".text = lib.generators.toINI {} {
Action = {
Name = "feedback";
};
Notification = {
};
NotificationBubble = {
Timeout = 500;
Queue = "feedback";
Colour = colors.red;
};
};
"eventd/notification.action".text = lib.generators.toINI {} {
Action = {
Name = "notification";
};
Notification = {
Text = "<b>\${title}</b>\${message/^/\\n}";
};
};
};
};
}

View file

@ -0,0 +1,134 @@
{ pkgs, lib, config, ... }:
let
colors = config.common.colors;
workspaces = config.common.workspaces;
terminal = config.common.terminal;
exec = "exec --no-startup-id";
addMods = oldbindings: builtins.foldl' (newbindings: key:
newbindings // {
"Mod4+${key}" = oldbindings.${key};
"Mod3+Mod4+${key}" = oldbindings.${key};
})
{}
(builtins.attrNames oldbindings);
in {
imports = [
./eventd.nix
./rofi
./urxvt.nix
];
home.packages = [ pkgs.skippy-xd ];
xsession = {
windowManager.i3 = {
enable = true;
config = {
focus = {
followMouse = false;
forceWrapping = true;
};
colors = {
focused = {
background = colors.blue;
border = colors.blue;
childBorder = colors.blue;
indicator = colors.green;
text = colors.foreground;
};
focusedInactive = {
background = colors.background;
border = colors.background;
childBorder = colors.background;
indicator = colors.green;
text = colors.foreground;
};
unfocused = {
background = colors.background;
border = colors.background;
childBorder = colors.background;
indicator = colors.green;
text = colors.foreground;
};
urgent = {
background = colors.red;
border = colors.red;
childBorder = colors.red;
indicator = colors.green;
text = colors.foreground;
};
};
bars = [ {
mode = "hide";
colors = {
separator = colors.white;
background = colors.background;
activeWorkspace = {
background = colors.blue;
border = colors.blue;
text = colors.white;
};
bindingMode = {
background = colors.red;
border = colors.red;
text = colors.white;
};
focusedWorkspace = {
background = colors.blue;
border = colors.blue;
text = colors.white;
};
inactiveWorkspace = {
background = colors.background;
border = colors.background;
text = colors.white;
};
};
} ];
window = {
titlebar = false;
border = 1;
};
gaps = {
inner = 0;
outer = 0;
smartBorders = "off";
smartGaps = false;
};
keybindings = addMods ({
"Left" = "focus left";
"Down" = "focus down";
"Up" = "focus up";
"Right" = "focus right";
"Tab" = "${exec} rofi -show window";
"w" = "${exec} skippy-xd";
"Prior" = "focus parent";
"Next" = "focus child";
"Ctrl+Escape" = "${exec} loginctl lock-session;";
"Return" = "${exec} ${terminal}";
"p" = "${exec} rofi-pass";
"r" = "${exec} rofi -show combi";
"o" = "${exec} rofi -show web";
"n" = "${exec} rofi -show ssh";
"a" = "${exec} tasklauncher";
"shift+Left" = "move left";
"shift+Down" = "move down";
"shift+Up" = "move up";
"shift+Right" = "move right";
"d" = "split h";
"f" = "fullscreen toggle";
"t" = "layout tabbed";
"s" = "layout toggle split";
"q" = "kill";
"shift+space" = "floating toggle";
"shift+q" = "exec i3-nagbar -t warning -m 'do you want to exit i3?' -b 'yes' 'i3-msg exit'";
} // builtins.foldl' (bindings: name: let
number = toString ((builtins.length (builtins.attrNames bindings)) / 2);
in
bindings // {
"${number}" = "workspace ${number}:${name}";
"Shift+${number}" = "move container to workspace ${number}:${name}";
}) {} workspaces
);
};
};
};
}

View file

@ -0,0 +1,77 @@
{ pkgs, lib, config, ... }:
let
workspaces = config.common.workspaces;
terminal = config.common.terminal;
colors = config.common.colors;
rofiScriptWeb = pkgs.writeShellScriptBin "rofi-script-web" ''
if [[ -z $@ ]]; then
sed 's/^[0-9]*\(-r\)\? \?//;s/^\([^[:space:]]*\).*$/\1/' $HOME/.local/share/qutebrowser/history | tac
else
${pkgs.qutebrowser}/bin/qutebrowser "$1" > /dev/null &
fi
'';
rofiScriptI3 = pkgs.writeShellScriptBin "rofi-script-i3" ''
if [ -z $@ ]; then
(i3-msg -t get_workspaces | tr ',' '\n' | grep "name" | sed 's/"name":"\(.*\)"/\1/g';
echo "${builtins.concatStringsSep "\n" (builtins.foldl' (labels: name: let
number = toString (builtins.length labels);
in
labels ++ [ "${number}:${name}" ]
) [] workspaces)}") | sort -u
else
i3-msg workspace "$@" >/dev/null
fi
'';
rofiTask = pkgs.writeScriptBin "tasklauncher" (builtins.readFile ./tasklauncher.py);
# recollPython = pkgs.python2.withPackages (ps: [
# pkgs.recoll
# ]);
# rofiFind = pkgs.writeScriptBin "zzzfoo" (builtins.replaceStrings [ "/usr/bin/env python" ] [ "${recollPython}/bin/python" ] (builtins.readFile ./zzzfoo/zzzfoo));
in {
home = {
packages = with pkgs; [
rofi
rofiScriptWeb
rofiScriptI3
rofiTask
# rofiFind
rofi-pass
# recoll
];
};
programs = {
rofi = {
enable = true;
extraConfig = ''
rofi.modi: combi,window,drun,run,ssh,keys,web:rofi-script-web,i3:rofi-script-i3
rofi.sidebar-mode: true
rofi.combi-modi: window,drun,run
'';
separator = "solid";
terminal = terminal;
location = "left";
scrollbar = false;
width = 1500;
yoffset = -10;
lines = 35;
colors = {
window = {
background = colors.background;
border = colors.blue;
separator = colors.blue;
};
rows = {
normal = {
background = colors.background;
foreground = colors.foreground;
backgroundAlt = colors.black;
highlight = {
background = colors.blue;
foreground = colors.white;
};
};
};
};
};
};
}

View file

@ -0,0 +1,29 @@
#!/usr/bin/env python
import subprocess
import os
import sys
def call_task(args):
return subprocess.Popen(["task", "rc.verbose=nothing"] + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0].strip()
runtime_dir = os.getenv("XDG_RUNTIME_DIR")
if not os.path.exists(runtime_dir):
os.makedirs(runtime_dir)
filename = os.path.join(runtime_dir, "taskfilter")
if not os.path.exists(filename):
with open(filename, 'w') as filterfile:
filterfile.write("inboxall")
lastresult = ""
while True:
with open(filename) as filterfile:
filter = filterfile.read().strip()
tasklist = call_task(["default"] + filter.split())
rofi_list_cmd = ['rofi', '-dmenu', '-p', 'task: ', '-mesg', '\n'.join([lastresult, "filter: {}".format(filter)]).strip()]
rofi = subprocess.Popen(rofi_list_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
entered_command = rofi.communicate(input=tasklist)[0].decode('utf8').strip()
if entered_command == "":
sys.exit(0)
task_result = subprocess.Popen(["task"] + entered_command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
lastresult = '\n'.join([task_result[0].decode('utf8'), task_result[1].decode('utf8')]).strip()

@ -0,0 +1 @@
Subproject commit 4800c1c645b24ef7b7638f2a31f45826b8fc2973

View file

@ -0,0 +1,35 @@
{ pkgs, lib, config, ... }:
let
colors = config.common.colors;
in {
home = {
packages = with pkgs; [
rxvt_unicode-with-plugins
];
};
xresources.properties = {
"*transparent" = true;
"*tintColor" = colors.background;
"*scrollBar" = false;
"*urgentOnBell" = true;
"*background" = colors.background;
"*foreground" = colors.foreground;
"*color0" = colors.black;
"*color8" = colors.brightBlack;
"*color1" = colors.red;
"*color9" = colors.brightRed;
"*color2" = colors.green;
"*color10" = colors.brightGreen;
"*color3" = colors.yellow;
"*color11" = colors.brightYellow;
"*color4" = colors.blue;
"*color12" = colors.brightBlue;
"*color5" = colors.magenta;
"*color13" = colors.brightMagenta;
"*color6" = colors.cyan;
"*color14" = colors.brightCyan;
"*color7" = colors.white;
"*color15" = colors.brightWhite;
"*boldFont" = "";
};
}

View file

@ -9,12 +9,12 @@
collection-latexextra
collection-bibtexextra
collection-luatex
collection-mathscience
# collection-math
collection-fontsextra;
};
};
};
home.packages = [
pgks.biber
pkgs.biber
];
}

View file

@ -7,5 +7,8 @@
sshuttle
mtr
youtubeDL
cargo
rustfmt
];
}

View file

@ -0,0 +1,79 @@
{ pkgs, lib, ... }:
{
home = {
packages = with pkgs; [ taskwarrior ];
file = {
taskwarrior-on-add-hook = {
target = ".task/hooks/on-add.eventd-notification";
text = ''
#!${pkgs.python3}/bin/python
import sys
import json
import subprocess
input_string = sys.stdin.readline()
original = json.loads(input_string)
command = ['eventc', 'task', 'add']
for name, value in original.items():
command.append("-d")
if type(value) == list:
value = ', '.join(value)
command.append(name+"='"+value+"'")
subprocess.Popen(command)
print(input_string)
'';
executable = true;
};
taskwarrior-on-modify-hook = {
target = ".task/hooks/on-modify.eventd-notification";
text = ''
#!${pkgs.python3}/bin/python
import sys
import json
import subprocess
input_string = sys.stdin.readline()
original = json.loads(input_string)
input_string = sys.stdin.readline()
new = json.loads(input_string)
command = ['eventc', 'task', 'modify']
for name in set(new.keys()).union(set(original.keys())):
if new.get(name) != original.get(name) or name == "description":
value = new.get(name, "")
command.append("-d")
if type(value) == list:
value = ', '.join(value)
command.append(name+"='"+value+"'")
subprocess.Popen(command)
print(input_string)
'';
executable = true;
};
};
};
xdg = let
taskAction = name: template: {
"eventd/task-${name}.action".text = lib.generators.toINI {} {
Action = {
Name = "task-${name}";
};
Notification = {
Text = template;
};
};
};
in {
configFile = {
"eventd/task.event".text = lib.generators.toINI {} {
"Event task add" = {
Actions = "task-new";
};
"Event task modify" = {
Actions = "task-changed";
};
};
} //
taskAction "changed" "Changes in task:\\n<b>\${description}</b>\${status:+\\nStatus: }\${status}\${tags:+\\nTags: }\${tags}\${project:+\\nProject: }\${project}" //
taskAction "new" "New \${status} task\${tags:! in inbox}:\\n<b>\${description}</b>\${tags:+\\nTags: }\${tags}\${project:+\\nProject: }\${project}";
};
}

View file

@ -1,112 +0,0 @@
{ pkgs, ... }:
{
programs.home-manager = {
enable = true;
path = https://github.com/rycee/home-manager/archive/release-17.09.tar.gz;
};
systemd.user.startServices = true;
imports = [
# ./update-hm.nix
];
home.packages = with pkgs; [
htop
tree
rxvt_unicode.terminfo
socat
nmap
tcpdump
rcm
tmux
tig
exa
neovim
taskwarrior
vimPlugins.vundle
vimPlugins.deoplete-nvim
vimPlugins.vim-nix
pythonPackages.qrcode
ranger
];
programs = {
git = {
enable = true;
ignores = [
".syncthing*.tmp"
"*.swp"
"*.autosave~"
"*.aux"
"*.bbl"
"*.fls"
"*.idx"
"*.ilg"
"*.ind"
"*.log"
"*.out"
"*.toc"
"*.bcf"
"*.blg"
"*.fdb*"
"*.thm"
"*.run.xml"
"*.slnc"
"*.glade~"
"__pycache__"
".hledger-web_client_session_key.aes"
".nix-gc-roots"
];
signing = {
signByDefault = true;
};
userEmail = "malte.brandy@maralorn.de";
userName = "Malte Brandy";
};
htop.enable = true;
neovim = {
enable = true;
configure = {
};
};
rofi = {
enable = true;
};
ssh = {
controlPath = true;
enable = true;
matchBlocks = let
matheGwProxy = "ssh -q gw nc -q0 %h %p";
kivaHost = "fb04386.mathematik.tu-darmstadt.de";
agHost = "fb04217.mathematik.tu-darmstadt.de";
in [
{ host = "charon"; hostname = "charon.olymp.space"; }
{ host = "*.olymp.space"; user = "maralorn"; }
{ host = "ag-forward"; hostname = agHost; proxyCommand = matheGwProxy; }
{ host = "ag"; hostname = agHost; }
{ host = "kiva-forward"; hostname = kivaHost; proxyCommand = matheGwProxy; }
{ host = "kiva"; hostname = kivaHost; }
{ host = "gw"; hostname = "gwres4.mathematik.tu-darmstadt.de"; }
{ host = "*.mathematik.tu-darmstadt.de"; user = "brandy"; }
{ host = "shells"; hostname = "shells.darmstadt.ccc.de"; }
{ host = "vorstand"; hostname = "vorstand.darmstadt.ccc.de"; }
{ host = "*.darmstadt.ccc.de"; user = "maralorn"; }
{ host = "whisky"; hostname = "whisky.w17.io"; user = "chaos"; }
];
};
zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
history = {
path = "~/.zsh_history";
save = 100000;
size = 100000;
};
};
xdg.enable = true;
};
}

View file

@ -1,107 +0,0 @@
with import <nixpkgs> {};
{ pkgs, ... }:
let
desktopItem = makeDesktopItem {
name = "Tasktree";
exec = "tasktree";
icon = "tasktree";
comment = "A taskwarrior UI";
desktopName = "Tasktree";
genericName = "Tasktree";
categories = "Office;";
};
tasktree = with pkgs; with rustPlatform; buildRustPackage rec {
name = "tasktree";
version = "abb312f";
src = fetchFromGitHub {
rev = version;
owner = "maralorn";
repo = "tasktree";
sha256 = "139xjvi7b62k3075b4md9hdkb1xafhhiyz2yhbb96d73j1gkqs77";
};
depsSha256 = "1iw9n1bj7h1v6nz2m3y6045qjavvim3hk5cli3y8x2zakmx88mia";
cargoSha256 = "1iw9n1bj7h1v6nz2m3y6045qjavvim3hk5cli3y8x2zakmx88mia";
propagatedBuildInputs = [ gnome3.gtk atk cairo gdk_pixbuf glib pango ];
postInstall = ''
function installIcon () {
mkdir -p $out/share/icons/hicolor/$1/apps/
cp icons/$1.png $out/share/icons/hicolor/$1/apps/tasktree.png
}
installIcon "16x16"
installIcon "32x32"
installIcon "64x64"
mkdir -p $out/share/applications
ln -s ${desktopItem}/share/applications/* $out/share/applications/
'';
};
in {
home = {
packages = with pkgs; [
vimPlugins.vimtex
redshift
python27Packages.syncthing-gtk
rxvt_unicode
tasktree
tilda
];
keyboard = {
layout = "de";
variant = "neo";
};
};
gtk = {
enable = true;
iconeTheme = {
name = "Arc";
package = "arc-icon-theme";
};
theme = {
name = "Arc";
packages = "arc-theme";
};
};
service = {
compton = {
enable = true;
fade = true;
shadow = true;
};
dunst = {
enable = true;
};
gnome-keyring = {
enable = true;
components = [
"secrets"
"ssh"
];
};
gpg-agent = {
enable = true;
};
network-manager-applet.enable = true;
redshift = {
enable = true;
temperature.day = 6500;
latitude = 49.86667;
longitude = 8.65;
};
screen-locker = {
enable = true;
lockCmd = "${pkgs.i3lock}/bin/i3lock";
};
};
xsession = {
enable = true;
windowManager.i3 = {
enable = true;
gaps = {
inner = 3;
outer = 6;
smartBorders = "on";
};
};
};
}

View file

@ -1,19 +1,22 @@
{ pkgs, ... }:
let
unstable = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz) {};
in {
{
imports = [
../../snippets/everywhere.nix
../../snippets/my-systems.nix
../../snippets/graphical.nix
../../snippets/latex.nix
../../home-common
../../home-common/my-systems.nix
../../home-common/graphical
../../home-common/latex.nix
];
programs = {
firefox = {
enable = true;
package = unstable.firefox;
};
git = {
signing = {
signByDefault = true;
key = "6C3D12CD88CDF46C5EAF4D12226A2D41EF5378C9";
};
};
};
@ -21,13 +24,18 @@ in {
udiskie = {
enable = true;
notify = true;
tray = "auto";
};
};
home.packages = with pkgs; [
home.packages = with pkgs.gnome3; [
glade
] ++ (with pkgs; [
# web
chromium
acpi
arandr
qutebrowser
# tools & office
gimp
@ -39,10 +47,6 @@ in {
handbrake
octave
# dev
rustup
gnome3.glade
# look & feel
libertine
nerdfonts
@ -54,6 +58,6 @@ in {
mpd
gmpc
calibre
gnome-mpv
];
mpv
]);
}

View file

@ -1,6 +1,6 @@
{ pkgs, ... }:
let
unstable = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz) {};
habitask = with unstable; with rustPlatform; buildRustPackage rec {
habitask = with pkgs; with rustPlatform; buildRustPackage rec {
name = "habitask";
version = "0.1.0";
src = ~/data/aktuell/it/code/habitask;

View file

@ -1,7 +1,5 @@
{ pkgs, ... }:
let
unstable = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz) {};
in {
{
systemd.user = {
services.morgenreport =
let

View file

@ -1,12 +1,10 @@
{ pkgs, ... }:
let
unstable = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz) {};
in {
{
systemd.user = {
services.sort-mail =
let
sort-mail-script = pkgs.writeShellScriptBin "sort-mail" ''
${unstable.isync}/bin/mbsync -a
${pkgs.isync}/bin/mbsync -a
mv $HOME/data/aktuell/it/mail/.Move.kiva/cur/* $HOME/data/aktuell/it/mail-accounts/fb4/INBOX/new/
mv $HOME/data/aktuell/it/mail/.Move.Auslandskoordination/cur/* $HOME/data/aktuell/it/mail-accounts/auslandskoordination/Malte/bearbeiten/new/
@ -17,7 +15,7 @@ in {
mv $HOME/data/aktuell/it/mail-accounts/auslandskoordination/Malte/privat/cur/* $HOME/data/aktuell/it/mail/new/
mv $HOME/data/aktuell/it/mail-accounts/auslandskoordination/Malte/kiva/cur/* $HOME/data/aktuell/it/mail-accounts/fb4/INBOX/new/
${unstable.isync}/bin/mbsync -a
${pkgs.isync}/bin/mbsync -a
'';
in {
Unit = {

View file

@ -1,10 +1,13 @@
{ pkgs, ... }:
{
# channel = 18.03
imports = [
./admin.nix
./syncthing.nix
];
i18n = {
defaultLocale = "en_US.UTF-8";
};
@ -18,8 +21,8 @@
automatic = true;
options = "--delete-older-than 5d";
};
optimise.automatic = true;
package = pkgs.nixUnstable;
optimise.automatic = true;
};
system.autoUpgrade.enable = true;
system.autoUpgrade.dates = "22:00";

View file

@ -1,6 +1,3 @@
let
unstable = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz) {};
in
{
boot.kernel.sysctl = { "fs.inotify.max_user_watches" = 204800; };
services = {
@ -10,8 +7,6 @@ in
group = "users";
user = "maralorn";
openDefaultPorts = true;
useInotify = true;
package = unstable.syncthing;
};
};
}

View file

@ -0,0 +1,70 @@
{ config, pkgs, ... }:
{
networking = {
hostName = "apollo";
networkmanager.enable = true;
hostId = "38d29f92";
};
i18n.consoleKeyMap = "neo";
imports = [
./hardware-configuration.nix
../../modules/cdarknet
../../host-common/common.nix
];
# Use the systemd-boot EFI boot loader.
boot = {
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
supportedFilesystems = [ "exfat" ];
};
security.rngd.enable = true;
cdark_net = {
enable = true;
hostName = "maralorn_apollo";
ed25519PrivateKeyFile = /etc/nixos/local/tinc/ed25519_key.priv;
hostsDirectory = /etc/nixos/config/modules/cdarknet/hosts;
ip6address = "fd23:42:cda:4342::2";
ip4address = "172.20.71.2";
};
hardware.pulseaudio.enable = true;
services = {
# printing = {
# enable = true;
# drivers = [pkgs.hplip];
# };
# gnome3 = {
# gnome-keyring.enable = true;
# evolution-data-server.enable = true;
# gnome-disks.enable = true;
# };
xserver = {
enable = true;
layout = "de";
xkbVariant = "neo";
libinput.enable = true;
desktopManager.gnome3.enable = true;
displayManager.auto = {
enable = true;
user = "maralorn";
};
config = ''
Section "InputClass"
Identifier "Enable libinput for TrackPoint"
MatchIsPointer "on"
Driver "libinput"
EndSection
'';
};
};
#virtualisation.docker.enable = true;
}

View file

@ -1,8 +1,4 @@
{ config, pkgs, ... }:
let
unstable = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz) {};
in
{
networking.firewall.allowedTCPPorts = [ 25 587 443 993 ];

View file

@ -1,8 +1,5 @@
{ config, pkgs, ... }:
let
unstable = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/f022cc679486ec5f21a13dab9a336ba1f5543910.tar.gz) {};
in
{
networking.firewall.allowedTCPPorts = [ 8448 ];
@ -52,7 +49,7 @@ in
# Synapse
matrix-synapse = {
enable = true;
package = unstable.matrix-synapse;
package = pkgs.matrix-synapse;
server_name = "maralorn.de";
database_type = "psycopg2";
max_upload_size = "30M";

@ -0,0 +1 @@
Subproject commit 6a05b795d7333f23212427501c6d9dfbe1b73170

35
modules/force-copies.nix Normal file
View file

@ -0,0 +1,35 @@
{ lib, config, ... }:
let
paths = config.home.forceCopies.paths;
disableCollisionCheck = path: ''
if [[ -a $HOME/${path} ]]; then
echo "Removing $HOME/${path}" because it is probably from a previous generation.
rm -f $HOME/${path}
fi
'';
copyPath = path: ''
canonical=`readlink -f $newGenPath/home-files/${path}`
if [[ ! -a $canonical ]]; then
echo "File $newGenPath/home-files/${path} does not exist."
exit 1
fi
if [[ ! -a $HOME/${path} ]]; then
echo "There is no file at $HOME/${path} this is weird."
exit 1
fi
echo "Overwriting $HOME/${path}"
cp --remove-destination -T $canonical $HOME/${path};
'';
in with lib;
{
options.home.forceCopies.paths = mkOption {
default = [];
type = types.listOf types.str;
};
config.home.activation = {
deleteForcedCopies = config.lib.dag.entryBefore ["checkLinkTargets"]
(builtins.concatStringsSep "\n" (builtins.map disableCollisionCheck paths));
forceCopies = config.lib.dag.entryAfter ["linkGeneration"]
(builtins.concatStringsSep "\n" (builtins.map copyPath paths));
};
}

21
modules/home-options.nix Normal file
View file

@ -0,0 +1,21 @@
{ lib, config, pkgs, ... }:
with lib;
{
options = {
common = {
terminal = mkOption {
default = "urxvt";
type = types.str;
};
colors = mkOption {
default = {};
type = types.attrs;
};
workspaces = mkOption {
default = [ "configure some workspaces" ];
type = types.listOf types.str;
};
};
};
}

View file

@ -0,0 +1,18 @@
{ fetchFromGitHub, stdenv, libxcb, xcbutil, xcbutilwm }:
stdenv.mkDerivation rec {
name = "blezz";
version = "8643772";
src = fetchFromGitHub {
owner = "Blezzing";
repo = "blezz";
rev = version;
sha256 = "0kgbzkx49018wxli4agf2vwyq9lnin1qvh1hs6wr59384hmvrbnv";
};
buildInputs = [ libxcb xcbutil xcbutilwm ];
patchPhase = ''
grep -v /usr/lib makefile > makefile1
mv makefile1 makefile
sed s,/usr/bin/,$prefix/usr/bin/, -i makefile
mkdir -p $prefix/usr/bin
'';
}

View file

@ -0,0 +1,38 @@
{ fetchFromGitHub, stdenv, ninja, meson, pkgconfig, glib, cairo, gdk_pixbuf, glib_networking, pango, libudev, xorg, libxslt, docbook_xml_xslt, git, libuuid, dbus, libsoup, docbook_xml_dtd_45, docbook5_xsl, gettext, autoconf, libtool, utillinux, libxkbcommon }:
stdenv.mkDerivation rec {
name = "eventd";
version = "279d3c3";
src = fetchFromGitHub {
owner = "sardemff7";
repo = "eventd";
rev = version;
sha256 = "162gr3agmjn6d0wdj3lixv8qfvgfm9qg3wphbvwywdp4qcwvnjz8";
fetchSubmodules = true;
};
patchPhase = ''
sed s/0.44.1/0.43.0/ -i meson.build
'';
buildInputs = [
ninja
meson
pkgconfig
glib
cairo
gdk_pixbuf
glib_networking
pango
libudev
xorg.libxcb
xorg.xcbutil
xorg.xcbutilwm
libxkbcommon
libxslt
docbook_xml_xslt
docbook_xml_dtd_45
libuuid
dbus
];
preConfigure = ''
export mesonFlags="-Denable-systemd=true -Denable-introspection=false -Denable-nd-wayland=false -Denable-im=false -Denable-sound=false -Ddbussessionservicedir=$prefix/share/dbus-1/services -Dsystemduserunitdir=$prefix/lib/systemd/user -Dsystemdsystemunitdir=$prefix/lib/systemd/system"
'';
}

View file

@ -0,0 +1,38 @@
{ rustPlatform, gnome3, atk, cairo, gdk_pixbuf, glib, pango, makeDesktopItem, fetchFromGitHub }:
let
desktopItem = makeDesktopItem {
name = "Tasktree";
exec = "tasktree";
icon = "tasktree";
comment = "A taskwarrior UI";
desktopName = "Tasktree";
genericName = "Tasktree";
categories = "Office;";
};
in
with rustPlatform; buildRustPackage rec {
name = "tasktree";
version = "abb312f";
src = fetchFromGitHub {
rev = version;
owner = "maralorn";
repo = "tasktree";
sha256 = "139xjvi7b62k3075b4md9hdkb1xafhhiyz2yhbb96d73j1gkqs77";
};
depsSha256 = "14acvigygrrqyvxra2n01vpadc3mcf8981jrggpvwfbz58jrsa7h";
cargoSha256 = "14acvigygrrqyvxra2n01vpadc3mcf8981jrggpvwfbz58jrsa7h";
propagatedBuildInputs = [ gnome3.gtk atk cairo gdk_pixbuf glib pango ];
postInstall = ''
function installIcon () {
mkdir -p $out/share/icons/hicolor/$1/apps/
cp icons/$1.png $out/share/icons/hicolor/$1/apps/tasktree.png
}
installIcon "16x16"
installIcon "32x32"
installIcon "64x64"
mkdir -p $out/share/applications
ln -s ${desktopItem}/share/applications/* $out/share/applications/
'';
}

View file

@ -1,80 +0,0 @@
{ config, pkgs, ... }:
{
networking = {
hostName = "apollo";
networkmanager.enable = true;
hostId = "38d29f92";
};
i18n.consoleKeyMap = "neo";
imports = [
./hardware-configuration.nix
../../modules/cdarknet
../../snippets/common.nix
];
# Use the systemd-boot EFI boot loader.
boot = {
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
supportedFilesystems = [ "zfs" "exfat" ];
};
environment.systemPackages = with pkgs; [
zfstools
gnome3.caribou
xournal
];
security.rngd.enable = true;
programs.gnupg.agent = {
enable = true;
};
cdark_net = {
enable = true;
hostName = "maralorn_apollo";
ed25519PrivateKeyFile = /etc/nixos/local/tinc/ed25519_key.priv;
hostsDirectory = /etc/nixos/config/modules/cdarknet/hosts;
ip6address = "fd23:42:cda:4342::2";
ip4address = "172.20.71.2";
};
services = {
printing = {
enable = true;
drivers = [pkgs.hplip];
};
xserver = {
enable = true;
layout = "de";
xkbVariant = "neo";
#desktopManager.gnome3.enable = true;
#windowManager.i3.enable = true;
# displayManager.gdm = {
# autoLogin = {
# delay = 3;
# enable = true;
# user = "maralorn";
# };
# wayland = false;
# enable = true;
# };
libinput.enable = true;
config = ''
Section "InputClass"
Identifier "Enable libinput for TrackPoint"
MatchIsPointer "on"
Driver "libinput"
EndSection
'';
};
};
#virtualisation.docker.enable = true;
}

@ -1 +0,0 @@
Subproject commit 2bc5760b0c12502073a26314156e5afc1a6800a0