aboutsummaryrefslogtreecommitdiffstats
path: root/home
diff options
context:
space:
mode:
authorMark Nipper <nipsy@bitgnome.net>2024-03-31 02:40:11 -0700
committerMark Nipper <nipsy@bitgnome.net>2024-03-31 02:40:11 -0700
commit76b3b07e7329be637b37f92e767595143d3b03fa (patch)
treeff674a9bc8d8e1cdba94cb0d1c13de28b75c1e74 /home
parent04fd53819ffce3e1275ec48bcdf71769414fdea1 (diff)
downloadnix-76b3b07e7329be637b37f92e767595143d3b03fa.tar
nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.gz
nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.bz2
nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.lz
nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.xz
nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.zst
nix-76b3b07e7329be637b37f92e767595143d3b03fa.zip
Migrate to more modular layout
Diffstat (limited to 'home')
-rw-r--r--home/nipsy/common/core/bash.nix10
-rw-r--r--home/nipsy/common/core/default.nix63
-rw-r--r--home/nipsy/common/core/fonts.nix9
-rw-r--r--home/nipsy/common/core/git.nix8
-rw-r--r--home/nipsy/common/core/ssh.nix5
-rw-r--r--home/nipsy/common/core/tmux/default.nix6
-rw-r--r--home/nipsy/common/core/tmux/tmux.conf34
-rw-r--r--home/nipsy/common/core/vim/default.nix6
-rw-r--r--home/nipsy/common/core/vim/vimrc46
-rw-r--r--home/nipsy/common/core/zsh/default.nix10
-rw-r--r--home/nipsy/common/core/zsh/zshrc170
-rw-r--r--home/nipsy/common/optional/desktops/default.nix7
-rw-r--r--home/nipsy/common/optional/desktops/gtk.nix7
-rw-r--r--home/nipsy/common/optional/desktops/i3/config228
-rw-r--r--home/nipsy/common/optional/desktops/i3/default.nix10
-rw-r--r--home/nipsy/common/optional/desktops/services/dunst.nix11
-rw-r--r--home/nipsy/ginaz.nix7
17 files changed, 637 insertions, 0 deletions
diff --git a/home/nipsy/common/core/bash.nix b/home/nipsy/common/core/bash.nix
new file mode 100644
index 0000000..77f0cf4
--- /dev/null
+++ b/home/nipsy/common/core/bash.nix
@@ -0,0 +1,10 @@
+{
+ programs.bash = {
+ enable = true;
+ enableCompletion = true;
+ shellAliases = {
+ ll = "ls -alF --color=auto";
+ la = "ls -aF --color=auto";
+ };
+ };
+}
diff --git a/home/nipsy/common/core/default.nix b/home/nipsy/common/core/default.nix
new file mode 100644
index 0000000..6903d90
--- /dev/null
+++ b/home/nipsy/common/core/default.nix
@@ -0,0 +1,63 @@
+{ config, lib, pkgs, outputs, ... }:
+{
+ imports = [
+ ./bash.nix
+ ./fonts.nix
+ ./git.nix
+ ./ssh.nix
+ ./tmux
+ ./vim
+ ./zsh
+ ] ++ (builtins.attrValues outputs.homeManagerModules);
+
+ home = {
+ username = lib.mkDefault "nipsy";
+ homeDirectory = lib.mkDefault "/home/${config.home.username}";
+ stateVersion = lib.mkDefault "23.11";
+ };
+
+ home.packages = builtins.attrValues {
+ inherit (pkgs)
+
+ borgbackup
+ btop
+ coreutils
+ eza
+ fd
+ findutils
+ fzf
+ jq
+ nix-tree
+ ncdu
+ pciutils
+ pfetch
+ pre-commit
+ p7zip
+ ripgrep
+ usbutils
+ tree
+ unzip
+ unrar
+ wget
+ zip;
+ };
+
+ nixpkgs = {
+ overlays = builtins.attrValues outputs.overlays;
+ config = {
+ allowUnfree = true;
+ # Workaround for https://github.com/nix-community/home-manager/issues/2942
+ allowUnfreePredicate = (_: true);
+ };
+ };
+
+ nix = {
+ package = lib.mkDefault pkgs.nix;
+ settings = {
+ experimental-features = [ "nix-command" "flakes" "repl-flake" ];
+ warn-dirty = false;
+ };
+ };
+
+ programs.home-manager.enable = true;
+}
diff --git a/home/nipsy/common/core/fonts.nix b/home/nipsy/common/core/fonts.nix
new file mode 100644
index 0000000..9ed0753
--- /dev/null
+++ b/home/nipsy/common/core/fonts.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }:
+{
+ fonts.fontconfig.enable = true;
+ home.packages = [
+ pkgs.noto-fonts
+ pkgs.nerdfonts
+ ];
+
+}
diff --git a/home/nipsy/common/core/git.nix b/home/nipsy/common/core/git.nix
new file mode 100644
index 0000000..d8bc6cf
--- /dev/null
+++ b/home/nipsy/common/core/git.nix
@@ -0,0 +1,8 @@
+{
+ programs.git = {
+ enable = true;
+ userEmail = "nipsy@bitgnome.net";
+ userName = "Mark Nipper";
+ extraConfig.pull.rebase = true;
+ };
+}
diff --git a/home/nipsy/common/core/ssh.nix b/home/nipsy/common/core/ssh.nix
new file mode 100644
index 0000000..929cc51
--- /dev/null
+++ b/home/nipsy/common/core/ssh.nix
@@ -0,0 +1,5 @@
+{
+ programs.ssh = {
+ enable = true;
+ };
+}
diff --git a/home/nipsy/common/core/tmux/default.nix b/home/nipsy/common/core/tmux/default.nix
new file mode 100644
index 0000000..e7873f8
--- /dev/null
+++ b/home/nipsy/common/core/tmux/default.nix
@@ -0,0 +1,6 @@
+{
+ programs.tmux = {
+ enable = true;
+ extraConfig = (builtins.readFile ./tmux.conf);
+ };
+}
diff --git a/home/nipsy/common/core/tmux/tmux.conf b/home/nipsy/common/core/tmux/tmux.conf
new file mode 100644
index 0000000..ae43d03
--- /dev/null
+++ b/home/nipsy/common/core/tmux/tmux.conf
@@ -0,0 +1,34 @@
+#set-option -ga terminal-overrides ",st-256color:Tc"
+set -as terminal-features ",foot*:RGB"
+set -as terminal-features ",st-256color:RGB"
+set -ga monitor-bell on
+set -g history-limit 100000
+set -g bell-action any
+#set -g bell-on-alert on
+
+set -s escape-time 0
+
+setw -g aggressive-resize on
+setw -g wrap-search off
+
+bind-key a send-prefix
+bind-key k kill-session
+bind-key H pipe-pane -o 'cat >> ~/.tmux.log.#h-#S-#I-#P'
+
+#bind-key m \
+# set -g mouse on \;\
+# display 'Mouse: ON'
+#bind M \
+# set -g mouse off \;\
+# display 'Mouse: OFF'
+
+# vim-like copypaste mode
+set-window-option -g mode-keys vi
+bind-key -T copy-mode-vi v send -X begin-selection
+bind-key -T copy-mode-vi y send -X copy-pipe "xclip -selection clipboard"
+bind-key -T copy-mode-vi C-v send -X rectangle-toggle
+bind-key P run "tmux set-buffer \"$(xclip -o -selection clipboard)\"; tmux paste-buffer"
+
+# don't exit copy mode after selection
+#set -s mouse on
+#bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection -x
diff --git a/home/nipsy/common/core/vim/default.nix b/home/nipsy/common/core/vim/default.nix
new file mode 100644
index 0000000..ea4ed5e
--- /dev/null
+++ b/home/nipsy/common/core/vim/default.nix
@@ -0,0 +1,6 @@
+{
+ programs.vim = {
+ enable = true;
+ extraConfig = (builtins.readFile ./vimrc);
+ };
+}
diff --git a/home/nipsy/common/core/vim/vimrc b/home/nipsy/common/core/vim/vimrc
new file mode 100644
index 0000000..e80231c
--- /dev/null
+++ b/home/nipsy/common/core/vim/vimrc
@@ -0,0 +1,46 @@
+" Handling of big files - William Natter, Tony Mechelynck and others
+" fairly certain that BufSizeThreshold is in bytes
+let g:SaveUndoLevels = &undolevels
+let g:BufSizeThreshold = 5242880
+if has("autocmd")
+ au VimEnter * let g:SaveUndoLevels = &undolevels
+ au BufReadPre * if getfsize(expand("%")) >= g:BufSizeThreshold | setlocal noswapfile | endif
+ au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | let &undolevels=g:SaveUndoLevels | else | setlocal undolevels=-1 | endif
+ au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | syntax on | else | syntax off | endif
+endif
+
+set mouse&
+set noautoindent " always set autoindenting off
+
+" enable better 24-bit color support
+"let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
+"let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
+set termguicolors
+
+" If using a dark background within the editing area and syntax highlighting
+" turn on this option as well
+set background=dark
+
+if has("autocmd")
+ " Enabled file type detection
+ " Use the default filetype settings. If you also want to load indent files
+ " to automatically do language-dependent indenting add 'indent' as well.
+ filetype plugin on
+ "filetype indent on
+endif " has ("autocmd")
+
+" The following are commented out as they cause vim to behave a lot
+" different from regular vi. They are highly recommended though.
+set showcmd " Show (partial) command in status line.
+set showmatch " Show matching brackets.
+set ignorecase " Do case insensitive matching
+set incsearch " Incremental search
+"set expandtab " replace tabs with spaces
+set smarttab " use shiftwidth instead of tabstop at start of line
+set spell spelllang=en_us " turn on the spell check
+
+set laststatus=2
+set statusline=%<%f%h%m%r%=%{&ff}\ %Y\ %b\ 0x%B\ \ %l,%c%V\ %P
+
+map <F5> :w<CR><bar>:!clear;go run %<CR>
+map <F6> :w<CR><bar>:%! gofmt<CR>
diff --git a/home/nipsy/common/core/zsh/default.nix b/home/nipsy/common/core/zsh/default.nix
new file mode 100644
index 0000000..453fa9f
--- /dev/null
+++ b/home/nipsy/common/core/zsh/default.nix
@@ -0,0 +1,10 @@
+{
+ programs.zsh = {
+ enable = true;
+ initExtra = (builtins.readFile ./zshrc);
+ shellAliases = {
+ la = "ls -alFh --color=auto";
+ ll = "ls -aF --color=auto";
+ };
+ };
+}
diff --git a/home/nipsy/common/core/zsh/zshrc b/home/nipsy/common/core/zsh/zshrc
new file mode 100644
index 0000000..9e43d1d
--- /dev/null
+++ b/home/nipsy/common/core/zsh/zshrc
@@ -0,0 +1,170 @@
+umask 022
+
+#export GOROOT="''${HOME}/.local/go"
+#export GOPATH="''${HOME}/go"
+
+#export PATH="$HOME/bin:$GOROOT/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin"
+#export PATH="$HOME/bin:$GOROOT/bin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin"
+#export PATH=~/bin::~/.local/rust/cargo/bin:/usr/bin:/usr/sbin:/usr/games:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
+export PATH=~/bin:''${PATH}
+
+#export PS1="%B%n%b@%U%m%u/%l:%~> "
+export PAGER=less
+export EDITOR=vim
+export BROWSER=firefox
+
+export LC_COLLATE="C"
+eval $(dircolors)
+export QUOTING_STYLE="literal"
+
+export IRCNICK="nipsy"
+export IRCNAME="Mark Nipper"
+
+export NNTPSERVER="news.giganews.com"
+
+#export HISTFILE="$HOME/.zsh_hist"
+export HISTSIZE=100000
+export SAVEHIST=''${HISTSIZE}
+
+#export COLORTERM=truecolor
+export COLORFGBG="green;blue"
+
+# fix stupid broken Java shit
+export _JAVA_AWT_WM_NONREPARENTING=1
+
+# enable pass extensions
+export PASSWORD_STORE_ENABLE_EXTENSIONS=true
+
+# set SWAYSOCK correctly
+if pgrep -U nipsy -x sway >/dev/null; then
+ export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock
+fi
+
+# start sway by default if logging into tty1
+if [[ -z "''${DISPLAY}" ]] && [[ $(tty) == "/dev/tty1" ]]; then
+
+ export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
+
+ # set some Wayland specific variables
+ export MOZ_ENABLE_WAYLAND=1
+ export GDK_BACKEND=wayland
+ export QT_QPA_PLATFORM=wayland
+ export SDL_VIDEODRIVER=wayland
+ export XDG_SESSION_TYPE=wayland
+
+ exec sway > ~/.sway.log
+
+fi
+
+# if already in Wayland, update the GPG TTY so ssh-askpass will work correctly
+if [[ -n "''${WAYLAND_DISPLAY}" ]]; then
+ gpg-connect-agent updatestartuptty /bye >/dev/null
+fi
+
+# completion options
+setopt LIST_PACKED MENU_COMPLETE
+# expansion and globbing options
+setopt NO_NOMATCH
+# history options
+setopt SHARE_HISTORY EXTENDED_HISTORY HIST_FCNTL_LOCK HIST_IGNORE_ALL_DUPS HIST_REDUCE_BLANKS HIST_SAVE_NO_DUPS
+# input/output options
+setopt PRINT_EXIT_VALUE RM_STAR_SILENT
+# job control options
+setopt LONG_LIST_JOBS NO_HUP
+# zle options
+setopt NO_BEEP
+
+lsopt='--color=auto'
+#alias ll="ls -alFh $lsopt"
+#alias la="ls -aF $lsopt"
+alias cal="ncal -b"
+#alias grep='grep --color=always' # cannot do this as it breaks shell pipelines
+alias talk='gnutalk --curses'
+alias manage="tmux new-window ssh root@darkstar\; split-window -d ssh root@king\; new-window ssh root@black-sheep\; split-window -d ssh root@treebeard\; new-window ssh root@casey\; split-window -d ssh root@homer\; new-window ssh root@lilnasx\; split-window -d ssh root@trent"
+alias manage-mac="tmux new-session \; source ~/.tmux/manage-mac"
+alias win7="xfreerdp -x l -g 1680x1050 -u nipsy -d la-its841279wd kaitain"
+alias win7-la="xfreerdp -x l -g 1680x1050 -u la-mrn447 -d austin kaitain"
+#alias kubectl="~/k3s/k3s kubectl"
+#alias helm="~/k3s/linux-amd64/helm"
+alias lock="xscreensaver-command -lock"
+alias fixkeyboard="setxkbmap -layout us -option caps:super -option compose:ralt"
+alias zigup="zigup --install-dir ~/.local/zig --path-link ~/bin/zig"
+
+#autoload -U compinit
+#compinit
+zstyle ':completion:*' menu select=5
+
+bindkey -v
+export KEYTIMEOUT=1
+
+autoload -U edit-command-line
+zle -N edit-command-line
+bindkey -M vicmd v edit-command-line
+
+# nix
+#if [ -e /home/nipsy/.nix-profile/etc/profile.d/nix.sh ]; then . /home/nipsy/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
+
+# The next line updates PATH for the Google Cloud SDK.
+#source /home/nipsy/google-cloud-sdk/path.zsh.inc
+
+# The next line enables bash completion for gcloud.
+#source /home/nipsy/google-cloud-sdk/completion.zsh.inc
+
+# always open tmux if interactive
+[[ $- != *i* ]] && return
+#[[ -z "$TMUX" ]] && (tmux -2 new-session -t default \; new-window || tmux -2 new-session -s default)
+[[ -z "$TMUX" ]] && (tmux -2 attach -t default || tmux -2 new-session -s default)
+
+# prompt/theme shit
+function precmd {
+
+ local RC=''${?}
+ #local RC=''${(%)RC-%?}
+
+ print -nP '\n'
+
+ # current user
+ if [[ ''${EUID} -eq 0 ]]; then
+ print -nP '%{%S%F{red}%}%n%{%f%s%}'
+ else
+ print -nP '%{%F{magenta}%}%n%{%f%}'
+ fi
+
+ print -nP '@'
+
+ # current host
+ if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then
+ print -nP '%{%F{yellow}%}%m%{%f%}'
+ else
+ print -nP '%{%F{green}%}%m%{%f%}'
+ fi
+
+ # connected terminal
+ print -nP '/%{%U%}%l%{%u%} '
+
+ # cwd
+ print -nP '%{%F{cyan}%}%~%{%f%} '
+
+ # job count
+ JOBCOUNT='%j'
+ if [[ ''${(%)JOBCOUNT} -gt 0 ]]; then
+ print -nP 'j=%{%F{yellow}%}%j%{%f%} '
+ fi
+
+ # previous return code
+ if [[ ''${RC} -ne 0 ]]; then
+ print -nP 'rc=%{%F{red}%}'
+ echo -n "''${RC}"
+ print -nP '%{%f%} '
+ else
+ print -nP 'rc=%{%F{green}%}'
+ echo -n "''${RC}"
+ print -nP '%{%f%} '
+ fi
+
+ # time stamp
+ print -P '%{%F{cyan}%}%D{%FT%T%z}%{%f%}'
+
+}
+
+PS1='%# '
diff --git a/home/nipsy/common/optional/desktops/default.nix b/home/nipsy/common/optional/desktops/default.nix
new file mode 100644
index 0000000..0bb8411
--- /dev/null
+++ b/home/nipsy/common/optional/desktops/default.nix
@@ -0,0 +1,7 @@
+{
+ imports = [
+ ./gtk.nix
+ ./i3
+ ./services/dunst.nix
+ ];
+}
diff --git a/home/nipsy/common/optional/desktops/gtk.nix b/home/nipsy/common/optional/desktops/gtk.nix
new file mode 100644
index 0000000..facb782
--- /dev/null
+++ b/home/nipsy/common/optional/desktops/gtk.nix
@@ -0,0 +1,7 @@
+{
+ gtk = {
+ enable = true;
+ gtk3.extraConfig.gtk-application-prefer-dark-theme = true;
+ gtk4.extraConfig.gtk-application-prefer-dark-theme = true;
+ };
+}
diff --git a/home/nipsy/common/optional/desktops/i3/config b/home/nipsy/common/optional/desktops/i3/config
new file mode 100644
index 0000000..57c9d38
--- /dev/null
+++ b/home/nipsy/common/optional/desktops/i3/config
@@ -0,0 +1,228 @@
+# This file has been auto-generated by i3-config-wizard(1).
+# It will not be overwritten, so edit it as you like.
+#
+# Should you change your keyboard layout somewhen, delete
+# this file and re-run i3-config-wizard(1).
+#
+
+# i3 config file (v4)
+#
+# Please see http://i3wm.org/docs/userguide.html for a complete reference!
+
+set $mod Mod4
+
+# Font for window titles. Will also be used by the bar unless a different font
+# is used in the bar {} block below. ISO 10646 = Unicode
+font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
+# The font above is very space-efficient, that is, it looks good, sharp and
+# clear in small sizes. However, if you need a lot of unicode glyphs or
+# right-to-left text rendering, you should instead use pango for rendering and
+# chose a FreeType font, such as:
+# font pango:DejaVu Sans Mono 10
+
+# Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+# start a terminal
+bindsym $mod+Return exec --no-startup-id st
+
+# lock the screen
+bindsym $mod+Scroll_Lock exec --no-startup-id xscreensaver-command -lock
+
+# increase volume
+bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5%
+
+# decrease volume
+bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5%
+
+# mute volume
+bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle
+
+# mute mic volume
+bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute 1 toggle
+
+# kill focused window
+bindsym $mod+Shift+q kill
+# kill with middle mouse button over titlebar
+bindsym --release button2 kill
+# kill with middle mouse button and $mod anywhere over window
+bindsym --whole-window $mod+button2 kill
+
+# start dmenu (a program launcher)
+bindsym $mod+d exec dmenu_run
+# There also is the (new) i3-dmenu-desktop which only displays applications
+# shipping a .desktop file. It is a wrapper around dmenu, so you need that
+# installed.
+# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
+
+# change focus
+bindsym $mod+j focus left
+bindsym $mod+k focus down
+bindsym $mod+l focus up
+bindsym $mod+semicolon focus right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# move focused window
+bindsym $mod+Shift+j move left
+bindsym $mod+Shift+k move down
+bindsym $mod+Shift+l move up
+bindsym $mod+Shift+semicolon move right
+
+# alternatively, you can use the cursor keys:
+bindsym $mod+Shift+Left move left
+bindsym $mod+Shift+Down move down
+bindsym $mod+Shift+Up move up
+bindsym $mod+Shift+Right move right
+
+# split in horizontal orientation
+bindsym $mod+h split h
+
+# split in vertical orientation
+bindsym $mod+v split v
+
+# enter fullscreen mode for the focused container
+bindsym $mod+Shift+f fullscreen
+
+# enter fullscreen mode for the focused container
+bindsym $mod+Shift+g fullscreen global
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# toggle tiling / floating
+bindsym $mod+Shift+space floating toggle
+
+# change focus between tiling / floating windows
+bindsym $mod+space focus mode_toggle
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# focus the child container
+#bindsym $mod+d focus child
+
+# switch to workspace
+bindsym $mod+1 workspace 1
+bindsym $mod+2 workspace 2
+bindsym $mod+3 workspace 3
+bindsym $mod+4 workspace 4
+bindsym $mod+5 workspace 5
+bindsym $mod+6 workspace 6
+bindsym $mod+7 workspace 7
+bindsym $mod+8 workspace 8
+bindsym $mod+9 workspace 9
+bindsym $mod+0 workspace 10
+bindsym $mod+F1 workspace 11
+bindsym $mod+F2 workspace 12
+bindsym $mod+F3 workspace 13
+bindsym $mod+F4 workspace 14
+bindsym $mod+F5 workspace 15
+bindsym $mod+F6 workspace 16
+bindsym $mod+F7 workspace 17
+bindsym $mod+F8 workspace 18
+bindsym $mod+F9 workspace 19
+bindsym $mod+F10 workspace 20
+
+# move backward or forward to next workspace
+bindsym $mod+n workspace next
+bindsym $mod+p workspace prev
+bindsym $mod+f workspace next_on_output
+bindsym $mod+b workspace prev_on_output
+
+# move focused container to workspace
+bindsym $mod+Shift+1 move container to workspace 1
+bindsym $mod+Shift+2 move container to workspace 2
+bindsym $mod+Shift+3 move container to workspace 3
+bindsym $mod+Shift+4 move container to workspace 4
+bindsym $mod+Shift+5 move container to workspace 5
+bindsym $mod+Shift+6 move container to workspace 6
+bindsym $mod+Shift+7 move container to workspace 7
+bindsym $mod+Shift+8 move container to workspace 8
+bindsym $mod+Shift+9 move container to workspace 9
+bindsym $mod+Shift+0 move container to workspace 10
+bindsym $mod+Shift+F1 move container to workspace 11
+bindsym $mod+Shift+F2 move container to workspace 12
+bindsym $mod+Shift+F3 move container to workspace 13
+bindsym $mod+Shift+F4 move container to workspace 14
+bindsym $mod+Shift+F5 move container to workspace 15
+bindsym $mod+Shift+F6 move container to workspace 16
+bindsym $mod+Shift+F7 move container to workspace 17
+bindsym $mod+Shift+F8 move container to workspace 18
+bindsym $mod+Shift+F9 move container to workspace 19
+bindsym $mod+Shift+F10 move container to workspace 20
+
+# jump to urgent window
+bindsym $mod+u [urgent=latest] focus
+
+# reload the configuration file
+bindsym $mod+Shift+c reload
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
+bindsym $mod+Shift+r restart
+# exit i3 (logs you out of your X session)
+#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
+bindsym $mod+Shift+e exec i3-msg exit
+
+# resize window (you can also use the mouse for that)
+mode "resize" {
+ # These bindings trigger as soon as you enter the resize mode
+
+ # Pressing left will shrink the window’s width.
+ # Pressing right will grow the window’s width.
+ # Pressing up will shrink the window’s height.
+ # Pressing down will grow the window’s height.
+ bindsym j resize shrink width 10 px or 10 ppt
+ bindsym k resize grow height 10 px or 10 ppt
+ bindsym l resize shrink height 10 px or 10 ppt
+ bindsym semicolon resize grow width 10 px or 10 ppt
+
+ # same bindings, but for the arrow keys
+ bindsym Left resize shrink width 10 px or 10 ppt
+ bindsym Down resize grow height 10 px or 10 ppt
+ bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Right resize grow width 10 px or 10 ppt
+
+ # back to normal: Enter or Escape
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+bindsym $mod+r mode "resize"
+
+# bar toggle, hide or show
+bindsym $mod+m bar mode toggle
+
+# VNC mode (disable all local keybindings except the toggle keybinding)
+mode "VNC" {
+ bindsym $mod+Shift+v mode "default"
+}
+
+bindsym $mod+Shift+v mode "VNC"
+
+# Start i3bar to display a workspace bar (plus the system information i3status
+# finds out, if available)
+bar {
+ status_command i3status
+ tray_output primary
+}
+
+# set borders normal for everything except st
+#for_window [class="^.*"] border normal
+#for_window [class="st-256color"] border pixel 1
+#for_window [class="AppGate SDP"] floating disable
+#for_window [class="factorio"] fullscreen enable
+for_window [class="Steam" title="Friends List"] floating enable
+#for_window [class=".*"] border none
+for_window [all] border none
+
+# Start network applet
+#exec --no-startup-id nm-applet
+#exec --no-startup-id blueman-applet
+#exec --no-startup-id ~/bin/xscreensaver-activate
+#exec --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1
diff --git a/home/nipsy/common/optional/desktops/i3/default.nix b/home/nipsy/common/optional/desktops/i3/default.nix
new file mode 100644
index 0000000..d369ff2
--- /dev/null
+++ b/home/nipsy/common/optional/desktops/i3/default.nix
@@ -0,0 +1,10 @@
+{
+ programs.i3status = {
+ enable = true;
+ };
+
+ xsession.windowManager.i3 = {
+ enable = true;
+ extraConfig = (builtins.readFile ./config);
+ };
+}
diff --git a/home/nipsy/common/optional/desktops/services/dunst.nix b/home/nipsy/common/optional/desktops/services/dunst.nix
new file mode 100644
index 0000000..9efef64
--- /dev/null
+++ b/home/nipsy/common/optional/desktops/services/dunst.nix
@@ -0,0 +1,11 @@
+{ pkgs, ... }:
+{
+ home.packages = builtins.attrValues {
+ inherit (pkgs)
+ libnotify; # required by dunst
+ };
+
+ services.dunst = {
+ enable = true;
+ };
+}
diff --git a/home/nipsy/ginaz.nix b/home/nipsy/ginaz.nix
new file mode 100644
index 0000000..17d39fd
--- /dev/null
+++ b/home/nipsy/ginaz.nix
@@ -0,0 +1,7 @@
+{ inputs, lib, pkgs, config, outputs, ... }:
+{
+ imports = [
+ common/core
+ common/optional/desktops
+ ];
+}