diff --git a/entropy/.gitconfig b/entropy/.gitconfig index 0055376..5aa3dbf 100644 --- a/entropy/.gitconfig +++ b/entropy/.gitconfig @@ -24,4 +24,4 @@ [delta "decorations"] commit-decoration-style = bold yellow box ul file-style = bold yellow ul - file-decoration-style = none \ No newline at end of file + file-decoration-style = none diff --git a/entropy/.vimrc b/entropy/.vimrc index 2e496fe..b9e4ea9 100644 --- a/entropy/.vimrc +++ b/entropy/.vimrc @@ -15,7 +15,8 @@ call plug#begin('~/.vim/plugged') " Make sure you use single quotes " Shorthand notation; fetches https://github.com/morhetz/gruvbox -Plug 'morhetz/gruvbox' +"Plug 'morhetz/gruvbox' +Plug 'dkasak/gruvbox' " Any valid git URL is allowed Plug 'https://github.com/scrooloose/nerdcommenter.git' @@ -26,6 +27,9 @@ Plug 'cespare/vim-toml', { 'for': 'toml' } Plug 'keith/swift.vim', { 'for': 'swift' } Plug 'neovimhaskell/haskell-vim', { 'for': 'haskell' } +" Lingua Franca +Plug 'lf-lang/lingua-franca.vim' + Plug 'vim-syntastic/syntastic' Plug 'vim-airline/vim-airline' Plug 'tpope/vim-fugitive' @@ -36,6 +40,9 @@ Plug 'editorconfig/editorconfig-vim' Plug 'LnL7/vim-nix' Plug 'preservim/nerdtree' +" wayland clipboard +Plug 'jasonccox/vim-wayland-clipboard' + " Plugin outside ~/.vim/plugged with post-update hook Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' @@ -54,6 +61,15 @@ set laststatus=2 let g:airline#extensions#tabline#enabled = 1 let g:airline_powerline_fonts = 1 +" set haskell highlighting +let g:haskell_enable_quantification = 1 " to enable highlighting of `forall` +let g:haskell_enable_recursivedo = 1 " to enable highlighting of `mdo` and `rec` +let g:haskell_enable_arrowsyntax = 1 " to enable highlighting of `proc` +let g:haskell_enable_pattern_synonyms = 1 " to enable highlighting of `pattern` +let g:haskell_enable_typeroles = 1 " to enable highlighting of type roles +let g:haskell_enable_static_pointers = 1 " to enable highlighting of `static` +let g:haskell_backpack = 1 " to enable highlighting of backpack keywords + " possible setting as alternative for easymotion " let g:sneak#label = 1 diff --git a/entropy/alacritty/alacritty.yml b/entropy/alacritty/alacritty.yml index 5cb512b..2df84fa 100644 --- a/entropy/alacritty/alacritty.yml +++ b/entropy/alacritty/alacritty.yml @@ -111,7 +111,7 @@ font: # - (macOS) Menlo # - (Linux/BSD) monospace # - (Windows) Consolas - family: Hack Nerd Font + family: Hack Nerd Font #Iosevka # The `style` can be specified to pick a specific face. #style: Regular diff --git a/entropy/initialize.sh b/entropy/initialize.sh index 01b2428..9a14eb2 100755 --- a/entropy/initialize.sh +++ b/entropy/initialize.sh @@ -49,6 +49,9 @@ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.c ln -s $PWD/.vimrc ~/.vimrc vim -c "PlugInstall" +# set up emacs +printf "\033[33m[info] Setting up emacs\033[39m" +git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d # set up mail printf "\033[33m[info] Configuring Neomutt - your GPG password may be required.\033[39m" diff --git a/entropy/nixos/configuration.nix b/entropy/nixos/configuration.nix index c3b0ddc..e3024a4 100644 --- a/entropy/nixos/configuration.nix +++ b/entropy/nixos/configuration.nix @@ -16,6 +16,7 @@ ./modules/sway.nix # old i3 compositor # ./modules/i3.nix + ./modules/backup.nix ]; # set up LUKS discovery @@ -33,7 +34,10 @@ #powerManagement.powertop.enable = true; networking.hostName = "entropy"; # Define your hostname. - networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.wireless = { + enable = true; # Enables wireless support via wpa_supplicant. + interfaces = [ "wlp0s20f3" ]; + }; # Set your time zone. time.timeZone = "Europe/Berlin"; @@ -153,7 +157,7 @@ enable = true; package = pkgs.bluezFull; # enable A2DP - config = { + settings = { General = { Enable = "Source,Sink,Media"; Disable = "Socket"; @@ -197,12 +201,24 @@ # virtualisation.virtualbox.host.enableExtensionPack = true; users.extraGroups.vboxusers.members = [ "felix" ]; + # enable docker on-demand + virtualisation.docker.enable = true; + virtualisation.docker.enableOnBoot = false; + users.extraGroups.docker.members = [ "felix" ]; + + # add overlay for the LF IDE + #nixpkgs.overlays = [ + #(self: super: { + #lingua-franca-ide = super.callPackage ./overlays/lf-eclipse.nix { }; + #}) + #]; # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ ## basic command line tooling wget vim + emacs w3m htop bat @@ -224,6 +240,8 @@ ## password management pass pinentry-curses + ## admin foo + ansible ## mail isync msmtp @@ -235,28 +253,32 @@ cargo-watch # python3 stack - haskellPackages.haskell-language-server + haskell-language-server gcc binutils-unwrapped gnumake cmake gdb + ccls valgrind heaptrack + #lingua-franca-ide ## I heard you like man pages? man-pages ## git and friends git gitAndTools.delta gitAndTools.gitui + ## GitHub actions + act ## terminal, browsers, text editing kitty vscodium eclipses.eclipse-platform typora firefox-wayland - torbrowser - next + # torbrowser + #next rstudio ## time tracking watson @@ -290,25 +312,24 @@ slack tdesktop signal-desktop - (weechat.override { - configure = { availablePlugins, ... }: { - scripts = with pkgs.weechatScripts; [ - wee-slack - # weechat-matrix - ]; - }; - # extraBuildInputs = [ python38Packages.Logbook ]; - }) + weechat ## networking openconnect + + ## maybe screensharing??? + pipewire + xdg-desktop-portal-wlr ]; + #services.emacs.enable = true; + # install fonts fonts.fonts = with pkgs; [ font-awesome fira fira-code fira-code-symbols + iosevka roboto roboto-mono roboto-slab @@ -356,7 +377,7 @@ # periodic automated mail fetching systemd.user.services.mailfetch = { enable = true; - description = "Automatically fetches for new mail when the network is up"; + description = "Automatically fetches new mails."; wantedBy = [ "graphical-session.target" ]; after = [ "graphical-session.target" ]; serviceConfig = { @@ -382,7 +403,7 @@ # this value at the release version of the first install of this system. # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "20.09"; # Did you read the comment? + system.stateVersion = "21.05"; # Did you read the comment? } diff --git a/entropy/nixos/modules/backup.nix b/entropy/nixos/modules/backup.nix new file mode 100644 index 0000000..c7ac6b6 --- /dev/null +++ b/entropy/nixos/modules/backup.nix @@ -0,0 +1,31 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + borgbackup + ]; + + services.borgbackup.jobs.rootBackup = { + paths = "/"; + exclude = [ "/nix" "/home/felix/mnt" "/home/*/.cache" "/home/*/.stack" "/home/**/.stack_work" ]; + repo = "/home/felix/mnt/entropy-backup"; + removableDevice = true; + doInit = true; + + encryption = { + mode = "repokey-blake2"; + passCommand = "cat /home/felix/.config/entropy-backup"; + }; + compression = "auto,lzma"; + startAt = [ ]; + # startAt = "weekly"; + + prune.keep = { + within = "1d"; # Keep all archives from the last day + daily = 7; + weekly = 4; + monthly = -1; # Keep at least one archive for each month + }; + + }; +} diff --git a/entropy/nixos/modules/sway.nix b/entropy/nixos/modules/sway.nix index d726ca1..5dbecb4 100644 --- a/entropy/nixos/modules/sway.nix +++ b/entropy/nixos/modules/sway.nix @@ -12,7 +12,8 @@ wl-clipboard mako # notification daemon alacritty # Alacritty is the default terminal in the config - dmenu # Dmenu is the default in the config but i recommend wofi since its wayland native + #dmenu # Dmenu is the default in the config but i recommend wofi since its wayland native + bemenu kanshi # replacement for autorandr sway-contrib.grimshot imv # image viewer @@ -25,6 +26,8 @@ # Fix for some Java AWT applications (e.g. Android Studio), # use this if they aren't displayed properly: export _JAVA_AWT_WM_NONREPARENTING=1 + # firefox x11 <-> wayland interoperability + export MOZ_DBUS_REMOTE=1 ''; }; @@ -59,11 +62,23 @@ # use gdm for authentication services.xserver.enable = true; - services.xserver.displayManager.gdm = { + #services.xserver.displayManager.gdm = { + #enable = true; + #wayland = true; + #}; + services.xserver.displayManager.sddm = { enable = true; - wayland = true; }; + services.xserver.desktopManager.plasma5 = { + enable = true; + }; + #environment.variables = { + #GDK_SCALE = "2"; + #GDK_DPI_SCALE = "0.5"; + #_JAVA_OPTIONS = "-Dsun.java2d.uiScale=2"; + #}; + services.redshift = { enable = true; # Redshift with wayland support isn't present in nixos-19.09 atm. You have to cherry-pick the commit from https://github.com/NixOS/nixpkgs/pull/68285 to do that. diff --git a/entropy/sway/config b/entropy/sway/config index a49e817..59ed16a 100644 --- a/entropy/sway/config +++ b/entropy/sway/config @@ -18,7 +18,8 @@ set $term alacritty # Your preferred application launcher # Note: pass the final command to swaymsg so that the resulting window can be opened # on the original workspace that the command was run on. -set $menu dmenu_path | dmenu | xargs swaymsg exec -- +#set $menu dmenu_path | dmenu | xargs swaymsg exec -- +set $menu bemenu-run --monitor=all | xargs swaymsg exec -- ### Output configuration # @@ -38,12 +39,19 @@ output * bg ~/Pictures/wall.jpg fill # Example configuration: # exec swayidle -w \ - timeout 300 'swaylock -f -c 99999960' \ - timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ - before-sleep 'swaylock -f -c 99999960' + timeout 300 'swaylock -f -c 000000ff' \ + before-sleep 'swaylock -f -c 000000ff' +#exec swayidle -w \ + #timeout 300 'swaylock -f -c 99999960' \ + #timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \ + #before-sleep 'swaylock -f -c 99999960' # though not necessary, I want to ensure the right deamon is running. exec mako + +# management of external monitors +exec kanshi + # # This will lock your screen after 300 seconds of inactivity, then turn off # your displays after another 300 seconds, and turn your screens back on when @@ -222,6 +230,11 @@ bindsym $mod+r mode "resize" # Screenshots bindsym $mod+c exec grimshot --notify save area +# quick access to mail +bindsym $mod+m exec 'alacritty -e neomutt -f "notmuch://?query=tag:unread"' + +bindsym $mod+x exec 'swaylock -f -c 000000ff' + # Volume bindsym XF86AudioRaiseVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ +5%' bindsym XF86AudioLowerVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ -5%'