├── .git-crypt ├── .gitattributes └── keys │ └── default │ └── 0 │ └── AC2A0C91D524D40823B4DE59BD939B63A45C6CAE.gpg ├── .gitignore ├── LICENSE ├── README.md ├── de ├── bars │ └── polybar │ │ ├── boron-config │ │ └── osmium-config ├── compositors │ └── compton │ │ └── boron-compton.conf ├── darwin-only │ ├── hammerspoon │ │ ├── init.lua │ │ └── keyboard │ │ │ ├── control-escape.lua │ │ │ ├── delete-words.lua │ │ │ ├── hyper-apps-defaults.lua │ │ │ ├── hyper.lua │ │ │ ├── init.lua │ │ │ ├── markdown.lua │ │ │ ├── microphone.lua │ │ │ ├── panes.lua │ │ │ ├── status-message.lua │ │ │ ├── super.lua │ │ │ ├── windows-bindings-defaults.lua │ │ │ └── windows.lua │ └── karabiner │ │ └── karabiner.json ├── de │ ├── bspwm │ │ └── bspwmrc │ └── sxhkd │ │ └── sxhkdrc └── notifications │ └── dunst │ └── dunstrc ├── machine ├── apollo │ ├── index.nix │ └── tool │ │ └── restic │ │ ├── excludes │ │ ├── .gitattributes │ │ ├── full-home │ │ └── home │ │ ├── includes │ │ ├── .gitattributes │ │ ├── home │ │ └── limited-home │ │ └── index.nix ├── boron │ ├── index.nix │ └── tool │ │ └── restic │ │ ├── excludes │ │ ├── .gitattributes │ │ ├── full-home │ │ └── home │ │ ├── includes │ │ ├── .gitattributes │ │ ├── home │ │ └── limited-home │ │ └── index.nix └── osmium │ ├── index.nix │ └── tool │ └── restic │ ├── excludes │ ├── .gitattributes │ ├── full-home │ └── home │ ├── includes │ └── .gitattributes │ └── index.nix ├── program ├── editor │ └── neovim │ │ ├── coc.nix │ │ ├── configs │ │ ├── fixers.vimrc │ │ ├── flags.vimrc │ │ ├── general.vimrc │ │ ├── init.vim │ │ ├── init.vimrc │ │ ├── keys.vimrc │ │ ├── lsp.vimrc │ │ ├── status-line.vimrc │ │ ├── themes.vimrc │ │ └── vista.vimrc │ │ └── default.nix ├── file-manager │ └── ranger │ │ ├── commands.py │ │ ├── commands_full.py │ │ ├── index.nix │ │ ├── rc.conf │ │ ├── rifle.conf │ │ └── scope.sh ├── networking │ ├── nmap │ │ ├── index.nix │ │ └── scripts │ │ │ └── vulners.nse │ └── ssh │ │ ├── .gitattributes │ │ └── index.nix ├── shell │ └── fish │ │ ├── default.nix │ │ ├── functions │ │ ├── .gitattributes │ │ ├── kp.fish │ │ ├── restic-fd.fish │ │ ├── restic-gcs.fish │ │ ├── restic-sd.fish │ │ └── start_ssh_agent.fish │ │ ├── fzf-colors.fish │ │ ├── prompt.fish │ │ └── sources.nix └── terminal │ ├── alacritty │ └── default-settings.nix │ └── tmux │ ├── default.nix │ └── tmux.conf ├── role ├── bspwm-laptop │ ├── .gitattributes │ ├── index.nix │ └── location.nix ├── bspwm-workstation │ ├── .gitattributes │ ├── index.nix │ ├── location.nix │ └── script │ │ ├── index.nix │ │ ├── launcher │ │ ├── dmenumount │ │ ├── dmenuumount │ │ ├── dprompt │ │ └── flatpak-run │ │ └── wm │ │ ├── lock-screen │ │ ├── lock-screen-i3 │ │ └── set-wall ├── darwin-laptop │ ├── index.nix │ └── script │ │ ├── de │ │ └── set-wall │ │ └── index.nix └── linux-root │ └── index.nix ├── script ├── index.nix └── misc │ ├── back │ └── gopass-password-only ├── services ├── dev │ └── lorri │ │ └── default.nix └── media │ └── mpd │ └── default.nix ├── tool └── restic │ ├── envs │ ├── .gitattributes │ ├── airport │ │ ├── env.fish │ │ └── env.sh │ ├── fast-drive │ │ ├── env.fish │ │ └── env.sh │ ├── gcs │ │ ├── env.fish │ │ ├── env.sh │ │ └── gcs-service-key.json │ └── slow-drive │ │ ├── env.fish │ │ └── env.sh │ └── index.nix └── user ├── root.nix └── x.nix /.git-crypt/.gitattributes: -------------------------------------------------------------------------------- 1 | # Do not edit this file. To specify the files to encrypt, create your own 2 | # .gitattributes file in the directory where your files are. 3 | * !filter !diff 4 | *.gpg binary 5 | -------------------------------------------------------------------------------- /.git-crypt/keys/default/0/AC2A0C91D524D40823B4DE59BD939B63A45C6CAE.gpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HugoReeves/nix-home/0b044c15b7fb597e1480cd266ea25599706fb9e9/.git-crypt/keys/default/0/AC2A0C91D524D40823B4DE59BD939B63A45C6CAE.gpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | home.nix 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2021 Hugo Reeves 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Nix Home 2 | 3 | **NOTE:** This configuration system is no longer used or maintained by myself. 4 | Please see my new [elemental](https://github.com/hugoreeves/elemental) configuration system for an improved version of this earlier system. 5 | 6 | This repository contains user configuration deployed using the helpful tool [Home Manager](https://github.com/rycee/home-manager). 7 | In order to setup a new home space, simply add a home.nix file similar to this one. 8 | 9 | A full explanation of my portable user configuration management (dotfiles) system can be found on my [blog](https://blog.hugoreeves.com/posts/2019/08/your-home-in-nix-dotfile-management/). 10 | 11 | ```nix 12 | { config, pkgs, ... }: 13 | 14 | { 15 | # Let Home Manager install and manage itself. 16 | programs.home-manager.enable = true; 17 | 18 | imports = [ 19 | ./machine/apollo.nix 20 | ./user/x.nix 21 | ./role/darwin-laptop/index.nix 22 | ]; 23 | } 24 | ``` 25 | **Machine** contains configuration specific to a given machine. **User** contains configuration specific to a given user, think git config etc. **Role** contains the bulk of the configuration and sets up most user space tools, think neovim and your terminal. 26 | -------------------------------------------------------------------------------- /de/bars/polybar/boron-config: -------------------------------------------------------------------------------- 1 | ; vim:ft=dosini 2 | ;========================================================== 3 | ; 4 | ; 5 | ; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗ 6 | ; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗ 7 | ; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝ 8 | ; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗ 9 | ; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║ 10 | ; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ 11 | ; 12 | ; 13 | ; To learn more about how to configure Polybar 14 | ; go to https://github.com/jaagr/polybar 15 | ; 16 | ; The README contains alot of information 17 | ; 18 | ;========================================================== 19 | 20 | 21 | [colors] 22 | background = #882f343f 23 | background-alt = #ee2f343f 24 | foreground = #f3f4f5 25 | foreground-alt = #f3f4f5 26 | primary = #81a1c1 27 | secondary = #d8dee9 28 | alert = #bd2c40 29 | col = #00f 30 | 31 | ;[global/wm] 32 | ;margin-top = 0 33 | ;margin-bottom = 0 34 | 35 | [bar/top] 36 | ;monitor = ${env:MONITOR:HDMI-1} 37 | ;monitor = ${env:MONITOR} 38 | margin-top = 0 39 | margin-bottom = 0 40 | width = 100% 41 | height = 30 42 | ;radius = 6.0 43 | fixed-center = true 44 | 45 | background = ${colors.background} 46 | foreground = ${colors.foreground} 47 | 48 | line-size = 2 49 | 50 | padding-left = 0 51 | padding-right = 2 52 | 53 | module-margin-left = 1 54 | module-margin-right = 2 55 | 56 | font-0 = Roboto:pixelsize=9;1 57 | font-1 = "FuraCode Nerd Font:style=Solid:pixelsize=9;1" 58 | ;font-2 = "Font Awesome:style=Regular:pixelsize=9;1" 59 | ;font-3 = "Font Awesome:pixelsize=9;1" 60 | 61 | wm-restack = bspwm 62 | modules-left = bspwm mpd 63 | modules-center = memory cpu temperature 64 | modules-right = wlan volume date 65 | 66 | scroll-up = i3wm-wsnext 67 | scroll-down = i3wm-wsprev 68 | 69 | [module/xwindow] 70 | type = internal/xwindow 71 | label = %title:0:30:...% 72 | 73 | [module/xkeyboard] 74 | type = internal/xkeyboard 75 | blacklist-0 = num lock 76 | 77 | format-prefix = "" 78 | format-prefix-foreground = ${colors.foreground-alt} 79 | format-prefix-underline = ${colors.secondary} 80 | 81 | label-layout = %layout% 82 | label-layout-underline = ${colors.secondary} 83 | 84 | label-indicator-padding = 2 85 | label-indicator-margin = 1 86 | label-indicator-background = ${colors.secondary} 87 | label-indicator-underline = ${colors.secondary} 88 | 89 | [module/filesystem] 90 | type = internal/fs 91 | interval = 25 92 | 93 | mount-0 = / 94 | 95 | label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%% 96 | label-unmounted = %mountpoint% not mounted 97 | label-unmounted-foreground = ${colors.foreground-alt} 98 | 99 | [module/home] 100 | type = internal/fs 101 | interval = 25 102 | 103 | mount-0 = /home 104 | 105 | label-mounted = %{F#0a81f5}~%{F-}: %percentage_used%% 106 | label-unmounted = %mountpoint% not mounted 107 | label-unmounted-foreground = ${colors.foreground-alt} 108 | 109 | [module/bspwm] 110 | type = internal/bspwm 111 | format = 112 | margin-bottom = 0 113 | 114 | label-mode-padding = 2 115 | label-mode-foreground = #000 116 | label-mode-background = ${colors.primary} 117 | 118 | ; focused = Active workspace on focused monitor 119 | label-focused = %name% 120 | label-focused-background = ${colors.background} 121 | ;label-focused-background = ${module/bspwm.label-focused-background} 122 | label-focused-underline = ${colors.primary} 123 | label-focused-padding = 2 124 | 125 | ; unfocused = Inactive workspace on any monitor 126 | label-unfocused = %name% 127 | label-unfocused-padding = 4 128 | 129 | ; visible = Active workspace on unfocused monitor 130 | ; label-visible = %index% 131 | ; label-visible-background = ${self.label-focused-background} 132 | ; label-visible-underline = ${self.label-focused-underline} 133 | ; label-visible-padding = ${self.label-focused-padding} 134 | 135 | label-separator-padding = 0 136 | ; urgent = Workspace with urgency hint set 137 | ; label-urgent = %index% 138 | ; label-urgent-background = ${module/bspwm.label-urgent-background} 139 | ; label-urgent-padding = ${module/bspwm.label-urgent-padding} 140 | 141 | [module/cpu] 142 | type = internal/cpu 143 | interval = 2 144 | format-prefix = "CPU: " 145 | format-prefix-foreground = ${colors.foreground} 146 | format-underline = ${colors.secondary} 147 | label = %percentage:2%% 148 | 149 | [module/memory] 150 | type = internal/memory 151 | interval = 2 152 | format-prefix = "MEM: " 153 | format-prefix-foreground = ${colors.foreground} 154 | format-underline = ${colors.secondary} 155 | label = %percentage_used%% 156 | 157 | [module/eth] 158 | type = internal/network 159 | interface = enp0s25 160 | interval = 3.0 161 | 162 | format-connected-underline = #95ffa4 163 | ;format-connected-underline = #62d196 164 | format-connected-prefix-foreground = ${colors.foreground-alt} 165 | label-connected = %local_ip% 166 | 167 | ;format-disconnected = 168 | format-disconnected = 169 | format-disconnected-underline = ${self.format-connected-underline} 170 | ;label-disconnected = %ifname% disconnected 171 | label-disconnected = no eth 172 | label-disconnected-foreground = ${colors.foreground-alt} 173 | 174 | [module/wlan] 175 | type = internal/network 176 | interface = wlp1s0 177 | interval = 3.0 178 | 179 | format-connected = 180 | label-connected =  %essid% 181 | 182 | format-disconnected = 183 | label-disconnected = " disconnected" 184 | 185 | [module/mpd] 186 | type = internal/mpd 187 | host = 127.0.0.1 188 | port = 6600 189 | 190 | format-online = " @ " 191 | format-offline = "offline" 192 | 193 | label-song = %artist% - %title% 194 | label-song-maxlen = 50 195 | label-song-ellipsis = true 196 | 197 | 198 | [module/date] 199 | type = internal/date 200 | interval = 1 201 | 202 | date = "%m-%d" 203 | date-alt = "%Y-%m-%d" 204 | time = %I:%M %p 205 | time-alt = %I:%M:%S %p 206 | 207 | label =  %date%  %time% 208 | 209 | 210 | [module/volume] 211 | type = internal/pulseaudio 212 | 213 | format-volume = 214 | label-volume = %percentage%% 215 | 216 | ramp-volume-0 =  217 | ramp-volume-1 =  218 | ramp-volume-2 =  219 | 220 | label-muted =  muted 221 | 222 | [module/temperature] 223 | type = internal/temperature 224 | thermal-zone = 0 225 | warn-temperature = 90 226 | hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input 227 | 228 | format =