232 lines
5.4 KiB
Nix
232 lines
5.4 KiB
Nix
|
{ config, pkgs, lib, ... }:
|
||
|
|
||
|
{
|
||
|
imports = [
|
||
|
./hardware-configuration.nix
|
||
|
# TODO:
|
||
|
];
|
||
|
|
||
|
# shacks-specific
|
||
|
networking.wireless = {
|
||
|
enable = true;
|
||
|
networks.shack.psk = "181471eb97eb23f12c6871227bc4a7b13c8f6af56dcc0d0e8b71f4d7a510cb4e";
|
||
|
};
|
||
|
networking.hostName = "shackbook";
|
||
|
|
||
|
boot.tmpOnTmpfs = true;
|
||
|
|
||
|
users.users.shack = {
|
||
|
createHome = true;
|
||
|
useDefaultShell = true;
|
||
|
home = "/home/shack";
|
||
|
uid = 9001;
|
||
|
packages = with pkgs;[
|
||
|
chromium
|
||
|
firefox
|
||
|
];
|
||
|
extraGroups = [ "audio" "wheel" ];
|
||
|
hashedPassword = "$6$KIxlQTLEnKl7cwC$LrmbwZ64Mlm7zqUUZ0EObPJMES3C0mQ6Sw7ynTuXzUo7d9EWg/k5XCGkDHMFvL/Pz19Awcv0knHB1j3dHT6fh/" ;
|
||
|
};
|
||
|
|
||
|
environment.variables = let
|
||
|
ca-bundle = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
|
||
|
in {
|
||
|
EDITOR = lib.mkForce "vim";
|
||
|
CURL_CA_BUNDLE = ca-bundle;
|
||
|
GIT_SSL_CAINFO = ca-bundle;
|
||
|
SSL_CERT_FILE = ca-bundle;
|
||
|
};
|
||
|
|
||
|
services.printing = {
|
||
|
enable = true;
|
||
|
# TODO: shack-printer
|
||
|
};
|
||
|
|
||
|
|
||
|
environment.systemPackages = with pkgs;[
|
||
|
parted
|
||
|
ddrescue
|
||
|
tmux
|
||
|
jq git gnumake htop rxvt_unicode.terminfo
|
||
|
(pkgs.vim_configurable.customize {
|
||
|
name = "vim";
|
||
|
vimrcConfig.customRC = ''
|
||
|
set nocompatible
|
||
|
syntax on
|
||
|
set list
|
||
|
set listchars=tab:▸\
|
||
|
"set list listchars=tab:>-,trail:.,extends:>
|
||
|
|
||
|
filetype off
|
||
|
filetype plugin indent on
|
||
|
|
||
|
colorscheme darkblue
|
||
|
set background=dark
|
||
|
|
||
|
set number
|
||
|
set relativenumber
|
||
|
set mouse=a
|
||
|
set ignorecase
|
||
|
set incsearch
|
||
|
set wildignore=*.o,*.obj,*.bak,*.exe,*.os
|
||
|
set textwidth=79
|
||
|
set shiftwidth=2
|
||
|
set expandtab
|
||
|
set softtabstop=2
|
||
|
set shiftround
|
||
|
set smarttab
|
||
|
set tabstop=2
|
||
|
set et
|
||
|
set autoindent
|
||
|
set backspace=indent,eol,start
|
||
|
|
||
|
|
||
|
inoremap <F1> <ESC>
|
||
|
nnoremap <F1> <ESC>
|
||
|
vnoremap <F1> <ESC>
|
||
|
|
||
|
nnoremap <F5> :UndotreeToggle<CR>
|
||
|
set undodir =~/.vim/undo
|
||
|
set undofile
|
||
|
"maximum number of changes that can be undone
|
||
|
set undolevels=1000000
|
||
|
"maximum number lines to save for undo on a buffer reload
|
||
|
set undoreload=10000000
|
||
|
|
||
|
nnoremap <F2> :set invpaste paste?<CR>
|
||
|
set pastetoggle=<F2>
|
||
|
set showmode
|
||
|
|
||
|
set showmatch
|
||
|
set matchtime=3
|
||
|
set hlsearch
|
||
|
|
||
|
autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
|
||
|
|
||
|
|
||
|
" save on focus lost
|
||
|
au FocusLost * :wa
|
||
|
|
||
|
autocmd BufRead *.json set filetype=json
|
||
|
au BufNewFile,BufRead *.mustache set syntax=mustache
|
||
|
|
||
|
cnoremap SudoWrite w !sudo tee > /dev/null %
|
||
|
|
||
|
" create Backup/tmp/undo dirs
|
||
|
set backupdir=~/.vim/backup
|
||
|
set directory=~/.vim/tmp
|
||
|
|
||
|
function! InitBackupDir()
|
||
|
let l:parent = $HOME . '/.vim/'
|
||
|
let l:backup = l:parent . 'backup/'
|
||
|
let l:tmpdir = l:parent . 'tmp/'
|
||
|
let l:undodir= l:parent . 'undo/'
|
||
|
|
||
|
|
||
|
if !isdirectory(l:parent)
|
||
|
call mkdir(l:parent)
|
||
|
endif
|
||
|
if !isdirectory(l:backup)
|
||
|
call mkdir(l:backup)
|
||
|
endif
|
||
|
if !isdirectory(l:tmpdir)
|
||
|
call mkdir(l:tmpdir)
|
||
|
endif
|
||
|
if !isdirectory(l:undodir)
|
||
|
call mkdir(l:undodir)
|
||
|
endif
|
||
|
endfunction
|
||
|
call InitBackupDir()
|
||
|
|
||
|
augroup Binary
|
||
|
" edit binaries in xxd-output, xxd is part of vim
|
||
|
au!
|
||
|
au BufReadPre *.bin let &bin=1
|
||
|
au BufReadPost *.bin if &bin | %!xxd
|
||
|
au BufReadPost *.bin set ft=xxd | endif
|
||
|
au BufWritePre *.bin if &bin | %!xxd -r
|
||
|
au BufWritePre *.bin endif
|
||
|
au BufWritePost *.bin if &bin | %!xxd
|
||
|
au BufWritePost *.bin set nomod | endif
|
||
|
augroup END
|
||
|
'';
|
||
|
vimrcConfig.vam.knownPlugins = pkgs.vimPlugins;
|
||
|
vimrcConfig.vam.pluginDictionaries = [
|
||
|
{ names = [ "undotree" ]; }
|
||
|
# vim-nix handles indentation better but does not perform sanity
|
||
|
{ names = [ "vim-addon-nix" ]; ft_regex = "^nix\$"; }
|
||
|
];
|
||
|
})
|
||
|
|
||
|
];
|
||
|
programs.bash = {
|
||
|
enableCompletion = true;
|
||
|
interactiveShellInit = ''
|
||
|
HISTCONTROL='erasedups:ignorespace'
|
||
|
HISTSIZE=900001
|
||
|
HISTFILESIZE=$HISTSIZE
|
||
|
shopt -s checkhash
|
||
|
shopt -s histappend histreedit histverify
|
||
|
shopt -s no_empty_cmd_completion
|
||
|
PS1='\[\e[1;32m\]\w\[\e[0m\] '
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
services.journald.extraConfig = ''
|
||
|
SystemMaxUse=1G
|
||
|
RuntimeMaxUse=128M
|
||
|
'';
|
||
|
nix = {
|
||
|
package = pkgs.nixUnstable;
|
||
|
optimise.automatic = true;
|
||
|
useSandbox = true;
|
||
|
gc.automatic = true;
|
||
|
};
|
||
|
|
||
|
system.autoUpgrade.enable = true;
|
||
|
|
||
|
boot.loader.grub.enable = true;
|
||
|
boot.loader.grub.version = 2;
|
||
|
boot.loader.grub.device = "/dev/sda";
|
||
|
fileSystems."/".options = [ "noatime" "nodiratime" "discard" ];
|
||
|
|
||
|
|
||
|
# gui and stuff
|
||
|
i18n = {
|
||
|
consoleFont = "Lat2-Terminus16";
|
||
|
consoleKeyMap = "us";
|
||
|
defaultLocale = "en_US.UTF-8";
|
||
|
};
|
||
|
|
||
|
fonts = {
|
||
|
enableFontDir = true;
|
||
|
enableGhostscriptFonts = true;
|
||
|
fonts = [ pkgs.terminus_font ];
|
||
|
};
|
||
|
|
||
|
time.timeZone = "Europe/Berlin";
|
||
|
services.timesyncd.enable = true;
|
||
|
|
||
|
|
||
|
# GUI
|
||
|
hardware.pulseaudio.enable = true;
|
||
|
services.xserver = {
|
||
|
enable = true;
|
||
|
displayManager.auto.enable = true;
|
||
|
displayManager.auto.user = "shack";
|
||
|
|
||
|
desktopManager.xfce.enable = true;
|
||
|
|
||
|
layout = "us";
|
||
|
xkbVariant = "altgr-intl";
|
||
|
xkbOptions = "ctrl:nocaps, eurosign:e";
|
||
|
};
|
||
|
|
||
|
services.openssh = {
|
||
|
enable = true;
|
||
|
hostKeys = [
|
||
|
{ bits = 8192; type = "ed25519"; path = "/etc/ssh/ssh_host_ed25519_key"; }
|
||
|
];
|
||
|
};
|
||
|
}
|