1
0
mirror of https://github.com/kmein/niveum synced 2026-03-20 20:01:08 +01:00

Configure some more

~ Use nix-writers
~ Split packages between system and user
+ Add screen locking
+ Log in automatically
+ Add redshift
+ Add dunst
~ Use X11 for the wallpaper
~ Fix vim config
This commit is contained in:
kmein
2018-09-12 00:04:55 +02:00
parent 9bd7eb2bcb
commit 456e8d5027
6 changed files with 198 additions and 117 deletions

View File

@@ -15,51 +15,72 @@ let
}; };
wallpaper = pkgs.copyPathToStore ./art/haskell-grey.png; wallpaper = pkgs.copyPathToStore ./art/haskell-grey.png;
in { in {
imports = [ "${builtins.fetchTarball https://github.com/rycee/home-manager/archive/master.tar.gz}/nixos" ]; imports = [
nixpkgs.config.allowUnfree = true; "${builtins.fetchTarball https://github.com/rycee/home-manager/archive/master.tar.gz}/nixos"
];
nixpkgs.config = {
packageOverrides =
let nix-writers = builtins.fetchGit {
url = https://cgit.krebsco.de/nix-writers/;
ref = "tags/v2.1.0";
}; in import "${nix-writers}/pkgs" pkgs;
allowUnfree = true;
};
security.sudo.enable = true; security.sudo.enable = true;
fonts.fonts = with pkgs; [ powerline-fonts roboto font-awesome-ttf fira-code eb-garamond lmodern ]; fonts.fonts = with pkgs; [ powerline-fonts roboto font-awesome-ttf fira-code eb-garamond lmodern ];
environment.systemPackages = [ theme.icon.package theme.gtk.package] ++ (with pkgs; [ environment.systemPackages = [ theme.icon.package theme.gtk.package] ++ (with pkgs; [
stack haskellPackages.hasktags
rustup
gcc tinycc ctags
python3 mypy
nodejs jo
perl ruby lua
nasm
ocaml fsharp swiProlog haskellPackages.idris
clojure racket-minimal
jdk scala
ffmpeg mpv youtubeDL ffmpeg mpv youtubeDL
inkscape imagemagick imagemagick
zathura calibre zathura
spotify gnome3.gnome-music audacity
par haskellPackages.pandoc biber
google-chrome firefox lynx w3m firefoxPackages.tor-browser google-chrome firefox lynx w3m firefoxPackages.tor-browser
lxappearance lxappearance
libnotify
xfce.terminal xfce.terminal
xorg.xbacklight pamixer xorg.xbacklight pamixer
gnome3.nautilus gnome3.nautilus
kdeconnect
git git
ripgrep tree ripgrep tree
whois whois
wget htop zip unzip tmux wget htop zip unzip tmux
texlive.combined.scheme-minimal
rlwrap rlwrap
libreoffice-fresh
pmount pmount
gnumake gnumake
franz
grive2
geogebra gnuplot maxima
]); ]);
users.users.kfm = {
createHome = true;
description = fullName;
extraGroups = [ "wheel" "networkmanager" ];
group = "users";
home = "/home/kfm";
shell = pkgs.zsh;
password = "kfm";
packages = with pkgs; [
texlive.combined.scheme-minimal
franz
grive2
gnuplot maxima
libreoffice-fresh
kdeconnect
par haskellPackages.pandoc biber
spotify gnome3.gnome-music audacity
calibre
inkscape
stack haskellPackages.hasktags
rustup
gcc tinycc ctags
python3 mypy
nodejs jo
perl ruby lua
nasm
ocaml fsharp swiProlog haskellPackages.idris
clojure racket-minimal
jdk scala
];
};
environment.shellAliases = environment.shellAliases =
let rlwrap = cmd: "${pkgs.rlwrap}/bin/rlwrap ${cmd}"; in let rlwrap = cmd: "${pkgs.rlwrap}/bin/rlwrap ${cmd}"; in
@@ -74,13 +95,23 @@ in {
external-ip = "${pkgs.dnsutils}/bin/dig +short myip.opendns.com @resolver1.opendns.com"; external-ip = "${pkgs.dnsutils}/bin/dig +short myip.opendns.com @resolver1.opendns.com";
}; };
# networking.hostname = "scardanelli"; programs.slock.enable = true;
services.xserver = { services.xserver = {
enable = true; enable = true;
layout = "de, gr, ru"; layout = "de, gr, ru";
xkbVariant = "T3, polytonic, phonetic_winkeys"; xkbVariant = "T3, polytonic, phonetic_winkeys";
xkbOptions = "terminate:ctrl_alt_bksp, grp:alt_space_toggle"; xkbOptions = "terminate:ctrl_alt_bksp, grp:alt_space_toggle";
libinput.enable = true; libinput.enable = true;
xautolock = {
enable = true;
time = 15;
locker = "${pkgs.slock}/bin/slock";
nowlocker = "${pkgs.slock}/bin/slock";
enableNotifier = true;
notifier = ''${pkgs.libnotify}/bin/notify-send "Locking soon."'';
};
/*
displayManager.lightdm = { displayManager.lightdm = {
enable = true; enable = true;
background = wallpaper; background = wallpaper;
@@ -97,14 +128,19 @@ in {
''; '';
}; };
}; };
windowManager = { */
default = "i3"; displayManager.auto = {
i3 = { enable = true;
enable = true; user = "kfm";
configFile = pkgs.writeText "i3.conf" (import ./dot/i3.nix { };
inherit pkgs defaultApplications wallpaper; desktopManager.xterm.enable = false;
}); desktopManager.wallpaper.mode = "fill";
}; windowManager.default = "i3";
windowManager.i3 = {
enable = true;
configFile = pkgs.writeText "i3.conf" (import ./dot/i3.nix {
inherit pkgs defaultApplications wallpaper;
});
}; };
}; };
i18n.consoleUseXkbConfig = true; i18n.consoleUseXkbConfig = true;
@@ -116,8 +152,16 @@ in {
fadeDelta = 2; fadeDelta = 2;
menuOpacity = "0.95"; menuOpacity = "0.95";
}; };
services.openssh.enable = true; services.openssh.enable = true;
services.redshift = {
enable = true;
latitude = "52";
longitude = "13";
temperature = { night = 25000; day = 1000; };
};
hardware.pulseaudio.enable = true; hardware.pulseaudio.enable = true;
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
@@ -139,7 +183,7 @@ in {
PROMPT="%{$fg_bold[white]%}%~ \$([[ \$? == 0 ]] && echo \"%{$fg_bold[blue]%}\" || echo \"%{$fg_bold[red]%}\")%#%{$reset_color%} " PROMPT="%{$fg_bold[white]%}%~ \$([[ \$? == 0 ]] && echo \"%{$fg_bold[blue]%}\" || echo \"%{$fg_bold[red]%}\")%#%{$reset_color%} "
RPROMPT='$(git_prompt_info)' RPROMPT='$(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}" ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[cyan]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*" ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}*"
''; '';
@@ -151,17 +195,7 @@ in {
enableCompletion = true; enableCompletion = true;
}; };
programs.vim.defaultEditor = true; # programs.vim.defaultEditor = true;
users.users.kfm = {
createHome = true;
description = fullName;
extraGroups = [ "wheel" "networkmanager" ];
group = "users";
home = "/home/kfm";
shell = pkgs.zsh;
password = "kfm";
};
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
@@ -237,7 +271,7 @@ in {
scrollbar = false; scrollbar = false;
borderWidth = 0; borderWidth = 0;
lines = 5; lines = 5;
font = "${uiFont.name} ${toString uiFont.size}"; font = "${uiFont.name} ${toString (uiFont.size + 1)}";
colors = { colors = {
window = { background = black; border = black; separator = gray.dark; }; window = { background = black; border = black; separator = gray.dark; };
rows = { rows = {
@@ -253,10 +287,60 @@ in {
services.dunst = with import ./theme.nix; { services.dunst = with import ./theme.nix; {
enable = true; enable = true;
iconTheme = { package = theme.icon.package; name = theme.icon.name; size = "64x64"; }; iconTheme = theme.icon;
settings.global = { settings = {
transparency = 20; global = {
font = "${uiFont.name} ${toString uiFont.size}"; transparency = 10;
font = "${uiFont.name} ${toString uiFont.size}";
geometry = "300x5-30+20";
frame_color = veryDark;
follow = "mouse";
indicate_hidden = true;
notification_height = 0;
separator_height = 2;
padding = 8;
horizontal_padding = 8;
separator_color = "auto";
sort = true;
markup = "full";
format = ''%a\n<b>%s</b>\n%b'';
alignment = "left";
show_age_threshold = 60;
bounce_freq = 0;
word_wrap = true;
ellipsize = "middle";
ignore_newline = false;
stack_duplicates = true;
hide_duplicate_count = false;
max_icon_size = 32;
sticky_history = true;
history_length = 20;
dmenu = "${pkgs.rofi}/bin/rofi -display-run 'dunst: ' -show run";
browser = defaultApplications.webBrowser;
verbosity = "mesg";
corner_radius = 0;
mouse_left_click = "do_action";
mouse_right_click = "close_current";
mouse_middle_click = "close_all";
};
urgency_low = {
frame_color = veryDark;
background = veryDark;
foreground = light;
timeout = 5;
};
urgency_normal = {
frame_color = veryDark;
background = light;
foreground = veryDark;
timeout = 10;
};
urgency_critical = {
frame_color = veryDark;
background = red.dark;
foreground = veryDark;
timeout = 0;
};
}; };
}; };
@@ -270,7 +354,7 @@ in {
".config/zathura/zathurarc".text = "set selection-clipboard clipboard"; ".config/zathura/zathurarc".text = "set selection-clipboard clipboard";
".config/mpv/input.conf".text = import ./dot/mpv.nix; ".config/mpv/input.conf".text = import ./dot/mpv.nix;
".config/xfce4/terminal/terminalrc".text = import ./dot/terminal.nix { inherit defaultApplications; }; ".config/xfce4/terminal/terminalrc".text = import ./dot/terminal.nix { inherit defaultApplications; };
".background-image".source = wallpaper;
}; };
}; };
} }

View File

@@ -8,4 +8,4 @@
:def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\"" :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\""
:set prompt "\o033[1m%s\o033[1;34m λ\o033[0m " :set prompt "\o033[1m%s\o033[1;34m λ\o033[0m "
'' ''
#:def djinn \x -> return $ ":!echo \"" ++ x ++ "\" | ${pkgs.haskellPackages.djinn}/bin/djinn /dev/stdin" # :def djinn \x -> return $ ":!echo \"" ++ x ++ "\" | ${pkgs.haskell.packages.ghc7102.djinn}/bin/djinn /dev/stdin"

View File

@@ -14,6 +14,7 @@ new_float pixel 1
bindsym $mod+Return exec ${defaultApplications.terminal} bindsym $mod+Return exec ${defaultApplications.terminal}
bindsym $mod+y exec ${defaultApplications.webBrowser} bindsym $mod+y exec ${defaultApplications.webBrowser}
bindsym $mod+t exec ${defaultApplications.fileManager} bindsym $mod+t exec ${defaultApplications.fileManager}
bindsym $mod+Shift+w exec ${pkgs.xautolock}/bin/xautolock -locknow
bindsym $mod+Shift+q kill bindsym $mod+Shift+q kill
bindsym $mod+Left focus left bindsym $mod+Left focus left
bindsym $mod+Down focus down bindsym $mod+Down focus down
@@ -114,5 +115,4 @@ bar {
} }
exec --no-startup-id ${pkgs.networkmanagerapplet}/bin/nm-applet exec --no-startup-id ${pkgs.networkmanagerapplet}/bin/nm-applet
exec --no-startup-id ${pkgs.feh}/bin/feh --bg-fill ${wallpaper}
'' ''

View File

@@ -1,8 +1,6 @@
{ pkgs, theme }: { pkgs, theme }:
let let
spotify_info = pkgs.writeScript "spotify.info" '' spotify_info = pkgs.writeBash "spotify.info" ''
#!/bin/bash
STATUS=$(${pkgs.dbus}/bin/dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'PlaybackStatus'|egrep -A 1 "string"|cut -b 26-|cut -d '"' -f 1|egrep -v ^$) STATUS=$(${pkgs.dbus}/bin/dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'PlaybackStatus'|egrep -A 1 "string"|cut -b 26-|cut -d '"' -f 1|egrep -v ^$)
if [[ "$STATUS" == 'Playing' ]]; then if [[ "$STATUS" == 'Playing' ]]; then
@@ -26,8 +24,7 @@ let
printf "%s \u2237 %s" "$ARTIST" "$TITLE" printf "%s \u2237 %s" "$ARTIST" "$TITLE"
''; '';
battery_info = pkgs.writeScript "battery.info" '' battery_info = pkgs.writeBash "battery.info" ''
#!/usr/bin/env bash
cd "/sys/class/power_supply/$BLOCK_INSTANCE/" cd "/sys/class/power_supply/$BLOCK_INSTANCE/"
status=$(cat status) status=$(cat status)
@@ -76,8 +73,7 @@ let
fi fi
fi fi
''; '';
volume_info = pkgs.writeScript "volume.info" '' volume_info = pkgs.writeBash "volume.info" ''
#!/usr/bin/env bash
if [[ "$BLOCK_BUTTON" == 1 ]]; then if [[ "$BLOCK_BUTTON" == 1 ]]; then
${pkgs.pamixer}/bin/pamixer -i 5 ${pkgs.pamixer}/bin/pamixer -i 5
elif [[ "$BLOCK_BUTTON" == 3 ]]; then elif [[ "$BLOCK_BUTTON" == 3 ]]; then
@@ -93,11 +89,11 @@ let
printf '\uf028 %s%%' "$volume" printf '\uf028 %s%%' "$volume"
fi fi
''; '';
fancyDate = pkgs.writeScript "fancy_date.py" '' fancyDate = pkgs.writePython3 "fancy_date.py" {} ''
#!/usr/bin/env python3
from datetime import datetime from datetime import datetime
now = datetime.now() now = datetime.now()
print(now.strftime("%d\u2009{}\u2009%Y %V").format(chr(0x2160 + (now.month - 1)))) print(now.strftime("%d\u2009{}\u2009%Y %V")
.format(chr(0x2160 + (now.month - 1))))
''; in ''; in
with theme; with theme;
'' ''

View File

@@ -2,25 +2,26 @@
with import ../theme.nix; with import ../theme.nix;
'' ''
[Configuration] [Configuration]
BackgroundDarkness=0.95
BackgroundMode=TERMINAL_BACKGROUND_TRANSPARENT
ColorBackground=${veryDark}
ColorCursor=${light}
ColorForeground=${light}
ColorPalette=${dark};${red.dark};${green.dark};${yellow.dark};${blue.dark};${magenta.dark};${cyan.dark};${light};${dark};${red.light};${green.light};${yellow.light};${blue.light};${magenta.light};${cyan.light};${light}
FontName=${terminalFont.regular.name} ${toString terminalFont.size} FontName=${terminalFont.regular.name} ${toString terminalFont.size}
MiscAlwaysShowTabs=FALSE MiscAlwaysShowTabs=FALSE
MiscBell=TRUE MiscBell=TRUE
MiscMenubarDefault=FALSE MiscBordersDefault=FALSE
MiscToolbarDefault=FALSE
MiscConfirmClose=FALSE MiscConfirmClose=FALSE
MiscCursorBlinks=TRUE MiscCursorBlinks=TRUE
MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK
MiscBordersDefault=FALSE MiscHighlightUrls=TRUE
MiscMenubarDefault=FALSE
MiscMiddleClickOpensUri=TRUE MiscMiddleClickOpensUri=TRUE
MiscMouseAutohide=FALSE
MiscMouseWheelZoom=TRUE MiscMouseWheelZoom=TRUE
MiscRewrapOnResize=TRUE MiscRewrapOnResize=TRUE
MiscToolbarDefault=FALSE
ScrollingBar=TERMINAL_SCROLLBAR_NONE
TitleMode=TERMINAL_TITLE_HIDE TitleMode=TERMINAL_TITLE_HIDE
MiscMouseAutohide=FALSE
MiscHighlightUrls=TRUE
BackgroundDarkness=0.95
BackgroundMode=TERMINAL_BACKGROUND_TRANSPARENT
ColorPalette=${dark};${red.dark};${green.dark};${yellow.dark};${blue.dark};${magenta.dark};${cyan.dark};${light};${dark};${red.light};${green.light};${yellow.light};${blue.light};${magenta.light};${cyan.light};${light}
ColorBackground=${veryDark}
ColorForeground=${light}
ColorCursor=${light}
'' ''

View File

@@ -1,41 +1,41 @@
'' ''
filetype off filetype off
if exists("g:loaded_airline") " if exists("g:loaded_airline")
set noshowmode laststatus=0 noruler set noshowmode laststatus=0 noruler
let g:airline#extensions#tabline#close_symbol = 'X' let g:airline#extensions#tabline#close_symbol = 'X'
let g:airline#extensions#tabline#enabled = 0 let g:airline#extensions#tabline#enabled = 0
let g:airline#extensions#tabline#left_alt_sep = '' let g:airline#extensions#tabline#left_alt_sep = ''
let g:airline#extensions#tabline#left_sep = '' let g:airline#extensions#tabline#left_sep = ''
let g:airline#extensions#tabline#right_alt_sep = '' let g:airline#extensions#tabline#right_alt_sep = ''
let g:airline#extensions#tabline#right_sep = '' let g:airline#extensions#tabline#right_sep = ''
let g:airline#extensions#tabline#show_close_button = 1 let g:airline#extensions#tabline#show_close_button = 1
let g:airline#extensions#tabline#show_tab_type = 0 let g:airline#extensions#tabline#show_tab_type = 0
let g:airline#extensions#tabline#tab_min_count = 2 let g:airline#extensions#tabline#tab_min_count = 2
let g:airline#extensions#tabline#tab_nr_type = 0 let g:airline#extensions#tabline#tab_nr_type = 0
let g:airline#extensions#tmuxline#enabled = 0 let g:airline#extensions#tmuxline#enabled = 0
let g:airline#extensions#wordcount#enabled = 1 let g:airline#extensions#wordcount#enabled = 1
let g:airline_left_alt_sep = '' let g:airline_left_alt_sep = ''
let g:airline_left_sep = '' let g:airline_left_sep = ''
let g:airline_right_alt_sep = '' let g:airline_right_alt_sep = ''
let g:airline_right_sep = '' let g:airline_right_sep = ''
let g:airline_section_z = '%{line(".") + 1}/%{line("$")}' let g:airline_section_z = '%{line(".")}/%{line("$")} %{col(".")}'
endif " endif
if exists("g:loaded_airline_themes") " if exists("g:loaded_airline_themes")
let g:airline_theme='simple' let g:airline_theme='simple'
endif " endif
if exists("g:loaded_syntastic_plugin") " if exists("g:loaded_syntastic_plugin")
let g:syntastic_always_populate_loc_list = 1 let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 0 let g:syntastic_auto_loc_list = 0
let g:syntastic_check_on_open = 0 let g:syntastic_check_on_open = 0
let g:syntastic_check_on_wq = 0 let g:syntastic_check_on_wq = 0
map ,s :SyntasticToggleMode<CR> map ,s :SyntasticToggleMode<CR>
endif " endif
if exists("g:loaded_gundo") " if exists("g:loaded_gundo")
nnoremap <F5> :GundoToggle<CR> nnoremap <F5> :GundoToggle<CR>
endif " endif
" if supertab " if supertab
let g:SuperTabDefaultCompletionType = '<c-n>' let g:SuperTabDefaultCompletionType = '<c-n>'
@@ -67,14 +67,14 @@ set nopaste
set list listchars=tab:\ ,extends:,precedes:,nbsp: showbreak= set list listchars=tab:\ ,extends:,precedes:,nbsp: showbreak=
set foldlevelstart=30 set foldlevelstart=30
if exists("g:loaded_netrwPlugin") " if exists("g:loaded_netrwPlugin")
let g:netrw_banner=0 let g:netrw_banner=0
let g:netrw_browse_split=4 let g:netrw_browse_split=4
let g:netrw_altv=1 " open splits to the right let g:netrw_altv=1 " open splits to the right
let g:netrw_liststyle=3 " tree view let g:netrw_liststyle=3 " tree view
let g:netrw_list_hide=netrw_gitignore#Hide() let g:netrw_list_hide=netrw_gitignore#Hide()
let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+' let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
endif " endif
call matchadd('colorcolumn', '\%101v', 100) call matchadd('colorcolumn', '\%101v', 100)
highlight folded ctermbg=black highlight folded ctermbg=black