├── .gitignore ├── README.md ├── bin ├── converttogif └── trash ├── configs ├── code-oss │ └── settings.json ├── git │ ├── config │ └── ignore ├── joe │ └── joerc ├── libinput-gestures │ └── libinput-gestures.conf └── micro │ └── settings.json ├── email ├── signature.chris.txt ├── signature.knoxite.txt └── signature.txt ├── packages ├── arch │ ├── base.sh │ ├── desktop.sh │ ├── desktop_plasma.sh │ ├── dev.sh │ ├── drivers │ │ ├── bluetooth.sh │ │ ├── intel.sh │ │ ├── razer.sh │ │ └── smartcard.sh │ ├── makerstuff.sh │ ├── network.sh │ ├── packages.sh │ ├── virtualbox.sh │ └── xorg.sh ├── arch_minimal │ ├── base.sh │ ├── desktop.sh │ ├── desktop_plasma.sh │ ├── dev.sh │ ├── network.sh │ ├── packages.sh │ └── xorg.sh ├── arch_router │ ├── base.sh │ ├── dev.sh │ ├── network.sh │ ├── packages.sh │ └── services.sh ├── elvish.sh └── macos │ ├── base.sh │ ├── desktop.sh │ ├── dev.sh │ └── packages.sh ├── setup.sh ├── setup_arch.sh ├── setup_arch32.sh ├── setup_archarm.sh ├── setup_helpers.sh ├── setup_linux.sh ├── setup_macos.sh └── shell ├── linux └── profile ├── macos └── profile ├── profile ├── rc.elv ├── rc_private.elv └── zshrc /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | shell/rc_private.elv 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # muesli's dotfiles 2 | 3 | ## Platform Support 4 | 5 | On both ArchLinux and macOS run `setup.sh` to bootstrap an install: 6 | 7 | ``` 8 | ./setup.sh 9 | ``` 10 | 11 | ## Bootstrap an ArchLinux Install 12 | 13 | ### Install Drivers 14 | 15 | For Intel i5/i7 based machines simply run: 16 | 17 | ``` 18 | ./packages/arch/drivers/intel.sh 19 | ``` 20 | 21 | If you want to control Razer RGB devices, run: 22 | 23 | ``` 24 | ./packages/arch/drivers/razer.sh 25 | ``` 26 | 27 | ### First Steps 28 | 29 | Add users to required groups: https://wiki.archlinux.org/index.php/users_and_groups#Group_list 30 | 31 | Enable microcode updates: https://wiki.archlinux.org/index.php/microcode 32 | 33 | Install systemd-boot pacman hook: https://wiki.archlinux.org/index.php/systemd-boot#Automatically 34 | 35 | Enable SDDM: `systemctl enable sddm` 36 | 37 | ### Configuration 38 | 39 | #### Setup GPG SmartCard 40 | 41 | ``` 42 | echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf 43 | echo "pcsc-driver /usr/lib/libpcsclite.so" > ~/.gnupg/scdaemon.conf 44 | echo "card-timeout 5" >> ~/.gnupg/scdaemon.conf 45 | echo "disable-ccid" >> ~/.gnupg/scdaemon.conf 46 | systemctl enable pcscd 47 | systemctl start pcscd 48 | ``` 49 | 50 | Fetch your public key from the SmartCard: 51 | 52 | ``` 53 | gpg --card-edit 54 | gpg/card> fetch 55 | ``` 56 | 57 | More info in the Arch wiki: https://wiki.archlinux.org/index.php/GnuPG#SSH_agent 58 | 59 | #### Adjust System Limits 60 | 61 | Edit `/etc/systemd/system.conf.d/limits.conf` 62 | 63 | ``` 64 | [Manager] 65 | DefaultLimitNOFILE=32768 66 | DefaultTasksMax=32768 67 | ``` 68 | 69 | #### Suspend issues 70 | 71 | Should you suffer from suspend issues (like the system resuming from sleep 72 | immediately), this is most likely caused by the USB chipset acting up. To 73 | prevent that, create a new systemd unit `/etc/systemd/system/disable-usb-wakeup.service`: 74 | 75 | ``` 76 | [Unit] 77 | Description=Disable USB wakeup triggers in /proc/acpi/wakeup 78 | 79 | [Service] 80 | Type=oneshot 81 | ExecStart=/bin/sh -c "echo XHC > /proc/acpi/wakeup" 82 | ExecStop=/bin/sh -c "echo XHC > /proc/acpi/wakeup" 83 | RemainAfterExit=yes 84 | 85 | [Install] 86 | WantedBy=multi-user.target 87 | ``` 88 | 89 | Enable & start the new unit now: 90 | 91 | ``` 92 | systemctl enable disable-usb-wakeup 93 | systemctl start disable-usb-wakeup 94 | ``` 95 | 96 | #### System Tweaks 97 | 98 | Enable smartd: https://wiki.archlinux.org/index.php/S.M.A.R.T. 99 | 100 | Limit journal size: https://wiki.archlinux.org/index.php/Systemd#Journal_size_limit 101 | 102 | Configure Avahi/mDNS: https://wiki.archlinux.org/index.php/avahi 103 | 104 | Install TLP: https://wiki.archlinux.org/index.php/TLP 105 | 106 | Enable zram: https://wiki.archlinux.org/index.php/Improving_performance#Zram_or_zswap 107 | 108 | ## Configuration for Unix Platforms 109 | 110 | ### GPG 111 | 112 | #### Preferred Key 113 | 114 | Edit `~/.gnupg/gpg.conf` 115 | 116 | ``` 117 | default-key CA1EBB7E 118 | ``` 119 | 120 | #### Caching & Timeouts 121 | 122 | Edit `~/.gnupg/gpg-agent.conf` 123 | 124 | ``` 125 | echo "default-cache-ttl 1800" >> ~/.gnupg/gpg-agent.conf 126 | echo "max-cache-ttl 999999" >> ~/.gnupg/gpg-agent.conf 127 | ``` 128 | 129 | ### Setup poldi 130 | 131 | Install `poldi-git`. Add your key to `/etc/poldi/localdb/keys` and add your user 132 | to `/etc/poldi/localdb/users`. 133 | 134 | Edit `/etc/pam.d/sudo` and prepend: 135 | 136 | ``` 137 | auth sufficient pam_poldi.so 138 | ``` 139 | 140 | ### Setup multi-factor authentication 141 | 142 | Edit `/etc/pam.d/system-auth-yubico` 143 | 144 | ``` 145 | echo "auth required pam_yubico.so id=xxxxx" > /etc/pam.d/system-auth-yubico 146 | ``` 147 | 148 | Put the public part of your OTP (the first 12 characters) in `~/.yubico/authorized_yubikeys`: 149 | 150 | ``` 151 | muesli:cc.......... 152 | ``` 153 | 154 | Edit `/etc/pam.d/sudo` and prepend: 155 | 156 | ``` 157 | auth sufficient pam_yubico.so id=xxxxx 158 | ``` 159 | 160 | ### sudo Timeout 161 | 162 | Edit `/etc/sudoers` 163 | 164 | ``` 165 | echo "Defaults:muesli timestamp_timeout=30" >> /etc/sudoers 166 | ``` 167 | 168 | ### libinput Gestures 169 | 170 | Install `libinput-gestures` and edit `~/.config/libinput-gestures.conf`. 171 | 172 | ``` 173 | libinput-gestures-setup autostart 174 | ``` 175 | -------------------------------------------------------------------------------- /bin/converttogif: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | FPS=15 3 | WIDTH=640 4 | 5 | #Generate palette for better quality 6 | ffmpeg -i "$1" -vf fps=$FPS,scale=$WIDTH:-1:flags=lanczos,palettegen /tmp/tmp_palette.png 7 | 8 | #Generate gif using palette 9 | ffmpeg -i "$1" -i /tmp/tmp_palette.png -loop 0 -filter_complex "fps=$FPS,scale=$WIDTH:-1:flags=lanczos[x];[x][1:v]paletteuse" "$2" 10 | 11 | rm /tmp/tmp_palette.png 12 | -------------------------------------------------------------------------------- /bin/trash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | kioclient move "$@" trash:/ > /dev/null 3 | -------------------------------------------------------------------------------- /configs/code-oss/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.fontFamily": "'Hack', 'Droid Sans Mono', 'Courier New', monospace, 'Droid Sans Fallback'", 3 | "editor.fontSize": 15, 4 | "editor.formatOnSave": true, 5 | "editor.detectIndentation": true, 6 | "window.zoomLevel": 1, 7 | "window.titleBarStyle": "native", 8 | "telemetry.enableTelemetry": false, 9 | "workbench.colorTheme": "Dracula", 10 | "workbench.startupEditor": "welcomePage", 11 | "workbench.sideBar.location": "right", 12 | "files.insertFinalNewline": true, 13 | "files.eol": "\n", 14 | "files.trimTrailingWhitespace": true, 15 | "go.coverageOptions": "showBothCoveredAndUncoveredCode", 16 | "go.lintTool": "golangci-lint", 17 | "go.gopath": "/home/muesli/Sources/go", 18 | "html.format.indentHandlebars": true, 19 | "html.format.indentInnerHtml": true, 20 | "html.format.wrapAttributes": "aligned-multiple", 21 | "terminal.integrated.shell.linux": "/usr/bin/elvish", 22 | "json.format.enable": false, 23 | "cmake.configureOnOpen": true, 24 | "cmake.autoRestartBuild": true, 25 | "C_Cpp.default.cppStandard": "c++17", 26 | "C_Cpp.default.cStandard": "c11", 27 | "C_Cpp.default.intelliSenseMode": "clang-x64", 28 | "C_Cpp.clang_format_sortIncludes": true, 29 | "C_Cpp.clang_format_style": "WebKit", 30 | "C_Cpp.clang_format_path": "/usr/bin/clang-format", 31 | "C_Cpp.formatting": "Disabled", 32 | "C_Cpp.includePath": [ 33 | "/usr/include/**", 34 | "/usr/include/KF5/**", 35 | "/usr/include/qt/**" 36 | ], 37 | "arduino.additionalUrls": [ 38 | "http://arduino.esp8266.com/stable/package_esp8266com_index.json" 39 | ], 40 | "arduino.defaultBaudRate": 921600, 41 | "arduino.path": "/usr/bin/", 42 | "liveshare.increasedGuestLimit": false, 43 | "liveshare.focusBehavior": "prompt", 44 | "liveshare.guestApprovalRequired": true, 45 | "peacock.vslsJoinColor": "#42b883", 46 | "go.formatTool": "goimports", 47 | "terminal.enableAppInsights": false, 48 | "go.useLanguageServer": true, 49 | "liveshare.autoShareTerminals": false 50 | } 51 | -------------------------------------------------------------------------------- /configs/git/config: -------------------------------------------------------------------------------- 1 | [user] 2 | email = muesli@gmail.com 3 | name = Christian Muehlhaeuser 4 | signingkey = 3CF9FA45CA1EBB7E 5 | [push] 6 | default = simple 7 | 8 | [url "https://anongit.kde.org/"] 9 | insteadOf = kde: 10 | [url "git@git.kde.org:"] 11 | pushInsteadOf = kde: 12 | [core] 13 | quotepath = false 14 | [color] 15 | ui = true 16 | -------------------------------------------------------------------------------- /configs/git/ignore: -------------------------------------------------------------------------------- 1 | # File Managers 2 | .directory 3 | .Trash* 4 | .DS_Store 5 | .Spotlight-V100 6 | .nfs* 7 | ._* 8 | Thumbs.db 9 | [Dd]esktop.ini 10 | *.lnk 11 | 12 | # Backup files 13 | *~ 14 | *.bak 15 | 16 | # Temporary files 17 | *.swp 18 | .#* 19 | \#*# 20 | 21 | # Logs 22 | *.log 23 | 24 | # Databases 25 | *.db 26 | *.sqlite 27 | *.sqlite3 28 | 29 | # Binaries 30 | *.a 31 | *.o 32 | *.so 33 | *.dylib 34 | *.exe 35 | *.dll 36 | 37 | # Generated files 38 | **/build 39 | **/.cache 40 | 41 | ## Java 42 | *.class 43 | 44 | ## Python 45 | *.py[oc] 46 | **/__pycache__ 47 | 48 | ## Javascript 49 | **/node_modules 50 | 51 | # env 52 | .envrc 53 | -------------------------------------------------------------------------------- /configs/joe/joerc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/muesli/dotfiles/d4ef30d0b32399f5be8656a67cef43a779439fc4/configs/joe/joerc -------------------------------------------------------------------------------- /configs/libinput-gestures/libinput-gestures.conf: -------------------------------------------------------------------------------- 1 | # Configuration file for libinput-gestures. 2 | # Mark Blakeney, Sep 2015 3 | # 4 | # The default configuration file exists at /etc/libinput-gestures.conf 5 | # but a user can create a personal custom configuration file at 6 | # ~/.config/libinput-gestures.conf. 7 | # 8 | # Lines starting with '#' and blank lines are ignored. Currently 9 | # "gesture" and "device" configuration keywords are supported as 10 | # described below. The keyword can optionally be appended with a ":" (to 11 | # maintain compatibility with original format configuration files). 12 | # 13 | # Each gesture line has 3 [or 4] arguments separated by whitespace: 14 | # 15 | # action motion [finger_count] command 16 | # 17 | # where action and motion is either: 18 | # swipe up 19 | # swipe down 20 | # swipe left 21 | # swipe right 22 | # swipe left_up 23 | # swipe left_down 24 | # swipe right_up 25 | # swipe right_down 26 | # pinch in 27 | # pinch out 28 | # pinch clockwise 29 | # pinch anticlockwise 30 | # 31 | # command is the remainder of the line and is any valid shell command + 32 | # arguments. 33 | # 34 | # finger_count is a single numeric digit and is optional (and is 35 | # typically 3 or 4). If specified then the command is executed when 36 | # exactly that number of fingers is used in the gesture. If not 37 | # specified then the command is executed when that gesture is executed 38 | # with any number of fingers. Gesture lines specified with finger_count 39 | # have priority over the same gesture specified without any 40 | # finger_count. 41 | # 42 | # Typically command will be xdotool, or wmctrl. See "man xdotool" for 43 | # the many things you can action with that tool. Note that unfortunately 44 | # xdotool does not work with native Wayland clients. 45 | 46 | ############################################################################### 47 | # SWIPE GESTURES: 48 | ############################################################################### 49 | 50 | # Note the default is an "internal" command that uses wmctrl to switch 51 | # workspaces and, unlike xdotool, works on both Xorg and Wayland (via 52 | # XWayland). It also can be configured for vertical and horizontal 53 | # switching over tabular workspaces, as per the example below. You can 54 | # also add "-w" to the internal command to allow wrapping workspaces. 55 | 56 | # Move to next workspace (works for GNOME/KDE/etc on Wayland and Xorg) 57 | #gesture swipe up _internal ws_up 58 | 59 | # NOTE ABOUT FINGER COUNT: 60 | # The above command will configure this command for all fingers (i.e. 3 61 | # for 4) but to configure it for 3 fingers only, change it to: 62 | # gesture swipe up 3 _internal ws_up 63 | # Then you can configure something else for 4 fingers or leave 4 fingers 64 | # unconfigured. You can configure an explicit finger count like this for 65 | # all example commands in this configuration file. 66 | # 67 | # gesture swipe up xdotool key super+Page_Down 68 | 69 | # Move to prev workspace (works for GNOME/KDE/etc on Wayland and Xorg) 70 | gesture swipe down _internal ws_down 71 | # gesture swipe down xdotool key super+Page_Up 72 | 73 | # Browser go forward (works only for Xorg, and Xwayland clients) 74 | #gesture swipe left xdotool key alt+Right 75 | 76 | # Browser go back (works only for Xorg, and Xwayland clients) 77 | #gesture swipe right xdotool key alt+Left 78 | 79 | # NOTE: If you don't use "natural" scrolling direction for your touchpad 80 | # then you may want to swap the above default left/right and up/down 81 | # configurations. 82 | 83 | # Optional extended swipe gestures, e.g. for browser tab navigation: 84 | # 85 | # Jump to next open browser tab 86 | # gesture swipe right_up xdotool key control+Tab 87 | # 88 | # Jump to previous open browser tab 89 | # gesture swipe left_up xdotool key control+shift+Tab 90 | # 91 | # Close current browser tab 92 | # gesture swipe left_down xdotool key control+w 93 | # 94 | # Reopen and jump to last closed browser tab 95 | # gesture swipe right_down xdotool key control+shift+t 96 | 97 | # Example of 8 static workspaces, e.g. using KDE virtual-desktops, 98 | # arranged in 2 rows of 4 columns across using swipe up/down/left/right 99 | # to navigate in fixed planes. You can also add the "-w/--wrap" option 100 | # to allow wrapping in any direction. You must configure your virtual 101 | # desktops with the same column dimension. 102 | # gesture swipe up _internal --cols 4 ws_up 103 | # gesture swipe down _internal --cols 4 ws_down 104 | # gesture swipe left _internal --cols 4 ws_left 105 | # gesture swipe right _internal --cols 4 ws_right 106 | # 107 | # Example of 16 static workspaces, e.g. using KDE virtual-desktops, 108 | # arranged in 4 rows of 4 columns across using swipe up/down/left/right 109 | # to navigate in fixed planes, and also using swipe 110 | # left_up/left_down/right_up/right_down to navigate diagonally. You can 111 | # also add the "-w/--wrap" option to allow wrapping in any direction 112 | # and/or diagonally. You must configure your virtual desktops with the 113 | # same column dimension. 114 | # gesture swipe up _internal --cols 4 ws_up 115 | # gesture swipe down _internal --cols 4 ws_down 116 | # gesture swipe left _internal --cols 4 ws_left 117 | # gesture swipe right _internal --cols 4 ws_right 118 | # gesture swipe left_up _internal --cols 4 ws_left_up 119 | # gesture swipe left_down _internal --cols 4 ws_left_down 120 | # gesture swipe right_up _internal --cols 4 ws_right_up 121 | # gesture swipe right_down _internal --cols 4 ws_right_down 122 | 123 | # Example virtual desktop switching for Ubuntu Unity/Compiz. The 124 | # _internal command does not work for Compiz but you can explicitly 125 | # configure the swipe commands to work for a Compiz virtual 2 126 | # dimensional desktop as follows: 127 | # gesture swipe up xdotool key ctrl+alt+Up 128 | # gesture swipe down xdotool key ctrl+alt+Down 129 | # gesture swipe left xdotool key ctrl+alt+Left 130 | # gesture swipe right xdotool key ctrl+alt+Right 131 | 132 | # Example to change audio volume: 133 | # Note this only works on an Xorg desktop (not Wayland). 134 | # gesture swipe up xdotool key XF86AudioRaiseVolume 135 | # gesture swipe down xdotool key XF86AudioLowerVolume 136 | 137 | ############################################################################### 138 | # PINCH GESTURES: 139 | ############################################################################### 140 | 141 | # GNOME SHELL open/close overview (works for GNOME on Xorg only) 142 | #gesture pinch in xdotool key super+s 143 | #gesture pinch out xdotool key super+s 144 | 145 | # KDE Plasma open/close overview 146 | # gesture pinch in xdotool key ctrl+F9 147 | # gesture pinch out xdotool key ctrl+F9 148 | 149 | # GNOME SHELL open/close overview (works for GNOME on Wayland and Xorg) 150 | # Note since GNOME 3.24 on Wayland this is implemented natively so no 151 | # real point configuring for Wayland. 152 | # gesture pinch in dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview.toggle();' 153 | # gesture pinch out dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'Main.overview.toggle();' 154 | 155 | # Optional extended pinch gestures: 156 | # gesture pinch clockwise 157 | # gesture pinch anticlockwise 158 | 159 | ############################################################################### 160 | # This application normally determines your touchpad device 161 | # automatically. Some users may have multiple touchpads but by default 162 | # we use only the first one found. However, you can choose to specify 163 | # the explicit device name to use. Run "libinput list-devices" to work 164 | # out the name of your device (from the "Device:" field). Then add a 165 | # device line specifying that name, e.g: 166 | # 167 | # device DLL0665:01 06CB:76AD Touchpad 168 | # 169 | # If the device name starts with a '/' then it is instead considered as 170 | # the explicit device path although since device paths can change 171 | # through reboots this is best to be a symlink. E.g. instead of specifying 172 | # /dev/input/event12, you should use the corresponding full path link 173 | # under /dev/input/by-path/ or /dev/input/by-id/. 174 | # 175 | # You can choose to use ALL touchpad devices by setting the device name 176 | # to "all". E.g. Do this if you have multiple touchpads which you want 177 | # to use in parallel. This reduces performance slightly so only set this 178 | # if you have to. 179 | # 180 | # device all 181 | 182 | ############################################################################### 183 | # You can set a minimum travel distance threshold before swipe gestures 184 | # are actioned using the swipe_threshold configuration command. 185 | # Specify this value in dots. The default is 0. 186 | # E.g. set it to 100 dots with "swipe_threshold 100". 187 | # swipe_threshold 0 188 | 189 | ############################################################################### 190 | # You can set a timeout on gestures from start to end. The default is 191 | # the value commented below. It can be any value in float secs >= 0. 192 | # 0 = no timeout. E.g. set it to 2 secs with "timeout 2". 193 | # timeout 1.5 194 | 195 | gesture swipe left 3 xdotool key alt+Right 196 | gesture swipe right 3 xdotool key alt+Left 197 | 198 | gesture swipe up 3 xdotool key ctrl+F9 199 | gesture swipe down 3 xdotool key F12 200 | -------------------------------------------------------------------------------- /configs/micro/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "autoclose": true, 3 | "autoindent": true, 4 | "autosave": 0, 5 | "autosu": true, 6 | "backup": true, 7 | "basename": false, 8 | "c++-formatter": "", 9 | "c-formatter": "", 10 | "clojure-formatter": "", 11 | "coffeescript-formatter": "", 12 | "colorcolumn": 0, 13 | "colorscheme": "default", 14 | "comment": true, 15 | "crystal-formatter": "", 16 | "csharp-formatter": "", 17 | "css-formatter": "", 18 | "cursorline": true, 19 | "d-formatter": "", 20 | "dart-formatter": "", 21 | "diff": true, 22 | "diffgutter": false, 23 | "elm-formatter": "", 24 | "encoding": "utf-8", 25 | "eofnewline": true, 26 | "fastdirty": true, 27 | "fileformat": "unix", 28 | "filemanager-compressparent": true, 29 | "filemanager-foldersfirst": true, 30 | "filemanager-openonstart": false, 31 | "filemanager-showdotfiles": true, 32 | "filemanager-showignored": true, 33 | "filetype": "unknown", 34 | "fish-formatter": "", 35 | "flow-formatter": "", 36 | "fmt-onsave": true, 37 | "fortran-formatter": "", 38 | "ftoptions": true, 39 | "go-formatter": "", 40 | "gofmt": true, 41 | "goimports": true, 42 | "graphql-formatter": "", 43 | "haskell-formatter": "", 44 | "hidehelp": false, 45 | "html-formatter": "", 46 | "ignorecase": false, 47 | "indentchar": " ", 48 | "infobar": true, 49 | "java-formatter": "", 50 | "javascript-formatter": "", 51 | "json-formatter": "", 52 | "jsx-formatter": "", 53 | "keepautoindent": false, 54 | "keymenu": false, 55 | "less-formatter": "", 56 | "linter": true, 57 | "literate": true, 58 | "lua-formatter": "", 59 | "markdown-formatter": "", 60 | "marko-formatter": "", 61 | "matchbrace": true, 62 | "matchbraceleft": false, 63 | "mkparents": false, 64 | "mouse": true, 65 | "objective-c-formatter": "", 66 | "ocaml-formatter": "", 67 | "p-formatter": "", 68 | "paste": false, 69 | "perl-formatter": "", 70 | "php-formatter": "", 71 | "pluginchannels": [ 72 | "https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json" 73 | ], 74 | "pluginrepos": [], 75 | "pug-formatter": "", 76 | "puppet-formatter": "", 77 | "python-formatter": "", 78 | "readonly": false, 79 | "rmtrailingws": true, 80 | "ruby-formatter": "", 81 | "ruler": true, 82 | "rust-formatter": "", 83 | "savecursor": true, 84 | "savehistory": true, 85 | "saveundo": false, 86 | "scrollbar": true, 87 | "scrollmargin": 3, 88 | "scrollspeed": 2, 89 | "scss-formatter": "", 90 | "shell-formatter": "", 91 | "smartpaste": true, 92 | "softwrap": false, 93 | "splitBottom": true, 94 | "splitRight": true, 95 | "splitbottom": true, 96 | "splitright": true, 97 | "status": true, 98 | "statusformatl": "$(filename) $(modified)($(line),$(col)) $(status.paste)| ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)", 99 | "statusformatr": "$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help", 100 | "statusline": true, 101 | "sucmd": "sudo", 102 | "syntax": true, 103 | "tabmovement": false, 104 | "tabsize": 4, 105 | "tabstospaces": false, 106 | "termtitle": true, 107 | "tex-formatter": "", 108 | "trimdiff": false, 109 | "typescript-formatter": "", 110 | "useprimary": true, 111 | "vala-formatter": "", 112 | "xml-formatter": "", 113 | "yaml-formatter": "" 114 | } 115 | -------------------------------------------------------------------------------- /email/signature.chris.txt: -------------------------------------------------------------------------------- 1 | Christian Muehlhaeuser 2 | [Software Engineer] 3 | 4 | chris.de | twitter.com/mueslix | github.com/muesli 5 | -------------------------------------------------------------------------------- /email/signature.knoxite.txt: -------------------------------------------------------------------------------- 1 | Christian Muehlhaeuser 2 | [Project Founder] 3 | 4 | knoxite.com | twitter.com/knoxite_com | github.com/knoxite 5 | -------------------------------------------------------------------------------- /email/signature.txt: -------------------------------------------------------------------------------- 1 | Christian Muehlhaeuser 2 | [Software Engineer] 3 | 4 | fribbledom.com | twitter.com/mueslix | github.com/muesli 5 | -------------------------------------------------------------------------------- /packages/arch/base.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Basic utils 5 | "coreutils" "dnsutils" "dosfstools" 6 | # Package utils 7 | "pacutils" 8 | # System hooks 9 | "kernel-modules-hook" 10 | # Disk drive utils 11 | "hdparm" "smartmontools" 12 | # Monitors 13 | "htop" "iotop" "lsof" "ncdu" 14 | # Editors 15 | "joe" "micro-bin" 16 | # Key management 17 | "keybase" 18 | # Security 19 | "yubico-pam" "pam_beacon-git" 20 | # CLI tools 21 | "ripgrep" "time" "tmux" "which" "imagemagick" "cht.sh" 22 | # Decompression 23 | "unrar" "unzip" 24 | # Shell 25 | "zsh" 26 | # Docker 27 | "docker" "docker-compose" 28 | ) 29 | -------------------------------------------------------------------------------- /packages/arch/desktop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Avahi/zeroconf 5 | "avahi" 6 | # Password management 7 | "gopass" 8 | # Browsers 9 | "chromium" "chromium-widevine" "firefox" 10 | # OpenVPN 11 | "networkmanager-openvpn" 12 | # Video players 13 | "mpv" "vlc" 14 | # Extra fonts 15 | "noto-fonts-emoji" "ttf-freefont" "ttf-liberation" "ttf-roboto" "ttf-ms-fonts" 16 | # Foreign fonts 17 | "ttf-arphic-uming" "ttf-indic-otf" 18 | # OBS 19 | "obs-studio" "frei0r-plugins" 20 | # Audio stuff 21 | "pulseaudio-alsa" "pulseaudio-zeroconf" 22 | # Systemd manager 23 | "systemdgenie" 24 | # Telepathy 25 | "telepathy-kde-meta" 26 | # Messengers 27 | "telegram-desktop" "signal-desktop" "wire-desktop" 28 | # Access Desktop trash from CLI 29 | "trash-cli" 30 | # SmartCards 31 | "yubikey-personalization-gui" "libu2f-host" 32 | # Photography 33 | "digikam" 34 | # Video editor 35 | "kdenlive" 36 | # Document viewers / editors 37 | "gwenview" "krita" "okular" 38 | # Editors 39 | "kate" "kwrite" 40 | # IRC client 41 | "konversation" 42 | # Screenshots 43 | "spectacle" 44 | # AppImage support 45 | "libappimage" 46 | ) 47 | -------------------------------------------------------------------------------- /packages/arch/desktop_plasma.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Meta package for basic Plasma 5 | "plasma-meta" 6 | # (Compressed) Archive manager 7 | "ark" 8 | # File manager 9 | "dolphin" 10 | # Alternative Qt-based browser 11 | "falkon" 12 | # Calculator 13 | "kcalc" 14 | # Android integration 15 | "kdeconnect" 16 | # GUI dialogs for terminal apps 17 | "kdialog" 18 | # GPG manager 19 | "kleopatra" 20 | # Mail client / PIM 21 | "kmail" "kontact" "korganizer" "kaddressbook" "kdepim-addons" 22 | # Terminal apps 23 | "konsole" "yakuake" 24 | # System monitors 25 | "ksystemlog" 26 | # Manager for encrypted password wallet 27 | "kwalletmanager" 28 | # Audio / mixer 29 | "pavucontrol-qt" "phonon-qt5-vlc" 30 | # Philips Hue Plasma widget 31 | "plasma5-applets-hoppla-sa-git" 32 | # Desktop utils 33 | "latte-dock" 34 | # GTK integration 35 | "kde-gtk-config" 36 | ) 37 | -------------------------------------------------------------------------------- /packages/arch/dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # IDEs / Code editors 5 | "code" "kdevelop" 6 | # CMake 7 | "cmake" "extra-cmake-modules" 8 | # SCMs 9 | "git" 10 | # Go 11 | "go" "go-tools" "delve" "goreleaser" 12 | # Web-dev on CLI 13 | "httpie" "js-beautify" 14 | # Image handling 15 | "pngcrush" "cutycapt-qt5-git" 16 | # Qt5 packages 17 | "qt5-base" "qt5-systems" "qt5-feedback" "qt5-xmlpatterns" "qt5-x11extras" 18 | "qt5-webview" "qt5-webchannel" "qt5-websockets" "qt5-webkit" "qt5-webengine" 19 | "qt5-tools" "qt5-svg" "qt5-speech" "qt5-serialport" "qt5-serialbus" 20 | "qt5-sensors" "qt5-script" "qt5-remoteobjects" "qt5-quickcontrols2" 21 | "qt5-networkauth" "qt5-multimedia" "qt5-location" "qt5-imageformats" 22 | "qt5-graphicaleffects" "qt5-gamepad" "qt5-doc" "qt5-declarative" 23 | "qt5-datavis3d" "qt5-connectivity" "qt5-charts" "qt5-canvas3d" "qt5-3d" 24 | "qt5-scxml" 25 | # CLOC (source-line counter) 26 | "tokei" 27 | # Arduino 28 | "arduino" "arduino-avr-core" 29 | ) 30 | 31 | # To be added: 32 | # 33 | # "gostatus" 34 | -------------------------------------------------------------------------------- /packages/arch/drivers/bluetooth.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # install bluetooth support 4 | yay -S --needed bluez-firmware bluez-utils pulseaudio-bluetooth 5 | -------------------------------------------------------------------------------- /packages/arch/drivers/intel.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # install intel packages 4 | yay -S --needed \ 5 | mesa intel-ucode vulkan-intel i7z libva-intel-driver intel-gpu-tools 6 | # libva-utils xf86-video-intel 7 | -------------------------------------------------------------------------------- /packages/arch/drivers/razer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # install razer support 4 | yay -S --needed linux-headers openrazer-meta 5 | -------------------------------------------------------------------------------- /packages/arch/drivers/smartcard.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # install USB smartcard support 4 | yay -S --needed ccid opensc pcsc-tools 5 | -------------------------------------------------------------------------------- /packages/arch/makerstuff.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # CAD 5 | "openscad" 6 | # 3D printing 7 | "cura" "prusa-slicer" 8 | ) 9 | -------------------------------------------------------------------------------- /packages/arch/network.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Network tools 5 | "net-tools" "inetutils" "ethtool" "nmap" "nss-mdns" "openbsd-netcat" "prettyping" "traceroute" "wget" "whois" "wol" "rsync" 6 | # SSH 7 | "openssh" "sshfs" 8 | ) 9 | -------------------------------------------------------------------------------- /packages/arch/packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get base-dir of this shell script 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | function installYay { 7 | pwd="$(pwd)" 8 | 9 | sudo pacman -S --noconfirm --needed go make gcc fakeroot patch 10 | 11 | mkdir /tmp/yay 12 | cd /tmp/yay 13 | curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/yay.tar.gz 14 | tar -xvzf yay.tar.gz 15 | cd yay 16 | makepkg -si 17 | 18 | cd "$pwd" 19 | } 20 | 21 | # Update system 22 | sudo pacman -Syu 23 | 24 | # Install yay 25 | which yay >/dev/null || installYay 26 | 27 | # Install packages 28 | PACKAGES=() 29 | source "$DIR/base.sh" 30 | source "$DIR/network.sh" 31 | source "$DIR/dev.sh" 32 | source "$DIR/xorg.sh" 33 | source "$DIR/desktop.sh" 34 | source "$DIR/desktop_plasma.sh" 35 | source "$DIR/makerstuff.sh" 36 | source "$DIR/virtualbox.sh" 37 | 38 | yay -S --needed ${PACKAGES[@]} 39 | -------------------------------------------------------------------------------- /packages/arch/virtualbox.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # VirtualBox plus kernel modules 5 | "virtualbox" "virtualbox-host-modules-arch" 6 | ) 7 | -------------------------------------------------------------------------------- /packages/arch/xorg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # X.org Server 5 | "xorg-server" 6 | # X11 utils 7 | "xclip" 8 | ) 9 | -------------------------------------------------------------------------------- /packages/arch_minimal/base.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Basic utils 5 | "coreutils" "dnsutils" "dosfstools" 6 | # Package utils 7 | "pacutils" 8 | # Disk drive utils 9 | "hdparm" "smartmontools" 10 | # Monitors 11 | "htop" "iotop" "lsof" "ncdu" 12 | # Editors 13 | "joe" "micro-bin" 14 | # CLI tools 15 | "ripgrep" "time" "tmux" "which" 16 | # Decompression 17 | "unrar" "unzip" 18 | # Shell 19 | "zsh" 20 | ) 21 | -------------------------------------------------------------------------------- /packages/arch_minimal/desktop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Password management 5 | "gopass" 6 | # Browsers 7 | "firefox" 8 | # OpenVPN 9 | "networkmanager-openvpn" 10 | # Video players 11 | "vlc" 12 | # Audio stuff 13 | "pulseaudio-alsa" "pulseaudio-zeroconf" 14 | # Document viewers / editors 15 | "gwenview" "okular" 16 | # Editors 17 | "kate" "kwrite" 18 | # IRC client 19 | "konversation" 20 | # Screenshots 21 | "spectacle" 22 | # X11 utils 23 | "xclip" 24 | ) 25 | -------------------------------------------------------------------------------- /packages/arch_minimal/desktop_plasma.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Meta package for basic Plasma 5 | "plasma-meta" 6 | # (Compressed) Archive manager 7 | "ark" 8 | # File manager 9 | "dolphin" 10 | # Calculator 11 | "kcalc" 12 | # GUI dialogs for terminal apps 13 | "kdialog" 14 | # GPG manager 15 | "kleopatra" 16 | # Terminal apps 17 | "konsole" "yakuake" 18 | # System monitors 19 | "ksystemlog" 20 | # Audio / mixer 21 | "pavucontrol-qt" "phonon-qt5-vlc" 22 | # GTK integration 23 | "kde-gtk-config" 24 | ) 25 | -------------------------------------------------------------------------------- /packages/arch_minimal/dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # SCMs 5 | "git" 6 | # Go 7 | "go" 8 | # Web-dev on CLI 9 | "httpie" 10 | ) 11 | -------------------------------------------------------------------------------- /packages/arch_minimal/network.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Network tools 5 | "net-tools" "ethtool" "nmap" "nss-mdns" "openbsd-netcat" "traceroute" "wget" "whois" 6 | # SSH 7 | "openssh" 8 | ) 9 | -------------------------------------------------------------------------------- /packages/arch_minimal/packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get base-dir of this shell script 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | function installYay { 7 | pwd="$(pwd)" 8 | 9 | sudo pacman -S --noconfirm --needed go make gcc fakeroot patch 10 | 11 | mkdir /tmp/yay 12 | cd /tmp/yay 13 | curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/yay.tar.gz 14 | tar -xvzf yay.tar.gz 15 | cd yay 16 | makepkg -si 17 | 18 | cd "$pwd" 19 | } 20 | 21 | # Update system 22 | sudo pacman -Syu 23 | 24 | # Install yay 25 | which yay >/dev/null || installYay 26 | 27 | # Install packages 28 | PACKAGES=() 29 | source "$DIR/base.sh" 30 | source "$DIR/network.sh" 31 | source "$DIR/dev.sh" 32 | source "$DIR/xorg.sh" 33 | source "$DIR/desktop.sh" 34 | source "$DIR/desktop_plasma.sh" 35 | 36 | yay -S --needed ${PACKAGES[@]} 37 | -------------------------------------------------------------------------------- /packages/arch_minimal/xorg.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # X.org Server 5 | "xorg-server" 6 | ) 7 | -------------------------------------------------------------------------------- /packages/arch_router/base.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Basic utils 5 | "coreutils" "dnsutils" "dosfstools" 6 | # Package utils 7 | "pacutils" 8 | # Disk drive utils 9 | "hdparm" "smartmontools" 10 | # Monitors 11 | "htop" "iotop" "lsof" "ncdu" 12 | # Editors 13 | "joe" "micro-git" 14 | # CLI tools 15 | "ripgrep" "time" "tmux" "which" 16 | # Decompression 17 | "unrar" "unzip" 18 | # Shell 19 | "zsh" 20 | ) 21 | -------------------------------------------------------------------------------- /packages/arch_router/dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # SCMs 5 | "git" 6 | # Go 7 | "go" 8 | # Web-dev on CLI 9 | "httpie" 10 | ) 11 | -------------------------------------------------------------------------------- /packages/arch_router/network.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Network tools 5 | "net-tools" "inetutils" "ethtool" "nmap" "nss-mdns" "openbsd-netcat" "prettyping" "traceroute" "wget" "whois" 6 | # SSH 7 | "openssh" "sshfs" 8 | # Firewall 9 | "ufw" 10 | # DHCP server 11 | "dhcp" 12 | # DNS 13 | "dnsmasq" 14 | ) 15 | -------------------------------------------------------------------------------- /packages/arch_router/packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get base-dir of this shell script 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | function installYay { 7 | pwd="$(pwd)" 8 | 9 | sudo pacman -S --noconfirm --needed go make gcc fakeroot patch 10 | 11 | mkdir /tmp/yay 12 | cd /tmp/yay 13 | curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/yay.tar.gz 14 | tar -xvzf yay.tar.gz 15 | cd yay 16 | makepkg -si 17 | 18 | cd "$pwd" 19 | } 20 | 21 | # Update system 22 | sudo pacman -Syu 23 | 24 | # Install yay 25 | which yay >/dev/null || installYay 26 | 27 | # Install packages 28 | PACKAGES=() 29 | source "$DIR/base.sh" 30 | source "$DIR/network.sh" 31 | source "$DIR/services.sh" 32 | source "$DIR/dev.sh" 33 | 34 | yay -S --needed ${PACKAGES[@]} 35 | -------------------------------------------------------------------------------- /packages/arch_router/services.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" 4 | # Databases 5 | "influxdb" 6 | # Grafana 7 | "grafana-bin" 8 | # MQTT 9 | "mosquitto" 10 | # mqttbridge 11 | "python-influxdb" "python-paho-mqtt" 12 | ) 13 | -------------------------------------------------------------------------------- /packages/elvish.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # install elvish 4 | go get github.com/elves/elvish 5 | -------------------------------------------------------------------------------- /packages/macos/base.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" "git" "gnupg" "gopass" "htop" "joe" "micro" "watch") 4 | -------------------------------------------------------------------------------- /packages/macos/desktop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}") 4 | -------------------------------------------------------------------------------- /packages/macos/dev.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGES=("${PACKAGES[@]}" "go" "qt5") 4 | -------------------------------------------------------------------------------- /packages/macos/packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get base-dir of this shell script 4 | DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 | 6 | # Install brew 7 | which brew >/dev/null || /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 8 | 9 | # Update system 10 | brew update 11 | brew upgrade 12 | 13 | # Install packages 14 | PACKAGES=() 15 | source "$DIR/base.sh" 16 | source "$DIR/dev.sh" 17 | source "$DIR/desktop.sh" 18 | 19 | brew install ${PACKAGES[@]} 20 | -------------------------------------------------------------------------------- /setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) 2017-2019, Christian Muehlhaeuser 4 | # 5 | # For license see LICENSE 6 | # 7 | set -e 8 | pwd="$(pwd)" 9 | 10 | . setup_helpers.sh 11 | 12 | # source .profile so we got correct env-vars for setup 13 | source "shell/profile" 14 | 15 | # create required dirs 16 | mkdir -p "$GOPATH" 17 | 18 | if [[ "$OSTYPE" == "linux"* ]]; then 19 | # Linux 20 | OSID="linux" 21 | elif [[ "$OSTYPE" == "darwin"* ]]; then 22 | # macOS 23 | OSID="macos" 24 | else 25 | # Unknown 26 | echo "Sorry, but setup for '$OSTYPE' is not supported (yet)!" 27 | exit 1 28 | fi 29 | 30 | ./setup_$OSID.sh 31 | 32 | cd "$HOME/Sources" 33 | # Install oh-my-zsh 34 | if [ ! -d "oh-my-zsh" ] 35 | then 36 | git clone https://github.com/muesli/oh-my-zsh.git 37 | fi 38 | cd "$pwd" 39 | 40 | ./packages/elvish.sh 41 | 42 | # Setup profile 43 | linkTo "shell/$OSID/profile" "$HOME/.profile" 44 | 45 | # Setup zsh 46 | linkTo "shell/zshrc" "$HOME/.zshrc" 47 | 48 | # Setup elvish 49 | linkTo "shell/rc.elv" "$HOME/.elvish/rc.elv" 50 | linkTo "shell/rc_private.elv" "$HOME/.elvish/lib/rc_private.elv" 51 | 52 | # Setup git 53 | mkdir -p "$HOME/.config/git" 54 | linkTo "configs/git/config" "$HOME/.config/git/config" 55 | linkTo "configs/git/ignore" "$HOME/.config/git/ignore" 56 | 57 | # Setup joe 58 | linkTo "configs/joe/joerc" "$HOME/.joerc" 59 | 60 | # Setup micro 61 | linkTo "configs/micro/settings.json" "$HOME/.config/micro/settings.json" 62 | 63 | cd "$pwd" 64 | -------------------------------------------------------------------------------- /setup_arch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) 2017-2018, Christian Muehlhaeuser 4 | # 5 | # For license see LICENSE 6 | # 7 | set -e 8 | 9 | if [[ "$FLAVOR" == "router" ]]; then 10 | FLAVOR="_${FLAVOR}" 11 | elif [[ "$FLAVOR" == "minimal" ]]; then 12 | FLAVOR="_${FLAVOR}" 13 | elif [[ "$FLAVOR" != "" ]]; then 14 | # Unknown 15 | echo "Sorry, but flavor '$FLAVOR' is unknown!" 16 | exit 1 17 | fi 18 | 19 | # Install packages 20 | ./packages/arch${FLAVOR}/packages.sh 21 | 22 | # Install drivers 23 | #./packages/arch${FLAVOR}/drivers/bluetooth.sh 24 | #./packages/arch${FLAVOR}/drivers/smartcard.sh 25 | #./packages/arch${FLAVOR}/drivers/intel.sh 26 | #./packages/arch${FLAVOR}/drivers/razer.sh 27 | -------------------------------------------------------------------------------- /setup_arch32.sh: -------------------------------------------------------------------------------- 1 | setup_arch.sh -------------------------------------------------------------------------------- /setup_archarm.sh: -------------------------------------------------------------------------------- 1 | setup_arch.sh -------------------------------------------------------------------------------- /setup_helpers.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) 2017, Christian Muehlhaeuser 4 | # 5 | # For license see LICENSE 6 | # 7 | 8 | function linkTo { 9 | DSTDIR=$(dirname "$2") 10 | mkdir -p "$DSTDIR" 11 | 12 | if [ -f "$2" ] 13 | then 14 | mv "$2" "$2.before.dotfiles" 15 | fi 16 | ln -nsf "`pwd`/$1" "$2" 17 | } 18 | -------------------------------------------------------------------------------- /setup_linux.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) 2017-2019, Christian Muehlhaeuser 4 | # 5 | # For license see LICENSE 6 | # 7 | set -e 8 | 9 | . setup_helpers.sh 10 | 11 | if [ -f /etc/os-release ]; then 12 | . /etc/os-release 13 | 14 | if [ -f setup_$ID.sh ]; then 15 | echo "Running setup for $NAME..." 16 | ./setup_$ID.sh 17 | else 18 | echo "Sorry, but '$NAME' is not a supported distribution (yet)!" 19 | fi 20 | else 21 | echo "Error detecting distribution!" 22 | fi 23 | 24 | # Setup Code-OSS 25 | linkTo "configs/code-oss/settings.json" "$HOME/.config/Code - OSS/User/settings.json" 26 | 27 | # Setup libinput-gestures 28 | linkTo "configs/libinput-gestures/libinput-gestures.conf" "$HOME/.config/libinput-gestures/libinput-gestures.conf" 29 | -------------------------------------------------------------------------------- /setup_macos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright (c) 2017-2018, Christian Muehlhaeuser 4 | # 5 | # For license see LICENSE 6 | # 7 | set -e 8 | 9 | echo "Running setup for macOS..." 10 | 11 | # Install packages 12 | ./packages/macos/packages.sh 13 | -------------------------------------------------------------------------------- /shell/linux/profile: -------------------------------------------------------------------------------- 1 | export GOPATH=$HOME/Sources/go 2 | export EDITOR=micro 3 | export QT_PKG_CONFIG=true 4 | export PATH=$HOME/bin:$GOPATH/bin:$PATH 5 | 6 | alias pass=gopass 7 | alias e=micro 8 | alias code=code-oss 9 | -------------------------------------------------------------------------------- /shell/macos/profile: -------------------------------------------------------------------------------- 1 | export GOPATH=$HOME/Sources/go 2 | export EDITOR=micro 3 | export QT_HOMEBREW=true 4 | export PATH=/usr/local/bin:$HOME/bin:$GOPATH/bin:$PATH 5 | 6 | alias pass=gopass 7 | alias e=micro 8 | -------------------------------------------------------------------------------- /shell/profile: -------------------------------------------------------------------------------- 1 | export GOPATH=$HOME/Sources/go 2 | -------------------------------------------------------------------------------- /shell/rc.elv: -------------------------------------------------------------------------------- 1 | use epm 2 | 3 | # epm Deps 4 | epm:install &silent-if-installed=$true ^ 5 | github.com/muesli/elvish-libs ^ 6 | github.com/zzamboni/elvish-completions ^ 7 | github.com/zzamboni/elvish-modules 8 | 9 | use github.com/zzamboni/elvish-modules/dir 10 | 11 | # ENV vars 12 | #E:LANG=en_US.UTF-8 13 | #E:LANGUAGE=en_US.UTF-8 14 | #E:LS_COLORS=[(split "'" (dircolors | head -1))][1] 15 | set E:GOPATH = ~/Sources/go 16 | set E:EDITOR = micro 17 | set E:QT_PKG_CONFIG = true 18 | set E:PATH = ~/bin:$E:PATH 19 | set E:SSH_AUTH_SOCK = $E:XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh 20 | set E:MICRO_TRUECOLOR = 1 21 | 22 | # Aliases 23 | fn ls [@a]{ e:ls --color=auto $@a } 24 | fn rm [@a]{ e:rm -I $@a } 25 | fn grep [@a]{ e:grep --color $@a } 26 | fn l [@a]{ ls -alh $@a } 27 | fn e [@a]{ (external $E:EDITOR) $@a } 28 | fn pping [@a]{ e:prettyping $@a } 29 | fn mcd [@a]{ mkdir $@a ; cd $@a } 30 | fn open [@a]{ xdg-open $@a } 31 | fn pass [@a]{ gopass $@a } 32 | fn cd [@dir]{ dir:cd $@dir } 33 | 34 | ## Dev stuff 35 | ### Prettier git log 36 | fn glog [@a]{ 37 | git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all $@a 38 | } 39 | ### Find path and cd to 40 | fn gcd [@a]{ 41 | if (== (count $a) 0) { 42 | cd $E:GOPATH/src/github.com/muesli 43 | } else { 44 | cd (find $E:GOPATH/src -type d -name $@a | 45 | grep -v '.old' | grep -v '.backup' | 46 | head -1) 47 | } 48 | } 49 | ### Find path and open with code 50 | fn ch [@a]{ 51 | code (find $E:GOPATH/src -type d -name $@a | 52 | grep -v '.old' | grep -v '.backup' | 53 | head -1) 54 | } 55 | 56 | ## Go stuff 57 | fn godeps [@a]{ 58 | if (== (count $a) 0) { 59 | go list -f '{{join .Deps "\n"}}' . | gostatus -stdin -v 60 | } else { 61 | go list -f '{{join .Deps "\n"}}' $@a | gostatus -stdin -v 62 | } 63 | } 64 | fn gmo [@a]{ 65 | go list -u -m -json all | go-mod-outdated -direct -update $@a 66 | } 67 | 68 | # Key bindings 69 | ### Alt-backspace to delete word 70 | set edit:insert:binding[Alt+Backspace] = $edit:kill-small-word-left~ 71 | ### Alt-d to delete the word under the cursor 72 | #edit:insert:binding[Alt-d] = { edit:move-dot-right-word; edit:kill-word-left } 73 | 74 | set edit:insert:binding[Ctrl+Left] = $edit:move-dot-left-small-word~ 75 | set edit:insert:binding[Ctrl+Right] = $edit:move-dot-right-small-word~ 76 | set edit:insert:binding[Ctrl+A] = $edit:move-dot-sol~ 77 | set edit:insert:binding[Ctrl+E] = $edit:move-dot-eol~ 78 | set edit:insert:binding[Ctrl+L] = { clear > /dev/tty; edit:redraw &full=$true } 79 | set edit:insert:binding[Ctrl+P] = $edit:location:start~ 80 | set edit:insert:binding[Alt+Up] = { dir:cd .. } 81 | 82 | ### vim nav bindings 83 | #edit:navigation:binding[h]=$edit:nav:&left 84 | #edit:navigation:binding[l]=$edit:nav:&right 85 | #edit:navigation:binding[j]=$edit:nav:&down 86 | #edit:navigation:binding[k]=$edit:nav:&up 87 | 88 | ### surpress warning when at end of history 89 | set edit:insert:binding[Down] = { } 90 | 91 | # Completions 92 | #edit:completer['']={ e:bash ~/.elvish/get-completion.bash $@args } 93 | use github.com/zzamboni/elvish-completions/cd 94 | use github.com/zzamboni/elvish-completions/git 95 | 96 | # Prompt 97 | use github.com/muesli/elvish-libs/theme/powerline 98 | edit:prompt-stale-transform = [x]{ put $x } 99 | edit:rprompt-stale-transform = [x]{ put $x } 100 | 101 | # Dir modes 102 | #dir:init 103 | edit:insert:binding[Alt-Left] = $dir:left-word-or-prev-dir~ 104 | edit:insert:binding[Alt-Right] = $dir:right-word-or-next-dir~ 105 | edit:insert:binding[Ctrl+/] = $dir:history-chooser~ 106 | 107 | # direnv 108 | use direnv 109 | 110 | # Private ENV stuff 111 | # use rc_private 112 | -------------------------------------------------------------------------------- /shell/rc_private.elv: -------------------------------------------------------------------------------- 1 | # Add your private environment settings here 2 | -------------------------------------------------------------------------------- /shell/zshrc: -------------------------------------------------------------------------------- 1 | # If you come from bash you might have to change your $PATH. 2 | # export PATH=$HOME/bin:/usr/local/bin:$PATH 3 | 4 | # Path to your oh-my-zsh installation. 5 | export ZSH=$HOME/Sources/oh-my-zsh 6 | 7 | # Set name of the theme to load. Optionally, if you set this to "random" 8 | # it'll load a random theme each time that oh-my-zsh is loaded. 9 | # See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes 10 | ZSH_THEME="muesli" 11 | 12 | # Uncomment the following line to use case-sensitive completion. 13 | # CASE_SENSITIVE="true" 14 | 15 | # Uncomment the following line to use hyphen-insensitive completion. Case 16 | # sensitive completion must be off. _ and - will be interchangeable. 17 | # HYPHEN_INSENSITIVE="true" 18 | 19 | # Uncomment the following line to disable bi-weekly auto-update checks. 20 | DISABLE_AUTO_UPDATE="true" 21 | 22 | # Uncomment the following line to change how often to auto-update (in days). 23 | # export UPDATE_ZSH_DAYS=13 24 | 25 | # Uncomment the following line to disable colors in ls. 26 | # DISABLE_LS_COLORS="true" 27 | 28 | # Uncomment the following line to disable auto-setting terminal title. 29 | # DISABLE_AUTO_TITLE="true" 30 | 31 | # Uncomment the following line to enable command auto-correction. 32 | # ENABLE_CORRECTION="true" 33 | 34 | # Uncomment the following line to display red dots whilst waiting for completion. 35 | #COMPLETION_WAITING_DOTS="true" 36 | 37 | # Uncomment the following line if you want to disable marking untracked files 38 | # under VCS as dirty. This makes repository status check for large repositories 39 | # much, much faster. 40 | DISABLE_UNTRACKED_FILES_DIRTY="true" 41 | 42 | # Uncomment the following line if you want to change the command execution time 43 | # stamp shown in the history command output. 44 | # The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" 45 | HIST_STAMPS="yyyy-mm-dd" 46 | 47 | # Would you like to use another custom folder than $ZSH/custom? 48 | # ZSH_CUSTOM=/path/to/new-custom-folder 49 | 50 | # Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) 51 | # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ 52 | # Example format: plugins=(rails git textmate ruby lighthouse) 53 | # Add wisely, as too many plugins slow down shell startup. 54 | plugins=(git golang redis-cli tmuxinator httpie) 55 | 56 | source $ZSH/oh-my-zsh.sh 57 | 58 | # User configuration 59 | 60 | # export MANPATH="/usr/local/man:$MANPATH" 61 | 62 | # You may need to manually set your language environment 63 | # export LANG=en_US.UTF-8 64 | 65 | # Preferred editor for local and remote sessions 66 | # if [[ -n $SSH_CONNECTION ]]; then 67 | # export EDITOR='vim' 68 | # else 69 | # export EDITOR='mvim' 70 | # fi 71 | 72 | # Compilation flags 73 | # export ARCHFLAGS="-arch x86_64" 74 | 75 | # ssh 76 | # export SSH_KEY_PATH="~/.ssh/rsa_id" 77 | 78 | # Set personal aliases, overriding those provided by oh-my-zsh libs, 79 | # plugins, and themes. Aliases can be placed here, though oh-my-zsh 80 | # users are encouraged to define aliases within the ZSH_CUSTOM folder. 81 | # For a full list of active aliases, run `alias`. 82 | # 83 | # Example aliases 84 | # alias zshconfig="mate ~/.zshrc" 85 | # alias ohmyzsh="mate ~/.oh-my-zsh" 86 | 87 | mcd () { mkdir "$1" && cd "$1" } 88 | 89 | if [ -r "$HOME/.profile" ] 90 | then 91 | source "$HOME/.profile" 92 | fi 93 | 94 | #if [ -x "$GOPATH/bin/elvish" ] 95 | #then 96 | # $GOPATH/bin/elvish 97 | # exit 98 | #fi 99 | --------------------------------------------------------------------------------