Compare commits

...

No commits in common. "main" and "sway-systemd" have entirely different histories.

264 changed files with 4850 additions and 5733 deletions

View file

@ -1,9 +0,0 @@
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2

1
.gitignore vendored
View file

@ -1 +0,0 @@
node_modules/

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "dotdrop"]
path = dotdrop
url = https://github.com/deadc0de6/dotdrop.git

View file

@ -1,50 +0,0 @@
#!/bin/sh
# Source husky
# shellcheck disable=SC1091
. "$(dirname -- "$0")/_/husky.sh"
echo "FunctionalHacker's dotfile pre-commit hook start"
printf "Using shell: %s \n" "$(readlink /proc/$$/exe)"
# All staged files
staged_files=$(git diff --name-only --cached --diff-filter=d)
# Run taplo on staged TOML files
staged_toml=$(echo "$staged_files" | grep '.toml$' || true)
num_staged_toml=$(echo "$staged_toml" | grep -vce '^$' || true)
if [ "$num_staged_toml" -gt 0 ]; then
printf '\nFormatting %s staged TOML files with taplo\n' "$num_staged_toml"
taplo format "$staged_toml"
printf "Re-staging\n"
git add $staged_toml
fi
# Run lua-format on staged Lua files
staged_lua=$(echo "$staged_files" | grep '.lua$' || true)
num_staged_lua=$(echo "$staged_lua" | grep -vce '^$' || true)
if [ "$num_staged_lua" -gt 0 ]; then
printf '\nFormatting %s staged Lua files with stylua\n' "$num_staged_lua"
for file in $staged_lua; do
stylua "$file"
done
printf "Re-staging\n\n"
git add $staged_lua
fi
# Run shfmt on staged shell scripts
staged_sh=$(echo "$staged_files" | grep -E '(.sh$|pre-commit)' || true)
num_staged_sh=$(echo "$staged_sh" | grep -vce '^$' || true)
if [ "$num_staged_sh" -gt 0 ]; then
printf '\nFormatting %s staged shell scripts with shfmt\n' "$num_staged_sh"
shfmt -w $staged_sh
printf "Re-staging\n\n"
git add $staged_sh
fi
# Run prettier on all other staged files
# that are supported
printf "\nRunning prettier on all supported files\n"
npx pretty-quick --staged

View file

@ -1 +0,0 @@
dotdrop/

View file

@ -1,3 +0,0 @@
package-lock.json
lazy-lock.json
dotdrop/

View file

@ -1,4 +0,0 @@
"$schema" = "https://json.schemastore.org/prettierrc.json"
trailingComma = "es5"
singleQuote = true
tabWidth = 2

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Marko Korhonen
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:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
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.

View file

@ -1,14 +0,0 @@
== The MIT License (MIT)
Copyright (c) {localyear} Marko Korhonen
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:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
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.

View file

@ -1,23 +0,0 @@
= FunctionalHacker's dotfiles
image:https://i.imgur.com/lz1Q4Zz.png?raw=true%22[screenshot of my
setup]
My personal dotfiles for my workstations, mostly for easy access for
myself but feel free to steal them for yourself!
Im using https://github.com/deadc0de6/dotdrop[dotdrop] to manage and
ease deployment of my dotfiles.
== Mirrors
This repository lives at https://git.korhonen.cc/FunctionalHacker/dotfiles[my git server],
but it is also mirrored to:
* https://gitlab.com/FunctionalHacker/dotfiles[GitLab]
* https://github.com/FunctionalHacker/dotfiles[GitHub]
* https://bitbucket.org/FunctionalHacker/dotfiles[Bitbucket]
* https://codeberg.org/FunctionalHacker/dotfiles[codeberg]
If you have any ideas for improvements, questions or anything of this
sort, you can open an issue or a pull request at any of the mirrors.

16
README.md Normal file
View file

@ -0,0 +1,16 @@
# FunctionalHacker's dotfiles
![screenshot of my setup](https://i.imgur.com/lz1Q4Zz.png?raw=true")
My personal dotfiles for my workstations, mostly for easy access for myself
but feel free to steal them for yourself!
I'm using [dotdrop](https://github.com/deadc0de6/dotdrop) to manage and ease deployment of my dotfiles.
## Mirrors
This repository lives at [My git server](https://git.korhonen.cc/FunctionalHacker/dotfiles), but it is also mirrored to:
- [GitLab](https://gitlab.com/FunctionalHacker/dotfiles)
- [GitHub](https://github.com/FunctionalHacker/dotfiles)
- [Bitbucket](https://bitbucket.org/FunctionalHacker/dotfiles)
- [codeberg](https://codeberg.org/FunctionalHacker/dotfiles)
If you have any ideas for improvements, questions or anything of this sort, you can open an issue or a pull request in either my git server (registrations open for anyone), or any of the mirrors.

View file

@ -1,282 +0,0 @@
[actions]
mkinitcpio = "mkinitcpio -P"
[config]
backup = true
banner = true
create = true
dotpath = "root"
ignoreempty = false
keepdot = true
link_dotfile_default = "nolink"
link_on_import = "nolink"
longkey = false
showdiff = false
workdir = "~/.config/sdotdrop"
[dotfiles."f_60-uinput-permissions.rules"]
dst = "/etc/udev/rules.d/60-uinput-permissions.rules"
src = "etc/udev/rules.d/60-uinput-permissions.rules"
[dotfiles."f_yubikey_udev.rules"]
dst = "/etc/udev/rules.d/20-yubikey.rules"
src = "etc/udev/rules.d/20-yubikey.rules"
[dotfiles.d_bin]
dst = "/usr/local/bin"
src = "usr/local/bin"
[dotfiles.d_network]
src = "etc/systemd/network"
dst = "/etc/systemd/network"
[dotfiles."f_networkd.conf"]
src = "etc/systemd/networkd.conf"
dst = "/etc/systemd/networkd.conf"
[dotfiles."f_99-sysctl.conf"]
dst = "/etc/sysctl.d/99-sysctl.conf"
src = "etc/sysctl.d/99-sysctl.conf"
[dotfiles."f_adb.service"]
dst = "/etc/systemd/system/adb.service"
src = "etc/systemd/system/adb.service"
[dotfiles."f_clamd.conf"]
dst = "/etc/clamav/clamd.conf"
src = "etc/clamav/clamd.conf"
[dotfiles.f_cryptissue]
dst = "/etc/cryptissue"
src = "etc/cryptissue"
[dotfiles."f_detected.sh"]
dst = "/etc/clamav/detected.sh"
src = "etc/clamav/detected.sh"
[dotfiles."f_freetype2.sh"]
dst = "/etc/profile.d/freetype2.sh"
src = "etc/profile.d/freetype2.sh"
[dotfiles."f_fonts.conf"]
dst = "/etc/fonts/local.conf"
src = "etc/fonts/local.conf"
[dotfiles."f_locale.conf"]
dst = "/etc/locale.conf"
src = "etc/locale.conf"
[dotfiles."f_locale.gen"]
dst = "/etc/locale.gen"
src = "etc/locale.gen"
[dotfiles."f_logind.conf"]
dst = "/etc/systemd/logind.conf"
src = "etc/systemd/logind.conf"
[dotfiles."f_bluetooth.conf"]
dst = "/etc/bluetooth/main.conf"
src = "etc/bluetooth/main.conf"
[dotfiles."f_pacman.conf"]
dst = "/etc/pacman.conf"
src = "etc/pacman.conf"
[dotfiles.f_pacman_zsh_hook]
dst = "/etc/pacman.d/hooks/zsh.hook"
src = "etc/pacman.d/hooks/zsh.hook"
[dotfiles."f_plymouthd.conf"]
src = "etc/plymouth/plymouthd.conf"
dst = "/etc/plymouth/plymouthd.conf"
[dotfiles.f_sshd_config]
dst = "/etc/ssh/sshd_config"
src = "etc/ssh/sshd_config"
[dotfiles."f_welcomemessage.conf"]
dst = "/etc/welcomemessage.conf"
src = "etc/welcomemessage.conf"
[dotfiles."f_99-conbee-usb-serial.rules"]
src = "etc/udev/rules.d/99-conbee-usb-serial.rules"
dst = "/etc/udev/rules.d/99-conbee-usb-serial.rules"
[dotfiles."f_99-lowbat.rules"]
src = "etc/udev/rules.d/99-lowbat.rules"
dst = "/etc/udev/rules.d/99-lowbat.rules"
[dotfiles."f_sleep.conf"]
src = "etc/systemd/sleep.conf"
dst = "/etc/systemd/sleep.conf"
[dotfiles.f_fstab]
src = "etc/fstab"
dst = "/etc/fstab"
[dotfiles.f_ignore]
src = ".ignore"
dst = "/.ignore"
[dotfiles."f_mkinitcpio.conf"]
src = "etc/mkinitcpio.conf"
dst = "/etc/mkinitcpio.conf"
actions = ["mkinitcpio"]
[dotfiles."f_vconsole.conf"]
src = "etc/vconsole.conf"
dst = "/etc/vconsole.conf"
[dotfiles."f_20-quiet-printk.conf"]
src = "etc/sysctl.d/20-quiet-printk.conf"
dst = "/etc/sysctl.d/20-quiet-printk.conf"
[dotfiles."f_system.conf"]
src = "etc/systemd/system.conf"
dst = "/etc/systemd/system.conf"
[dotfiles.f_cpupower]
src = "etc/default/cpupower"
dst = "/etc/default/cpupower"
[dotfiles."f_pacserve.service.conf"]
src = "etc/pacserve/pacserve.service.conf"
dst = "/etc/pacserve/pacserve.service.conf"
[dotfiles."f_mkinitcpio_linux.preset"]
src = "etc/mkinitcpio.d/linux.preset"
dst = "/etc/mkinitcpio.d/linux.preset"
[dotfiles.f_cmdline]
src = "etc/kernel/cmdline"
dst = "/etc/kernel/cmdline"
actions = ["mkinitcpio"]
[dotfiles."f_timesyncd.conf"]
src = "etc/systemd/timesyncd.conf"
dst = "/etc/systemd/timesyncd.conf"
[dotfiles.f_sudoers_pacman]
src = "etc/sudoers.d/pacman"
dst = "/etc/sudoers.d/pacman"
[dotfiles."f_doas.conf"]
src = "etc/doas.conf"
dst = "/etc/doas.conf"
[dotfiles."f_flexo.toml"]
src = "etc/flexo/flexo.toml"
dst = "/etc/flexo/flexo.toml"
[profiles.locale]
dotfiles = ["f_locale.conf", "f_locale.gen"]
[profiles.pacman]
dotfiles = [
"f_pacman.conf",
"f_pacman_zsh_hook",
"f_pacserve.service.conf",
"f_sudoers_pacman",
]
[profiles.Mirkwood]
dotfiles = [
"d_bin",
"f_20-quiet-printk.conf",
"f_60-uinput-permissions.rules",
"f_99-lowbat.rules",
"f_adb.service",
"f_bluetooth.conf",
"f_cmdline",
"f_cpupower",
"f_cryptissue",
"f_doas.conf",
"f_fonts.conf",
"f_freetype2.sh",
"f_ignore",
"f_logind.conf",
"f_mkinitcpio.conf",
"f_mkinitcpio_linux.preset",
"f_plymouthd.conf",
"f_sshd_config",
"f_system.conf",
"f_timesyncd.conf",
"f_welcomemessage.conf",
"f_flexo.toml",
]
include = ["locale", "pacman"]
[profiles.VentoyArch]
dotfiles = [
"d_bin",
"f_cmdline",
"f_doas.conf",
"f_fonts.conf",
"f_freetype2.sh",
"f_ignore",
"f_logind.conf",
"f_mkinitcpio.conf",
"f_mkinitcpio_linux.preset",
"f_plymouthd.conf",
"f_system.conf",
"f_timesyncd.conf",
]
include = ["locale", "pacman"]
[profiles.Shire]
dotfiles = [
"d_bin",
"f_20-quiet-printk.conf",
"f_60-uinput-permissions.rules",
"f_99-lowbat.rules",
"f_adb.service",
"f_bluetooth.conf",
"f_cmdline",
"f_cpupower",
"f_doas.conf",
"f_fonts.conf",
"f_freetype2.sh",
"f_ignore",
"f_logind.conf",
"f_mkinitcpio.conf",
"f_mkinitcpio_linux.preset",
"f_plymouthd.conf",
"f_sshd_config",
"f_system.conf",
]
include = ["locale", "pacman"]
[profiles.Moria]
include = ["locale", "pacman"]
dotfiles = [
"f_99-sysctl.conf",
"f_cmdline",
"f_cpupower",
"f_doas.conf",
"f_adb.service",
"f_mkinitcpio.conf",
"f_mkinitcpio_linux.preset",
"f_plymouthd.conf",
"f_sshd_config",
"f_flexo.toml",
]
[profiles.Tirion]
dotfiles = ["f_doas.conf", "f_ignore", "f_sshd_config"]
[profiles.Gondor]
include = ["locale", "pacman"]
dotfiles = ["f_doas.conf", "f_sshd_config"]
[profiles.localhost]
include = ["locale"]
[profiles.Edoras]
include = ["pacman"]
[profiles.mko-laptop]
dotfiles = ["f_cpupower", "f_doas.conf", "f_timesyncd.conf"]
[profiles.Evendim]
include = ["locale", "pacman"]
dotfiles = ["f_doas.conf", "f_sshd_config"]

161
config-root.yaml Normal file
View file

@ -0,0 +1,161 @@
config:
backup: true
banner: true
create: true
dotpath: root
ignoreempty: false
keepdot: true
link_dotfile_default: nolink
link_on_import: nolink
longkey: false
showdiff: false
workdir: ~/.config/sdotdrop
dotfiles:
f_60-uinput-permissions.rules:
dst: /etc/udev/rules.d/60-uinput-permissions.rules
src: etc/udev/rules.d/60-uinput-permissions.rules
d_bin:
dst: /usr/local/bin
src: usr/local/bin
d_network:
src: etc/systemd/network
dst: /etc/systemd/network
f_networkd.conf:
src: etc/systemd/networkd.conf
dst: /etc/systemd/networkd.conf
f_99-sysctl.conf:
dst: /etc/sysctl.d/99-sysctl.conf
src: etc/sysctl.d/99-sysctl.conf
f_adb.service:
dst: /etc/systemd/system/adb.service
src: etc/systemd/system/adb.service
f_clamd.conf:
dst: /etc/clamav/clamd.conf
src: etc/clamav/clamd.conf
f_cryptissue:
dst: /etc/cryptissue
src: etc/cryptissue
f_detected.sh:
dst: /etc/clamav/detected.sh
src: etc/clamav/detected.sh
f_freetype2.sh:
dst: /etc/profile.d/freetype2.sh
src: etc/profile.d/freetype2.sh
f_fonts.conf:
dst: /etc/fonts/local.conf
src: etc/fonts/local.conf
f_locale.conf:
dst: /etc/locale.conf
src: etc/locale.conf
f_locale.gen:
dst: /etc/locale.gen
src: etc/locale.gen
f_logind.conf:
dst: /etc/systemd/logind.conf
src: etc/systemd/logind.conf
f_bluetooth.conf:
dst: /etc/bluetooth/main.conf
src: etc/bluetooth/main.conf
f_pacman.conf:
dst: /etc/pacman.conf
src: etc/pacman.conf
f_sshd_config:
dst: /etc/ssh/sshd_config
src: etc/ssh/sshd_config
f_welcomemessage.conf:
dst: /etc/welcomemessage.conf
src: etc/welcomemessage.conf
f_getty.conf:
src: etc/systemd/system/getty@tty1.service.d/override.conf
dst: /etc/systemd/system/getty@tty1.service.d/override.conf
f_99-conbee-usb-serial.rules:
src: etc/udev/rules.d/99-conbee-usb-serial.rules
dst: /etc/udev/rules.d/99-conbee-usb-serial.rules
f_99-lowbat.rules:
src: etc/udev/rules.d/99-lowbat.rules
dst: /etc/udev/rules.d/99-lowbat.rules
f_sleep.conf:
src: etc/systemd/sleep.conf
dst: /etc/systemd/sleep.conf
f_fstab:
src: etc/fstab
dst: /etc/fstab
f_ignore:
src: .ignore
dst: /.ignore
f_mkinitcpio.conf:
src: etc/mkinitcpio.conf
dst: /etc/mkinitcpio.conf
f_vconsole.conf:
src: etc/vconsole.conf
dst: /etc/vconsole.conf
f_20-quiet-printk.conf:
src: etc/sysctl.d/20-quiet-printk.conf
dst: /etc/sysctl.d/20-quiet-printk.conf
f_system.conf:
src: etc/systemd/system.conf
dst: /etc/systemd/system.conf
f_cpupower:
src: etc/default/cpupower
dst: /etc/default/cpupower
f_pacserve.service.conf:
src: etc/pacserve/pacserve.service.conf
dst: /etc/pacserve/pacserve.service.conf
profiles:
Network:
dotfiles:
- d_network
- f_networkd.conf
Locale:
dotfiles:
- f_locale.conf
- f_locale.gen
Pacman:
dotfiles:
- f_pacman.conf
- f_pacserve.service.conf
Mirkwood:
dotfiles:
- f_getty.conf
- f_cryptissue
- f_welcomemessage.conf
- d_bin
- f_adb.service
- f_bluetooth.conf
- f_sshd_config
- f_logind.conf
- f_60-uinput-permissions.rules
- f_freetype2.sh
- f_fonts.conf
- f_99-lowbat.rules
- f_ignore
- f_mkinitcpio.conf
- f_vconsole.conf
- f_20-quiet-printk.conf
- f_system.conf
- f_cpupower
include:
- Locale
- Pacman
- Network
Moria:
include:
- Locale
- Pacman
- Network
dotfiles:
- f_sshd_config
- f_99-sysctl.conf
- f_cpupower
Gondor:
include:
- Locale
- Pacman
dotfiles:
- f_sshd_config
localhost:
include:
- Locale
Edoras:
include:
- Pacman

View file

@ -1,285 +0,0 @@
#:schema ../../dotdrop-config-schema.json
[actions]
dconf-load = "dconf load / < ~/.config/dconf.ini"
kanagawa-compile = "vim +KanagawaCompile +qa"
[config]
backup = true
banner = true
create = true
dotpath = "home"
ignoreempty = false
keepdot = true
link_dotfile_default = "nolink"
link_on_import = "nolink"
longkey = false
showdiff = false
workdir = "~/.config/dotdrop"
[dotfiles.d_systemd]
dst = "~/.config/systemd/user"
src = ".config/systemd/user"
[dotfiles.d_mpv]
dst = "~/.config/mpv"
src = ".config/mpv"
[dotfiles.d_nvim]
dst = "~/.config/nvim"
src = ".config/nvim"
actions = ["kanagawa-compile"]
instignore = ["*-lock.json"]
[dotfiles."f_abcde.conf"]
dst = "~/.abcde.conf"
src = ".abcde.conf"
[dotfiles.d_ssh]
dst = "~/.ssh"
src = ".ssh"
[dotfiles.f_beets_config]
dst = "~/.config/beets/config.yaml"
src = ".config/beets/config.yaml"
[dotfiles.f_beets_whitelist]
dst = "~/.config/beets/whitelist"
src = ".config/beets/whitelist"
[dotfiles.f_gitconfig]
dst = "~/.config/git/config"
src = ".config/git/config"
[dotfiles.f_librewolf_overrides]
dst = "~/.librewolf/librewolf.overrides.cfg"
src = ".librewolf/librewolf.overrides.cfg"
[dotfiles."f_makepkg.conf"]
dst = "~/.config/pacman/makepkg.conf"
src = ".config/pacman/makepkg.conf"
[dotfiles."f_mpd.conf"]
dst = "~/.config/mpd/mpd.conf"
src = ".config/mpd/mpd.conf"
[dotfiles."f_mpdris2.conf"]
dst = "~/.config/mpDris2/mpDris2.conf"
src = ".config/mpDris2/mpDris2.conf"
[dotfiles.f_ncmpcpp_bindings]
dst = "~/.config/ncmpcpp/bindings"
src = ".config/ncmpcpp/bindings"
[dotfiles."f_ranger.conf"]
dst = "~/.config/ranger/rc.conf"
src = ".config/ranger/rc.conf"
[dotfiles."f_ranger_commands.py"]
dst = "~/.config/ranger/commands.py"
src = ".config/ranger/commands.py"
[dotfiles."f_ssh.conf"]
dst = "~/.ssh/config"
src = ".ssh/config"
[dotfiles.f_zprofile]
dst = "~/.zprofile"
src = ".zprofile"
[dotfiles.f_zshrc]
dst = "~/.zshrc"
src = ".zshrc"
[dotfiles.d_zsh]
src = ".config/zsh"
dst = "~/.config/zsh"
[dotfiles."f_fonts.conf"]
src = ".config/fontconfig/fonts.conf"
dst = "~/.config/fontconfig/fonts.conf"
[dotfiles.f_ignore]
src = ".ignore"
dst = "~/.ignore"
[dotfiles."f_ncmpcpp.conf"]
src = ".config/ncmpcpp/config"
dst = "~/.config/ncmpcpp/config"
[dotfiles.f_hushlogin]
src = ".hushlogin"
dst = "~/.hushlogin"
[dotfiles."f_paru.conf"]
src = ".config/paru/paru.conf"
dst = "~/.config/paru/paru.conf"
[dotfiles."f_foot.ini"]
src = ".config/foot/foot.ini"
dst = "~/.config/foot/foot.ini"
[dotfiles."f_gpg-agent.conf"]
src = ".gnupg/gpg-agent.conf"
dst = "~/.gnupg/gpg-agent.conf"
chmod = "600"
[dotfiles."f_gpg.conf"]
src = ".gnupg/gpg.conf"
dst = "~/.gnupg/gpg.conf"
[dotfiles."f_gpg_scdaemon.conf"]
src = ".gnupg/scdaemon.conf"
dst = "~/.gnupg/scdaemon.conf"
[dotfiles."f_electron-flags.conf"]
src = ".config/electron-flags.conf"
dst = "~/.config/electron-flags.conf"
[dotfiles."f_electron12-flags.conf"]
src = ".config/electron12-flags.conf"
dst = "~/.config/electron12-flags.conf"
[dotfiles.f_pam_environment]
src = ".pam_environment"
dst = "~/.pam_environment"
[dotfiles."f_dconf.ini"]
src = ".config/dconf.ini"
dst = "~/.config/dconf.ini"
actions = ["dconf-load"]
[dotfiles."f_docker-config.json"]
src = ".docker/config.json"
dst = "~/.docker/config.json"
chmod = "600"
[dotfiles.f_npmrc]
src = ".npmrc"
dst = "~/.npmrc"
chmod = "600"
[dotfiles.f_zellij]
src = ".config/zellij/config.kdl"
dst = "~/.config/zellij/config.kdl"
[profiles.pacman]
dotfiles = ["f_makepkg.conf", "f_paru.conf"]
[profiles.terminal]
dotfiles = [
"d_nvim",
"d_ssh",
"d_zsh",
"f_gitconfig",
"f_hushlogin",
"f_ignore",
"f_ranger.conf",
"f_ranger_commands.py",
"f_zellij",
"f_zshrc",
"f_npmrc",
]
[profiles.media]
dotfiles = [
"d_mpv",
"f_abcde.conf",
"f_beets_config",
"f_beets_whitelist",
"f_mpd.conf",
"f_mpdris2.conf",
"f_ncmpcpp.conf",
"f_ncmpcpp_bindings",
]
[profiles.gpg]
dotfiles = [
"f_gpg-agent.conf",
"f_gpg.conf",
"f_gpg_scdaemon.conf",
"f_pam_environment",
]
[profiles.Mirkwood]
include = ["pacman", "terminal", "media", "gpg"]
dotfiles = [
"f_librewolf_overrides",
"f_dconf.ini",
"f_docker-config.json",
"f_fonts.conf",
"f_foot.ini",
]
[profiles.Mirkwood.variables]
wayland = true
[profiles.VentoyArch]
include = ["pacman", "terminal", "media", "gpg"]
dotfiles = [
"f_dconf.ini",
"f_fonts.conf",
]
[profiles.VentoyArch.variables]
wayland = true
[profiles.Shire]
include = ["pacman", "terminal", "media", "gpg"]
dotfiles = [
"f_dconf.ini",
"f_fonts.conf",
]
[profiles.Shire.variables]
wayland = true
[profiles.Moria]
include = ["pacman", "terminal", "media", "gpg"]
dotfiles = [
"f_librewolf_overrides",
"f_dconf.ini",
"f_zprofile",
"f_fonts.conf",
"d_systemd",
]
[profiles.Moria.variables]
wayland = true
[profiles.Tirion]
include = ["terminal", "gpg"]
[profiles.Gondor]
include = ["pacman", "terminal"]
[profiles.mko-laptop]
include = ["terminal", "gpg"]
dotfiles = ["f_librewolf_overrides", "f_dconf.ini", "d_systemd"]
[profiles.mko-laptop.variables]
wayland = true
[profiles.Isengard]
include = ["terminal"]
[profiles.Isengard.variables]
distro_id = "termux"
[profiles.Edoras]
include = ["terminal"]
[profiles.TakamakiPC]
include = ["terminal"]
[profiles.TakamakiPC.variables]
wayland = false
[profiles.localhost]
include = ["terminal"]
[profiles.ViiruJaTeippi]
include = ["terminal"]
[profiles.Evendim]
include = ["terminal", "pacman"]

257
config.yaml Normal file
View file

@ -0,0 +1,257 @@
actions:
vim-plug: nvim +PlugInstall +qall
config:
backup: true
banner: true
create: true
dotpath: home
ignoreempty: false
keepdot: true
link_dotfile_default: nolink
link_on_import: nolink
longkey: false
showdiff: false
workdir: ~/.config/dotdrop
dotfiles:
d_systemd:
dst: ~/.config/systemd/user
src: .config/systemd/user
d_mpv:
dst: ~/.config/mpv
src: .config/mpv
d_neomutt:
dst: ~/.config/neomutt
src: .config/neomutt
d_imapnotify:
dst: ~/.config/imapnotify
src: .config/imapnotify
f_init.vim:
dst: ~/.config/nvim/init.vim
src: .config/nvim/init.vim
d_nvim_config:
actions:
- vim-plug
dst: ~/.config/nvim/conf.d
src: .config/nvim/conf.d
f_user-dirs.dirs:
dst: ~/.config/user-dirs.dirs
src: .config/user-dirs.dirs
f_coc-settings.json:
dst: ~/.config/nvim/coc-settings.json
src: .config/nvim/coc-settings.json
d_sway:
dst: ~/.config/sway
src: .config/sway
d_waybar:
dst: ~/.config/waybar
src: .config/waybar
d_wofi:
src: .config/wofi
dst: ~/.config/wofi
f_abcde.conf:
dst: ~/.abcde.conf
src: .abcde.conf
f_mbsyncrc:
dst: ~/.mbsyncrc
src: .mbsyncrc
f_alacritty.yml:
dst: ~/.config/alacritty/alacritty.yml
src: .config/alacritty/alacritty.yml
f_authorized_keys:
dst: ~/.ssh/authorized_keys
src: .ssh/authorized_keys
f_beets_config:
dst: ~/.config/beets/config.yaml
src: .config/beets/config.yaml
f_beets_whitelist:
dst: ~/.config/beets/whitelist
src: .config/beets/whitelist
f_bspwmrc:
dst: ~/.config/bspwm/bspwmrc
src: .config/bspwm/bspwmrc
f_gitconfig:
dst: ~/.gitconfig
src: .gitconfig
f_libra_config:
dst: ~/.config/libra/config.toml
src: .config/libra/config.toml
f_mailcap:
dst: ~/.mailcap
src: .mailcap
f_makepkg.conf:
dst: ~/.config/pacman/makepkg.conf
src: .config/pacman/makepkg.conf
f_mako_config:
dst: ~/.config/mako/config
src: .config/mako/config
f_mimeo_associations.txt:
dst: ~/.config/mimeo/associations.txt
src: .config/mimeo/associations.txt
f_mpd.conf:
dst: ~/.config/mpd/mpd.conf
src: .config/mpd/mpd.conf
f_mpdris2.conf:
dst: ~/.config/mpDris2/mpDris2.conf
src: .config/mpDris2/mpDris2.conf
f_mpdscribble.conf:
dst: ~/.mpdscribble/mpdscribble.conf
src: .mpdscribble/mpdscribble.conf
f_ncmpcpp_bindings:
dst: ~/.config/ncmpcpp/bindings
src: .config/ncmpcpp/bindings
f_ranger.conf:
dst: ~/.config/ranger/rc.conf
src: .config/ranger/rc.conf
f_ranger_commands.py:
dst: ~/.config/ranger/commands.py
src: .config/ranger/commands.py
f_redshift.conf:
dst: ~/.config/redshift/redshift.conf
src: .config/redshift/redshift.conf
f_rtv.cfg:
dst: ~/.config/rtv/rtv.cfg
src: .config/rtv/rtv.cfg
f_ssh.conf:
dst: ~/.ssh/config
src: .ssh/config
f_steam-native.desktop:
dst: ~/.local/share/applications/steam-native.desktop
src: .local/share/applications/steam-native.desktop
f_tdesktop_lang.strings:
dst: ~/.config/telegram-desktop/lang.strings
src: .config/telegram-desktop/lang.strings
f_tmux.conf:
dst: ~/.tmux.conf
src: .tmux.conf
f_youtube-dl_config:
dst: ~/.config/youtube-dl/config
src: .config/youtube-dl/config
f_zathurarc:
dst: ~/.config/zathura/zathurarc
src: .config/zathura/zathurarc
f_zshrc:
dst: ~/.zshrc
src: .zshrc
d_zsh:
src: .config/zsh
dst: ~/.config/zsh
f_fonts.conf:
src: .config/fontconfig/fonts.conf
dst: ~/.config/fontconfig/fonts.conf
f_ripgrep_ignore:
src: .ignore
dst: ~/.ignore
f_nvimpager:
src: .config/nvimpager/init.vim
dst: ~/.config/nvimpager/init.vim
f_ncmpcpp.conf:
src: .config/ncmpcpp/config
dst: ~/.config/ncmpcpp/config
f_hushlogin:
src: .hushlogin
dst: ~/.hushlogin
f_paru.conf:
src: .config/paru/paru.conf
dst: ~/.config/paru/paru.conf
f_msmtp_config:
src: .config/msmtp/config
dst: ~/.config/msmtp/config
f_foot.ini:
src: .config/foot/foot.ini
dst: ~/.config/foot/foot.ini
profiles:
base:
dotfiles:
- d_systemd
terminal:
dotfiles:
- f_nvimpager
- f_hushlogin
- f_ripgrep_ignore
- f_ranger_commands.py
- f_rtv.cfg
- f_mailcap
- d_zsh
- f_zshrc
- f_tmux.conf
- f_ranger.conf
- f_ssh.conf
- f_authorized_keys
- d_nvim_config
- f_init.vim
- f_coc-settings.json
- f_gitconfig
- f_alacritty.yml
email:
dotfiles:
- d_neomutt
- d_imapnotify
- f_mbsyncrc
- f_msmtp_config
media:
dotfiles:
- f_beets_config
- f_beets_whitelist
- f_abcde.conf
- d_mpv
- f_youtube-dl_config
- f_mpd.conf
- f_ncmpcpp_bindings
- f_ncmpcpp.conf
- f_libra_config
- f_mpdscribble.conf
- f_mpdris2.conf
sway:
dotfiles:
- d_sway
- d_waybar
- d_wofi
- f_mako_config
- f_redshift.conf
- f_zathurarc
- f_mimeo_associations.txt
- f_tdesktop_lang.strings
- f_fonts.conf
Pacman:
dotfiles:
- f_makepkg.conf
- f_paru.conf
Mirkwood:
include:
- base
- terminal
- email
- media
- sway
- Pacman
dotfiles:
- f_paru.conf
- f_user-dirs.dirs
- f_gitconfig
- f_foot.ini
Moria:
include:
- terminal
- media
- Pacman
Gondor:
include:
- terminal
- Pacman
mko-laptop:
include:
- terminal
Edoras:
include:
- terminal
- Pacman
TakamakiPC:
include:
- terminal
- Pacman
localhost:
include:
- terminal
ViiruJaTeippi:
include:
- terminal

73
deploy.sh Executable file
View file

@ -0,0 +1,73 @@
#!/bin/zsh
# This is a script that should be ran once
# on a new system. Dotdrop will take it from there.
# It is higly tailored to my own needs and
# you (the random person on the internet) should probably not run it
export DOTREPO="$HOME/git/dotfiles"
DISTRO="$(lsb_release -ds | sed 's/"//g')"
PKGLIST="python-ruamel-yaml python-magic-git python-jinja python-docopt"
if [ -d $DOTREPO ]; then
print "Dotfile repository already exists, exiting..."
exit 1
fi
if [ "$DISTRO" -ne "Arch Linux" ]; then
print "Not running on Arch Linux"
print "Other distros not supported, exiting..."
exit 1
fi
# install neovim if not installed
if ! [ -x "$(command -v nvim)" ]; then
read -p "Install neovim? [Y/n] " -i "y" INVIM
if [ "$(tr '[:upper:]' ':lower:' $INVIM)" -eq "y" ]; then
print "Installing neovim"
PKGLIST=$PKGLIST + " neovim neovim-dropin"
fi
fi
# install zsh if not installed
if ! [ -x "$(command -v zsh)" ]; then
read -p "Install zsh? [Y/n] " -i "y" IZSH
if [ "$(tr '[:upper:]' ':lower:' $INVIM)" -eq "y" ]; then
print "Installing zsh"
PKGLIST=$PKGLIST + " zsh"
fi
fi
# install paru if not installed
if ! [ -x "$(command -v paru)" ]; then
read -p "Install paru? [Y/n] " -i "y" IYAY
if [ "$(tr '[:upper:]' ':lower:' $IYAY)" -eq "y" ]; then
print "Installing paru"
sudo pacman -Syu --needed --noconfirm git wget base-devel
cd
wget https://aur.archlinux.org/cgit/aur.git/snapshot/paru-bin.tar.gz
tar xfv paru-bin.tar.gz
cd paru-bin
makepkg -si --noconfirm
cd ..
rm -r paru*
fi
fi
if [ $PKGLIST -ne "" ]
if ! [ -x "$(command -v paru)" ]; then
print "Can't continue without paru"
paru -S $PKGLIST
fi
fi
mkdir ~/git
git clone https://git.korhonen.cc/ReekyMarko/dotfiles.git $DOTREPO
cd ~/git/dotfiles
git submodule init
git submodule update
$DOTREPO/dotdrop.sh --cfg=$DOTREPO/config-home.yaml install
chsh -s /bin/zsh
zsh -c "source ~/.zshrc; sdotdrop install"

View file

@ -0,0 +1,20 @@
version: "2"
services:
openldap:
container_name: openldap
image: osixia/openldap:stable
environment:
- TZ=Europe/Helsinki
- LDAP_ORGANIZATION="Korhonen"
- LDAP_DOMAIN="korhonen.cc"
- LDAP_ADMIN_PASSWORD="${LDAP_ADMIN_PASSWORD}"
hostname: ldap.korhonen.cc
ports:
- 389:389
- 636:636
restart: unless-stopped
volumes:
- /docker/auth/openldap/ldap:/var/lib/ldap
- /docker/auth/openldap/slapd.d:/etc/ldap/slapd.d
- /etc/localtime:/etc/localtime:ro

View file

@ -1,75 +0,0 @@
volumes:
redis: {}
media: {}
custom_templates: {}
geoip: {}
backups: {}
services:
redis:
image: redis:alpine
container_name: authentik-redis
networks:
- authentik
restart: unless-stopped
volumes:
- redis:/data
healthcheck:
test:
- CMD-SHELL
- redis-cli ping | grep PONG
start_period: 20s
interval: 30s
retries: 5
timeout: 3s
server:
image: ghcr.io/goauthentik/server
container_name: authentik
restart: unless-stopped
command: server
volumes:
- media:/media
- custom_templates:/templates
- geoip:/geoip
env_file:
- .env
networks:
- authentik
- postgres
- proxy
worker:
image: ghcr.io/goauthentik/server
container_name: authentik-worker
restart: unless-stopped
command: worker
user: root
volumes:
- backups:/backups
- custom_templates:/templates
- geoip:/geoip
- media:/media
- /var/run/docker.sock:/var/run/docker.sock
env_file:
- .env
networks:
- authentik
- postgres
geoipupdate:
image: maxmindinc/geoipupdate
container_name: authentik-geoipupdate
restart: unless-stopped
networks:
- authentik
volumes:
- geoip:/usr/share/GeoIP
env_file:
- .env
environment:
GEOIPUPDATE_EDITION_IDS: GeoLite2-City
GEOIPUPDATE_FREQUENCY: '8'
networks:
authentik:
external: true
postgres:
external: true
proxy:
external: true

View file

View file

@ -1,33 +0,0 @@
volumes:
caddy_data:
external: true
caddy_config:
external: true
caddy_wkd:
external: true
homeautomation_hass:
external: true
services:
backup:
image: offen/docker-volume-backup:v2
container_name: volume-backup
restart: unless-stopped
environment:
- AWS_ENDPOINT
- AWS_S3_BUCKET_NAME
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- GPG_PASSPHRASE
- EMAIL_SMTP_HOST
- EMAIL_SMTP_PASSWORD
- EMAIL_SMTP_USERNAME
- EMAIL_SMTP_PORT
- BACKUP_COMPRESSION=zst
- BACKUP_RETENTION_DAYS=7
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
- caddy_data:/backup/caddy_data:ro
- caddy_config:/backup/caddy_config:ro
- caddy_wkd:/backup/caddy_wkd:ro
- homeautomation_hass:/backup/homeautomation_hass:ro

View file

@ -1,177 +0,0 @@
{
order umami first
}
korhonen.cc, *.korhonen.cc {
encode zstd gzip
tls {
dns cloudflare {$CF_API_TOKEN}
resolvers 1.1.1.1
}
header {
Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
}
@static {
file
path *.ico *.css *.js *.gif *.webp *.avif *.jpg *.jpeg *.png *.svg *.woff *.woff2 *.pdf *.webmanifest
}
@homepage-www-redir host www.korhonen.cc
handle @homepage-www-redir {
redir https://korhonen.cc
}
@homepage host korhonen.cc
handle @homepage {
# Redirect finnish WIP
# @redirFinnish {
# header Accept-Language *fi-FI*
# not path *.js *.css *.png *.jpg *.jpeg *.svg
# not path /en* /fi*
# }
# redir @redirFinnish /fi{uri}
#
# uri strip_prefix /en
header @static Cache-Control max-age=5184000
root * /var/www/korhonen.cc
file_server
}
@wkd host openpgpkey.korhonen.cc
handle @wkd {
root * /var/www/wkd
file_server browse
header Access-Control-Allow-Origin "*"
}
@index host index.korhonen.cc
handle @index {
umami {
event_endpoint "https://umami.korhonen.cc/api/send"
website_uuid "9fe4f5c0-8e63-4479-a58d-d399cdbc0a3a"
client_ip_header X-Real-IP
device_detection
allowed_extensions "" .tar.zst .json .html
}
root * /var/www/index.korhonen.cc
file_server browse
}
@home-assistant host home.korhonen.cc
handle @home-assistant {
reverse_proxy home-assistant:8123
}
@authentik host sso.korhonen.cc
handle @authentik {
reverse_proxy authentik:9000
}
@forgejo host git.korhonen.cc
handle @forgejo {
rewrite /user/login /user/oauth2/Korhonen%20SSO
reverse_proxy forgejo:3000
}
@woodpecker host ci.korhonen.cc
handle @woodpecker {
reverse_proxy woodpecker:8000
}
@searx host dsearch.korhonen.cc
handle @searx {
reverse_proxy searx:8080
}
@freshrss host rss.korhonen.cc
handle @freshrss {
reverse_proxy freshrss
}
@jellyfin host jellyfin.korhonen.cc
handle @jellyfin {
reverse_proxy jellyfin:8096
}
@pihole host pihole.korhonen.cc
handle @pihole {
reverse_proxy pihole
}
@umami host umami.korhonen.cc
handle @umami {
reverse_proxy umami:3000
}
@nextcloud host cloud.korhonen.cc
handle @nextcloud {
# Redirect login page to Authentik
redir /login /apps/sociallogin/custom_oidc/korhonen-sso 301
# .htaccess / data / config / ... shouldn't be accessible from outside
@forbidden {
path /.htaccess
path /data/*
path /config/*
path /db_structure
path /.xml
path /README
path /3rdparty/*
path /lib/*
path /templates/*
path /occ
path /console.php
}
handle @forbidden {
respond 404
}
redir /.well-known/carddav /remote.php/dav 301
redir /.well-known/caldav /remote.php/dav 301
root * /var/www/nextcloud
php_fastcgi nextcloud:9000 {
root /var/www/html
# Tells nextcloud to remove /index.php from URLs in links
env front_controller_active true
}
file_server
}
@collabora host collabora.korhonen.cc
handle @collabora {
reverse_proxy collabora:9980
}
@drop host drop.korhonen.cc
handle @drop {
reverse_proxy drop:3000
}
@ipvX host ipv6.korhonen.cc ipv4.korhonen.cc
handle @ipvX {
respond {remote_host}
}
handle {
respond "404 Not Found" 404
}
handle_errors {
@homepage_404 {
expression {http.error.status_code} == 404
host korhonen.cc
}
handle @homepage_404 {
root * /var/www/korhonen.cc
rewrite * /404.html
file_server
}
respond "{err.status_code} {err.status_text}"
}
}

View file

@ -1,35 +0,0 @@
volumes:
data: {}
config: {}
wkd: {}
korhonen_cc: {}
nextcloud_config:
external: true
services:
caddy:
image: git.korhonen.cc/functionalhacker/caddy
container_name: caddy
restart: unless-stopped
ports:
- 80:80
- 443:443/tcp
- 443:443/udp
- 127.0.0.1:2019:2019
networks:
- proxy
volumes:
- /etc/localtime:/etc/localtime:ro
- ./Caddyfile:/etc/caddy/Caddyfile
- data:/data
- config:/config
- wkd:/var/www/wkd
- korhonen_cc:/var/www/korhonen.cc
- nextcloud_config:/var/www/nextcloud
- /var/www/index.korhonen.cc:/var/www/index.korhonen.cc
env_file:
- .env
cap_add:
- NET_ADMIN
networks:
proxy:
external: true

View file

@ -1,19 +0,0 @@
services:
cloudflared:
image: cloudflare/cloudflared
container_name: cloudflared
restart: unless-stopped
networks:
- proxy
volumes:
- /etc/localtime:/etc/localtime:ro
entrypoint:
command: tunnel --no-autoupdate run
env_file:
- .env
extra_hosts:
- 'host.docker.internal:host-gateway'
networks:
proxy:
external: true

View file

View file

@ -1,13 +0,0 @@
services:
cloudflare-ddns:
image: timothyjmiller/cloudflare-ddns
container_name: cloudflare-ddns
security_opt:
- no-new-privileges:true
network_mode: host
environment:
- PUID=1000
- PGID=1000
volumes:
- /mnt/Storage/docker/ddns/config.json:/config.json
restart: unless-stopped

View file

View file

@ -1,13 +0,0 @@
services:
drop:
image: lscr.io/linuxserver/pairdrop
container_name: drop
restart: unless-stopped
networks:
- proxy
- IPV6_LOCALIZE=4
volumes:
- /etc/localtime:/etc/localtime:ro
networks:
proxy:
external: true

View file

@ -1,48 +0,0 @@
volumes:
files: {}
config: {}
redis: {}
db: {}
services:
firefish:
image: registry.firefish.dev/firefish/firefish
container_name: firefish
restart: unless-stopped
depends_on:
- redis
ports:
- 3084:3000
networks:
- firefish
- proxy
environment:
NODE_ENV: production
volumes:
- files:/firefish/files
- config:/firefish/.config:ro
redis:
image: redis
container_name: redis-firefish
restart: unless-stopped
networks:
- firefish
volumes:
- redis:/data
db:
image: groonga/pgroonga:3.1.8-alpine-16-slim
container_name: firefish-db
restart: unless-stopped
networks:
- firefish
volumes:
- db:/var/lib/postgresql/data
healthcheck:
test: pg_isready --user="firefish" --dbname="firefish"
interval: 5s
timeout: 5s
retries: 5
networks:
firefish:
internal: true
proxy:
external: true

View file

@ -1,37 +0,0 @@
volumes:
data: {}
runner: {}
services:
forgejo:
image: git.korhonen.cc/functionalhacker/forgejo-asciidoc
container_name: forgejo
environment:
- USER_UID=1000
- USER_GID=1000
restart: unless-stopped
networks:
- postgres
- proxy
ports:
- '2882:22'
volumes:
- data:/data
- /etc/localtime:/etc/localtime:ro
runner:
image: code.forgejo.org/forgejo/runner:6
container_name: forgejo-runner
user: root:root
volumes:
- runner:/data
- ./runner.yaml:/data/config.yaml
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime:ro
environment:
- SOCKFILE=/var/run/docker.sock
restart: unless-stopped
command: forgejo-runner daemon -c /data/config.yaml
networks:
postgres:
external: true
proxy:
external: true

View file

@ -1,34 +0,0 @@
log:
level: info
runner:
file: .runner
capacity: 2
env_file: .env
timeout: 3h
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels:
- 'docker:docker://git.korhonen.cc/functionalhacker/ubuntu-act:22.04'
cache:
enabled: true
dir: ''
host: ''
port: 0
external_server: ''
container:
network: ''
enable_ipv6: false
privileged: false
options:
workdir_parent:
valid_volumes:
- 'caddy_korhonen_cc'
docker_host: 'automount'
force_pull: false
host:
workdir_parent:

View file

@ -1,24 +0,0 @@
volumes:
config: {}
services:
freshrss:
image: linuxserver/freshrss
container_name: freshrss
restart: unless-stopped
networks:
- freshrss
- postgres
- proxy
environment:
- PUID=1000
- PGID=985
volumes:
- /etc/localtime:/etc/localtime:ro
- config:/config
networks:
freshrss:
external: false
postgres:
external: true
proxy:
external: true

View file

@ -0,0 +1,96 @@
version: "2.1"
services:
freshrss:
image: linuxserver/freshrss
container_name: freshrss
restart: unless-stopped
networks:
- freshrss
- postgres
- proxy
environment:
- PUID=1000
- PGID=985
- TZ=Europe/Helsinki
depends_on:
- spotifeed
- bibliogram
volumes:
- /docker/freshrss/freshrss:/config
- /etc/localtime:/etc/localtime:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.freshrss-redirect.entrypoints=http"
- "traefik.http.routers.freshrss-redirect.rule=Host(`rss.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.freshrss-redirect.middlewares=http2https"
- "traefik.http.routers.freshrss.entrypoints=https"
- "traefik.http.routers.freshrss.rule=Host(`rss.korhonen.cc`)"
- "traefik.http.routers.freshrss.tls=true"
- "traefik.http.routers.freshrss.tls.certresolver=http"
- "traefik.http.routers.freshrss.service=freshrss"
- "traefik.docker.network=proxy"
- "traefik.http.services.freshrss.loadbalancer.server.port=80"
spotifeed:
build: ./spotifeed
image: spotifeed
container_name: spotifeed
environment:
- SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID}
- SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET}
restart: unless-stopped
networks:
- freshrss
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.spotifeed-redirect.entrypoints=http"
- "traefik.http.routers.spotifeed-redirect.rule=Host(`spotifeed.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.spotifeed-redirect.middlewares=http2https"
- "traefik.http.routers.spotifeed.entrypoints=https"
- "traefik.http.routers.spotifeed.rule=Host(`spotifeed.korhonen.cc`)"
- "traefik.http.routers.spotifeed.tls=true"
- "traefik.http.routers.spotifeed.tls.certresolver=http"
- "traefik.http.routers.spotifeed.service=spotifeed"
- "traefik.docker.network=proxy"
- "traefik.http.services.spotifeed.loadbalancer.server.port=8083"
bibliogram:
image: cloudrac3r/bibliogram
container_name: bibliogram
restart: unless-stopped
volumes:
- /docker/freshrss/bibliogram/db:/app/db
- /docker/freshrss/bibliogram/config.js:/app/config.js
networks:
- freshrss
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.bibliogram-redirect.entrypoints=http"
- "traefik.http.routers.bibliogram-redirect.rule=Host(`bibliogram.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.bibliogram-redirect.middlewares=http2https"
- "traefik.http.routers.bibliogram.entrypoints=https"
- "traefik.http.routers.bibliogram.rule=Host(`bibliogram.korhonen.cc`)"
- "traefik.http.routers.bibliogram.tls=true"
- "traefik.http.routers.bibliogram.tls.certresolver=http"
- "traefik.http.routers.bibliogram.service=bibliogram"
- "traefik.docker.network=proxy"
- "traefik.http.services.bibliogram.loadbalancer.server.port=10407"
networks:
freshrss:
external: false
postgres:
external: true
proxy:
external: true

View file

@ -0,0 +1,9 @@
FROM ruby:2.7.2
RUN git clone https://github.com/timdorr/spotifeed
WORKDIR /spotifeed
RUN bundle install
EXPOSE 8083
RUN apt-get update
RUN apt-get upgrade
RUN apt-get install redis-server -y
CMD puma -p 8083 & redis-server

View file

@ -0,0 +1,41 @@
version: "2"
services:
gitea:
container_name: gitea
image: gitea/gitea:1
environment:
- TZ=Europe/Helsinki
- USER_UID=1000
- USER_GID=1000
restart: unless-stopped
networks:
- postgres
- proxy
ports:
- "3000:3000"
- "222:22"
volumes:
- /docker/gitea:/data
- /etc/localtime:/etc/localtime:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitea-redirect.entrypoints=http"
- "traefik.http.routers.gitea-redirect.rule=Host(`git.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.gitea-redirect.middlewares=http2https"
- "traefik.http.routers.gitea.entrypoints=https"
- "traefik.http.routers.gitea.rule=Host(`git.korhonen.cc`)"
- "traefik.http.routers.gitea.tls=true"
- "traefik.http.routers.gitea.tls.certresolver=http"
- "traefik.http.routers.gitea.service=gitea"
- "traefik.docker.network=proxy"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
networks:
postgres:
external: true
proxy:
external: true

View file

@ -1,23 +0,0 @@
volumes:
config: {}
data: {}
services:
headscale:
image: headscale/headscale:0
container_name: headscale
volumes:
- config:/etc/headscale
- data:/var/lib/headscale
ports:
- 3478:3478/udp
command: headscale serve
restart: unless-stopped
networks:
- postgres
headscale-ui:
image: ghcr.io/gurucomputing/headscale-ui
container_name: headscale-ui
restart: unless-stopped
networks:
postgres:
external: true

View file

@ -1,80 +0,0 @@
volumes:
hass: {}
mosquitto: {}
piper_english: {}
whisper_english: {}
openwakeword_english: {}
services:
home-assistant:
container_name: home-assistant
image: homeassistant/home-assistant
restart: unless-stopped
volumes:
- /etc/localtime:/etc/localtime:ro
- hass:/config
networks:
- homeautomation
- postgres
- proxy
ports:
- 8123:8123
- 8300:8300
extra_hosts:
- host.docker.internal:host-gateway
# mosquitto:
# container_name: mosquitto
# image: eclipse-mosquitto
# restart: unless-stopped
# environment:
# - TZ=Europe/Helsinki
# networks:
# - homeautomation
# ports:
# - 1883:1883
# - 8866:8866
# volumes:
# - mosquitto:/mosquitto
# - /etc/localtime:/etc/localtime:ro
piper_english:
container_name: piper_english
image: rhasspy/wyoming-piper
restart: unless-stopped
environment:
- TZ=Europe/Helsinki
ports:
- 10200:10200
networks:
- homeautomation
command:
- --voice
- en_US-hfc_male-medium
volumes:
- piper_english:/data
- /etc/localtime:/etc/localtime:ro
whisper_english:
container_name: whisper_english
image: rhasspy/wyoming-whisper
restart: unless-stopped
environment:
- TZ=Europe/Helsinki
ports:
- 10300:10300
networks:
- homeautomation
depends_on:
- home-assistant
command:
- --model
- tiny-int8
- --language
- en
volumes:
- whisper_english:/data
- /etc/localtime:/etc/localtime:ro
networks:
homeautomation:
external: false
postgres:
external: true
proxy:
external: true

View file

@ -0,0 +1,136 @@
version: "3"
services:
home-assistant:
container_name: home-assistant
image: homeassistant/home-assistant
environment:
- TZ=Europe/Helsinki
devices:
- /dev/ttyACM0
volumes:
- /docker/homeautomation/home-assistant:/config
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
networks:
- homeautomation
- postgres
- proxy
ports:
- "8123:8123"
depends_on:
- mosquitto
labels:
- "traefik.enable=true"
- "traefik.http.routers.home-assistant-redirect.entrypoints=http"
- "traefik.http.routers.home-assistant-redirect.rule=Host(`home.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.home-assistant-redirect.middlewares=http2https"
- "traefik.http.routers.home-assistant.entrypoints=https"
- "traefik.http.routers.home-assistant.rule=Host(`home.korhonen.cc`)"
- "traefik.http.routers.home-assistant.tls=true"
- "traefik.http.routers.home-assistant.tls.certresolver=http"
- "traefik.http.routers.home-assistant.service=home-assistant"
- "traefik.docker.network=proxy"
- "traefik.http.services.home-assistant.loadbalancer.server.port=8123"
mosquitto:
container_name: mosquitto
image: eclipse-mosquitto
environment:
- TZ=Europe/Helsinki
ports:
- "1883:1883"
networks:
- homeautomation
volumes:
- /docker/homeautomation/mosquitto:/mosquitto
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
rhasspy:
container_name: rhasspy
image: rhasspy/rhasspy
command: --profile en --user-profiles /profiles
volumes:
- /docker/homeautomation/rhasspy:/profiles
environment:
- TZ=Europe/Helsinki
ports:
- "12101:12101"
networks:
- homeautomation
restart: unless-stopped
depends_on:
- home-assistant
devices:
- "/dev/snd:/dev/snd"
node-red:
container_name: node-red
image: nodered/node-red
environment:
- TZ=Europe/Helsinki
- proxy
ports:
- "1880:1880"
networks:
- homeautomation
volumes:
- /docker/homeautomation/node-red:/data
- /etc/localtime:/etc/localtime:ro
restart: unless-stopped
depends_on:
- home-assistant
labels:
- "traefik.enable=true"
- "traefik.http.routers.node-red-redirect.entrypoints=http"
- "traefik.http.routers.node-red-redirect.rule=Host(`node.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.node-red-redirect.middlewares=http2https"
- "traefik.http.routers.node-red.entrypoints=https"
- "traefik.http.routers.node-red.rule=Host(`node.korhonen.cc`)"
- "traefik.http.routers.node-red.tls=true"
- "traefik.http.routers.node-red.tls.certresolver=http"
- "traefik.http.routers.node-red.service=node-red"
- "traefik.docker.network=proxy"
- "traefik.http.services.node-red.loadbalancer.server.port=1880"
gotify:
image: gotify/server
container_name: gotify
volumes:
- /docker/homeautomation/gotify:/app/data
environment:
- GOTIFY_DATABASE_DIALECT=postgres
- GOTIFY_DATABASE_CONNECTION="host=postgres port=5432 user=gotify dbname=gotify password=${GOTIFY_PGPASS} sslmode=disable"
networks:
- proxy
- postgres
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.gotify-redirect.entrypoints=http"
- "traefik.http.routers.gotify-redirect.rule=Host(`gotify.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.gotify-redirect.middlewares=http2https"
- "traefik.http.routers.gotify.entrypoints=https"
- "traefik.http.routers.gotify.rule=Host(`gotify.korhonen.cc`)"
- "traefik.http.routers.gotify.tls=true"
- "traefik.http.routers.gotify.tls.certresolver=http"
- "traefik.http.routers.gotify.service=gotify"
- "traefik.docker.network=proxy"
- "traefik.http.services.gotify.loadbalancer.server.port=80"
networks:
homeautomation:
external: false
postgres:
external: true
proxy:
external: true

View file

@ -0,0 +1,33 @@
version: "3"
services:
nginx:
image: fraoustin/fancyindex
container_name: index.korhonen.cc
environment:
- DISABLE_AUTH=true
- CONTAINER_TIMEZONE="Europe/Helsinki"
volumes:
- /docker/index.korhonen.cc:/share
networks:
- proxy
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.index-redirect.entrypoints=http"
- "traefik.http.routers.index-redirect.rule=Host(`index.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.index-redirect.middlewares=http2https"
- "traefik.http.routers.index.entrypoints=https"
- "traefik.http.routers.index.rule=Host(`index.korhonen.cc`)"
- "traefik.http.routers.index.tls=true"
- "traefik.http.routers.index.tls.certresolver=http"
- "traefik.http.routers.index.service=index"
- "traefik.docker.network=proxy"
- "traefik.http.services.index.loadbalancer.server.port=80"
networks:
proxy:
external: true

View file

@ -1,31 +1,40 @@
volumes:
config: {}
cache: {}
media:
external: true
nextcloud_data:
external: true
version: "2.3"
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
environment:
- TZ=Europe/Helsinki
- NVIDIA_DRIVER_CAPABILITIES=all
- NVIDIA_VISIBLE_DEVICES=all
ports:
- 8096:8096
- "8096:8096"
networks:
- proxy
- authentik
restart: unless-stopped
volumes:
- /docker/jellyfin/config:/config
- /docker/jellyfin/cache:/cache
- /mnt/Storage/Media:/media
- /etc/localtime:/etc/localtime:ro
- config:/config
- cache:/cache
- media:/media
- nextcloud_data:/nextcloud_data
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card1:/dev/dri/card0
- /dev/dri:/dev/dri
labels:
- "traefik.enable=true"
- "traefik.http.routers.jellyfin-redirect.entrypoints=http"
- "traefik.http.routers.jellyfin-redirect.rule=Host(`jellyfin.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.jellyfin-redirect.middlewares=http2https"
- "traefik.http.routers.jellyfin.entrypoints=https"
- "traefik.http.routers.jellyfin.rule=Host(`jellyfin.korhonen.cc`)"
- "traefik.http.routers.jellyfin.tls=true"
- "traefik.http.routers.jellyfin.tls.certresolver=http"
- "traefik.http.routers.jellyfin.service=jellyfin"
- "traefik.docker.network=proxy"
- "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
networks:
proxy:
external: true
authentik:
external: true

View file

View file

@ -1,11 +1,14 @@
volumes:
config: {}
version: "3"
services:
mumble:
container_name: mumble
image: phlak/mumble
user: "1000:985"
environment:
- TZ=Europe/Helsinki
network_mode: host
volumes:
- /docker/mumble:/etc/mumble
- /etc/localtime:/etc/localtime:ro
- config:/etc/mumble
restart: unless-stopped

View file

@ -1,24 +0,0 @@
volumes:
config: {}
assets: {}
services:
netbootxyz:
image: lscr.io/linuxserver/netbootxyz
container_name: netbootxyz
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- MENU_VERSION=1.9.9
- PORT_RANGE=30000:30010
- SUBFOLDER=/
- NGINX_PORT=80
- WEB_APP_PORT=3000
ports:
- 3000:3000
- 69:69/udp
- 8081:80
volumes:
- config:/config
- assets:/assets

View file

@ -1 +0,0 @@
.env

View file

@ -1,84 +0,0 @@
volumes:
nextcloud_config:
external: true
nextcloud_data:
external: true
services:
nextcloud:
image: nextcloud:fpm-alpine
container_name: nextcloud
restart: unless-stopped
networks:
- nextcloud
- postgres
- proxy
volumes:
- nextcloud_config:/var/www/html
- nextcloud_data:/var/www/html/data
- /etc/localtime:/etc/localtime:ro
environment:
- REDIS_HOST=redis
- REDIS_HOST_PASSWORD=123
- TRUSTED_PROXIES=caddy
- NEXTCLOUD_TRUSTED_DOMAINS=cloud.korhonen.cc
- OVERWRITEHOST=cloud.korhonen.cc
- OVERWRITEPROTOCOL=https
depends_on:
- redis
labels:
ofelia.enabled: true
ofelia.job-exec.nextcloud.schedule: 0 */5 * * * *
ofelia.job-exec.nextcloud.command: php /var/www/html/cron.php
ofelia.job-exec.nextcloud.user: www-data
ofelia.smtp-host: ${SMTP_HOST}
ofelia.smtp-port: ${SMTP_PORT}
ofelia.smtp-user: ${SMTP_USER}
ofelia.smtp-password: ${SMTP_PASSWORD}
ofelia.email-to: ${EMAIL_TO}
ofelia.email-from: ${EMAIL_FROM}
ofelia.mail-only-on-error: true
redis:
image: redis:alpine
container_name: redis-nextcloud
networks:
- nextcloud
restart: unless-stopped
command: redis-server --requirepass 123
coturn:
image: instrumentisto/coturn
container_name: coturn
restart: unless-stopped
env_file: .env
ports:
- 3478:3478/tcp
- 3478:3478/udp
- 49160-49200:49160-49200/udp
networks:
- nextcloud
command:
- -n
- --log-file=stdout
- --min-port=49160
- --max-port=49200
- --realm=cloud.korhonen.cc
- --use-auth-secret
- --static-auth-secret=${STATIC_AUTH_SECRET}
collabora:
image: collabora/code
container_name: collabora
restart: unless-stopped
env_file: .env
environment:
- username=${COLLABORA_USERNAME}
- password=${COLLABORA_PASSWORD}
- domain=cloud.korhonen.cc
- extra_params=--o:ssl.enable=false --o:ssl.termination=true
networks:
- proxy
networks:
nextcloud:
external: false
postgres:
external: true
proxy:
external: true

View file

@ -0,0 +1,66 @@
version: "3"
services:
nextcloud:
image: nextcloud:apache
container_name: nextcloud
restart: always
ports:
- "1869:80"
networks:
- nextcloud
- postgres
- proxy
volumes:
- /docker/nextcloud:/var/www/html
- /mnt/Storage/Nextcloud:/var/www/html/data
- /mnt/Storage/Syncthing:/Syncthing
- /mnt/Storage/Media/Music:/Music
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=Europe/Helsinki
- REDIS_HOST=redis
- REDIS_HOST_PASSWORD=123
depends_on:
- redis
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud-redirect.entrypoints=http"
- "traefik.http.routers.nextcloud-redirect.rule=Host(`cloud.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.nextcloud-redirect.middlewares=http2https"
- "traefik.http.routers.nextcloud.entrypoints=https"
- "traefik.http.routers.nextcloud.rule=Host(`cloud.korhonen.cc`)"
- "traefik.http.routers.nextcloud.tls=true"
- "traefik.http.routers.nextcloud.tls.certresolver=http"
- "traefik.http.routers.nextcloud.service=nextcloud"
- "traefik.docker.network=proxy"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
redis:
image: redis:alpine
container_name: redis
networks:
- nextcloud
restart: always
command: redis-server --requirepass 123
cron:
image: nextcloud:apache
container_name: cron
restart: always
volumes:
- /docker/nextcloud:/var/www/html
entrypoint: /cron.sh
depends_on:
- redis
networks:
nextcloud:
external: false
postgres:
external: true
proxy:
external: true

View file

@ -1,9 +0,0 @@
services:
ofelia:
image: mcuadros/ofelia
container_name: ofelia
restart: unless-stopped
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
command: daemon --docker

View file

@ -1,42 +0,0 @@
services:
opentogethertube:
image: dyc3/opentogethertube
container_name: opentogethertube
restart: unless-stopped
environment:
- PORT=8080
- REDIS_HOST=redis
- REDIS_PORT=6379
- FFPROBE_PATH=/usr/bin/ffprobe
- DB_MODE=postgres
- POSTGRES_USER=opentogethertube
- POSTGRES_DB=opentogethertube
- POSTGRES_HOST=postgres
- POSTGRES_PASSWORD
- DOCKER=1
- OTT_HOSTNAME=ott.korhonen.cc
- YOUTUBE_API_KEY
- OPENTOGETHERTUBE_API_KEY
- SESSION_SECRET
ports:
- 8080:8080
- 3002:3002
networks:
- default
- postgres
- proxy
depends_on:
- redis
volumes:
- ./production.toml:/app/env/production.toml
redis:
container_name: redis-opentogethertube
image: redis:alpine
restart: unless-stopped
healthcheck:
test: redis-cli ping
networks:
postgres:
external: true
proxy:
external: true

View file

@ -1,5 +0,0 @@
log = { level = "info" }
[room]
enable_create_temporary = false
enable_create_permanent = false

View file

View file

@ -1,29 +0,0 @@
volumes:
config: {}
dnsmasq: {}
services:
pihole:
container_name: pihole
image: pihole/pihole
ports:
- 53:53/tcp
- 53:53/udp
- 67:67/udp
- 8069:80/tcp
networks:
- proxy
volumes:
- config:/etc/pihole/
- dnsmasq:/etc/dnsmasq.d/
dns:
- 127.0.0.1
- 1.1.1.1
cap_add:
- NET_ADMIN
restart: unless-stopped
environment:
TZ: Europe/Helsinki
WEBPASSWORD: ${WEBPASSWORD}
networks:
proxy:
external: true

View file

@ -0,0 +1,46 @@
version: "3"
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "8069:80/tcp"
networks:
- proxy
environment:
TZ: "Europe/Helsinki"
WEBPASSWORD: "${WEBPASSWORD}"
volumes:
- "/docker/pihole/pihole:/etc/pihole/"
- "/docker/pihole/dnsmasq:/etc/dnsmasq.d/"
dns:
- 127.0.0.1
- 1.1.1.1
# Recommended but not required (DHCP needs NET_ADMIN)
# https://github.com/pihole/docker-pihole#note-on-capabilities
cap_add:
- NET_ADMIN
restart: unless-stopped
labels:
- "traefik.enable=true"
- "traefik.http.routers.pihole-redirect.entrypoints=http"
- "traefik.http.routers.pihole-redirect.rule=Host(`pihole.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.pihole-redirect.middlewares=http2https"
- "traefik.http.routers.pihole.entrypoints=https"
- "traefik.http.routers.pihole.rule=Host(`pihole.korhonen.cc`)"
- "traefik.http.routers.pihole.tls=true"
- "traefik.http.routers.pihole.tls.certresolver=http"
- "traefik.http.routers.pihole.service=pihole"
- "traefik.docker.network=proxy"
- "traefik.http.services.pihole.loadbalancer.server.port=80"
networks:
proxy:
external: true

View file

@ -0,0 +1,33 @@
version: '3'
services:
portainer:
image: portainer/portainer-ce
container_name: portainer
environment:
- TZ=Europe/Helsinki
restart: unless-stopped
networks:
- proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /docker/portainer:/data
- /etc/localtime:/etc/localtime:ro
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.portainer-redirect.entrypoints=http'
- 'traefik.http.routers.portainer-redirect.rule=Host(`portainer.korhonen.cc`)'
- 'traefik.http.middlewares.http2https.redirectscheme.scheme=https'
- 'traefik.http.routers.portainer-redirect.middlewares=http2https'
- 'traefik.http.routers.portainer.entrypoints=https'
- 'traefik.http.routers.portainer.rule=Host(`portainer.korhonen.cc`)'
- 'traefik.http.routers.portainer.tls=true'
- 'traefik.http.routers.portainer.tls.certresolver=http'
- 'traefik.http.routers.portainer.service=portainer'
- 'traefik.docker.network=proxy'
- 'traefik.http.services.portainer.loadbalancer.server.port=9000'
networks:
proxy:
external: true

View file

@ -1,17 +1,20 @@
volumes:
data: {}
version: "3"
services:
postgres:
container_name: postgres
image: postgres:16
image: postgres:13
environment:
- TZ=Europe/Helsinki
- POSTGRES_PASSWORD=12345
ports:
- 127.0.0.1:5432:5432
- 5432:5432
networks:
- postgres
volumes:
- /docker/postgres:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
- data:/var/lib/postgresql/data
restart: unless-stopped
networks:
postgres:
external: true

View file

View file

@ -1,46 +0,0 @@
volumes:
config: {}
services:
searx:
container_name: searx
image: searxng/searxng
restart: unless-stopped
networks:
- searx
- proxy
volumes:
- config:/etc/searxng
environment:
- SEARXNG_BASE_URL=https://search.korhonen.cc/
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: json-file
options:
max-size: 1m
max-file: '1'
redis:
container_name: redis-searx
image: redis:alpine
command: redis-server --save "" --appendonly "no"
networks:
- searx
tmpfs:
- /var/lib/redis
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
networks:
searx:
ipam:
driver: default
proxy:
external: true

View file

View file

@ -1,30 +0,0 @@
services:
grafana:
image: grafana/grafana
container_name: grafana
volumes:
- grafana:/var/lib/grafana
networks:
- stats
- proxy
user: 1000:984
env_file:
- .env
environment:
- GF_AUTH_GENERIC_OAUTH_CLIENT_ID
- GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET
- GF_AUTH_GENERIC_OAUTH_ENABLED=true
- GF_AUTH_GENERIC_OAUTH_NAME=authentik
- GF_AUTH_GENERIC_OAUTH_SCOPES=openid profile email
- GF_AUTH_GENERIC_OAUTH_AUTH_URL=https://sso.korhonen.cc/application/o/authorize/
- GF_AUTH_GENERIC_OAUTH_TOKEN_URL=https://sso.korhonen.cc/application/o/token/
- GF_AUTH_GENERIC_OAUTH_API_URL=https://sso.korhonen.cc/application/o/userinfo/
- GF_AUTH_SIGNOUT_REDIRECT_URL=https://sso.korhonen.cc/application/o/grafana/end-session/
- GF_AUTH_OAUTH_AUTO_LOGIN=true
- GF_SERVER_ROOT_URL=https://grafana.korhonen.cc
- GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH=contains(groups[*], 'Administrators') && 'Admin' || 'Viewer'
networks:
stats:
external: false
proxy:
external: true

View file

View file

@ -1,10 +0,0 @@
services:
tftp:
container_name: tftp
image: pghalliday/tftp
restart: unless-stopped
ports:
- 69:69/udp
volumes:
- /etc/localtime:/etc/localtime:ro
- /docker/tftp:/var/tftpboot

View file

@ -0,0 +1,53 @@
version: '3'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
ports:
- '80:80'
- '443:443'
environment:
- TZ=Europe/Helsinki
security_opt:
- no-new-privileges:true
networks:
- proxy
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /docker/træfik/træfik/traefik.yml:/traefik.yml:ro
- /docker/træfik/træfik/dashboard-users:/dashboard-users:ro
- /docker/træfik/træfik/acme.json:/acme.json
- /docker/træfik/træfik/log:/var/log
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.redirect.entrypoints=http'
- 'traefik.http.routers.redirect.rule=Host(`traefik.korhonen.cc`)'
- 'traefik.http.middlewares.http2https.redirectscheme.scheme=https'
- 'traefik.http.routers.redirect.middlewares=http2https'
- 'traefik.http.routers.dashboard.entrypoints=https'
- 'traefik.http.routers.dashboard.rule=Host(`traefik.korhonen.cc`)'
- 'traefik.http.middlewares.dashboard-auth.basicauth.usersfile=/dashboard-users'
- 'traefik.http.routers.dashboard.middlewares=dashboard-auth'
- 'traefik.http.routers.dashboard.tls=true'
- 'traefik.http.routers.dashboard.tls.certresolver=http'
- 'traefik.http.routers.dashboard.service=api@internal'
fail2ban:
image: crazymax/fail2ban:latest
container_name: fail2ban
restart: unless-stopped
network_mode: "host"
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- /docker/træfik/træfik/log:/var/log/træfik:ro
- /docker/træfik/fail2ban:/data
networks:
proxy:
external: true

View file

@ -1,26 +1,42 @@
volumes:
config: {}
picons: {}
version: "2"
services:
tvheadend:
image: linuxserver/tvheadend
container_name: tvheadend
environment:
- TZ=Europe/Helsinki
- PUID=1000
- PGID=985
volumes:
- /etc/localtime:/etc/localtime:ro
- config:/config
- picons:/picons
- /docker/tvheadend:/config
- /mnt/Storage/Media/PVR:/recordings
- /mnt/Storage/picons:/picons
- /etc/localtime:/etc/localtime:ro
ports:
- 9981:9981
- 9982:9982
devices:
- /dev/dvb:/dev/dvb
- /dev/dri:/dev/dri #hardware acceleration
- /dev/dvb:/dev/dvb #tuner card
restart: unless-stopped
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.routers.tvheadend-redirect.entrypoints=http"
- "traefik.http.routers.tvheadend-redirect.rule=Host(`tvheadend.korhonen.cc`)"
- "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
- "traefik.http.routers.tvheadend-redirect.middlewares=http2https"
- "traefik.http.routers.tvheadend.entrypoints=https"
- "traefik.http.routers.tvheadend.rule=Host(`tvheadend.korhonen.cc`)"
- "traefik.http.routers.tvheadend.tls=true"
- "traefik.http.routers.tvheadend.tls.certresolver=http"
- "traefik.http.routers.tvheadend.service=tvheadend"
- "traefik.docker.network=proxy"
- "traefik.http.services.tvheadend.loadbalancer.server.port=9981"
networks:
proxy:
external: true

View file

View file

@ -1,21 +0,0 @@
services:
umami:
image: ghcr.io/umami-software/umami:postgresql-latest
container_name: umami
restart: unless-stopped
networks:
- postgres
- proxy
env_file: .env
environment:
DATABASE_URL: postgresql://umami:${POSTGRES_PASS}@postgres:5432/umami
HASH_SALT: ${HASH_SALT}
logging:
options:
max-size: 10m
max-file: '10'
networks:
postgres:
external: true
proxy:
external: true

View file

@ -1,18 +0,0 @@
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_NOTIFICATION_EMAIL_FROM=watchtower@korhonen.cc
- WATCHTOWER_NOTIFICATION_EMAIL_TO=admin@korhonen.cc
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.migadu.com
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER}
- WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=${WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD}
- WATCHTOWER_NOTIFICATION_EMAIL_DELAY=30
- WATCHTOWER_NOTIFICATIONS=email
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /etc/localtime:/etc/localtime:ro

View file

@ -0,0 +1,22 @@
version: "2.1"
services:
wireguard:
image: linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- TZ=Europe/Helsinki
- PEERS=4
- SERVERURL=korhonen.cc
- SERVERPORT=48574
- INTERNAL_SUBNET=10.200.200.0/24
volumes:
- /docker/wireguard:/config
- /lib/modules:/lib/modules
ports:
- 48574:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped

View file

View file

@ -1,12 +0,0 @@
services:
whatsupdocker:
image: getwud/wud
container_name: wud
env_file: .env
environment:
- WUD_TRIGGER_SMTP_EMAIL_SIMPLETITLE=Container $${container.name} can be updated
- WUD_TRIGGER_SMTP_EMAIL_SIMPLEBODY=Container $${name} can be updated from $${local.substring(0, 15)} to $${remote.substring(0, 15)}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 3000:3000

1
dotdrop Submodule

@ -0,0 +1 @@
Subproject commit 9ae90d51095b7fe9b26350c8dd33902e862466a5

37
dotdrop.sh Executable file
View file

@ -0,0 +1,37 @@
#!/usr/bin/env bash
# author: deadc0de6 (https://github.com/deadc0de6)
# Copyright (c) 2017, deadc0de6
# check for readlink/realpath presence
# https://github.com/deadc0de6/dotdrop/issues/6
rl="readlink -f"
if ! ${rl} "${0}" >/dev/null 2>&1; then
rl="realpath"
if ! hash ${rl}; then
echo "\"${rl}\" not found!" && exit 1
fi
fi
# setup variables
args=("$@")
cur=$(dirname "$(${rl} "${0}")")
opwd=$(pwd)
cfg="${cur}/config.yaml"
sub="dotdrop"
# pivot
cd "${cur}" || { echo "Directory \"${cur}\" doesn't exist, aborting." && exit 1; }
# init/update the submodule
if [ "${DOTDROP_AUTOUPDATE-yes}" = yes ] ; then
git submodule update --init --recursive
git submodule update --remote dotdrop
fi
# launch dotdrop
PYTHONPATH=dotdrop python3 -m dotdrop.dotdrop "${args[@]}"
ret="$?"
# pivot back
cd "${opwd}" || { echo "Directory \"${opwd}\" doesn't exist, aborting." && exit 1; }
# exit with dotdrop exit code
exit ${ret}

12
efistub/arch.efi Executable file
View file

@ -0,0 +1,12 @@
#/bin/bash
# vim:ft=sh
sudo efibootmgr \
--disk /dev/sda \
--part 1 \
--create \
--quiet \
--remove-dups \
--label "Arch Linux" \
--loader /vmlinuz-linux \
--unicode 'initrd=\amd-ucode.img initrd=\initramfs-linux.img cryptdevice=UUID=19fa8fab-c5fe-454a-9a17-b7185ce975ea:cryptroot:allow-discards root=/dev/mapper/cryptroot rootflags=subvol=root resume=/dev/mapper/cryptroot resume_offset=10530935 rw quiet splash vga=current idle=nomwait cpuidle.governor=teo'

12
efistub/lts.efi Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
# vim:ft=sh
sudo efibootmgr \
--disk /dev/sda \
--part 1 \
--create \
--quiet \
--remove-dups \
--label "Arch Linux LTS" \
--loader /vmlinuz-linux-lts \
--unicode 'initrd=\amd-ucode.img initrd=\initramfs-linux-lts.img cryptdevice=UUID=19fa8fab-c5fe-454a-9a17-b7185ce975ea:cryptroot:allow-discards root=/dev/mapper/cryptroot rootflags=subvol=root resume=/dev/mapper/cryptroot resume_offset=10530935 rw quiet splash vga=current idle=nomwait cpuidle.governor=teo'

14
efistub/update.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/bash
# remove old entries
for bootentry in $(efibootmgr | head -n 3 | tail -n 1 | cut -d' ' -f2- | sed 's/,/\n/g'); do
sudo efibootmgr -qBb $bootentry
done
# add all entries back
for bootscript in *.efi; do
./$bootscript
done
# set bootorder
sudo efibootmgr --bootorder 0000,0001

View file

@ -1,5 +1,4 @@
window:
opacity: 1.0
dimensions:
columns: 0
lines: 0
@ -30,40 +29,42 @@ font:
colors:
# Default colors
primary:
background: '0x282c34'
foreground: '0xabb2bf'
background: "0x282c34"
foreground: "0xabb2bf"
# Cursor colors
cursor:
text: '0x282c34'
cursor: '0xabb2bf'
text: "0x282c34"
cursor: "0xabb2bf"
# Normal colors
normal:
black: '0x282c34'
red: '0xe06c75'
green: '0x98c379'
yellow: '0xe5c07b'
blue: '0x61afef'
magenta: '0xc678dd'
cyan: '0x56b6c2'
white: '0xabb2bf'
black: "0x282c34"
red: "0xe06c75"
green: "0x98c379"
yellow: "0xe5c07b"
blue: "0x61afef"
magenta: "0xc678dd"
cyan: "0x56b6c2"
white: "0xabb2bf"
# Bright colors
bright:
black: '0x3e4452'
red: '0xbe5046'
green: '0x98c379'
yellow: '0xd19a66'
blue: '0x61afef'
magenta: '0xc678dd'
cyan: '0x56b6c2'
white: '0x5c6370'
black: "0x3e4452"
red: "0xbe5046"
green: "0x98c379"
yellow: "0xd19a66"
blue: "0x61afef"
magenta: "0xc678dd"
cyan: "0x56b6c2"
white: "0x5c6370"
bell:
animation: EaseOutExpo
duration: 0
color: '#ffffff'
color: "#ffffff"
background_opacity: 1.0
mouse_bindings:
- { mouse: Middle, action: PasteSelection }
@ -72,6 +73,8 @@ mouse:
double_click: { threshold: 300 }
triple_click: { threshold: 300 }
hide_when_typing: false
url:
modifiers: None
selection:
semantic_escape_chars: ',│`|:"'' ()[]{}<>'

View file

View file

@ -1,31 +1,34 @@
directory: ~/Music
library: ~/Music/beets.db
directory: ~/music
library: ~/music/beets.db
plugins:
- acousticbrainz
- check
- edit
- fetchart
- follow
- fuzzy
- info
- lastgenre
- lyrics
# - mbcollection
- mbcollection
- mpdupdate
- play
- replaygain
- thumbnails
- web
import:
write: yes
copy: yes
copy: no
move: yes
link: no
lastgenre:
whitelist: ~/.config/beets/whitelist
lyrics:
fallback: ''
play:
command: mpv --no-vid --no-resume-playback
command: mpv
mpd:
host: localhost
port: 6600
password: "{{@@ env['PASS_MPD_ADMIN'] @@}}"
follow:
email: reekymarko@reekynet.com
password: "{{@@ env['PASS_MUSPY'] @@}}"
@ -34,6 +37,9 @@ follow:
replaygain:
backend: gstreamer
auto: yes
#mbcollection:
# auto: 'yes'
# collection: 'a4955b5c-db7f-4e27-9887-f77f820bad34'
musicbrainz:
user: ReekyMarko
pass: "{{@@ env['PASS_MUSICBRAINZ'] @@}}"
mbcollection:
auto: "yes"
collection: "a4955b5c-db7f-4e27-9887-f77f820bad34"

View file

@ -1,88 +0,0 @@
[io/github/celluloid-player/celluloid]
dark-theme-enable=false
mpv-config-enable=true
mpv-config-file='file:///home/{{@@ env['USER'] @@}}/.config/mpv/mpv.conf'
mpv-input-config-enable=true
mpv-input-config-file='file:///home/{{@@ env['USER'] @@}}/.config/mpv/input.conf'
settings-migrated=true
[org/gnome/Connections]
first-run=false
[org/gnome/shell/weather]
automatic-location=false
locations=[<(uint32 2, <('Lappeenranta', 'EFLP', false, [(1.0654507804726074, 0.49128594181309354)], @a(dd) [])>)>]
[org/gnome/Weather]
locations=[<(uint32 2, <('Lappeenranta', 'EFLP', false, [(1.0654507804726074, 0.49128594181309354)], @a(dd) [])>)>]
[org/gnome/shell/world-clocks]
locations=[<(uint32 2, <('Bangkok', 'VTBD', true, [(0.24289166005364171, 1.7558012275062955)], [(0.23998277214922031, 1.754346792280731)])>)>, <(uint32 2, <('Lappeenranta', 'EFLP', true, [(1.0654507804726074, 0.49128594181309354)], [(1.065814402368968, 0.49189195503597105)])>)>]
[org/gnome/clocks]
world-clocks=[{'location': <(uint32 2, <('Bangkok', 'VTBD', true, [(0.24289166005364171, 1.7558012275062955)], [(0.23998277214922031, 1.754346792280731)])>)>}, {'location': <(uint32 2, <('Lappeenranta', 'EFLP', true, [(1.0654507804726074, 0.49128594181309354)], [(1.065814402368968, 0.49189195503597105)])>)>}]
[org/gnome/desktop/a11y/mouse]
dwell-click-enabled=false
dwell-threshold=10
dwell-time=1.2
secondary-click-enabled=true
secondary-click-time=1.2
[org/gnome/desktop/calendar]
show-weekdate=true
[org/gnome/desktop/input-sources]
show-all-sources=true
sources=[('xkb', 'eu'), ('xkb', 'fi')]
xkb-options=['lv3:ralt_switch']
[org/gnome/desktop/peripherals/touchpad]
tap-to-click=true
two-finger-scrolling-enabled=true
[org/gnome/desktop/privacy]
disable-microphone=false
old-files-age=uint32 14
recent-files-max-age=-1
remove-old-temp-files=true
remove-old-trash-files=true
[org/gnome/desktop/wm/keybindings]
close=['<Super>w']
move-to-workspace-down=['<Shift><Super>j']
move-to-workspace-left=['<Shift><Super>h']
move-to-workspace-right=['<Shift><Super>l']
move-to-workspace-up=['<Shift><Super>k']
switch-to-workspace-down=['<Super>j']
switch-to-workspace-left=['<Super>h']
switch-to-workspace-right=['<Super>l']
switch-to-workspace-up=['<Super>k']
toggle-fullscreen=@as []
toggle-maximized=['<Super>f']
[org/gnome/settings-daemon/plugins/media-keys]
custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']
screensaver=['<Super>BackSpace']
www=['<Super>b']
volume-step=1
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0]
binding='<Super>Return'
command='kgx'
name='Open terminal'
[org/gnome/file-roller/dialogs/new]
default-extension='.tar.zst'
[org/gnome/software]
check-timestamp=int64 1667730233
download-updates=true
download-updates-notify=true
first-run=false
[org/gnome/system/location]
enabled=true
[org/gnome/tweaks]
show-extensions-notice=false

View file

@ -1,2 +0,0 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View file

@ -1,2 +0,0 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View file

@ -1,22 +1,26 @@
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Adwaita Sans</family>
<family>Overpass</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Adwaita Sans</family>
<family>Overpass</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Adwaita mono</family>
<family>Hack Nerd Font Mono</family>
</prefer>
</alias>
</fontconfig>

View file

@ -1,45 +0,0 @@
pad=10x0
dpi-aware=yes
[scrollback]
lines=1000
[cursor]
blink=yes
[mouse]
hide-when-typing=yes
[colors]
foreground = 545464
background = f2ecbc
selection-foreground = 43436c
selection-background = c9cbd1
regular0 = 1F1F28
regular1 = c84053
regular2 = 6f894e
regular3 = 77713f
regular4 = 4d699b
regular5 = b35b79
regular6 = 597b75
regular7 = 545464
bright0 = 8a8980
bright1 = d7474b
bright2 = 6e915f
bright3 = 836f4a
bright4 = 6693bf
bright5 = 624c83
bright6 = 5e857a
bright7 = 43436c
16 = cc6d00
17 = e82424
[csd]
color = fff2ecbc
button-color = ff545464
hide-when-maximized = yes

View file

@ -1,5 +1,4 @@
pad=10x0
dpi-aware=yes
pad=20x20
[scrollback]
lines=1000
@ -11,34 +10,21 @@ blink=yes
hide-when-typing=yes
[colors]
foreground = dcd7ba
background = 1f1f28
selection-foreground = c8c093
selection-background = 2d4f67
regular0 = 090618
regular1 = c34043
regular2 = 76946a
regular3 = c0a36e
regular4 = 7e9cd8
regular5 = 957fb8
regular6 = 6a9589
regular7 = c8c093
bright0 = 727169
bright1 = e82424
bright2 = 98bb6c
bright3 = e6c384
bright4 = 7fb4ca
bright5 = 938aa9
bright6 = 7aa89f
bright7 = dcd7ba
16 = ffa066
17 = ff5d62
[csd]
color = ff1f1f28
button-color = ffdcd7ba
hide-when-maximized = yes
background=282c34
foreground=abb2bf
regular0=282c34
regular1=e06c75
regular2=98c379
regular3=e5c07b
regular4=61afef
regular5=c678dd
regular6=56b6c2
regular7=abb2bf
bright0=3e4452
bright1=be5046
bright2=98c379
bright3=d19a66
bright4=61afef
bright5=c678dd
bright6=56b6c2
bright7=5c6370

View file

@ -1,64 +0,0 @@
[user]
{%@@ if profile == "mko-laptop" @@%}
email = marko.korhonen@netforecast.com
{%@@ else @@%}
email = marko@korhonen.cc
{%@@ endif @@%}
name = Marko Korhonen
signingkey = F2B9F713E7ED627336DD85E444FA3F28CD931BB0
[commit]
signoff = true
gpgsign = true
[tag]
gpgSign = true
signoff = true
[format]
signoff = true
[merge]
prompt = false
conflictstyle = diff3
tool = nvim
[mergetool]
keepBackup = false
prompt = false
[mergetool "nvim"]
cmd = nvim +DiffviewOpen
[pull]
rebase = merges
[alias]
mergetest = !git switch test && git pull && git merge --no-ff -m \"Merge $1 features to test\" $1
upstream = !git push -u origin HEAD
sync = !git pull && git push
recommit = !git commit -eF $(git rev-parse --git-dir)/COMMIT_EDITMSG
pull-merge = pull --no-rebase --no-ff --no-edit
log-merge = log -i --grep=merge --pretty=oneline
log-fp = log --first-parent --pretty=oneline
ll = log --pretty=oneline
dno = !git --no-pager diff --name-only
[color]
pager = no
[init]
defaultBranch = main
[credential]
helper = cache --timeout=600
helper = !pass-git-helper $@
[rerere]
enabled = true
[submodule]
recurse = true
[push]
recurseSubmodules = check

View file

@ -1,4 +1,3 @@
VteTerminal,
vte-terminal {
VteTerminal, vte-terminal {
padding: 40px;
}

View file

@ -1,19 +1,19 @@
var child_process = require('child_process');
var child_process = require("child_process");
function getStdout(cmd) {
var stdout = child_process.execSync(cmd);
return stdout.toString().trim();
}
exports.host = 'imap.migadu.com';
exports.host = "imap.migadu.com";
exports.port = 993;
exports.tls = true;
exports.tlsOptions = {
rejectUnauthorized: true,
};
exports.username = 'admin@korhonen.cc';
exports.username = "admin@korhonen.cc";
exports.password = "{{@@ env['PASS_EMAIL_ADMIN'] @@}}";
exports.onNewMail = 'mbsync admin@korhonen.cc';
exports.onNewMail = "mbsync admin@korhonen.cc";
exports.onNewMailPost =
'~/git/dotfiles/scripts/mail/notify-new-mail.sh admin@korhonen.cc';
exports.boxes = ['INBOX'];
"~/git/dotfiles/scripts/mail/notify-new-mail.sh admin@korhonen.cc";
exports.boxes = ["INBOX"];

View file

@ -1,19 +1,19 @@
var child_process = require('child_process');
var child_process = require("child_process");
function getStdout(cmd) {
var stdout = child_process.execSync(cmd);
return stdout.toString().trim();
}
exports.host = 'imap.migadu.com';
exports.host = "imap.migadu.com";
exports.port = 993;
exports.tls = true;
exports.tlsOptions = {
rejectUnauthorized: true,
};
exports.username = 'functionalhacker@korhonen.cc';
exports.username = "functionalhacker@korhonen.cc";
exports.password = "{{@@ env['PASS_EMAIL_HACKER'] @@}}";
exports.onNewMail = 'mbsync functionalhacker@korhonen.cc';
exports.onNewMail = "mbsync functionalhacker@korhonen.cc";
exports.onNewMailPost =
'~/git/dotfiles/scripts/mail/notify-new-mail.sh functionalhacker@korhonen.cc';
exports.boxes = ['INBOX'];
"~/git/dotfiles/scripts/mail/notify-new-mail.sh functionalhacker@korhonen.cc";
exports.boxes = ["INBOX"];

View file

@ -1,19 +1,19 @@
var child_process = require('child_process');
var child_process = require("child_process");
function getStdout(cmd) {
var stdout = child_process.execSync(cmd);
return stdout.toString().trim();
}
exports.host = 'imap.migadu.com';
exports.host = "imap.migadu.com";
exports.port = 993;
exports.tls = true;
exports.tlsOptions = {
rejectUnauthorized: true,
};
exports.username = 'marko@korhonen.cc';
exports.username = "marko@korhonen.cc";
exports.password = "{{@@ env['PASS_EMAIL_MARKO'] @@}}";
exports.onNewMail = 'mbsync marko@korhonen.cc';
exports.onNewMail = "mbsync marko@korhonen.cc";
exports.onNewMailPost =
'~/git/dotfiles/scripts/mail/notify-new-mail.sh marko@korhonen.cc';
exports.boxes = ['INBOX'];
"~/git/dotfiles/scripts/mail/notify-new-mail.sh marko@korhonen.cc";
exports.boxes = ["INBOX"];

View file

@ -1,12 +1,7 @@
background-color=#1E1D2F
text-color=#D9E0EE
border-color=#96CDFB
progress-color=over #302D41
background-color=#282828
text-color=#EBDBB2
border-color=#D65D0E
icons=1
default-timeout=5000
max-visible=6
layer=overlay
[urgency=high]
border-color=#F8BD96

View file

@ -17,10 +17,7 @@ mpvqueue %U
^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:mp4|mkv|webm|avi|3gp|gif|gifv)
mpvqueue %U
^https?://www.facebook.com/watch/?v=.*
mpvqueue %U
^https?://www.facebook.com/.*/videos/.*
^https://www.facebook.com/watch/?v=.*
mpvqueue %U
^https://fb.watch/.*
@ -34,8 +31,11 @@ mpvqueue %U
mpvqueue %U
^https?://v.redd.it/.*
mpvqueue %U
^https?://areena.yle.fi.*
imgurviewer %U
^https?://(www.)?imgur.com/a/
imgurviewer %U
^https?://(www.)?imgur.com/gallery/
imageviewer %U
^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|jpeg|png|svg)
@ -48,3 +48,6 @@ alacritty -e rtv "%U"
alacritty -e rtv "%U"
^https?://redd.it.*
mpv "$(yle-dl --showurl %U)"
^https?://areena.yle.fi.*

View file

@ -1,13 +1,14 @@
music_directory "~/Music"
playlist_directory "~/Music/Playlists"
music_directory "~/music"
playlist_directory "~/music/Playlists"
db_file "~/.mpd/database"
log_file "~/.mpd/log"
pid_file "~/.mpd/pid"
state_file "~/.mpd/state"
sticker_file "~/.mpd/sticker.sql"
replaygain "track"
default_permissions "read,add,control"
default_permissions "read"
password "{{@@ env['PASS_MPD'] @@}}@read,add,control"
password "{{@@ env['PASS_MPD_ADMIN'] @@}}@read,add,control,admin"
@ -19,6 +20,6 @@ audio_output {
}
audio_output {
type "pipewire"
name "MPD PipeWire"
type "pulse"
name "MPD PulseAudio"
}

View file

@ -22,5 +22,3 @@ MUTE cycle ao-mute
= add audio-delay 0.100
- add audio-delay -0.100
s playlist-shuffle

View file

@ -7,8 +7,10 @@ vo=gpu
hwdec=vaapi
hwdec-codecs=all
{%@@ if wayland @@%}
{%@@ if profile == "Mirkwood" @@%}
gpu-context=wayland
{%@@ elif profile == "Rivendell" @@%}
ao=alsa
{%@@ endif @@%}
#############
@ -25,12 +27,8 @@ replaygain=track
# Start ipc server
input-ipc-server=/tmp/mpvsocket
# set youtube-dl max res
{%@@ if profile == "Moria" @@%}
ytdl-format=bestvideo[height<=2160]+bestaudio/best[height<=2160]
{%@@ else @@%}
# set youtube-dl max res to 1080
ytdl-format=bestvideo[height<=1080]+bestaudio/best[height<=1080]
{%@@ endif @@%}
# continue watching
save-position-on-quit
@ -106,4 +104,8 @@ ytdl-format="bestvideo[height<=2160]+bestaudio/best[height<=2160]"
[best]
ytdl-format="bestvideo+bestaudio"
script-opts-append=ytdl_hook-ytdl_path=yt-dlp
# Vulkan hwdec profile
[vulkan]
gpu-api=vulkan
gpu-context=waylandvk
hwdec=vaapi-copy

Some files were not shown because too many files have changed in this diff Show more