├── .dotter
├── .gitignore
├── adelie.toml
├── dingspad.toml
├── emperor.toml
├── global.toml
├── helpers
│ ├── hex_remove_hash.rhai
│ ├── hex_to_xterm.rhai
│ └── strings.rhai
├── strawberrypi.toml
└── tracer.toml
├── .envrc
├── .github
└── workflows
│ └── tests.yml
├── .gitignore
├── .sops.yaml
├── LICENSE
├── Makefile
├── README.md
├── checkhealth.sh
├── docs
├── amazing_banner.svg
├── arch-linux-installation-guide.md
├── encrypt-lvm.md
├── fs.cl
├── hibernation.md
└── plymouth.md
├── files
├── alacritty
│ ├── alacritty.yml
│ └── colorschemes
│ │ ├── catppuccin-macchiato.yml
│ │ └── dynamic.yml
├── anki-addons
│ └── 877182321
│ │ └── meta.json
├── anki
│ ├── deckbrowser.css
│ ├── editor.css
│ ├── overview.css
│ ├── reviewer-bottom.css
│ ├── reviewer.css
│ ├── toolbar-bottom.css
│ ├── toolbar.css
│ └── webview.css
├── atuin
│ └── config.toml
├── bash
│ └── .bashrc
├── beets
│ └── config.yaml
├── betterlockscreen
│ └── betterlockscreenrc
├── bpython
│ └── config
├── bspwm
│ └── bspwmrc
├── cabal
│ └── config
├── cli-visualizer
│ ├── colors
│ │ └── dracula
│ └── config
├── cron
│ └── crontab
├── doom
│ ├── config.org
│ ├── init.el
│ └── packages.el
├── dunst
│ └── dunstrc
├── etc
│ ├── bluetooth
│ │ └── main.conf
│ ├── grub
│ ├── mkinitcpio.conf
│ ├── pacman.conf
│ ├── plymouth.conf
│ ├── profile
│ └── sudoers.d
│ │ └── suspend
├── eww
│ ├── eww.scss
│ └── eww.yuck
├── firefox
│ ├── user.js
│ ├── userChrome.css
│ └── userContent.css
├── fish
│ └── config.fish
├── fontconfig
│ └── fonts.conf
├── games
│ └── thewitcher
│ │ ├── controls.txt
│ │ └── input.settings
├── glava
│ └── rc.glsl
├── gtk
│ ├── gtkrc-2.0
│ └── settings.ini
├── lightdm
│ ├── Xsession
│ ├── lightdm-gtk-greeter.conf
│ ├── lightdm-webkit2-greeter.conf
│ └── lightdm.conf
├── lisp
│ └── init.lisp
├── map2
│ ├── devices.list
│ └── test.m2
├── mirage
│ └── settings.json
├── mutt
│ ├── .mbsyncrc
│ ├── README.md
│ ├── accounts
│ │ ├── username1@email.com.muttrc
│ │ └── username2@email.com.muttrc
│ ├── muttrc
│ └── settings.muttrc
├── ncmpcpp
│ ├── bindings
│ └── config
├── npm
│ └── npmrc
├── nvim
│ ├── .gitignore
│ ├── Makefile
│ ├── after
│ │ ├── queries
│ │ │ ├── lua
│ │ │ │ └── textobjects.scm
│ │ │ └── markdown
│ │ │ │ └── highlights.scm
│ │ └── syntax
│ │ │ └── markdown.vim
│ ├── bootstrap.sh
│ ├── fnl
│ │ ├── feline-config.fnl
│ │ ├── highlight.fnl
│ │ ├── init.fnl
│ │ ├── keymaps.fnl
│ │ ├── lsp-util.fnl
│ │ ├── options.fnl
│ │ ├── paq.fnl
│ │ ├── plugin-config.fnl
│ │ ├── plugins.fnl
│ │ └── util.fnl
│ ├── ftplugin
│ │ ├── c.lua
│ │ ├── cpp.lua
│ │ ├── java.lua
│ │ ├── lisp.vim
│ │ ├── make.lua
│ │ ├── markdown.vim
│ │ ├── norg.vim
│ │ ├── rust.lua
│ │ └── tex.vim
│ ├── init.lua
│ └── lazy-lock.json
├── picom
│ └── picom.conf
├── polybar
│ ├── config
│ └── polybar.sh
├── python
│ └── pythonrc
├── ranger
│ ├── rc.conf
│ └── scope.sh
├── redshift
│ └── redshift.conf
├── rofi
│ ├── config.rasi
│ └── map.csv
├── shrc
│ └── shrc.sh
├── ssh
│ └── config
├── starship
│ └── starship.toml
├── sway
│ └── config
├── swaync
│ ├── config.json
│ └── style.css
├── sxhkd
│ ├── sxhkdrc
│ └── sxhkdrc_bspc
├── taskwarrior
│ ├── hooks
│ │ └── on-modify.timewarrior
│ └── taskrc
├── tealdeer
│ └── config.toml
├── terminfo
│ ├── alacritty-full.terminfo
│ ├── alacritty.terminfo
│ ├── compile-terminfo.sh
│ ├── tmux-256color-full.terminfo
│ └── xterm-256color-full.terminfo
├── timewarrior
│ └── timewarrior.cfg
├── tmux
│ ├── tmux.conf
│ └── tmux.conf.home
├── tofi
│ └── config
├── tree-sitter
│ └── config.json
├── ulauncher
│ ├── ext_preferences
│ │ └── com.github.ulauncher.ulauncher-hash.db
│ ├── extensions.json
│ ├── settings.json
│ └── shortcuts.json
├── wezterm
│ └── wezterm.lua
├── wofi
│ ├── config
│ └── style.css
├── zathura
│ └── zathurarc
└── zsh
│ ├── zshenv
│ ├── zshrc
│ └── zshrc.home
├── flake.lock
├── flake.nix
├── nix
├── hardware
│ ├── newpc.nix
│ ├── pc.nix
│ ├── x240.nix
│ └── x270.nix
├── home-manager
│ ├── adelie.nix
│ ├── chinstrap.nix
│ └── emperor.nix
├── modules
│ ├── home-manager
│ │ ├── default.nix
│ │ ├── git.nix
│ │ ├── gpg.nix
│ │ ├── helix.nix
│ │ ├── hyprland.nix
│ │ ├── neovim.nix
│ │ ├── shell.nix
│ │ ├── theming.nix
│ │ ├── tree-sitter.nix
│ │ └── xdg-compliance.nix
│ └── nixos
│ │ ├── all-languages.nix
│ │ ├── android.nix
│ │ ├── aria2.nix
│ │ ├── audio.nix
│ │ ├── base.nix
│ │ ├── bash.nix
│ │ ├── battery-thing.nix
│ │ ├── c.nix
│ │ ├── common-lisp.nix
│ │ ├── default.nix
│ │ ├── desktop.nix
│ │ ├── docker.nix
│ │ ├── dynamic-wallpaper.nix
│ │ ├── elm.nix
│ │ ├── encryption.nix
│ │ ├── fennel.nix
│ │ ├── fix-suspend.nix
│ │ ├── fonts.nix
│ │ ├── gitega.nix
│ │ ├── grocy.nix
│ │ ├── haskell.nix
│ │ ├── java.nix
│ │ ├── javascript.nix
│ │ ├── jellyfin.nix
│ │ ├── latex.nix
│ │ ├── lua.nix
│ │ ├── math.nix
│ │ ├── neovim.nix
│ │ ├── networking.nix
│ │ ├── nix.nix
│ │ ├── nvidia.nix
│ │ ├── ocaml.nix
│ │ ├── open-rgb.nix
│ │ ├── pandoc.nix
│ │ ├── pix2tex.nix
│ │ ├── postgres.nix
│ │ ├── python.nix
│ │ ├── radicale.nix
│ │ ├── rust.nix
│ │ ├── security.nix
│ │ ├── shared-repos.nix
│ │ ├── shell.nix
│ │ ├── steam.nix
│ │ ├── sway.nix
│ │ ├── swaylock-plugin.nix
│ │ ├── terminal.nix
│ │ ├── tree-sitter.nix
│ │ ├── typescript.nix
│ │ ├── ulauncher.nix
│ │ ├── virtual-machines.nix
│ │ ├── wayland.nix
│ │ ├── webdev.nix
│ │ └── zsh.nix
├── nixos
│ ├── adelie.nix
│ ├── chinstrap.nix
│ └── emperor.nix
├── nixpkgs.nix
├── overlays
│ └── default.nix
├── pkgs
│ ├── aria_ng
│ │ └── default.nix
│ ├── bemoji
│ │ └── default.nix
│ ├── default.nix
│ ├── dynamic-wallpapers
│ │ └── default.nix
│ ├── eisvogel
│ │ └── default.nix
│ ├── fennel-language-server
│ │ └── default.nix
│ ├── firefox-trapped
│ │ └── default.nix
│ ├── homepage
│ │ └── default.nix
│ ├── logseq-wrapped
│ │ └── default.nix
│ ├── ltex-nightly
│ │ └── default.nix
│ ├── pfui
│ │ └── default.nix
│ ├── swaylock-plugin
│ │ └── default.nix
│ ├── tree-sitter-grammar
│ │ └── default.nix
│ ├── wofi-calc
│ │ └── default.nix
│ └── zotero-wrapped
│ │ └── default.nix
└── shell.nix
├── scripts
├── auto_commit.sh
├── autoclick.sh
├── backup_sh_history.sh
├── bsod.sh
├── bspwm-resize.sh
├── bspwm-swap-or-move-in.sh
├── colors.sh
├── cookie_clicker_ascend_loop.sh
├── download-deezer.sh
├── download_yt_music_favorites.sh
├── downscale-music-collection.sh
├── emoji-picker.sh
├── eww
│ ├── mpd
│ ├── start-eww
│ ├── volume
│ └── workspace
├── extract_norg.sh
├── fav-song.sh
├── filestat.sh
├── generate_audio_for_anki_deck.sh
├── get_deezer_album_links_by_id3_tags.sh
├── import_deezer_albums_to_beets.sh
├── is_program_running.sh
├── keeper_of_keys.sh
├── keyboard-layout-switcher.sh
├── mcfly_to_atuin.sh
├── mpd-open-playlist.sh
├── mpd-status.sh
├── open-firewall.sh
├── play-song.sh
├── program-launcher.sh
├── setup-repos.sh
├── sxhkd-help-page.sh
├── tmuxleft.sh
├── tmuxright.sh
├── tmuxstssrc.sh
├── transcode.sh
├── uptime.sh
└── wally.sh
└── secrets
├── aliases.txt
└── smartdresultsemail
/.dotter/.gitignore:
--------------------------------------------------------------------------------
1 | local.toml
2 | cache.toml
3 | cache/
4 |
--------------------------------------------------------------------------------
/.dotter/adelie.toml:
--------------------------------------------------------------------------------
1 | packages = [
2 | "adelie",
3 | "sway",
4 | "tofi",
5 | "wofi",
6 | "tmux",
7 | "neovim",
8 | "zsh",
9 | "lisp",
10 | "taskwarrior",
11 | "ssh",
12 | "ncmcpp",
13 | "neomutt",
14 | "bash",
15 | "fish",
16 | "ranger",
17 | "system",
18 | "shrc",
19 | "catppuccin",
20 | "fantasque",
21 | "alacritty",
22 | "wezterm",
23 | "starship",
24 | "npm",
25 | "bpython",
26 | "cabal",
27 | "python",
28 | "atuin",
29 | "treesitter",
30 | "dunst",
31 | "scripts",
32 | "eww",
33 | "tealdeer",
34 | "ulauncher",
35 | "beets",
36 | ]
37 |
--------------------------------------------------------------------------------
/.dotter/dingspad.toml:
--------------------------------------------------------------------------------
1 | packages = [
2 | "redshift",
3 | "dingspad",
4 | "picom",
5 | "tmux",
6 | "neovim",
7 | "zsh",
8 | "lisp",
9 | "bspwm",
10 | "sxhkd",
11 | "zathura",
12 | "mirage",
13 | "lightdm",
14 | "taskwarrior",
15 | "ssh",
16 | "scripts",
17 | "polybar",
18 | "rofi",
19 | "ncmcpp",
20 | "neomutt",
21 | "bash",
22 | "fish",
23 | "ranger",
24 | "system",
25 | "gtk",
26 | "fonts",
27 | "shrc",
28 | "dracula",
29 | "fantasque",
30 | "alacritty",
31 | "wezterm",
32 | "starship",
33 | "dunst",
34 | "anki",
35 | "cli-visualizer",
36 | "npm",
37 | "bpython",
38 | "cabal",
39 | "python",
40 | "atuin",
41 | "treesitter",
42 | "ulauncher",
43 | "beets",
44 | ]
45 |
46 | [files]
47 | "files/firefox/user.js" = "~/.mozilla/firefox/5ivqh71m.default-release/user.js"
48 | "files/firefox/userChrome.css" = "~/.mozilla/firefox/5ivqh71m.default-release/chrome/userChrome.css"
49 | "files/firefox/userContent.css" = "~/.mozilla/firefox/5ivqh71m.default-release/chrome/userContent.css"
50 |
--------------------------------------------------------------------------------
/.dotter/emperor.toml:
--------------------------------------------------------------------------------
1 | packages = [
2 | "emperor",
3 | "redshift",
4 | "picom",
5 | "tmux",
6 | "neovim",
7 | # "zsh",
8 | "lisp",
9 | "bspwm",
10 | "sway",
11 | "sxhkd",
12 | "zathura",
13 | "mirage",
14 | "lightdm",
15 | "taskwarrior",
16 | "ssh",
17 | "scripts",
18 | "emacs",
19 | "eww",
20 | "rofi",
21 | "wofi",
22 | "tofi",
23 | "ncmcpp",
24 | "neomutt",
25 | "bash",
26 | "fish",
27 | "ranger",
28 | "system",
29 | # "gtk",
30 | "fonts",
31 | "shrc",
32 | "catppuccin",
33 | "fantasque",
34 | "alacritty",
35 | "wezterm",
36 | "starship",
37 | "dunst",
38 | "anki",
39 | "cli-visualizer",
40 | "npm",
41 | "bpython",
42 | "cabal",
43 | "python",
44 | "atuin",
45 | "treesitter",
46 | "tealdeer",
47 | "ulauncher",
48 | "beets",
49 | ]
50 |
51 | [files]
52 | # "files/firefox/user.js" = "~/.mozilla/firefox/ogee8zmb.default-release/user.js"
53 | # "files/firefox/userChrome.css" = "~/.mozilla/firefox/ogee8zmb.default-release/chrome/userChrome.css"
54 | # "files/firefox/userContent.css" = "~/.mozilla/firefox/ogee8zmb.default-release/chrome/userContent.css"
55 |
--------------------------------------------------------------------------------
/.dotter/helpers/hex_remove_hash.rhai:
--------------------------------------------------------------------------------
1 | let color = params[0];
2 |
3 | if color.starts_with("#") {
4 | color.sub_string(1)
5 | } else {
6 | color
7 | }
8 |
--------------------------------------------------------------------------------
/.dotter/helpers/strings.rhai:
--------------------------------------------------------------------------------
1 | params[0] == params[1]
2 |
--------------------------------------------------------------------------------
/.dotter/strawberrypi.toml:
--------------------------------------------------------------------------------
1 | packages = [
2 | "server",
3 | "ssh",
4 | "tmux",
5 | "neovim",
6 | "zsh",
7 | "bash",
8 | "scripts",
9 | "profile",
10 | "system",
11 | "fonts",
12 | "shrc",
13 | "dracula",
14 | "firamono",
15 | "starship",
16 | "npm",
17 | "bpython",
18 | "cabal",
19 | "python",
20 | "atuin",
21 | "treesitter",
22 | ]
23 |
--------------------------------------------------------------------------------
/.dotter/tracer.toml:
--------------------------------------------------------------------------------
1 | packages = [
2 | "redshift",
3 | "laptop",
4 | "picom",
5 | "tmux",
6 | "neovim",
7 | "zsh",
8 | "bspwm",
9 | "sxhkd",
10 | "zathura",
11 | "ssh",
12 | "scripts",
13 | "polybar",
14 | "rofi",
15 | "ncmcpp",
16 | "neomutt",
17 | "bash",
18 | "fish",
19 | "ranger",
20 | "fonts",
21 | "shrc",
22 | "dracula",
23 | "firamono",
24 | "alacritty",
25 | "wezterm",
26 | "starship",
27 | "dunst",
28 | "npm",
29 | "bpython",
30 | "cabal",
31 | "python",
32 | "atuin",
33 | "treesitter",
34 | ]
35 |
36 | [files]
37 | "files/firefox/user.js" = "~/.mozilla/firefox/5ivqh71m.default-release/user.js"
38 | "files/firefox/userChrome.css" = "~/.mozilla/firefox/5ivqh71m.default-release/chrome/userChrome.css"
39 | "files/firefox/userContent.css" = "~/.mozilla/firefox/5ivqh71m.default-release/chrome/userContent.css"
40 |
--------------------------------------------------------------------------------
/.envrc:
--------------------------------------------------------------------------------
1 | use flake .
2 |
--------------------------------------------------------------------------------
/.github/workflows/tests.yml:
--------------------------------------------------------------------------------
1 | name: "Test"
2 | on:
3 | pull_request:
4 | push:
5 | jobs:
6 | tests:
7 | runs-on: ubuntu-latest
8 | steps:
9 | - uses: actions/checkout@v3
10 | - uses: cachix/install-nix-action@v19
11 | - run: nix flake check
12 | - run: nix run .#format
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .direnv
2 |
--------------------------------------------------------------------------------
/.sops.yaml:
--------------------------------------------------------------------------------
1 | keys:
2 | - &main_key 9F7D2083BB220CEEB720E068309D4C8689849C5B
3 | - &age_emperor age1ey5nqemqxfc7aferu3nyc7r4qt2yy6lz67l856auysnk9kk2e3js8t8u26
4 | creation_rules:
5 | - path_regex: secrets/[^/]+\.(yaml|json|env|ini|txt)$
6 | key_groups:
7 | - pgp:
8 | - *main_key
9 | age:
10 | - *age_emperor
11 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | all: neovim dotter
2 |
3 | neovim: ./files/nvim/config.norg
4 | cd ./files/nvim/ && $(MAKE) all
5 |
6 | dotter:
7 | dotter deploy -f
8 |
9 | clean:
10 | cd ./files/nvim/ && $(MAKE) clean
11 |
12 | .PHONY: build_dir query clean
13 |
14 |
--------------------------------------------------------------------------------
/docs/hibernation.md:
--------------------------------------------------------------------------------
1 | ## Getting Hibernation to Work
2 |
3 | ### Kernel Parameters
4 |
5 | (Edit `/etc/default/grub`)
6 |
7 | Find the `GRUB_CMDLINE_LINUX_DEFAULT` option, add the following:
8 |
9 | - `resume=/dev/sdX1` (Parition containing swapfile, can also be uuid)
10 | - `resume_offset=OFFSET` (Offset, can be obtained with the following command: `filefrag -v /swapfile | awk '$1=="0:" {print substr($4, 1, length($4)-2)}'`, alternatively execute `filefrag -v /swapfile` and look for the first value in the physical_offset column, row 0)
11 |
12 | ### Hook
13 |
14 | (Edit `/etc/mkinitcpio.conf`)
15 |
16 | Add the resume hook after base & udev (before plymouth):
17 | ```
18 | HOOKS=(base udev resume [...] )
19 | ```
20 |
21 | ## Make changes take effect
22 |
23 | `sudo mkinitcpio -p linux --generate /boot/initramfs-linux.img`
24 |
25 | `sudo grub-mkconfig --output=/boot/grub/grub.cfg`
26 |
--------------------------------------------------------------------------------
/docs/plymouth.md:
--------------------------------------------------------------------------------
1 | ## Getting Plymouth to Work
2 |
3 | ### Hook
4 |
5 | (Edit `/etc/mkinitcpio.conf`)
6 |
7 | Add the plymouth hook after base & udev:
8 | ```
9 | HOOKS=(base udev plymouth [...] )
10 | ```
11 |
12 | ### KMS
13 |
14 | (Still `/etc/mkinitcpio.conf`)
15 |
16 | Intel:
17 | ```
18 | MODULES=(i915)
19 | ```
20 | ATI:
21 | ```
22 | MODULES=(radeon)
23 | ```
24 | NVIDIA:
25 | ```
26 | MODULES=(nouveau)
27 | ```
28 |
29 | ### Kernel Parameters
30 |
31 | (Edit `etc/default/grub`)
32 |
33 | Find the `GRUB_CMDLINE_LINUX_DEFAULT` option, try adding the following:
34 |
35 | - quiet
36 | - splash
37 | - vga=current
38 | - loglevel=0
39 | - rd.udev.log_priority=0
40 | - vt.global_cursor_default=0
41 |
42 | You might have to enable KMS here as well using the following parameter:
43 |
44 | - i915.modeset=1
45 |
46 | ## Make changes take effect
47 |
48 | `sudo mkinitcpio -p linux --generate /boot/initramfs-linux.img`
49 |
50 | `sudo grub-mkconfig --output=/boot/grub/grub.cfg` (running without `--output` is only a dry-run, took me way too long to realise that)
51 |
52 | Then reboot. Good luck, you're gonna need it.
53 |
54 | ## Smooth transition to display manager
55 |
56 | Disable the service for display manager, for example `sudo systemctl disable lighdm`, then enable the plymouth service for that, for example `sudo systemctl enable lightdm-plymouth`
57 |
--------------------------------------------------------------------------------
/files/alacritty/colorschemes/catppuccin-macchiato.yml:
--------------------------------------------------------------------------------
1 | colors:
2 | # Default colors
3 | primary:
4 | background: "#24273A" # base
5 | foreground: "#CAD3F5" # text
6 | # Bright and dim foreground colors
7 | dim_foreground: "#CAD3F5" # text
8 | bright_foreground: "#CAD3F5" # text
9 |
10 | # Cursor colors
11 | cursor:
12 | text: "#24273A" # base
13 | cursor: "#F4DBD6" # rosewater
14 | vi_mode_cursor:
15 | text: "#24273A" # base
16 | cursor: "#B7BDF8" # lavender
17 |
18 | # Search colors
19 | search:
20 | matches:
21 | foreground: "#24273A" # base
22 | background: "#A5ADCB" # subtext0
23 | focused_match:
24 | foreground: "#24273A" # base
25 | background: "#A6DA95" # green
26 | footer_bar:
27 | foreground: "#24273A" # base
28 | background: "#A5ADCB" # subtext0
29 |
30 | # Keyboard regex hints
31 | hints:
32 | start:
33 | foreground: "#24273A" # base
34 | background: "#EED49F" # yellow
35 | end:
36 | foreground: "#24273A" # base
37 | background: "#A5ADCB" # subtext0
38 |
39 | # Selection colors
40 | selection:
41 | text: "#24273A" # base
42 | background: "#F4DBD6" # rosewater
43 |
44 | # Normal colors
45 | normal:
46 | black: "#494D64" # surface1
47 | red: "#ED8796" # red
48 | green: "#A6DA95" # green
49 | yellow: "#EED49F" # yellow
50 | blue: "#8AADF4" # blue
51 | magenta: "#F5BDE6" # pink
52 | cyan: "#8BD5CA" # teal
53 | white: "#B8C0E0" # subtext1
54 |
55 | # Bright colors
56 | bright:
57 | black: "#5B6078" # surface2
58 | red: "#ED8796" # red
59 | green: "#A6DA95" # green
60 | yellow: "#EED49F" # yellow
61 | blue: "#8AADF4" # blue
62 | magenta: "#F5BDE6" # pink
63 | cyan: "#8BD5CA" # teal
64 | white: "#A5ADCB" # subtext0
65 |
66 | # Dim colors
67 | dim:
68 | black: "#494D64" # surface1
69 | red: "#ED8796" # red
70 | green: "#A6DA95" # green
71 | yellow: "#EED49F" # yellow
72 | blue: "#8AADF4" # blue
73 | magenta: "#F5BDE6" # pink
74 | cyan: "#8BD5CA" # teal
75 | white: "#B8C0E0" # subtext1
76 |
77 | indexed_colors:
78 | - { index: 16, color: "#F5A97F" }
79 | - { index: 17, color: "#F4DBD6" }
80 |
--------------------------------------------------------------------------------
/files/alacritty/colorschemes/dynamic.yml:
--------------------------------------------------------------------------------
1 | colors:
2 | # Default colors
3 | primary:
4 | background: '{{ colors.bg }}'
5 | foreground: '{{ colors.fg }}'
6 |
7 | # Bright and dim foreground colors
8 | #
9 | # The dimmed foreground color is calculated automatically if it is not present.
10 | # If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
11 | # is `false`, the normal foreground color will be used.
12 | # dim_foreground: '#f2f2f2'
13 | # bright_foreground: '#f8f8f8'
14 |
15 | # Cursor colors
16 | #
17 | # Colors which should be used to draw the terminal cursor. If these are unset,
18 | # the cursor color will be the inverse of the cell color.
19 | cursor:
20 | # text: '#000000'
21 | cursor: '{{ colors.c5 }}'
22 |
23 | # Selection colors
24 | #
25 | # Colors which should be used to draw the selection area. If selection
26 | # background is unset, selection color will be the inverse of the cell colors.
27 | # If only text is unset the cell text color will remain the same.
28 | selection:
29 | # text: '{{ colors.fg }}'
30 | background: '{{ colors.purple }}'
31 |
32 | # Normal colors
33 | normal:
34 | black: '{{ colors.c0 }}'
35 | red: '{{ colors.c1 }}'
36 | green: '{{ colors.c2 }}'
37 | yellow: '{{ colors.c3 }}'
38 | cyan: '{{ colors.c6 }}'
39 | blue: '{{ colors.c4 }}'
40 | magenta: '{{ colors.c5 }}'
41 | white: '{{ colors.c7 }}'
42 |
43 | # Bright colors
44 | bright:
45 | black: '{{ colors.c8 }}'
46 | red: '{{ colors.c9 }}'
47 | green: '{{ colors.c10 }}'
48 | yellow: '{{ colors.c11 }}'
49 | cyan: '{{ colors.c14 }}'
50 | blue: '{{ colors.c12 }}'
51 | magenta: '{{ colors.c13 }}'
52 | white: '{{ colors.c15 }}'
53 |
54 | # Dim colors
55 | #
56 | # If the dim colors are not set, they will be calculated automatically based
57 | # on the `normal` colors.
58 | dim:
59 | black: '{{ colors.c16 }}'
60 | red: '{{ colors.c17 }}'
61 | green: '{{ colors.c18 }}'
62 | yellow: '{{ colors.c19 }}'
63 | cyan: '{{ colors.c22 }}'
64 | blue: '{{ colors.c20 }}'
65 | magenta: '{{ colors.c21 }}'
66 | white: '{{ colors.c23 }}'
67 |
68 | # Indexed Colors
69 | #
70 | # The indexed colors include all colors from 16 to 256.
71 | # When these are not set, they're filled with sensible defaults.
72 | #
73 | # Example:
74 | # `- { index: 16, color: '#ff00ff' }`
75 | #
76 | #indexed_colors: []
77 |
--------------------------------------------------------------------------------
/files/anki/deckbrowser.css:
--------------------------------------------------------------------------------
1 | /* night-mode-specific colours */
2 | .review-count {
3 | color: #0a0;
4 | }
5 |
6 | .new-count {
7 | color: #00a;
8 | }
9 |
10 | .learn-count {
11 | color: #C35617;
12 | }
13 |
14 | .zero-count {
15 | color: #ddd;
16 | }
17 |
18 | .nightMode .review-count {
19 | color: #5CcC00;
20 | }
21 | .nightMode .new-count {
22 | color: #77ccff;
23 | }
24 | .nightMode .learn-count {
25 | color: #FF935B;
26 | }
27 | .nightMode .zero-count {
28 | color: #444;
29 | }
30 |
31 | /* Copyright: Ankitects Pty Ltd and contributors
32 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */
33 | a.deck {
34 | color: black;
35 | text-decoration: none;
36 | min-width: 5em;
37 | display: inline-block;
38 | }
39 |
40 | a.deck:hover {
41 | text-decoration: underline;
42 | }
43 |
44 | /* This is the list of decks, set the background color to that gray and set the padding to a higher value, this makes it so there is more space between the decks */
45 | tr.deck td {
46 | background-color: #29292B;
47 | padding: 10px;
48 | }
49 |
50 | tr.top-level-drag-row td {
51 | border-bottom: 1px solid transparent;
52 | }
53 |
54 | td {
55 | white-space: nowrap;
56 | }
57 |
58 | tr.drag-hover td {
59 | border-bottom: 1px solid #aaa;
60 | }
61 |
62 | body.nightMode {
63 | margin: 1em;
64 | -webkit-user-select: none;
65 | /* background-image: url("2.gif"); */
66 | background-position: center;
67 | background-repeat: no-repeat;
68 | background-size: cover;
69 | }
70 |
71 | .current {
72 | background-color: #e7e7e7;
73 | }
74 |
75 | .decktd {
76 | min-width: 15em;
77 | }
78 |
79 | .count {
80 | min-width: 4em;
81 | text-align: right;
82 | }
83 |
84 | .optscol {
85 | width: 2em;
86 | }
87 |
88 | .collapse {
89 | color: black;
90 | text-decoration: none;
91 | display: inline-block;
92 | width: 1em;
93 | }
94 |
95 | .filtered {
96 | color: #00a !important;
97 | }
98 |
99 | .gears {
100 | width: 1em;
101 | height: 1em;
102 | opacity: 0.5;
103 | padding-top: 0.2em;
104 | }
105 |
106 | .nightMode a.deck {
107 | color: white;
108 | }
109 | /* This is for the lines in between the decks in the list, I set it to a shade of blue matching my enhance main window config */
110 | .nightMode tr.deck td {
111 | border-bottom-color: {{ colors.prm }};
112 | }
113 | .nightMode tr.drag-hover td {
114 | border-bottom-color: #777;
115 | }
116 | .nightMode .current {
117 | background-color: #29292B;
118 | }
119 | .nightMode .collapse {
120 | color: white;
121 | }
122 | /* The gears have a more light color per default, remove the line of code in this block to get rid of that */
123 | .nightMode .gears {
124 | }
125 | .nightMode .filtered {
126 | color: {{ colors.prm }} !important;
127 | }
128 |
--------------------------------------------------------------------------------
/files/anki/editor.css:
--------------------------------------------------------------------------------
1 | /* night-mode-specific colours */
2 | /* Copyright: Ankitects Pty Ltd and contributors
3 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */
4 | .field {
5 | border: 1px solid #aaa;
6 | background: white;
7 | color: black;
8 | padding: 5px;
9 | overflow-wrap: break-word;
10 | }
11 |
12 | .clearfix:after {
13 | content: "";
14 | display: table;
15 | clear: both;
16 | }
17 |
18 | .fname {
19 | vertical-align: middle;
20 | padding: 0;
21 | }
22 |
23 | img {
24 | max-width: 90%;
25 | }
26 |
27 | body {
28 | margin: 0;
29 | }
30 |
31 | #topbutsOuter {
32 | position: fixed;
33 | top: 0;
34 | padding: 2px;
35 | left: 0;
36 | right: 0;
37 | z-index: 1;
38 | }
39 |
40 | .topbut {
41 | width: 16px;
42 | height: 16px;
43 | margin-top: 4px;
44 | }
45 |
46 | .rainbow {
47 | background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #f77), color-stop(50%, #7f7), color-stop(100%, #77f));
48 | }
49 |
50 | button.linkb {
51 | -webkit-appearance: none;
52 | border: 0;
53 | box-shadow: none;
54 | padding: 0px 2px;
55 | background: transparent;
56 | }
57 |
58 | .linkb:disabled {
59 | opacity: 0.3;
60 | cursor: not-allowed;
61 | }
62 |
63 | .highlighted {
64 | border-bottom: 3px solid #000;
65 | }
66 |
67 | #fields {
68 | margin-top: 35px;
69 | }
70 |
71 | .dupe {
72 | background: #aa5555;
73 | }
74 |
75 | .nightMode .field {
76 | border-color: #777;
77 | background: #3a3a3a;
78 | color: white;
79 | }
80 | .nightMode button.linkb > img {
81 | filter: invert(180);
82 | }
83 | .nightMode .dupe {
84 | background: #aa5555;
85 | }
86 | .nightMode #dupes a {
87 | color: #77ccff;
88 | }
89 |
90 | .drawing {
91 | zoom: 50%;
92 | }
93 |
94 | .nightMode img.drawing {
95 | filter: invert() hue-rotate(180deg);
96 | }
97 |
--------------------------------------------------------------------------------
/files/anki/overview.css:
--------------------------------------------------------------------------------
1 | /* night-mode-specific colours */
2 | .review-count {
3 | color: #0a0;
4 | }
5 |
6 | .new-count {
7 | color: #00a;
8 | }
9 |
10 | .learn-count {
11 | color: #C35617;
12 | }
13 |
14 | .zero-count {
15 | color: #ddd;
16 | }
17 |
18 | .nightMode .review-count {
19 | color: #5CcC00;
20 | }
21 | .nightMode .new-count {
22 | color: #77ccff;
23 | }
24 | .nightMode .learn-count {
25 | color: #FF935B;
26 | }
27 | .nightMode .zero-count {
28 | color: #444;
29 | }
30 |
31 | /* Copyright: Ankitects Pty Ltd and contributors
32 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */
33 | .smallLink {
34 | font-size: 10px;
35 | }
36 |
37 | h3 {
38 | margin-bottom: 0;
39 | }
40 |
41 | .descfont {
42 | padding: 1em;
43 | color: #333;
44 | }
45 |
46 | .description {
47 | white-space: pre-wrap;
48 | }
49 |
50 | #fulldesc {
51 | display: none;
52 | }
53 |
54 | .descmid {
55 | width: 70%;
56 | margin: 0 auto 0;
57 | text-align: left;
58 | }
59 |
60 | .dyn {
61 | text-align: center;
62 | }
63 |
64 | .nightMode .descfont {
65 | color: #ccc;
66 | }
67 |
--------------------------------------------------------------------------------
/files/anki/reviewer-bottom.css:
--------------------------------------------------------------------------------
1 | /* night-mode-specific colours */
2 | .review-count {
3 | color: #0a0;
4 | }
5 |
6 | .new-count {
7 | color: #00a;
8 | }
9 |
10 | .learn-count {
11 | color: #C35617;
12 | }
13 |
14 | .zero-count {
15 | color: #ddd;
16 | }
17 |
18 | .nightMode .review-count {
19 | color: #5CcC00;
20 | }
21 | .nightMode .new-count {
22 | color: #77ccff;
23 | }
24 | .nightMode .learn-count {
25 | color: #FF935B;
26 | }
27 | .nightMode .zero-count {
28 | color: #444;
29 | }
30 |
31 | /* Copyright: Ankitects Pty Ltd and contributors
32 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */
33 | body {
34 | margin: 0;
35 | padding: 0;
36 | }
37 |
38 | button {
39 | min-width: 60px;
40 | white-space: nowrap;
41 | margin: 0.5em;
42 | }
43 |
44 | .hitem {
45 | margin-top: 2px;
46 | }
47 |
48 | .stat {
49 | padding-top: 5px;
50 | }
51 |
52 | .stat2 {
53 | padding-top: 3px;
54 | font-weight: normal;
55 | }
56 |
57 | .stattxt {
58 | padding-left: 5px;
59 | padding-right: 5px;
60 | white-space: nowrap;
61 | }
62 |
63 | #ansbut {
64 | margin-bottom: 1em;
65 | }
66 |
67 | .nobold {
68 | font-weight: normal;
69 | display: inline-block;
70 | padding-top: 4px;
71 | }
72 |
73 | .spacer {
74 | height: 18px;
75 | }
76 |
77 | .spacer2 {
78 | height: 16px;
79 | }
80 |
81 | #outer {
82 | border-top: 1px solid #aaa;
83 | }
84 |
85 | #innertable {
86 | padding: 3px;
87 | }
88 |
89 | .nightMode #outer {
90 | border-top-color: #29292B;
91 | }
92 |
--------------------------------------------------------------------------------
/files/anki/reviewer.css:
--------------------------------------------------------------------------------
1 | /* night-mode-specific colours */
2 | /* Copyright: Ankitects Pty Ltd and contributors
3 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */
4 | hr {
5 | background-color: #ccc;
6 | }
7 |
8 | body {
9 | margin: 20px;
10 | overflow-wrap: break-word;
11 | }
12 |
13 | body.nightMode {
14 | background-color: #2f2f31;
15 | color: white;
16 | }
17 |
18 | img {
19 | max-width: 95%;
20 | max-height: 95vh;
21 | }
22 |
23 | #_flag {
24 | position: fixed;
25 | right: 10px;
26 | top: 0;
27 | font-size: 30px;
28 | display: none;
29 | -webkit-text-stroke-width: 1px;
30 | -webkit-text-stroke-color: black;
31 | }
32 |
33 | #_mark {
34 | position: fixed;
35 | left: 10px;
36 | top: 0;
37 | font-size: 30px;
38 | color: yellow;
39 | display: none;
40 | -webkit-text-stroke-width: 1px;
41 | -webkit-text-stroke-color: black;
42 | }
43 |
44 | #typeans {
45 | width: 100%;
46 | }
47 |
48 | .typeGood {
49 | background: #0f0;
50 | }
51 |
52 | .typeBad {
53 | background: #f00;
54 | }
55 |
56 | .typeMissed {
57 | background: #ccc;
58 | }
59 |
60 | .replay-button {
61 | text-decoration: none;
62 | display: inline-flex;
63 | vertical-align: middle;
64 | margin: 3px;
65 | }
66 | .replay-button svg {
67 | width: 40px;
68 | height: 40px;
69 | }
70 | .replay-button svg circle {
71 | fill: #fff;
72 | stroke: #414141;
73 | }
74 | .replay-button svg path {
75 | fill: #414141;
76 | }
77 |
78 | .nightMode .latex {
79 | filter: invert(100%);
80 | }
81 |
82 | .drawing {
83 | zoom: 50%;
84 | }
85 |
86 | .nightMode img.drawing {
87 | filter: invert(1) hue-rotate(180deg);
88 | }
89 |
--------------------------------------------------------------------------------
/files/anki/toolbar-bottom.css:
--------------------------------------------------------------------------------
1 | /* Copyright: Ankitects Pty Ltd and contributors
2 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */
3 | #header {
4 | border-bottom: 0;
5 | margin-bottom: 6px;
6 | margin-top: 0;
7 | padding: 9px;
8 | }
9 |
--------------------------------------------------------------------------------
/files/anki/toolbar.css:
--------------------------------------------------------------------------------
1 | /* night-mode-specific colours */
2 | /* Copyright: Ankitects Pty Ltd and contributors
3 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */
4 | #header {
5 | padding: 3px;
6 | font-weight: bold;
7 | border-bottom: 1px solid #aaa;
8 | }
9 |
10 | .tdcenter {
11 | white-space: nowrap;
12 | }
13 |
14 | body {
15 | margin: 0;
16 | padding: 0;
17 | -webkit-user-select: none;
18 | overflow: hidden;
19 | }
20 |
21 | * {
22 | -webkit-user-drag: none;
23 | }
24 |
25 | .hitem {
26 | padding-right: 12px;
27 | padding-left: 12px;
28 | text-decoration: none;
29 | color: black;
30 | }
31 |
32 | .hitem:hover {
33 | text-decoration: underline;
34 | }
35 |
36 | .hitem:focus {
37 | outline: 0;
38 | }
39 |
40 | /* This is the color of the text of the toolbar at the top, I set it to blue again but I'm not sure yet if I'm going to keep it or not */
41 | .nightMode .hitem {
42 | color: {{ colors.prm }};
43 | }
44 | /* This is the little stripe between the toolbar at the top and the part of the screen containing the decks, I set it to the same shade of blue */
45 | .nightMode #header {
46 | border-bottom-color: {{ colors.prm }};
47 | }
48 |
49 | .isMac.nightMode #header {
50 | border-bottom-color: #3a3a3a;
51 | }
52 |
53 | @keyframes spin {
54 | 0% {
55 | -webkit-transform: rotate(0deg);
56 | }
57 | 100% {
58 | -webkit-transform: rotate(360deg);
59 | }
60 | }
61 | .spin {
62 | animation: spin;
63 | animation-duration: 2s;
64 | animation-iteration-count: infinite;
65 | display: inline-block;
66 | visibility: visible !important;
67 | animation-timing-function: linear;
68 | }
69 |
70 | #sync-spinner {
71 | width: 16px;
72 | height: 16px;
73 | margin-bottom: -3px;
74 | visibility: hidden;
75 | }
76 |
--------------------------------------------------------------------------------
/files/anki/webview.css:
--------------------------------------------------------------------------------
1 | /* night-mode-specific colours */
2 | .isWin button {
3 | font-size: 12px;
4 | }
5 |
6 | .isMac button {
7 | font-size: 13px;
8 | }
9 |
10 | .isLin button {
11 | font-size: 14px;
12 | -webkit-appearance: none;
13 | border-radius: 3px;
14 | padding: 5px;
15 | border: 1px solid #aaa;
16 | }
17 |
18 | .nightMode button {
19 | -webkit-appearance: none;
20 | color: white;
21 | /* match the fusion button gradient */
22 | background: linear-gradient(0deg, #555555 0%, #656565 100%);
23 | box-shadow: 0 0 3px #222222;
24 | border: 1px solid #646464;
25 | border-radius: 2px;
26 | padding: 10px;
27 | padding-top: 3px;
28 | padding-bottom: 3px;
29 | }
30 | .nightMode button:hover {
31 | background: #656565;
32 | }
33 |
34 | /* imitate standard macOS dark mode buttons */
35 | .isMac.nightMode.macos-dark-mode button:not(.linkb) {
36 | background: #656565;
37 | box-shadow: 0 1px 2px #222222;
38 | border-top-color: #848484;
39 | border-top-width: 0.5px;
40 | border-bottom: 0;
41 | border-left: 0;
42 | border-right: 0;
43 | padding-top: 2px;
44 | padding-bottom: 2px;
45 | padding-left: 15px;
46 | padding-right: 15px;
47 | color: #e5e5e5;
48 | }
49 |
50 | /* Copyright: Ankitects Pty Ltd and contributors
51 | * License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html */
52 | body {
53 | margin: 2em;
54 | color: black;
55 | }
56 |
57 | h1 {
58 | margin-bottom: 0.2em;
59 | }
60 |
61 | a {
62 | color: #00a;
63 | }
64 |
65 | body.nightMode {
66 | color: white;
67 | background: #2f2f31;
68 | }
69 |
70 | body.nightMode::-webkit-scrollbar {
71 | background: #2f2f31;
72 | }
73 |
74 | body.nightMode::-webkit-scrollbar:horizontal {
75 | height: 12px;
76 | }
77 |
78 | body.nightMode::-webkit-scrollbar:vertical {
79 | width: 12px;
80 | }
81 |
82 | body.nightMode::-webkit-scrollbar-thumb {
83 | background: #656565;
84 | border-radius: 8px;
85 | }
86 |
87 | body.nightMode::-webkit-scrollbar-thumb:horizontal {
88 | min-width: 50px;
89 | }
90 |
91 | body.nightMode::-webkit-scrollbar-thumb:vertical {
92 | min-height: 50px;
93 | }
94 |
95 | .nightMode a {
96 | color: #77ccff;
97 | }
98 |
99 | body {
100 | overscroll-behavior: none;
101 | }
102 |
--------------------------------------------------------------------------------
/files/atuin/config.toml:
--------------------------------------------------------------------------------
1 | dialect = "uk"
2 |
3 | # auto_sync = true
4 |
5 | # sync_frequency = "180m"
6 |
7 | sync_address = "https://api.atuin.sh"
8 |
9 | search_mode = "fuzzy"
10 |
11 | update_check = false
12 |
--------------------------------------------------------------------------------
/files/beets/config.yaml:
--------------------------------------------------------------------------------
1 | library: "~/Music/library.db"
2 | # plugins: chroma fromfilename fetchart lyrics lastgenre spotify deezer
3 | plugins: chroma fromfilename acousticbrainz mbsync fetchart lyrics lastgenre spotify deezer mpdupdate
4 |
5 | deezer:
6 | source_weight: 1.0
7 |
8 | spotify:
9 | source_weight: 0.0
10 |
11 | musicbrainz:
12 | source_weight: 0.0
13 | genres: yes
14 |
15 | chroma:
16 | source_weight: 0.0
17 | auto: yes
18 |
19 | fromfilename:
20 | source_weight: 0.0
21 |
22 | match:
23 | strong_rec_thresh: 0.80
24 | medium_rec_thresh: 0.50
25 | max_rec:
26 | missing_tracks: strong
27 | track_title: low
28 | unmachted_tracks: low
29 |
--------------------------------------------------------------------------------
/files/betterlockscreen/betterlockscreenrc:
--------------------------------------------------------------------------------
1 | # configuration file for betterlockscreen
2 |
3 | insidecolor=00000000
4 | ringcolor=ffffffff
5 | keyhlcolor=d23c3dff
6 | bshlcolor=d23c3dff
7 | separatorcolor=00000000
8 | insidevercolor=00000000
9 | insidewrongcolor=d23c3dff
10 | ringvercolor=ffffffff
11 | ringwrongcolor=ffffffff
12 | verifcolor=ffffffff
13 | timecolor=ffffffff
14 | datecolor=ffffffff
15 | loginbox=00000066
--------------------------------------------------------------------------------
/files/bpython/config:
--------------------------------------------------------------------------------
1 | [general]
2 | hist_file = $XDG_DATA_HOME/bpythonhistory
3 |
--------------------------------------------------------------------------------
/files/cli-visualizer/colors/dracula:
--------------------------------------------------------------------------------
1 | {{ colors.cyan }}
2 | {{ colors.green }}
3 | {{ colors.orange }}
4 | {{ colors.pink }}
5 | {{ colors.purple }}
6 | {{ colors.red }}
7 | {{ colors.yellow }}
8 |
--------------------------------------------------------------------------------
/files/cron/crontab:
--------------------------------------------------------------------------------
1 | */10 * * * * /usr/bin/mbsync -a -c "~/.config/isync/mbsyncrc"
2 | 5 */2 * * * /usr/bin/pacman -Syuw --noconfirm
3 | 0 17 * * * /usr/bin/env sh /home/b3nj4m1n/Documents/Github/gitega/update.sh "/home/b3nj4m1n/.gitega" "EMAIL"; XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send "Updated github stats."
4 | 10 * * * * /usr/bin/env sh ~/.local/share/bin/auto_commit.sh "/home/b3nj4m1n/.local/share/task" true
5 | 42 17 * * * /usr/bin/env sh ~/.local/share/bin/auto_commit.sh "/home/b3nj4m1n/.local/share/task" false
6 | 11 * * * * /usr/bin/env sh ~/.local/share/bin/auto_commit.sh "/home/b3nj4m1n/.local/share/timew/data" true
7 | 43 17 * * * /usr/bin/env sh ~/.local/share/bin/auto_commit.sh "/home/b3nj4m1n/.local/share/timew/data" false
8 | 12 * * * * /usr/bin/env sh ~/.local/share/bin/backup_sh_history.sh "/home/b3nj4m1n/.local/share/sh_history/history" true
9 | 44 17 * * * /usr/bin/env sh ~/.local/share/bin/backup_sh_history.sh "/home/b3nj4m1n/.local/share/sh_history/history" false
10 |
--------------------------------------------------------------------------------
/files/doom/packages.el:
--------------------------------------------------------------------------------
1 | ;; -*- no-byte-compile: t; -*-
2 | ;;; $DOOMDIR/packages.el
3 |
4 | ;; To install a package with Doom you must declare them here and run 'doom sync'
5 | ;; on the command line, then restart Emacs for the changes to take effect -- or
6 | ;; use 'M-x doom/reload'.
7 |
8 |
9 | ;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
10 | ;(package! some-package)
11 |
12 | ;; To install a package directly from a remote git repo, you must specify a
13 | ;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
14 | ;; https://github.com/raxod502/straight.el#the-recipe-format
15 | ;(package! another-package
16 | ; :recipe (:host github :repo "username/repo"))
17 |
18 | ;; If the package you are trying to install does not contain a PACKAGENAME.el
19 | ;; file, or is located in a subdirectory of the repo, you'll need to specify
20 | ;; `:files' in the `:recipe':
21 | ;(package! this-package
22 | ; :recipe (:host github :repo "username/repo"
23 | ; :files ("some-file.el" "src/lisp/*.el")))
24 |
25 | ;; If you'd like to disable a package included with Doom, you can do so here
26 | ;; with the `:disable' property:
27 | ;(package! builtin-package :disable t)
28 |
29 | ;; You can override the recipe of a built in package without having to specify
30 | ;; all the properties for `:recipe'. These will inherit the rest of its recipe
31 | ;; from Doom or MELPA/ELPA/Emacsmirror:
32 | ;(package! builtin-package :recipe (:nonrecursive t))
33 | ;(package! builtin-package-2 :recipe (:repo "myfork/package"))
34 |
35 | ;; Specify a `:branch' to install a package from a particular branch or tag.
36 | ;; This is required for some packages whose default branch isn't 'master' (which
37 | ;; our package manager can't deal with; see raxod502/straight.el#279)
38 | ;(package! builtin-package :recipe (:branch "develop"))
39 |
40 | ;; Use `:pin' to specify a particular commit to install.
41 | ;(package! builtin-package :pin "1a2b3c4d5e")
42 |
43 |
44 | ;; Doom's packages are pinned to a specific commit and updated from release to
45 | ;; release. The `unpin!' macro allows you to unpin single packages...
46 | ;(unpin! pinned-package)
47 | ;; ...or multiple packages
48 | ;(unpin! pinned-package another-pinned-package)
49 | ;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
50 | ;(unpin! t)
51 | (package! peep-dired)
52 | (package! atomic-chrome)
53 |
--------------------------------------------------------------------------------
/files/dunst/dunstrc:
--------------------------------------------------------------------------------
1 | [global]
2 | monitor = 0
3 | follow = mouse
4 | geometry = "250x50-30+58"
5 | indicate_hidden = yes
6 | shrink = no
7 | separator_height = 3
8 | padding = 16
9 | horizontal_padding = 24
10 | frame_width = 3
11 | sort = no
12 | idle_threshold = 120
13 | font = {{ font.font }} {{ font.font_size }}
14 | line_height = 4
15 | markup = full
16 | format = "%s\n%b"
17 | alignment = left
18 | show_age_threshold = 60
19 | word_wrap = yes
20 | ignore_newline = no
21 | stack_duplicates = false
22 | hide_duplicate_count = yes
23 | show_indicators = no
24 | icon_position = off
25 | sticky_history = yes
26 | history_length = 20
27 | browser = /usr/bin/firefox -new-tab
28 | always_run_script = true
29 | title = Dunst
30 | class = Dunst
31 | frame_color = "{{ colors.prm }}"
32 | separator_color = frame
33 | transparency = 60
34 |
35 | [shortcuts]
36 | close = ctrl+space
37 | close_all = ctrl+shift+space
38 |
39 | [urgency_low]
40 | background = "{{ colors.bg }}"
41 | foreground = "{{ colors.c15 }}"
42 | frame_color = "{{ colors.prm }}"
43 | timeout = 10
44 |
45 | [urgency_normal]
46 | background = "{{ colors.bg }}"
47 | foreground = "{{ colors.c15 }}"
48 | frame_color = "{{ colors.prm_dim }}"
49 | timeout = 10
50 |
51 | [urgency_critical]
52 | background = "{{ colors.bg }}"
53 | foreground = "{{ colors.fg_bright }}"
54 | frame_color = "{{ colors.c17 }}"
55 | timeout = 0
56 |
--------------------------------------------------------------------------------
/files/etc/grub:
--------------------------------------------------------------------------------
1 | # GRUB boot loader configuration
2 |
3 | GRUB_DEFAULT=0
4 | GRUB_TIMEOUT=5
5 | GRUB_DISTRIBUTOR="Arch"
6 | GRUB_CMDLINE_LINUX_DEFAULT="{{#if kernel_parameters_default}}{{kernel_parameters_default}}{{/if}}"
7 | GRUB_CMDLINE_LINUX="{{#if kernel_parameters}}{{kernel_parameters}}{{/if}}"
8 |
9 | # Preload both GPT and MBR modules so that they are not missed
10 | GRUB_PRELOAD_MODULES="part_gpt part_msdos"
11 |
12 | # Uncomment to enable booting from LUKS encrypted devices
13 | #GRUB_ENABLE_CRYPTODISK=y
14 |
15 | # Set to 'countdown' or 'hidden' to change timeout behavior,
16 | # press ESC key to display menu.
17 | GRUB_TIMEOUT_STYLE=menu
18 |
19 | # Uncomment to use basic console
20 | GRUB_TERMINAL_INPUT=console
21 |
22 | # Uncomment to disable graphical terminal
23 | #GRUB_TERMINAL_OUTPUT=console
24 |
25 | # The resolution used on graphical terminal
26 | # note that you can use only modes which your graphic card supports via VBE
27 | # you can see them in real GRUB with the command `vbeinfo'
28 | GRUB_GFXMODE={{#if grub_res}}{{grub_res}}{{else}}auto{{/if}}
29 |
30 | # Uncomment to allow the kernel use the same resolution used by grub
31 | GRUB_GFXPAYLOAD_LINUX=keep
32 |
33 | # Uncomment if you want GRUB to pass to the Linux kernel the old parameter
34 | # format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx"
35 | #GRUB_DISABLE_LINUX_UUID=true
36 |
37 | # Uncomment to disable generation of recovery mode menu entries
38 | GRUB_DISABLE_RECOVERY=true
39 |
40 | # Uncomment and set to the desired menu colors. Used by normal and wallpaper
41 | # modes only. Entries specified as foreground/background.
42 | #GRUB_COLOR_NORMAL="light-blue/black"
43 | #GRUB_COLOR_HIGHLIGHT="light-cyan/blue"
44 |
45 | # Uncomment one of them for the gfx desired, a image background or a gfxtheme
46 | #GRUB_BACKGROUND="/path/to/wallpaper"
47 | #GRUB_THEME="/path/to/gfxtheme"
48 | {{#if grub_theme}}GRUB_THEME="{{grub_theme}}"{{/if}}
49 |
50 | # Uncomment to get a beep at GRUB start
51 | #GRUB_INIT_TUNE="480 440 1"
52 |
53 | # Uncomment to make GRUB remember the last selection. This requires
54 | # setting 'GRUB_DEFAULT=saved' above.
55 | #GRUB_SAVEDEFAULT="true"
56 |
--------------------------------------------------------------------------------
/files/etc/mkinitcpio.conf:
--------------------------------------------------------------------------------
1 | # vim:set ft=sh
2 | # MODULES
3 | # The following modules are loaded before any boot hooks are
4 | # run. Advanced users may wish to specify all system modules
5 | # in this array. For instance:
6 | # MODULES=(piix ide_disk reiserfs)
7 | MODULES=({{#if init_modules}}{{init_modules}}{{/if}})
8 |
9 |
10 | # BINARIES
11 | # This setting includes any additional binaries a given user may
12 | # wish into the CPIO image. This is run last, so it may be used to
13 | # override the actual binaries included by a given hook
14 | # BINARIES are dependency parsed, so you may safely ignore libraries
15 | BINARIES=({{#if init_binaries}}{{init_binaries}}{{/if}})
16 |
17 | # FILES
18 | # This setting is similar to BINARIES above, however, files are added
19 | # as-is and are not parsed in any way. This is useful for config files.
20 | FILES=({{#if init_files}}{{init_files}}{{/if}})
21 |
22 | # HOOKS
23 | # This is the most important setting in this file. The HOOKS control the
24 | # modules and scripts added to the image, and what happens at boot time.
25 | # Order is important, and it is recommended that you do not change the
26 | # order in which HOOKS are added. Run 'mkinitcpio -H ' for
27 | # help on a given hook.
28 | # 'base' is _required_ unless you know precisely what you are doing.
29 | # 'udev' is _required_ in order to automatically load modules
30 | # 'filesystems' is _required_ unless you specify your fs modules in MODULES
31 | # Examples:
32 | ## This setup specifies all modules in the MODULES setting above.
33 | ## No raid, lvm2, or encrypted root is needed.
34 | # HOOKS=(base)
35 | #
36 | ## This setup will autodetect all modules for your system and should
37 | ## work as a sane default
38 | # HOOKS=(base udev autodetect block filesystems)
39 | #
40 | ## This setup will generate a 'full' image which supports most systems.
41 | ## No autodetection is done.
42 | # HOOKS=(base udev block filesystems)
43 | #
44 | ## This setup assembles a pata mdadm array with an encrypted root FS.
45 | ## Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
46 | # HOOKS=(base udev block mdadm encrypt filesystems)
47 | #
48 | ## This setup loads an lvm2 volume group on a usb device.
49 | # HOOKS=(base udev block lvm2 filesystems)
50 | #
51 | ## NOTE: If you have /usr on a separate partition, you MUST include the
52 | # usr, fsck and shutdown hooks.
53 | HOOKS=({{#if init_hooks}}{{init_hooks}}{{/if}})
54 |
55 | # COMPRESSION
56 | # Use this to compress the initramfs image. By default, gzip compression
57 | # is used. Use 'cat' to create an uncompressed image.
58 | #COMPRESSION="gzip"
59 | #COMPRESSION="bzip2"
60 | #COMPRESSION="lzma"
61 | #COMPRESSION="xz"
62 | #COMPRESSION="lzop"
63 | #COMPRESSION="lz4"
64 |
65 | # COMPRESSION_OPTIONS
66 | # Additional options for the compressor
67 | #COMPRESSION_OPTIONS=()
68 |
--------------------------------------------------------------------------------
/files/etc/plymouth.conf:
--------------------------------------------------------------------------------
1 | # Set your plymouth configuration here.
2 | [Daemon]
3 | Theme=dotLock
4 | ShowDelay=0
5 | # DeviceTimeout=8
6 |
--------------------------------------------------------------------------------
/files/etc/profile:
--------------------------------------------------------------------------------
1 | # /etc/profile
2 |
3 | # Set our umask
4 | umask 022
5 |
6 | # Append our default paths
7 | appendpath () {
8 | case ":$PATH:" in
9 | *:"$1":*)
10 | ;;
11 | *)
12 | PATH="${PATH:+$PATH:}$1"
13 | esac
14 | }
15 |
16 | appendpath '/usr/local/sbin'
17 | appendpath '/usr/local/bin'
18 | appendpath '/usr/bin'
19 | unset -f appendpath
20 |
21 | export PATH
22 |
23 | # Load profiles from /etc/profile.d
24 | if test -d /etc/profile.d/; then
25 | for profile in /etc/profile.d/*.sh; do
26 | test -r "$profile" && . "$profile"
27 | done
28 | unset profile
29 | fi
30 |
31 | # Source global bash config, when interactive but not posix or sh mode
32 | if test "$BASH" &&\
33 | test "$PS1" &&\
34 | test -z "$POSIXLY_CORRECT" &&\
35 | test "${0#-}" != sh &&\
36 | test -r /etc/bash.bashrc
37 | then
38 | . /etc/bash.bashrc
39 | fi
40 |
41 | # Termcap is outdated, old, and crusty, kill it.
42 | unset TERMCAP
43 |
44 | # Man is much better than us at figuring this out
45 | unset MANPATH
46 |
47 | # Make anki usable
48 | export ANKI_NOHIGHDPI=1
49 | export ANKI_WAYLAND=1
50 |
51 | # Make Calibre use dark mode
52 | export CALIBRE_USE_DARK_PALETTE=1
53 |
54 | # Make firefox use wayland
55 | export MOZ_ENABLE_WAYLAND=1
56 |
57 | source ~/.config/shrc
58 |
59 | # If no tmux sessions are running and we're connected over ssh, start tmux
60 | if [[ $(who am i) =~ \([-a-zA-Z0-9\.]+\)$ ]] ; then
61 | if [[ -z $(pgrep tmux) ]]; then
62 | export TERM="xterm-256color"
63 | /usr/bin/tmux
64 | fi
65 | fi
66 |
--------------------------------------------------------------------------------
/files/etc/sudoers.d/suspend:
--------------------------------------------------------------------------------
1 | b3nj4m1n ALL= NOPASSWD: /usr/bin/systemctl suspend
2 | b3nj4m1n ALL= NOPASSWD: /usr/bin/systemctl hibernate
3 |
--------------------------------------------------------------------------------
/files/firefox/user.js:
--------------------------------------------------------------------------------
1 | user_pref("app.normandy.startupRolloutPrefs.network.preload", true);
2 | user_pref("app.normandy.startupRolloutPrefs.pdfjs.renderInteractiveForms", true);
3 | user_pref("app.normandy.startupRolloutPrefs.print.tab_modal.enabled", true);
4 | user_pref("app.normandy.startupRolloutPrefs.security.bad_cert_domain_error.url_fix_enabled", true);
5 | user_pref("browser.bookmarks.defaultLocation", "unfiled");
6 | user_pref("browser.download.useDownloadDir", false);
7 | user_pref("browser.newtabpage.activity-stream.feeds.section.highlights", false);
8 | user_pref("browser.newtabpage.activity-stream.feeds.topsites", false);
9 | user_pref("browser.search.region", "EN");
10 | user_pref("browser.tabs.warnOnClose", false);
11 | user_pref("browser.toolbars.bookmarks.visibility", "always");
12 | user_pref("devtools.toolbox.selectedTool", "webconsole");
13 | user_pref("devtools.toolbox.splitconsoleEnabled", true);
14 | user_pref("devtools.webconsole.input.editor", true);
15 | user_pref("dom.event.clipboardevents.enabled", false);
16 | user_pref("extensions.activeThemeID", "firefox-compact-dark@mozilla.org");
17 | user_pref("general.smoothScroll.mouseWheel.migrationPercent", 0);
18 | user_pref("geo.enabled", false);
19 | user_pref("media.navigator.enabled", false);
20 | user_pref("media.peerconnection.enabled", false);
21 | user_pref("network.dns.disablePrefetch", true);
22 | user_pref("network.predictor.enabled", false);
23 | user_pref("network.prefetch-next", false);
24 | user_pref("privacy.resistFingerprinting", true);
25 | user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
26 | user_pref("webgl.disabled", true);
27 |
--------------------------------------------------------------------------------
/files/firefox/userChrome.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --color-dark: rgb(70, 70, 70);
3 | --color-light: rgb(255, 255, 255);
4 | --gay-gradient: linear-gradient(90deg, rgba(255,0,24,1) 0%, rgba(255,165,44,1) 20%, rgba(255,255,65,1) 40%, rgba(0,128,24,1) 60%, rgba(0,0,249,1) 80%, rgba(134,0,125,1) 100%);
5 | --dracula-gradient: linear-gradient(270deg, #50fa7b, #ffb86c, #ff79c6, #bd93f9, #ff5555, #f1fa8c, #8be9fd);
6 | }
7 |
8 | #urlbar-input::selection {
9 | background: #bd93f9;
10 | }
11 |
12 | #urlbar:not(.hidden-focus)[focused="true"] > #urlbar-input-container {
13 | background: var(--dracula-gradient);
14 | background-size: 1200% 1200%;
15 |
16 | animation: gradient-scroll 9s linear infinite;
17 | }
18 |
19 | #urlbar {
20 | /* --urlbar-separator-color: #ff0066; */
21 | }
22 |
23 | /* Don't display tabline when tab is not selected */
24 | .tabbrowser-tab:not([selected]) .tab-line {
25 | display: none !important;
26 | }
27 | /* Set tabline color to green for selected tab */
28 | .tab-line[selected="true"] {
29 | background-color: #50fa7b !important;
30 | }
31 |
32 | /* When hovering over the selected tab, set the background to an animated gradient */
33 | .tabbrowser-tab:hover .tab-line {
34 | background: var(--dracula-gradient);
35 | background-size: 1400% 1400%;
36 |
37 | animation: gradient-scroll 7s ease infinite;
38 | }
39 |
40 | @-webkit-keyframes gradient-scroll {
41 | 0%{background-position:0% 50%}
42 | 50%{background-position:100% 50%}
43 | 100%{background-position:0% 50%}
44 | }
45 | @-moz-keyframes gradient-scroll {
46 | 0%{background-position:0% 50%}
47 | 50%{background-position:100% 50%}
48 | 100%{background-position:0% 50%}
49 | }
50 | @keyframes gradient-scroll {
51 | 0%{background-position:0% 50%}
52 | 50%{background-position:100% 50%}
53 | 100%{background-position:0% 50%}
54 | }
55 |
--------------------------------------------------------------------------------
/files/firefox/userContent.css:
--------------------------------------------------------------------------------
1 | /* @-moz-document url(about:blank), url(about:newtab), url(about:home) { */
2 | /* html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay { */
3 | /* background: #2F343F !important; */
4 | /* } */
5 | /* } */
6 |
--------------------------------------------------------------------------------
/files/fish/config.fish:
--------------------------------------------------------------------------------
1 | #!/usr/bin/fish
2 |
3 | fish_vi_key_bindings
4 | function fish_mode_prompt
5 | end
6 | function fish_greeting
7 | end
8 |
9 | # Start ssh agent
10 | export SSH_AUTH_SOCK=~/.ssh/ssh-agent.sock
11 | # test whether $SSH_AUTH_SOCK is valid
12 | ssh-add -l 2>/dev/null >/dev/null
13 | # if not valid, then start ssh-agent using $SSH_AUTH_SOCK
14 | [ $status -ge 2 ] && rm -f "$SSH_AUTH_SOCK" && ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
15 | # eval `ssh-agent -a $SSH_AUTH_SOCK` &>/dev/null
16 |
17 | # Use starship prompt
18 | starship init fish | source
19 | # Init zoxide (Better navigation than with cd)
20 | zoxide init fish | source
21 | # Init atuin (Better Ctrl + r)
22 | atuin init fish | source
23 | # Init direnv
24 | direnv hook fish | source
25 | # Source common aliases, exports, etc.
26 | # source ~/.config/shrc
27 |
--------------------------------------------------------------------------------
/files/fontconfig/fonts.conf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | monospace
6 |
7 | {{ font.font }}
8 | Code2001
9 |
10 |
11 |
12 | serif
13 |
14 | {{ font.font }}
15 | Code2001
16 |
17 |
18 |
19 | sans-serif
20 |
21 | {{ font.font }}
22 | Code2001
23 |
24 |
25 |
26 | sans
27 |
28 | {{ font.font }}
29 | Code2001
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/files/games/thewitcher/controls.txt:
--------------------------------------------------------------------------------
1 | ATTACK LIGHT SQUARE
2 | ATTACK HEAVY TRIANGLE
3 |
4 | DODGE CIRCLE
5 | ROLL RT
6 | PARRY
7 |
8 | SPRINT RT
9 |
10 | SECONDARY WEAPON RIGHT THUMB
11 |
12 | --- Modifier: RB (Needs https://www.nexusmods.com/witcher3/mods/4489?tab=description)
13 | AARD SQUARE
14 | YRDEN LB
15 | AXII TRIANGLE
16 | QUEN CROSS
17 | IGNI CIRCLE
18 |
19 | BESTIARY LEFT
20 | ALCHEMY DOWN
21 | INVENTORY HOLD START
22 | MAP START
23 | QUESTS UP
24 | CHARACTER RIGHT
25 | MEDITATION
26 |
27 | GWENT HOLD BACK
28 |
29 | QSAVE
30 |
--------------------------------------------------------------------------------
/files/gtk/gtkrc-2.0:
--------------------------------------------------------------------------------
1 | gtk-theme-name="Dracula"
2 | gtk-icon-theme-name="Papirus-Dark"
3 | gtk-font-name="{{ font.font }}, {{ font.font_size }}"
4 | gtk-cursor-theme-name="Breeze_Snow"
5 | gtk-cursor-theme-size=0
6 | gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
7 | gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
8 | gtk-button-images=1
9 | gtk-menu-images=1
10 | gtk-enable-event-sounds=1
11 | gtk-enable-input-feedback-sounds=1
12 | gtk-xft-antialias=1
13 | gtk-xft-hinting=1
14 | gtk-xft-hintstyle="hintfull"
15 |
--------------------------------------------------------------------------------
/files/gtk/settings.ini:
--------------------------------------------------------------------------------
1 | [Settings]
2 | gtk-application-prefer-dark-theme=1
3 | gtk-button-images=1
4 | gtk-cursor-theme-name=Breeze_Snow
5 | gtk-decoration-layout=:minimize,maximize,close
6 | gtk-enable-animations=1
7 | gtk-font-name={{ font.font }}, {{ font.font_size }}
8 | gtk-icon-theme-name=Papirus-Dark
9 | gtk-menu-images=1
10 | gtk-primary-button-warps-slider=0
11 | gtk-theme-name=Dracula
12 | gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
13 | gtk-cursor-theme-size=0
14 | gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
15 | gtk-enable-event-sounds=1
16 | gtk-enable-input-feedback-sounds=1
17 | gtk-xft-antialias=1
18 | gtk-xft-hinting=1
19 | gtk-xft-hintstyle=hintfull
20 |
--------------------------------------------------------------------------------
/files/lightdm/Xsession:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # LightDM wrapper to run around X sessions.
4 |
5 | echo "Running X session wrapper"
6 |
7 | # Load profile
8 | for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
9 | if [ -f "$file" ]; then
10 | echo "Loading profile from $file";
11 | . "$file"
12 | fi
13 | done
14 |
15 | # Load resources
16 | for file in "/etc/X11/Xresources" "$HOME/.Xresources"; do
17 | if [ -f "$file" ]; then
18 | echo "Loading resource: $file"
19 | xrdb -load "$XDG_CONFIG_HOME/X11/xresources" -merge "$file"
20 | fi
21 | done
22 |
23 | # Load keymaps
24 | for file in "/etc/X11/Xkbmap" "$HOME/.Xkbmap"; do
25 | if [ -f "$file" ]; then
26 | echo "Loading keymap: $file"
27 | setxkbmap `cat "$file"`
28 | XKB_IN_USE=yes
29 | fi
30 | done
31 |
32 | # Load xmodmap if not using XKB
33 | if [ -z "$XKB_IN_USE" ]; then
34 | for file in "/etc/X11/Xmodmap" "$HOME/.Xmodmap"; do
35 | if [ -f "$file" ]; then
36 | echo "Loading modmap: $file"
37 | xmodmap "$file"
38 | fi
39 | done
40 | fi
41 |
42 | unset XKB_IN_USE
43 |
44 | # Run all system xinitrc shell scripts
45 | xinitdir="/etc/X11/xinit/xinitrc.d"
46 | if [ -d "$xinitdir" ]; then
47 | for script in $xinitdir/*; do
48 | echo "Loading xinit script $script"
49 | if [ -x "$script" -a ! -d "$script" ]; then
50 | . "$script"
51 | fi
52 | done
53 | fi
54 |
55 | # Run user xsession shell script
56 | script="$HOME/.xsession"
57 | if [ -x "$script" -a ! -d "$script" ]; then
58 | echo "Loading xsession script $script"
59 | . "$script"
60 | fi
61 |
62 | echo "X session wrapper complete, running session $@"
63 |
64 | exec $@
65 |
--------------------------------------------------------------------------------
/files/lightdm/lightdm-webkit2-greeter.conf:
--------------------------------------------------------------------------------
1 | #
2 | # [greeter]
3 | # debug_mode = Greeter theme debug mode.
4 | # detect_theme_errors = Provide an option to load a fallback theme when theme errors are detected.
5 | # screensaver_timeout = Blank the screen after this many seconds of inactivity.
6 | # secure_mode = Don't allow themes to make remote http requests.
7 | # time_format = A moment.js format string so the greeter can generate localized time for display.
8 | # time_language = Language to use when displaying the time or "auto" to use the system's language.
9 | # webkit_theme = Webkit theme to use.
10 | #
11 | # NOTE: See moment.js documentation for format string options: http://momentjs.com/docs/#/displaying/format/
12 | #
13 |
14 | [greeter]
15 | debug_mode = true
16 | detect_theme_errors = true
17 | screensaver_timeout = 300
18 | secure_mode = true
19 | time_format = LT
20 | time_language = auto
21 | webkit_theme = glorious
22 |
23 | #
24 | # [branding]
25 | # background_images = Path to directory that contains background images for use by themes.
26 | # logo = Path to logo image for use by greeter themes.
27 | # user_image = Default user image/avatar. This is used by themes for users that have no .face image.
28 | #
29 | # NOTE: Paths must be accessible to the lightdm system user account (so they cannot be anywhere in /home)
30 | #
31 |
32 | [branding]
33 | background_images = /usr/share/wallpapers/custom/
34 | logo = /usr/share/pixmaps/archlinux-logo.svg
35 | user_image = /usr/share/pixmaps/archlinux-user.svg
36 |
--------------------------------------------------------------------------------
/files/lisp/init.lisp:
--------------------------------------------------------------------------------
1 | ;;;; Common Lisp REPL config
2 |
3 |
4 | ;;; Add the current directory to the central registry of asdf, meaning
5 | ;;; you can load the project from the current directory
6 | (pushnew "./" asdf:*central-registry* :test #'equal)
7 |
8 | ;;; Load quicklisp
9 | (load "\~/.local/share/roswell/lisp/quicklisp/setup.lisp")
10 |
--------------------------------------------------------------------------------
/files/map2/devices.list:
--------------------------------------------------------------------------------
1 | /dev/input/by-id/usb-Razer_Razer_BlackWidow_Elite-event-kbd
2 |
--------------------------------------------------------------------------------
/files/map2/test.m2:
--------------------------------------------------------------------------------
1 | !^h::KEY_LEFT;
2 | !^j::KEY_DOWN;
3 | !^k::KEY_UP;
4 | !^l::KEY_RIGHT;
5 |
--------------------------------------------------------------------------------
/files/mutt/.mbsyncrc:
--------------------------------------------------------------------------------
1 | IMAPStore username1@email.com-remote
2 | Host imap.email.net
3 | Port 993
4 | User username1@email.com
5 | PassCmd "pass username1@email.com"
6 | AuthMechs LOGIN
7 | SSLType IMAPS
8 | CertificateFile /etc/ssl/certs/ca-certificates.crt
9 |
10 | MaildirStore username1@email.com-local
11 | Subfolders Verbatim
12 | Path ~/.local/share/mail/username1@email.com/
13 | Inbox ~/.local/share/mail/username1@email.com/INBOX
14 | Flatten .
15 |
16 | Channel username1@email.com
17 | Expunge Both
18 | Master :username1@email.com-remote:
19 | Slave :username1@email.com-local:
20 | Patterns * !"[Gmail]/All Mail"
21 | Create Both
22 | SyncState *
23 | MaxMessages 0
24 | ExpireUnread no
25 | # End profile
26 |
27 |
28 | IMAPStore username2@email.com-remote
29 | Host imap.email.net
30 | Port 993
31 | User username2@email.com
32 | PassCmd "pass username2@email.com"
33 | AuthMechs LOGIN
34 | SSLType IMAPS
35 | CertificateFile /etc/ssl/certs/ca-certificates.crt
36 |
37 | MaildirStore username2@email.com-local
38 | Subfolders Verbatim
39 | Path ~/.local/share/mail/username2@email.com/
40 | Inbox ~/.local/share/mail/username2@email.com/INBOX
41 | Flatten .
42 |
43 | Channel username2@email.com
44 | Expunge Both
45 | Master :username2@email.com-remote:
46 | Slave :username2@email.com-local:
47 | Patterns * !"[Gmail]/All Mail"
48 | Create Both
49 | SyncState *
50 | MaxMessages 0
51 | ExpireUnread no
52 | # End profile
53 |
--------------------------------------------------------------------------------
/files/mutt/README.md:
--------------------------------------------------------------------------------
1 | # (Neo) Mutt
2 |
3 | This is not the full config, since that contains sensitive information. A lot of this was originally generated by mutt wizard.
4 |
--------------------------------------------------------------------------------
/files/mutt/accounts/username1@email.com.muttrc:
--------------------------------------------------------------------------------
1 | # vim: filetype=neomuttrc
2 | # muttrc file for account benjamin-von-papen
3 | set realname = "Benjamin"
4 | set from = "username1@email.com"
5 | set sendmail = "msmtp -a username1@email.com"
6 | alias me Benjamin
7 | set folder = "/home/b3nj4m1n/.local/share/mail/username1@email.com"
8 | set header_cache = /home/b3nj4m1n/.cache/mutt/username1@email.com/headers
9 | set message_cachedir = /home/b3nj4m1n/.cache/mutt/username1@email.com/bodies
10 | set mbox_type = Maildir
11 |
12 | # set crypt_autosign = yes
13 | # set crypt_opportunistic_encrypt = yes
14 | # set pgp_self_encrypt = yes
15 | # set pgp_default_key =
16 |
17 | bind index,pager gg noop
18 | bind index,pager g noop
19 | bind index,pager M noop
20 | bind index,pager C noop
21 | bind index gg first-entry
22 | macro index o "mailsync -V username1@email.com" "run mbsync to sync username1@email.com"
23 | unmailboxes *
24 |
25 | set spoolfile = "+INBOX"
26 | set record = ""
27 | set postponed = ""
28 | set trash = ""
29 |
30 | mailboxes `find /home/b3nj4m1n/.local/share/mail/username1@email.com/ -maxdepth 1 -printf '%P\n' | cut -d$'\n' -f2- | awk '{print "\"=" $0 "\" "}' | sort | tr -d "\n"; printf "\n"`
31 |
32 | macro index,pager gi "=INBOX" "go to inbox" # mw-autogenerated
33 | macro index,pager Mi ";=INBOX" "move mail to inbox" # mw-autogenerated
34 | macro index,pager Ci ";=INBOX" "copy mail to inbox" # mw-autogenerated
35 | macro index,pager gS "=Spamverdacht" "go to spam" # mw-autogenerated
36 | macro index,pager MS ";=Spamverdacht" "move mail to spam" # mw-autogenerated
37 | macro index,pager CS ";=Spamverdacht" "copy mail to spam" # mw-autogenerated
38 |
--------------------------------------------------------------------------------
/files/mutt/accounts/username2@email.com.muttrc:
--------------------------------------------------------------------------------
1 | # vim: filetype=neomuttrc
2 | # muttrc file for account b3nj4m1n
3 | set realname = "Benjamin"
4 | set from = "username2@email.com"
5 | set sendmail = "msmtp -a username2@email.com"
6 | alias me Benjamin
7 | set folder = "/home/b3nj4m1n/.local/share/mail/username2@email.com"
8 | set header_cache = /home/b3nj4m1n/.cache/mutt/username2@email.com/headers
9 | set message_cachedir = /home/b3nj4m1n/.cache/mutt/username2@email.com/bodies
10 | set mbox_type = Maildir
11 |
12 | bind index,pager gg noop
13 | bind index,pager g noop
14 | bind index,pager M noop
15 | bind index,pager C noop
16 | bind index gg first-entry
17 | macro index o "mailsync -V username2@email.com" "run mbsync to sync username2@email.com"
18 | unmailboxes *
19 |
20 | set spoolfile = "+INBOX"
21 | set record = ""
22 | set postponed = ""
23 | set trash = ""
24 |
25 | mailboxes `find /home/b3nj4m1n/.local/share/mail/username2@email.com/ -maxdepth 1 -printf '%P\n' | cut -d$'\n' -f2- | awk '{print "\"=" $0 "\" "}' | sort | tr -d "\n"; printf "\n"`
26 |
27 | macro index,pager gi "=INBOX" "go to inbox" # mw-autogenerated
28 | macro index,pager Mi ";=INBOX" "move mail to inbox" # mw-autogenerated
29 | macro index,pager Ci ";=INBOX" "copy mail to inbox" # mw-autogenerated
30 | macro index,pager gS "=Spamverdacht" "go to spam" # mw-autogenerated
31 | macro index,pager MS ";=Spamverdacht" "move mail to spam" # mw-autogenerated
32 | macro index,pager CS ";=Spamverdacht" "copy mail to spam" # mw-autogenerated
33 |
--------------------------------------------------------------------------------
/files/mutt/muttrc:
--------------------------------------------------------------------------------
1 | # vim: filetype=neomuttrc
2 | source ./settings.muttrc
3 | source ./accounts/username1@email.com.muttrc
4 | macro index,pager i1 'source /home/b3nj4m1n/.config/mutt/accounts/username1@email.com.muttrc!;' "switch to username1@email.com"
5 | macro index,pager i2 'source /home/b3nj4m1n/.config/mutt/accounts/username2@email.com.muttrc!;' "switch to username2@email.com"
6 |
--------------------------------------------------------------------------------
/files/ncmpcpp/bindings:
--------------------------------------------------------------------------------
1 | # Credit: https://github.com/elenapan/dotfiles
2 |
3 | ##########################################################
4 | ## this is example bindings configuration file, copy it ##
5 | ## to ~/.ncmpcpp/bindings and set up your preferences ##
6 | ##########################################################
7 |
8 | def_key "9"
9 | show_help
10 |
11 | # Delete
12 | def_key "D"
13 | delete_playlist_items
14 | def_key "D"
15 | delete_browser_items
16 | def_key "D"
17 | delete_stored_playlist
18 |
19 | # Scrolling
20 | def_key "k"
21 | scroll_up
22 | def_key "K"
23 | select_item
24 | scroll_up
25 | def_key "j"
26 | scroll_down
27 | def_key "J"
28 | select_item
29 | scroll_down
30 | def_key "ctrl-u"
31 | page_up
32 | def_key "ctrl-d"
33 | page_down
34 | def_key "g"
35 | move_home
36 | def_key "G"
37 | move_end
38 |
39 |
40 | # Search
41 | def_key "n"
42 | next_found_item
43 | def_key "N"
44 | previous_found_item
45 |
46 |
--------------------------------------------------------------------------------
/files/ncmpcpp/config:
--------------------------------------------------------------------------------
1 | # Credit: https://github.com/elenapan/dotfiles
2 |
3 | ### Directories ###
4 | ncmpcpp_directory = ~/.config/ncmpcpp
5 | lyrics_directory = ~/.local/share/lyrics
6 | mpd_music_dir = /mnt/Vault/music/
7 |
8 | ### Behaviour ###
9 | # execute_on_song_change = "bash ~/.config/ncmpcpp/mpd-notification"
10 | message_delay_time = 1
11 | autocenter_mode = "yes"
12 | centered_cursor = "yes"
13 | ignore_leading_the = "yes"
14 | allow_for_physical_item_deletion = "no"
15 |
16 | ### Visualizer ###
17 | # visualizer_fifo_path = /tmp/mpd.fifo
18 | # visualizer_output_name = "mpd_visualizer"
19 | # visualizer_in_stereo = "yes"
20 | # visualizer_sample_multiplier = 2
21 | # visualizer_sync_interval = 30
22 |
23 | ### Appearance ###
24 | colors_enabled = "yes"
25 | playlist_display_mode = "columns"
26 | browser_display_mode = "columns"
27 |
28 | # Window #
29 | song_window_title_format = "mpd » {%a - }{%t}|{%f}"
30 | statusbar_visibility = "yes"
31 | header_visibility = "no"
32 | titles_visibility = "no"
33 |
34 | # Progress bar #
35 | #progressbar_look = "⠒⠒⠐"
36 | #progressbar_look = "•••"
37 | #progressbar_look = "---"
38 | #progressbar_look = "▀▀ "
39 | #progressbar_look = "╼·"
40 | progressbar_look = "━━━"
41 | #progressbar_look = "━━─"
42 | #progressbar_look = "◾◾◽"
43 | #progressbar_look = "─╼─"
44 |
45 | color1 = magenta
46 | color2 = cyan
47 | user_interface = alternative
48 | alternative_header_first_line_format = {$6$b%a$9} {$7%t$6}
49 | alternative_header_second_line_format = {$7%b$9} {$6(%y)$9}
50 | alternative_ui_separator_color = 7
51 | header_window_color = magenta
52 | display_volume_level = yes
53 | statusbar_color = magenta
54 | current_item_prefix = $(3)$b
55 | current_item_suffix = $/b
56 | selected_item_prefix = $(white_magenta)$b
57 | selected_item_suffix = $/b$(end)
58 | browser_playlist_prefix = "$3Playlist$3"
59 | progressbar_color = "black"
60 | progressbar_elapsed_color = "magenta"
61 | now_playing_prefix = "$b"
62 | now_playing_suffix = "$/b"
63 | song_status_format = "$b$6%t$/b {$2by} $b$6%a$8$/b"
64 | song_list_format = $(magenta){%a}$(end) $(cyan){%t}$(end) $R $(magenta){%b}$(end) $(cyan)({%l})$(end)
65 | statusbar_time_color = "magenta"
66 | player_state_color = "cyan"
67 | volume_color = "cyan"
68 | state_flags_color = "magenta"
69 | song_columns_list_format = "(15)[white]{lr}(1)[white]{}(40)[magenta]{a}(40)[cyan]{t}"
70 | empty_tag_color = magenta
71 | discard_colors_if_item_is_selected = yes
72 | main_window_color = "magenta"
73 | state_line_color = "blue"
74 |
--------------------------------------------------------------------------------
/files/npm/npmrc:
--------------------------------------------------------------------------------
1 | prefix=${XDG_DATA_HOME}/npm
2 | cache=${XDG_CACHE_HOME}/npm
3 | tmp=${XDG_RUNTIME_DIR}/npm
4 | init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
5 |
--------------------------------------------------------------------------------
/files/nvim/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 |
--------------------------------------------------------------------------------
/files/nvim/Makefile:
--------------------------------------------------------------------------------
1 | SOURCE_FILE="./config.norg"
2 | QUERY_FILE="./build/query.scm"
3 | FENNEL_FILE="./build/config.fnl"
4 | # FENNEL_FILE="./config.fnl"
5 | LUA_FILE="./build/config.lua"
6 | INSTALL_DIR="$(XDG_CONFIG_HOME)/nvim/lua"
7 | INSTALL_FILE="$(INSTALL_DIR)/config.lua"
8 | INIT_FILE="./init.lua"
9 | PACKER_DIR="$(XDG_DATA_HOME)/nvim/site/pack/packer/start/packer.nvim"
10 |
11 | all: packer build_dir query extract compile install init update
12 |
13 | build_dir:
14 | mkdir -p ./build
15 |
16 | query: build_dir
17 | echo "(ranged_tag (tag_name) @name (ranged_tag_content) @code (#eq? @name \"code\"))" > $(QUERY_FILE)
18 |
19 | extract: query
20 | bash ./extract.sh
21 | # tree-sitter query --captures $(QUERY_FILE) $(SOURCE_FILE) | /usr/bin/env sed "s/ pattern:\s*\w*, capture:\s*\w*\s*-\s*name, start:\s*(\w*,\s*\w*),\s*end:\s(\w*,\s*\w*),\s*text:\s\`code\`//" | /usr/bin/env sed "s/ pattern:\s*\w*, capture:\s*\w*\s*-\s*code, start:\s*(\w*,\s*\w*),\s*end:\s(\w*,\s*\w*),\s*text:\s/---\n/" | awk '{ if (NR!=1) { print substr($$0, 3, length($$0)-5) } }' RS="---" > $(FENNEL_FILE)
22 |
23 | compile: extract
24 | fennel --compile $(FENNEL_FILE) > $(LUA_FILE)
25 |
26 | install: compile
27 | mkdir -p $(INSTALL_DIR)
28 | cp $(LUA_FILE) $(INSTALL_FILE)
29 |
30 | init:
31 | echo "require('config')" > $(INIT_FILE)
32 |
33 | update:
34 | nvim --headless +PackerCompile +qa
35 |
36 | clean:
37 | rm -rf build
38 |
39 | packer:
40 | if [ ! -d $(PACKER_DIR) ]; then git clone --depth 1 https://github.com/wbthomason/packer.nvim $(PACKER_DIR); fi
41 |
42 | .PHONY: build_dir query clean
43 |
44 |
--------------------------------------------------------------------------------
/files/nvim/after/queries/lua/textobjects.scm:
--------------------------------------------------------------------------------
1 | ; ;; functions
2 | ; (function
3 | ; (function_name)
4 | ; (parameters)
5 | ; (_) @function.inner
6 | ; ) @function.outer
7 |
--------------------------------------------------------------------------------
/files/nvim/after/queries/markdown/highlights.scm:
--------------------------------------------------------------------------------
1 | ; ((atx_heading
2 | ; (atx_h1_marker) @_h1
3 | ; (_) @h1))
4 | ; ((atx_heading
5 | ; (atx_h2_marker) @_h2
6 | ; (_) @h2))
7 | ; ((atx_heading
8 | ; (atx_h3_marker) @_h3
9 | ; (_) @h3))
10 | ; ((atx_heading
11 | ; (atx_h4_marker) @_h4
12 | ; (_) @h4))
13 | ; ((atx_heading
14 | ; (atx_h5_marker) @_h5
15 | ; (_) @h5))
16 |
17 | ; (emphasis) @emphasis
18 | ; (strong_emphasis) @strong_emphasis
19 | ; (strikethrough) @strikethrough
20 | ; (info_string) @info_string
21 |
--------------------------------------------------------------------------------
/files/nvim/after/syntax/markdown.vim:
--------------------------------------------------------------------------------
1 | highlight h1 guifg=#50fa7b gui=bold
2 | highlight _h1 guifg=#50fa7b gui=nocombine
3 | highlight h2 guifg=#ff79c6 gui=bold
4 | highlight _h2 guifg=#ff79c6 gui=nocombine
5 | highlight h3 guifg=#ffb86c gui=bold
6 | highlight _h3 guifg=#ffb86c gui=nocombine
7 | highlight h4 guifg=#8be9fd gui=bold
8 | highlight _h4 guifg=#8be9fd gui=nocombine
9 | highlight h5 guifg=#f1fa8c gui=bold
10 | highlight _h5 guifg=#f1fa8c gui=nocombine
11 | highlight emphasis gui=italic
12 | highlight strong_emphasis gui=bold
13 | highlight strikethrough gui=strikethrough
14 | highlight info_string guifg=#f1fa8c gui=italic
15 |
16 | highlight markdownH1 guifg=#50fa7b gui=bold
17 | highlight markdownH1Delimiter guifg=#50fa7b
18 | highlight markdownH2 guifg=#ff79c6 gui=bold
19 | highlight markdownH2Delimiter guifg=#ff79c6
20 | highlight markdownH3 guifg=#ffb86c gui=bold
21 | highlight markdownH3Delimiter guifg=#ffb86c
22 | highlight markdownH4 guifg=#8be9fd gui=bold
23 | highlight markdownH4Delimiter guifg=#8be9fd
24 | highlight markdownH5 guifg=#ff5555 gui=bold
25 | highlight markdownH5Delimiter guifg=#ff5555
26 |
--------------------------------------------------------------------------------
/files/nvim/bootstrap.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | plugin_dir="/home/$USER/.local/share/nvim/site/pack/packer/start"
4 |
5 | packer_dir="$plugin_dir/packer.nvim"
6 | if [ -d "$packer_dir" ]; then
7 | echo "Packer seems to be installed, skipping."
8 | else
9 | echo "Installing packer..."
10 | git clone https://github.com/wbthomason/packer.nvim "$packer_dir"
11 | fi
12 |
13 | aniseed_dir="$plugin_dir/aniseed"
14 | if [ -d "$aniseed_dir" ]; then
15 | echo "Aniseed seems to be installed, skipping."
16 | else
17 | echo "Installing aniseed..."
18 | git clone https://github.com/Olical/aniseed "$aniseed_dir"
19 | fi
20 |
--------------------------------------------------------------------------------
/files/nvim/fnl/init.fnl:
--------------------------------------------------------------------------------
1 |
2 | (module fennel-config
3 | {
4 | require
5 | {
6 | util util
7 | paq paq}})
8 |
9 | (def util (require "util"))
10 | (def options (require "options"))
11 | (def highlight (require "highlight"))
12 | (highlight.create-groups-indent-blankline)
13 |
14 | (def lsp-util (require "lsp-util"))
15 |
16 | (def plugins (require "plugins"))
17 |
18 | (paq.init-lazy)
19 |
20 | (def keymaps (require "keymaps"))
21 |
22 | (def feline-config (require "feline-config"))
23 |
24 | (def plugin-config (require "plugin-config"))
25 |
26 |
27 | (plugin-config.colorscheme)
28 | (plugin-config.watch-mode-changes)
29 | (plugin-config.kommentary)
30 | (plugin-config.dressing)
31 | ; (plugin-config.neorg)
32 | (plugin-config.lspconfig)
33 |
34 | ; (plugin-config.indent-blankline)
35 | (plugin-config.leap)
36 | ; (plugin-config.autopairs)
37 | (plugin-config.nvim-surround)
38 | (plugin-config.nvim-colorizer)
39 | (plugin-config.nvim-treesitter)
40 | ; (plugin-config.lspconfig)
41 | ; (plugin-config.lspsaga)
42 | ; (plugin-config.lsp-lines)
43 | (plugin-config.trouble)
44 | ; (plugin-config.nvim-cmp)
45 | (plugin-config.luasnip)
46 | ; (plugin-config.neogit)
47 | (plugin-config.gitsigns)
48 | (plugin-config.conjure)
49 | (plugin-config.netrw)
50 | ; (plugin-config.murmur)
51 | (plugin-config.ufo)
52 | (plugin-config.dap)
53 |
54 |
55 | (highlight.create-groups-telescope "normal")
56 | (highlight.create-groups-ufo "normal")
57 | (highlight.create-groups-cmp)
58 | (highlight.create-groups-cursorword)
59 |
60 |
--------------------------------------------------------------------------------
/files/nvim/fnl/lsp-util.fnl:
--------------------------------------------------------------------------------
1 | (module lsp-util
2 | {require
3 | {util util}})
4 |
5 | (defn get-capabilities []
6 | (var capabilities {})
7 | ; (set capabilities ((. (require :cmp_nvim_lsp) :default_capabilities)))
8 | (set capabilities ((. (require :blink.cmp) :get_lsp_capabilities) config.capabilities))
9 | (tset (. capabilities :textDocument) :foldingRange
10 | {:dynamicRegistration false
11 | :lineFoldingOnly true}))
12 |
13 | (defn get-handlers []
14 | {
15 | "textDocument/hover" (vim.lsp.with vim.lsp.handlers.hover {:border "single"})
16 | "textDocument/signatureHelp" (vim.lsp.with vim.lsp.handlers.signature_help {:border "single"})})
17 |
--------------------------------------------------------------------------------
/files/nvim/ftplugin/c.lua:
--------------------------------------------------------------------------------
1 | vim.bo["expandtab"] = true
2 | vim.bo["tabstop"] = 2
3 | vim.bo["shiftwidth"] = 2
4 |
--------------------------------------------------------------------------------
/files/nvim/ftplugin/cpp.lua:
--------------------------------------------------------------------------------
1 | vim.bo["expandtab"] = true
2 | vim.bo["tabstop"] = 4
3 |
--------------------------------------------------------------------------------
/files/nvim/ftplugin/java.lua:
--------------------------------------------------------------------------------
1 | local Path = require "plenary.path"
2 | local root_dir = vim.fs.dirname(vim.fs.find({'.gradlew', '.git', 'mvnw'}, { upward = true })[1])
3 |
4 | local project_name = vim.fn.fnamemodify(dir_root, ':p:h:t')
5 |
6 | local workspace_dir = Path:new(os.getenv('XDG_DATA_HOME'), "jdtls_workspaces", project_name)
7 |
8 | --[[ local config = {
9 | cmd = {
10 | 'java',
11 | '-Declipse.application=org.eclipse.jdt.ls.core.id1',
12 | '-Dosgi.bundles.defaultStartLevel=4',
13 | '-Declipse.product=org.eclipse.jdt.ls.core.product',
14 | '-Dlog.protocol=true',
15 | '-Dlog.level=ALL',
16 | '-Xms1g',
17 | '--add-modules=ALL-SYSTEM',
18 | '--add-opens', 'java.base/java.util=ALL-UNNAMED',
19 | '--add-opens', 'java.base/java.lang=ALL-UNNAMED',
20 | '-jar', '/usr/share/java/jdtls/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar',
21 | '-configuration', '/usr/share/java/jdtls/config_linux',
22 | '-data', tostring(workspace_dir)
23 | },
24 |
25 | root_dir = tostring(dir_root),
26 | capabilities = require("cmp_nvim_lsp").default_capabilities()
27 | } ]]
28 |
29 | local config = {
30 | cmd = {'jdtls'},
31 | root_dir = root_dir,
32 | capabilities = require("cmp_nvim_lsp").default_capabilities()
33 | }
34 |
35 | local extendedClientCapabilities = require'jdtls'.extendedClientCapabilities
36 | extendedClientCapabilities.resolveAdditionalTextEditsSupport = true
37 | config.init_options = {
38 | extendedClientCapabilities = extendedClientCapabilities;
39 | }
40 |
41 |
42 | require('jdtls').start_or_attach(config)
43 |
--------------------------------------------------------------------------------
/files/nvim/ftplugin/lisp.vim:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/b3nj5m1n/dotfiles/a65f4ba3865b7106004a087577c90cf286b80efe/files/nvim/ftplugin/lisp.vim
--------------------------------------------------------------------------------
/files/nvim/ftplugin/make.lua:
--------------------------------------------------------------------------------
1 | vim.bo["expandtab"] = false
2 | vim.bo["tabstop"] = 4
3 |
--------------------------------------------------------------------------------
/files/nvim/ftplugin/markdown.vim:
--------------------------------------------------------------------------------
1 | set wrap
2 | set linebreak
3 | " set spell
4 |
5 | " Compile document (c[ompile] d[ocument])
6 | " map cd :silent lua compile()
7 | " Open corresponding .pdf/.html or preview (c[ompile] s[how])
8 | " map cs :!zathura $(echo % \| sed -r 's/\.[^.]+$/.pdf/') & disown
9 |
--------------------------------------------------------------------------------
/files/nvim/ftplugin/norg.vim:
--------------------------------------------------------------------------------
1 | set wrap
2 | set linebreak
3 |
4 |
--------------------------------------------------------------------------------
/files/nvim/ftplugin/rust.lua:
--------------------------------------------------------------------------------
1 | -- Replaced with lazy.nvim config
2 |
3 | --[[ local opts = {
4 | tools = {
5 | runnables = {
6 | use_telescope = true
7 | },
8 | executor = require("rust-tools.executors").termopen,
9 | on_initialized = nil,
10 | reload_workspace_from_cargo_toml = true,
11 | inlay_hints = {
12 | auto = false,
13 | only_current_line = false,
14 | show_parameter_hints = true,
15 | parameter_hints_prefix = " <- ",
16 | other_hints_prefix = " => ",
17 | max_len_align = false,
18 | max_len_align_padding = 1,
19 | right_align = false,
20 | right_align_padding = 7,
21 | highlight = "Comment",
22 | },
23 | hover_actions = {
24 | auto_focus = false,
25 | },
26 | },
27 |
28 | server = {
29 | standalone = true,
30 | capabilities = require("fennel-config")["lsp-util"]["get-capabilities"](),
31 | handlers = require("fennel-config")["lsp-util"]["get-handlers"](),
32 | },
33 |
34 | dap = {
35 | adapter = require('rust-tools.dap').get_codelldb_adapter("/usr/bin/codelldb", "/usr/lib/liblldb.so")
36 | },
37 | }
38 |
39 | (local opts {:dap {:adapter ((. (require :rust-tools.dap) :get_codelldb_adapter) :/usr/bin/codelldb
40 | :/usr/lib/liblldb.so)}
41 | :server {:capabilities ((. (. (require :fennel-config) :lsp-util)
42 | :get-capabilities))
43 | :handlers ((. (. (require :fennel-config) :lsp-util)
44 | :get-handlers))
45 | :standalone true}
46 | :tools {:executor (. (require :rust-tools.executors) :termopen)
47 | :hover_actions {:auto_focus false}
48 | :inlay_hints {:auto false
49 | :highlight :Comment
50 | :max_len_align false
51 | :max_len_align_padding 1
52 | :only_current_line false
53 | :other_hints_prefix " => "
54 | :parameter_hints_prefix " <- "
55 | :right_align false
56 | :right_align_padding 7
57 | :show_parameter_hints true}
58 | :on_initialized nil
59 | :reload_workspace_from_cargo_toml true
60 | :runnables {:use_telescope true}}}) ]]
61 |
--------------------------------------------------------------------------------
/files/nvim/ftplugin/tex.vim:
--------------------------------------------------------------------------------
1 | set nowrap
2 |
3 | " Spell-check set to o, 'o' for 'orthography':
4 | map o :setlocal spell! spelllang=en_us
5 |
6 | " Compile document
7 | map . :w! \| !/bin/scripts/compile-latex.sh "%"
8 |
9 | " Open corresponding .pdf/.html or preview
10 | map p :!zathura $(echo % \| sed 's/tex$/pdf/') & disown
11 |
12 | " " Compile latex file
13 | " map c :w! /tmp/tocompile.tex \| !/bin/scripts/compile-latex.sh "/tmp/tocompile.tex"&
14 |
15 | " " Open corresponding .pdf/.html or preview
16 | " map p :!zathura /tmp/tocompile.pdf & disown
17 |
--------------------------------------------------------------------------------
/files/nvim/init.lua:
--------------------------------------------------------------------------------
1 | -- vim.cmd [[packadd packer.nvim]]
2 | vim.cmd [[packadd aniseed]]
3 |
4 | --[[ require('packer').startup(function(use)
5 | -- Packer can manage itself
6 | use 'wbthomason/packer.nvim'
7 | use 'Olical/aniseed'
8 | end) ]]
9 |
10 | local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
11 | if not vim.loop.fs_stat(lazypath) then
12 | vim.fn.system({
13 | "git",
14 | "clone",
15 | "--filter=blob:none",
16 | "https://github.com/folke/lazy.nvim.git",
17 | "--branch=stable", -- latest stable release
18 | lazypath,
19 | })
20 | end
21 | vim.opt.rtp:prepend(lazypath)
22 |
23 | require('aniseed.env').init()
24 |
25 |
--------------------------------------------------------------------------------
/files/polybar/polybar.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Terminate already running bar instances
4 | killall -q polybar
5 |
6 | # Wait until the processes have been shut down
7 | while pgrep -x polybar >/dev/null; do sleep 1; done
8 |
9 | # Launch polybar
10 | polybar bar &
11 | {{#if multi_monitor}}
12 | polybar bar2 &
13 | {{/if}}
14 |
15 | # if type "xrandr"; then
16 | # for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
17 | # MONITOR=$m polybar --reload bar &
18 | # done
19 | # else
20 | # polybar --reload bar &
21 | # fi
22 |
--------------------------------------------------------------------------------
/files/python/pythonrc:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # This entire thing is unnecessary post v3.13.0a3
3 | # https://github.com/python/cpython/issues/73965
4 |
5 | def is_vanilla() -> bool:
6 | """ :return: whether running "vanilla" Python """
7 | import sys
8 | return not hasattr(__builtins__, '__IPYTHON__') and 'bpython' not in sys.argv[0]
9 |
10 |
11 | def setup_history():
12 | """ read and write history from state file """
13 | import os
14 | import atexit
15 | import readline
16 | from pathlib import Path
17 |
18 | # https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#variables
19 | if state_home := os.environ.get('XDG_STATE_HOME'):
20 | state_home = Path(state_home)
21 | else:
22 | state_home = Path.home() / '.local' / 'state'
23 | if not state_home.is_dir():
24 | print("Error: XDG_SATE_HOME does not exist at", state_home)
25 |
26 | history: Path = state_home / 'python_history'
27 |
28 | # https://github.com/python/cpython/issues/105694
29 | if not history.is_file():
30 | with open(history,"w") as f:
31 | f.write("_HiStOrY_V2_" + "\n\n") # breaks on macos + python3 without this.
32 |
33 | readline.read_history_file(history)
34 | atexit.register(readline.write_history_file, history)
35 |
36 |
37 | if is_vanilla():
38 | setup_history()
39 |
--------------------------------------------------------------------------------
/files/redshift/redshift.conf:
--------------------------------------------------------------------------------
1 | [redshift]
2 | dawn-time=05:00
3 | dusk-time=18:00
4 |
5 |
--------------------------------------------------------------------------------
/files/rofi/map.csv:
--------------------------------------------------------------------------------
1 | All Programs,/usr/bin/env wofi -show run
2 | Thunar,Thunar
3 | Emacs,emacsclient --create-frame
4 | Bitwarden,bitwarden-desktop
5 | Element,element-desktop
6 | Discord,/usr/bin/scripts/open-move.sh discord 8
7 | OnlyOffice,/usr/bin/scripts/open-move.sh onlyoffice-desktopeditors 5
8 | Mirage,mirage
9 | Anki,/usr/bin/scripts/open-move.sh anki 6
10 | Firefox,/usr/bin/scripts/open-move.sh firefox 2
11 | Xournal,/usr/bin/scripts/open-move.sh xournalpp 3
12 |
--------------------------------------------------------------------------------
/files/ssh/config:
--------------------------------------------------------------------------------
1 | AddKeysToAgent yes
2 |
--------------------------------------------------------------------------------
/files/starship/starship.toml:
--------------------------------------------------------------------------------
1 | # Don't print a new line at the start of the prompt
2 | add_newline = false
3 |
4 | [character]
5 | success_symbol = "[➜](bold purple)"
6 | error_symbol = "[➜](bold red)"
7 | vicmd_symbol = "[➜](bold orange)"
8 |
9 |
--------------------------------------------------------------------------------
/files/taskwarrior/taskrc:
--------------------------------------------------------------------------------
1 | # [Created by task 2.6.2 4/24/2022 21:53:53]
2 | # Taskwarrior program configuration file.
3 | # For more documentation, see https://taskwarrior.org or try 'man task', 'man task-color',
4 | # 'man task-sync' or 'man taskrc'
5 |
6 | # Here is an example of entries that use the default, override and blank values
7 | # variable=foo -- By specifying a value, this overrides the default
8 | # variable= -- By specifying no value, this means no default
9 | # #variable=foo -- By commenting out the line, or deleting it, this uses the default
10 |
11 | # You can also refence environment variables:
12 | # variable=$HOME/task
13 | # variable=$VALUE
14 |
15 | # Use the command 'task show' to see all defaults and overrides
16 |
17 | # Files
18 | data.location=$XDG_DATA_HOME/task/
19 | hooks.location=$XDG_CONFIG_HOME/task/hooks/
20 |
21 | # Urgencies
22 | urgency.uda.priority.H.coefficient=6.0
23 | urgency.uda.priority.M.coefficient=3.9
24 | urgency.uda.priority.L.coefficient=-2.0
25 |
26 | # Aliases
27 | alias.burndown=burndown.weekly
28 | alias.ghistory=ghistory.monthly
29 | alias.history=history.monthly
30 | alias.rm=delete
31 |
32 | nag=$TASK_NAG
33 |
34 | hooks=1
35 | news.version=2.6.0
36 | weekstart=monday
37 |
38 | # Appearance
39 | fontunderline=0
40 | rule.color.merge=1
41 | rule.precedence.color=deleted,completed,active,keyword.,tag.,project.,overdue,scheduled,due.today,due,blocked,blocking,recurring,tagged,uda.
42 | row.padding=2
43 | column.padding=2
44 |
45 | # Color configuration
46 | color.active=rgb555 on rgb410
47 | color.alternate=on color234
48 | color.blocked=white on color8
49 | color.blocking=black on color15
50 | color.burndown.done=on rgb010
51 | color.burndown.pending=on color9
52 | color.burndown.started=on color11
53 | color.calendar.due=color0 on color1
54 | color.calendar.due.today=color15 on color1
55 | color.calendar.holiday=color0 on color11
56 | color.calendar.overdue=color0 on color9
57 | color.calendar.scheduled=rgb013 on color15
58 | color.calendar.today=color15 on rgb013
59 | color.calendar.weekend=on color235
60 | color.calendar.weeknumber=rgb013
61 | color.completed=color232 on color121
62 | color.deleted=color232 on color211
63 | color.debug=color4
64 | color.due=color1
65 | color.due.today=rgb400
66 | color.error=white on red
67 | color.footnote=color3
68 | color.header=color3
69 | # color.label
70 | # color.label.sort
71 | color.overdue=color9
72 | # color.project.none
73 | color.recurring=rgb013
74 | color.scheduled=on rgb001
75 | color.summary.background=white on color0
76 | color.summary.bar=black on rgb141
77 | color.tag.next=rgb440
78 | # color.tag.none
79 | color.tagged=rgb031
80 | color.uda.priority.H=color210
81 | color.uda.priority.M=color181
82 | color.uda.priority.L=color250
83 | color.warning=bold red
84 |
--------------------------------------------------------------------------------
/files/tealdeer/config.toml:
--------------------------------------------------------------------------------
1 | [style.description]
2 | underline = false
3 | bold = false
4 | italic = false
5 |
6 | [style.command_name]
7 | foreground = "cyan"
8 | underline = false
9 | bold = false
10 | italic = false
11 |
12 | [style.example_text]
13 | foreground = "green"
14 | underline = false
15 | bold = false
16 | italic = false
17 |
18 | [style.example_code]
19 | foreground = "cyan"
20 | underline = false
21 | bold = false
22 | italic = false
23 |
24 | [style.example_variable]
25 | foreground = "cyan"
26 | underline = true
27 | bold = false
28 | italic = false
29 |
30 | [display]
31 | compact = false
32 | use_pager = false
33 |
34 | [updates]
35 | auto_update = true
36 | auto_update_interval_hours = 720
37 |
38 | [directories]
39 |
--------------------------------------------------------------------------------
/files/terminfo/alacritty-full.terminfo:
--------------------------------------------------------------------------------
1 | alacritty-full|alacritty with proper support for emacs,
2 | use=alacritty,
3 | sitm=\E[3m,
4 | ritm=\E[23m,
5 | setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
6 | setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
7 |
--------------------------------------------------------------------------------
/files/terminfo/compile-terminfo.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Directory used for terminfo entrys
4 | DIR="/usr/share/terminfo"
5 | export TERMINFO="$DIR"
6 |
7 | if [ "$EUID" -ne 0 ]
8 | then echo "Please run as root"
9 | exit
10 | fi
11 |
12 | # Compile all terminfo files in this directory
13 | /usr/bin/env find "." -name '*.terminfo' -exec tic -o "$DIR" -x {} \;
14 |
--------------------------------------------------------------------------------
/files/terminfo/tmux-256color-full.terminfo:
--------------------------------------------------------------------------------
1 | tmux-256color-full|tmux with proper support for emacs,
2 | use=tmux-256color,
3 | sitm=\E[3m,
4 | ritm=\E[23m,
5 | setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
6 | setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
7 |
--------------------------------------------------------------------------------
/files/terminfo/xterm-256color-full.terminfo:
--------------------------------------------------------------------------------
1 | xterm-256color-full|generic with proper support for emacs,
2 | use=xterm-256color,
3 | sitm=\E[3m,
4 | ritm=\E[23m,
5 | setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
6 | setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
7 |
--------------------------------------------------------------------------------
/files/timewarrior/timewarrior.cfg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/b3nj5m1n/dotfiles/a65f4ba3865b7106004a087577c90cf286b80efe/files/timewarrior/timewarrior.cfg
--------------------------------------------------------------------------------
/files/tmux/tmux.conf.home:
--------------------------------------------------------------------------------
1 | source-file ~/.config/tmux/tmux.conf
2 |
--------------------------------------------------------------------------------
/files/tofi/config:
--------------------------------------------------------------------------------
1 | width = 100%
2 | height = 100%
3 | border-width = 0
4 | outline-width = 0
5 | padding-left = 35%
6 | padding-top = 35%
7 | result-spacing = 25
8 | num-results = 5
9 | font = monospace
10 | background-color = #000A
11 |
--------------------------------------------------------------------------------
/files/tree-sitter/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "parser-directories": [
3 | "/home/b3nj4m1n/.local/share/tree-sitter",
4 | "/run/current-system/sw/share/ts-grammars"
5 | ],
6 | "theme": {
7 | "comment": {
8 | "color": 245,
9 | "italic": true
10 | },
11 | "tag": 18,
12 | "constant": 94,
13 | "module": 136,
14 | "type": 23,
15 | "type.builtin": {
16 | "color": 23,
17 | "bold": true
18 | },
19 | "variable.builtin": {
20 | "bold": true
21 | },
22 | "string.special": 30,
23 | "punctuation.bracket": 239,
24 | "number": {
25 | "bold": true,
26 | "color": 94
27 | },
28 | "constructor": 136,
29 | "function": 26,
30 | "attribute": {
31 | "italic": true,
32 | "color": 124
33 | },
34 | "embedded": null,
35 | "operator": {
36 | "bold": true,
37 | "color": 239
38 | },
39 | "keyword": 56,
40 | "property": 124,
41 | "punctuation.delimiter": 239,
42 | "constant.builtin": {
43 | "bold": true,
44 | "color": 94
45 | },
46 | "variable.parameter": {
47 | "underline": true
48 | },
49 | "function.builtin": {
50 | "color": 26,
51 | "bold": true
52 | },
53 | "string": 28
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/files/ulauncher/ext_preferences/com.github.ulauncher.ulauncher-hash.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/b3nj5m1n/dotfiles/a65f4ba3865b7106004a087577c90cf286b80efe/files/ulauncher/ext_preferences/com.github.ulauncher.ulauncher-hash.db
--------------------------------------------------------------------------------
/files/ulauncher/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "blacklisted-desktop-dirs": "/usr/share/locale:/usr/share/app-install:/usr/share/kservices5:/usr/share/fk5:/usr/share/kservicetypes5:/usr/share/applications/screensavers:/usr/share/kde4:/usr/share/mimelnk",
3 | "clear-previous-query": true,
4 | "disable-desktop-filters": true,
5 | "grab-mouse-pointer": false,
6 | "hotkey-show-app": "space",
7 | "render-on-screen": "mouse-pointer-monitor",
8 | "show-indicator-icon": true,
9 | "show-recent-apps": "0",
10 | "terminal-command": "",
11 | "theme-name": "dark"
12 | }
--------------------------------------------------------------------------------
/files/ulauncher/shortcuts.json:
--------------------------------------------------------------------------------
1 | {
2 | "16728c47-c93f-4f6b-b849-603339d7b234": {
3 | "id": "16728c47-c93f-4f6b-b849-603339d7b234",
4 | "name": "Google Search",
5 | "keyword": "g",
6 | "cmd": "https://google.com/search?q=%s",
7 | "icon": "/nix/store/4rv0x3536fhmd7y234yjz85vp6p1dmwh-ulauncher-5.15.3/share/ulauncher/media/google-search-icon.png",
8 | "is_default_search": true,
9 | "run_without_argument": false,
10 | "added": 1695760466.7133067
11 | },
12 | "802aa77c-43cc-4129-b3e7-b30965a946c5": {
13 | "id": "802aa77c-43cc-4129-b3e7-b30965a946c5",
14 | "name": "Stack Overflow",
15 | "keyword": "so",
16 | "cmd": "https://stackoverflow.com/search?q=%s",
17 | "icon": "/nix/store/4rv0x3536fhmd7y234yjz85vp6p1dmwh-ulauncher-5.15.3/share/ulauncher/media/stackoverflow-icon.svg",
18 | "is_default_search": true,
19 | "run_without_argument": false,
20 | "added": 1695760466.7133207
21 | },
22 | "280b0559-bfbc-45b5-9c07-2cea13f9b769": {
23 | "id": "280b0559-bfbc-45b5-9c07-2cea13f9b769",
24 | "name": "Wikipedia",
25 | "keyword": "wiki",
26 | "cmd": "https://en.wikipedia.org/wiki/%s",
27 | "icon": "/nix/store/4rv0x3536fhmd7y234yjz85vp6p1dmwh-ulauncher-5.15.3/share/ulauncher/media/wikipedia-icon.png",
28 | "is_default_search": true,
29 | "run_without_argument": false,
30 | "added": 1695760466.7133307
31 | }
32 | }
--------------------------------------------------------------------------------
/files/wezterm/wezterm.lua:
--------------------------------------------------------------------------------
1 | local wezterm = require 'wezterm';
2 |
3 | return {
4 | default_prog = { 'tmux' },
5 |
6 | color_scheme = "Catppuccin Macchiato",
7 |
8 | font = wezterm.font("{{ font.font }}"),
9 | font_size = {{ font.font_size_float }},
10 |
11 | window_padding = {
12 | left = 0,
13 | right = 0,
14 | top = 0,
15 | bottom = 0,
16 | },
17 |
18 | scrollback_lines = 81920,
19 |
20 | enable_tab_bar = false,
21 |
22 | window_background_opacity = 1.0,
23 |
24 | front_end = "WebGpu"
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/files/wofi/config:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/b3nj5m1n/dotfiles/a65f4ba3865b7106004a087577c90cf286b80efe/files/wofi/config
--------------------------------------------------------------------------------
/files/wofi/style.css:
--------------------------------------------------------------------------------
1 | window {
2 | margin: 0px;
3 | border: 1px solid {{ colors.prm }};
4 | background-color: {{ colors.bg }};
5 | }
6 |
7 | #input {
8 | margin: 5px;
9 | border: none;
10 | color: {{ colors.fg }};
11 | background-color: {{ colors.bg }};
12 | }
13 |
14 | #inner-box {
15 | margin: 5px;
16 | border: none;
17 | background-color: {{ colors.bg }};
18 | }
19 |
20 | #outer-box {
21 | margin: 5px;
22 | border: none;
23 | background-color: {{ colors.bg }};
24 | }
25 |
26 | #scroll {
27 | margin: 0px;
28 | border: none;
29 | }
30 |
31 | #text {
32 | margin: 5px;
33 | border: none;
34 | color: {{ colors.fg }};
35 | }
36 |
37 | #entry:selected {
38 | background-color: {{ colors.bg_bright }};
39 | }
40 |
--------------------------------------------------------------------------------
/files/zathura/zathurarc:
--------------------------------------------------------------------------------
1 | set sandbox none
2 | set statusbar-h-padding 0
3 | set statusbar-v-padding 0
4 | set page-padding 1
5 | set selection-clipboard clipboard
6 | set adjust-open width
7 | map u scroll half-up
8 | map d scroll half-down
9 | map H navigate previous
10 | map [fullscreen] H navigate previous
11 | map L navigate next
12 | map [fullscreen] L navigate next
13 | map D toggle_page_mode
14 | map r reload
15 | map R rotate
16 | map K zoom in
17 | map J zoom out
18 | map i recolor
19 | map F toggle_fullscreen
20 | map [fullscreen] F toggle_fullscreen
21 |
--------------------------------------------------------------------------------
/files/zsh/zshenv:
--------------------------------------------------------------------------------
1 | export ZDOTDIR="$HOME/.config/zsh"
2 |
--------------------------------------------------------------------------------
/files/zsh/zshrc.home:
--------------------------------------------------------------------------------
1 | source ~/.config/zsh/.zshrc
2 |
--------------------------------------------------------------------------------
/nix/hardware/pc.nix:
--------------------------------------------------------------------------------
1 | # Do not modify this file! It was generated by ‘nixos-generate-config’
2 | # and may be overwritten by future invocations. Please make changes
3 | # to /etc/nixos/configuration.nix instead.
4 | {
5 | config,
6 | lib,
7 | pkgs,
8 | modulesPath,
9 | ...
10 | }: {
11 | imports = [
12 | (modulesPath + "/installer/scan/not-detected.nix")
13 | ];
14 |
15 | boot.initrd.availableKernelModules = ["ahci" "ohci_pci" "ehci_pci" "pata_atiixp" "xhci_pci" "usb_storage" "usbhid" "sd_mod"];
16 | boot.initrd.kernelModules = ["dm-snapshot"];
17 | boot.kernelModules = ["amdgpu" "kvm-amd"];
18 | boot.extraModulePackages = [];
19 | boot.supportedFilesystems = ["btrfs" "ntfs"];
20 |
21 | fileSystems."/" = {
22 | device = "/dev/disk/by-uuid/fcd6c5d7-2321-4c05-b34b-cef1d299c8d8";
23 | fsType = "btrfs";
24 | options = ["subvol=root" "compress-force=zstd" "noatime"];
25 | };
26 |
27 | fileSystems."/home" = {
28 | device = "/dev/disk/by-uuid/fcd6c5d7-2321-4c05-b34b-cef1d299c8d8";
29 | fsType = "btrfs";
30 | options = ["subvol=home" "compress-force=zstd"];
31 | };
32 |
33 | fileSystems."/nix" = {
34 | device = "/dev/disk/by-uuid/fcd6c5d7-2321-4c05-b34b-cef1d299c8d8";
35 | fsType = "btrfs";
36 | options = ["subvol=nix" "compress-force=zstd" "noatime"];
37 | };
38 |
39 | fileSystems."/persist" = {
40 | device = "/dev/disk/by-uuid/fcd6c5d7-2321-4c05-b34b-cef1d299c8d8";
41 | fsType = "btrfs";
42 | options = ["subvol=persist" "compress-force=zstd"];
43 | };
44 |
45 | fileSystems."/var/log" = {
46 | device = "/dev/disk/by-uuid/fcd6c5d7-2321-4c05-b34b-cef1d299c8d8";
47 | fsType = "btrfs";
48 | options = ["subvol=log" "compress-force=zstd"];
49 | neededForBoot = true;
50 | };
51 |
52 | fileSystems."/boot" = {
53 | device = "/dev/disk/by-uuid/263D-3836";
54 | fsType = "vfat";
55 | };
56 |
57 | swapDevices = [
58 | {device = "/dev/disk/by-uuid/d3fcdef7-e64a-4854-a08d-7e5298b9d7a8";}
59 | ];
60 |
61 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
62 | # (the default) this is the recommended approach. When using systemd-networkd it's
63 | # still possible to use this option, but it's recommended to use it in conjunction
64 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`.
65 | networking.useDHCP = lib.mkDefault true;
66 | # networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
67 |
68 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
69 | hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
70 | }
71 |
--------------------------------------------------------------------------------
/nix/hardware/x240.nix:
--------------------------------------------------------------------------------
1 | # Do not modify this file! It was generated by ‘nixos-generate-config’
2 | # and may be overwritten by future invocations. Please make changes
3 | # to /etc/nixos/configuration.nix instead.
4 | {
5 | config,
6 | lib,
7 | pkgs,
8 | modulesPath,
9 | ...
10 | }: {
11 | imports = [
12 | (modulesPath + "/installer/scan/not-detected.nix")
13 | ];
14 |
15 | boot.initrd.availableKernelModules = ["xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
16 | boot.initrd.kernelModules = ["dm-snapshot"];
17 | boot.kernelModules = ["kvm-intel"];
18 | boot.extraModulePackages = [];
19 |
20 | fileSystems."/" = {
21 | device = "/dev/disk/by-label/NIXROOT";
22 | fsType = "ext4";
23 | };
24 |
25 | fileSystems."/boot" = {
26 | device = "/dev/disk/by-label/NIXBOOT";
27 | fsType = "vfat";
28 | };
29 |
30 | swapDevices = [];
31 |
32 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
33 | # (the default) this is the recommended approach. When using systemd-networkd it's
34 | # still possible to use this option, but it's recommended to use it in conjunction
35 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`.
36 | networking.useDHCP = lib.mkDefault true;
37 | # networking.interfaces.enp0s25.useDHCP = lib.mkDefault true;
38 | # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
39 |
40 | hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
41 |
42 | nixpkgs.hostPlatform = "x86_64-linux";
43 | }
44 |
--------------------------------------------------------------------------------
/nix/hardware/x270.nix:
--------------------------------------------------------------------------------
1 | # Do not modify this file! It was generated by ‘nixos-generate-config’
2 | # and may be overwritten by future invocations. Please make changes
3 | # to /etc/nixos/configuration.nix instead.
4 | {
5 | config,
6 | lib,
7 | pkgs,
8 | modulesPath,
9 | ...
10 | }: {
11 | imports = [
12 | (modulesPath + "/installer/scan/not-detected.nix")
13 | ];
14 |
15 | boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"];
16 | boot.initrd.kernelModules = [];
17 | boot.kernelModules = ["kvm-intel"];
18 | boot.extraModulePackages = [];
19 |
20 | fileSystems."/" = {
21 | device = "/dev/nvme0n1p2";
22 | fsType = "btrfs";
23 | options = ["subvol=root" "compress-force=zstd" "noatime"];
24 | };
25 |
26 | fileSystems."/home" = {
27 | device = "/dev/nvme0n1p2";
28 | fsType = "btrfs";
29 | options = ["subvol=home" "compress-force=zstd"];
30 | };
31 |
32 | fileSystems."/nix" = {
33 | device = "/dev/nvme0n1p2";
34 | fsType = "btrfs";
35 | options = ["subvol=nix" "compress-force=zstd" "noatime"];
36 | };
37 |
38 | fileSystems."/persist" = {
39 | device = "/dev/nvme0n1p2";
40 | fsType = "btrfs";
41 | options = ["subvol=persist" "compress-force=zstd"];
42 | };
43 |
44 | fileSystems."/var/log" = {
45 | device = "/dev/nvme0n1p2";
46 | fsType = "btrfs";
47 | options = ["subvol=log" "compress-force=zstd"];
48 | neededForBoot = true;
49 | };
50 |
51 | fileSystems."/boot" = {
52 | device = "/dev/disk/by-uuid/E244-C10A";
53 | fsType = "vfat";
54 | };
55 |
56 | swapDevices = [];
57 |
58 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
59 | # (the default) this is the recommended approach. When using systemd-networkd it's
60 | # still possible to use this option, but it's recommended to use it in conjunction
61 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`.
62 | networking.useDHCP = lib.mkDefault true;
63 | # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
64 | # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
65 |
66 | powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
67 | hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
68 |
69 | nixpkgs.hostPlatform = "x86_64-linux";
70 | }
71 |
--------------------------------------------------------------------------------
/nix/home-manager/adelie.nix:
--------------------------------------------------------------------------------
1 | {
2 | inputs,
3 | outputs,
4 | lib,
5 | config,
6 | pkgs,
7 | ...
8 | }: {
9 | imports = let
10 | homeManagerModules = import ../modules/home-manager;
11 | in [
12 | homeManagerModules.neovim
13 | # homeManagerModules.tree-sitter
14 | homeManagerModules.theming
15 | homeManagerModules.gpg
16 | homeManagerModules.git
17 | homeManagerModules.shell
18 | ];
19 |
20 | # nixpkgs = {
21 | # overlays = [
22 | # outputs.overlays.modifications
23 | # outputs.overlays.additions
24 | # outputs.overlays.channels
25 | # ];
26 | # config = {
27 | # allowUnfree = false;
28 | # };
29 | # };
30 |
31 | home = {
32 | username = "b3nj4m1n";
33 | homeDirectory = "/home/b3nj4m1n";
34 | sessionVariables.MAINSSHKEYFILE = "id_ed25519";
35 | };
36 |
37 | # Add stuff for your user as you see fit:
38 | # home.packages = with pkgs; [ steam ];
39 |
40 | programs.home-manager.enable = true;
41 |
42 | programs.git.signing.key = "40C2656E7D651A18";
43 |
44 | services.gpg-agent.pinentryPackage = pkgs.pinentry-gtk2;
45 |
46 | # Nicely reload system units when changing configs
47 | systemd.user.startServices = "sd-switch";
48 |
49 | # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
50 | home.stateVersion = "23.05";
51 | }
52 |
--------------------------------------------------------------------------------
/nix/home-manager/chinstrap.nix:
--------------------------------------------------------------------------------
1 | {
2 | inputs,
3 | outputs,
4 | lib,
5 | config,
6 | pkgs,
7 | ...
8 | }: {
9 | imports = let
10 | homeManagerModules = import ../modules/home-manager;
11 | in [
12 | homeManagerModules.neovim
13 | homeManagerModules.gpg
14 | homeManagerModules.git
15 | homeManagerModules.shell
16 | ];
17 |
18 | # nixpkgs = {
19 | # overlays = [
20 | # outputs.overlays.modifications
21 | # outputs.overlays.additions
22 | # outputs.overlays.channels
23 | # ];
24 | # };
25 |
26 | home = {
27 | username = "admin";
28 | homeDirectory = "/home/admin";
29 | sessionVariables.MAINSSHKEYFILE = "id_rsa";
30 | };
31 |
32 | # Add stuff for your user as you see fit:
33 | programs.neovim.enable = true;
34 | # home.packages = with pkgs; [ steam ];
35 |
36 | programs.home-manager.enable = true;
37 |
38 | programs.git.signing.key = "D11CA4E3FA0C1051";
39 |
40 | services.gpg-agent.pinentryPackage = pkgs.pinentry-gtk2;
41 |
42 | # Nicely reload system units when changing configs
43 | systemd.user.startServices = "sd-switch";
44 |
45 | # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
46 | home.stateVersion = "23.05";
47 | }
48 |
--------------------------------------------------------------------------------
/nix/home-manager/emperor.nix:
--------------------------------------------------------------------------------
1 | {
2 | inputs,
3 | outputs,
4 | lib,
5 | config,
6 | pkgs,
7 | ...
8 | }: {
9 | imports = let
10 | homeManagerModules = import ../modules/home-manager;
11 | in [
12 | homeManagerModules.neovim
13 | # homeManagerModules.tree-sitter
14 | homeManagerModules.theming
15 | homeManagerModules.gpg
16 | homeManagerModules.git
17 | homeManagerModules.shell
18 | # homeManagerModules.hyprland
19 | ];
20 |
21 | # nixpkgs = {
22 | # overlays = [
23 | # outputs.overlays.modifications
24 | # outputs.overlays.additions
25 | # outputs.overlays.channels
26 | # ];
27 | # config = {
28 | # allowUnfree = false;
29 | # };
30 | # };
31 |
32 | home = {
33 | username = "b3nj4m1n";
34 | homeDirectory = "/home/b3nj4m1n";
35 | sessionVariables.MAINSSHKEYFILE = "id_ed25519";
36 | };
37 |
38 | # Add stuff for your user as you see fit:
39 | # home.packages = with pkgs; [ steam ];
40 |
41 | programs.home-manager.enable = true;
42 |
43 | programs.git.signing.key = "309D4C8689849C5B";
44 |
45 | services.gpg-agent.pinentryPackage = pkgs.pinentry-gtk2;
46 |
47 | # Nicely reload system units when changing configs
48 | systemd.user.startServices = "sd-switch";
49 |
50 | # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
51 | home.stateVersion = "23.05";
52 | }
53 |
--------------------------------------------------------------------------------
/nix/modules/home-manager/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | neovim = import ./neovim.nix;
3 | helix = import ./helix.nix;
4 | tree-sitter = import ./tree-sitter.nix;
5 | theming = import ./theming.nix;
6 | gpg = import ./gpg.nix;
7 | git = import ./git.nix;
8 | shell = import ./shell.nix;
9 | xdg-compliance = import ./xdg-compliance.nix;
10 | hyprland = import ./hyprland.nix;
11 | }
12 |
--------------------------------------------------------------------------------
/nix/modules/home-manager/git.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | lib,
4 | ...
5 | }: {
6 | imports = [
7 | ];
8 |
9 | options = {};
10 |
11 | config = {
12 | programs.git = {
13 | enable = true;
14 | userEmail = "b3nj4m1n@gmx.net";
15 | userName = "b3nj5m1n";
16 | aliases = {
17 | pr = "!f() { git fetch -fu \${2:-origin} refs/pull/\$1/head:pr/\$1 && git checkout pr/\$1; }; f"; # https://stackoverflow.com/a/14969986
18 | };
19 | difftastic = {enable = true;};
20 | signing = {
21 | signByDefault = true;
22 | };
23 | extraConfig = {
24 | init.defaultBranch = "main";
25 | };
26 | };
27 | };
28 | }
29 |
--------------------------------------------------------------------------------
/nix/modules/home-manager/gpg.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | lib,
4 | config,
5 | ...
6 | }: {
7 | imports = [
8 | ];
9 |
10 | options = {};
11 |
12 | config = {
13 | programs.gpg = {
14 | enable = true;
15 | homedir = "${config.xdg.dataHome}/gnupg";
16 | settings = {};
17 | };
18 | services.gpg-agent = {
19 | enable = true;
20 | # pinentryFlavor = "gtk2";
21 | extraConfig = ''
22 | '';
23 | };
24 | };
25 | }
26 |
--------------------------------------------------------------------------------
/nix/modules/home-manager/helix.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | lib,
4 | ...
5 | }: {
6 | imports = [
7 | ];
8 |
9 | options = {};
10 |
11 | config = {
12 | home.sessionVariables.EDITOR = "hx";
13 | programs.helix = {
14 | enable = true;
15 | settings = {
16 | theme = "catppuccin_macchiato";
17 | editor = {
18 | idle-timeout = 50;
19 | line-number = "relative";
20 | cursor-shape = {
21 | insert = "bar";
22 | };
23 | whitespace = {
24 | render = {
25 | tab = "all";
26 | newline = "all";
27 | };
28 | };
29 | indent-guides = {
30 | render = true;
31 | };
32 | };
33 | keys = {
34 | normal = {
35 | esc = ["collapse_selection" "keep_primary_selection"];
36 | };
37 | };
38 | };
39 | };
40 | };
41 | }
42 |
--------------------------------------------------------------------------------
/nix/modules/home-manager/neovim.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | lib,
4 | ...
5 | }: {
6 | imports = [
7 | ];
8 |
9 | options = {};
10 |
11 | config = {
12 | home.packages = with pkgs; [luajitPackages.luarocks];
13 | home.sessionVariables.EDITOR = "nvim";
14 | programs.neovim.enable = true;
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/nix/modules/home-manager/theming.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | lib,
4 | ...
5 | }: {
6 | imports = [
7 | ];
8 |
9 | options = {};
10 |
11 | config = {
12 | home.packages = with pkgs; [gtk-engine-murrine];
13 | gtk = {
14 | enable = true;
15 | theme = {
16 | name = "Catppuccin-Macchiato-Compact-Pink-Dark";
17 | package = pkgs.catppuccin-gtk.override {
18 | accents = ["pink"];
19 | size = "compact";
20 | tweaks = ["rimless"];
21 | variant = "macchiato";
22 | };
23 | };
24 | cursorTheme = {
25 | package = pkgs.bibata-cursors;
26 | name = "Bibata-Original-Ice";
27 | size = 24;
28 | };
29 | iconTheme = {
30 | name = "Colloid";
31 | package = pkgs.colloid-icon-theme;
32 | };
33 | };
34 | home.pointerCursor = {
35 | package = pkgs.bibata-cursors;
36 | name = "Bibata-Original-Ice";
37 | size = 24;
38 | };
39 | xdg.dataFile."icons/default/index.theme".text = ''
40 | [icon theme]
41 | Name=Default
42 | Comment=Default Cursor Theme
43 | Inherits=Bibata-Original-Classic
44 | '';
45 | };
46 | }
47 |
--------------------------------------------------------------------------------
/nix/modules/home-manager/tree-sitter.nix:
--------------------------------------------------------------------------------
1 | # Note that this module is for configuring treesitter for use in neovim, not for
2 | # use with the tree-sitter cli
3 | {
4 | pkgs,
5 | lib,
6 | ...
7 | }: let
8 | nvim-parser-location = "nvim/site/pack/packer/opt/nvim-treesitter/parser";
9 | # Conver the package name to the language name, for example:
10 | # pname-to-lname "tree-sitter-rust-grammar" -> "rust"
11 | pname-to-lname = pname:
12 | lib.strings.removeSuffix "-grammar" (lib.strings.removePrefix "tree-sitter-" pname);
13 | genLink = package-name: let
14 | package = pkgs.pr259779.tree-sitter-grammars."${package-name}";
15 | language-name = pname-to-lname package.pname;
16 | in {
17 | "${nvim-parser-location}/${language-name}.so".source = "${package.outPath}/parser";
18 | };
19 | genLinks = language-names:
20 | lib.lists.foldl (a: b: a // b) {} (builtins.map genLink language-names);
21 | getAll = builtins.filter (x: builtins.isAttrs pkgs.pr259779.tree-sitter-grammars."${x}") (builtins.attrNames pkgs.tree-sitter-grammars);
22 | genAll = genLinks getAll;
23 | in {
24 | imports = [
25 | ];
26 |
27 | options = {};
28 |
29 | config = {
30 | xdg.dataFile = genAll;
31 | };
32 | }
33 |
--------------------------------------------------------------------------------
/nix/modules/nixos/all-languages.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ./webdev.nix
4 | ./javascript.nix
5 | ./typescript.nix
6 | ./elm.nix
7 | ./haskell.nix
8 | ./bash.nix
9 | ./java.nix
10 | ./lua.nix
11 | ./fennel.nix
12 | ./rust.nix
13 | ./nix.nix
14 | ./c.nix
15 | ./common-lisp.nix
16 | ./python.nix
17 | ./latex.nix
18 | ./ocaml.nix
19 | ];
20 | }
21 |
--------------------------------------------------------------------------------
/nix/modules/nixos/android.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | androidStudioPackages.canary
10 | kotlin
11 | kotlin-language-server
12 | ];
13 | programs.adb.enable = true;
14 | users.users."b3nj4m1n".extraGroups = ["adbusers"];
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/nix/modules/nixos/aria2.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | aria
10 | aria_ng
11 | ];
12 | systemd.services.aria_ng = {
13 | enable = false;
14 | description = "Server aria_ng";
15 | path = [pkgs.static-web-server];
16 | unitConfig = {
17 | Type = "simple";
18 | };
19 | serviceConfig = {
20 | ExecStart = "${pkgs.static-web-server}/bin/static-web-server -p 30020 -d ${pkgs.aria_ng}";
21 | };
22 | wantedBy = ["multi-user.target"];
23 | };
24 | networking.firewall.allowedTCPPorts = [30020 30019];
25 | services.aria2 = {
26 | enable = false;
27 | openPorts = true;
28 | settings = {
29 | rpc-listen-port = 30019;
30 | };
31 | rpcSecretFile = /run/secrets/aria2-rpc-token.txt;
32 | };
33 | };
34 | }
35 |
--------------------------------------------------------------------------------
/nix/modules/nixos/audio.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | # sound.enable = true;
9 | environment.systemPackages = with pkgs; [
10 | mpc-cli
11 | ncmpcpp
12 | pavucontrol
13 | pulseaudio
14 | ncpamixer
15 | stable.beets
16 | ];
17 | security.rtkit.enable = true;
18 | services.pipewire = {
19 | enable = true;
20 | # systemWide = true;
21 | alsa.enable = true;
22 | alsa.support32Bit = true;
23 | pulse.enable = true;
24 | jack.enable = true;
25 | wireplumber.enable = true;
26 | };
27 | services.mpd = {
28 | enable = true;
29 | user = "b3nj4m1n";
30 | network = {
31 | listenAddress = "any";
32 | };
33 | # musicDirectory = "";
34 | extraConfig = ''
35 | audio_output {
36 | type "pipewire"
37 | name "PipeWire"
38 | }
39 | '';
40 | };
41 | systemd.services.mpd.environment = {
42 | # https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/609
43 | XDG_RUNTIME_DIR = "/run/user/1000";
44 | };
45 |
46 | services.navidrome = {
47 | enable = true;
48 | settings = {
49 | Address = "0.0.0.0";
50 | Port = 4533;
51 | };
52 | };
53 |
54 | networking.firewall = {
55 | allowedTCPPorts = [4533];
56 | };
57 |
58 | fileSystems."/var/lib/navidrome/music" = {
59 | device = "/home/b3nj4m1n/Music";
60 | options = ["bind" "perms=444"];
61 | };
62 | fileSystems."/var/lib/mpd/music" = {
63 | device = "/home/b3nj4m1n/Music";
64 | options = ["bind" "perms=444"];
65 | };
66 |
67 | /*
68 | networking.firewall = {
69 | allowedTCPPorts = [4533];
70 | };
71 | */
72 | };
73 | }
74 |
--------------------------------------------------------------------------------
/nix/modules/nixos/base.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ./networking.nix
4 | ./security.nix
5 | ];
6 |
7 | options = {};
8 |
9 | config = {
10 | environment.systemPackages = with pkgs; [
11 | home-manager
12 | ];
13 | time.timeZone = "Europe/Berlin";
14 | i18n.defaultLocale = "en_GB.UTF-8";
15 | environment.pathsToLink = ["/share" "/share/zsh"];
16 | services.cron.enable = true;
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/nix/modules/nixos/bash.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | bash
10 | nodePackages.bash-language-server
11 | shellcheck
12 | ];
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/nix/modules/nixos/battery-thing.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | config,
4 | lib,
5 | ...
6 | }: {
7 | imports = [
8 | ];
9 |
10 | config = {
11 | environment.systemPackages = with pkgs; [
12 | ];
13 |
14 | systemd.services = {
15 | battery-check = {
16 | description = "Check if battery needs to be swapped";
17 | path = with pkgs; [kbd];
18 | environment = {
19 | WAYLAND_DISPLAY = "wayland-1";
20 | XDG_RUNTIME_DIR = "/run/user/1000";
21 | };
22 | serviceConfig = {
23 | #User = "b3nj4m1n";
24 | ExecStart = "-${pkgs.bash}/bin/bash /home/b3nj4m1n/.local/share/bin/bsod.sh";
25 | };
26 | # timer = "your-script-timer";
27 | };
28 | };
29 |
30 | systemd.timers."battery-check" = {
31 | wantedBy = ["timers.target"];
32 | timerConfig = {
33 | OnBootSec = "1m";
34 | OnUnitActiveSec = "1m";
35 | Unit = "battery-check.service";
36 | };
37 | };
38 |
39 | /*
40 | systemd.services = {
41 | "battery-check" = {
42 | script = ''
43 | battery_level=$(cat /sys/class/power_supply/BAT0/capacity)
44 | if [ "$battery_level" -lt 60 ]; then
45 | /home/b3nj4m1n/.local/share/bin/bsod.sh
46 | else
47 | /home/b3nj4m1n/.local/share/bin/bsod.sh
48 | fi
49 | '';
50 | };
51 | };
52 | */
53 | };
54 | }
55 |
--------------------------------------------------------------------------------
/nix/modules/nixos/c.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | clang
10 | clang-tools
11 | # libclang
12 | cmake
13 | gcc
14 | ];
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/nix/modules/nixos/common-lisp.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | roswell
10 | ];
11 | };
12 | }
13 |
--------------------------------------------------------------------------------
/nix/modules/nixos/default.nix:
--------------------------------------------------------------------------------
1 | # Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
2 | # These should be stuff you would like to share with others, not your personal configurations.
3 | {
4 | pkgs,
5 | user,
6 | }: {
7 | # Base module with stuff I want everywhere
8 | base = import ./base.nix;
9 | networking = import ./networking.nix;
10 | security = import ./security.nix;
11 | shared-repos = import ./shared-repos.nix;
12 |
13 | # Terminal stuff
14 | shell = import ./shell.nix;
15 | zsh = import ./zsh.nix;
16 | neovim = import ./neovim.nix;
17 | terminal = import ./terminal.nix;
18 |
19 | # Desktop stuff
20 | desktop = import ./desktop.nix;
21 | wayland = import ./wayland.nix;
22 | sway = import ./sway.nix;
23 | fonts = import ./fonts.nix;
24 | audio = import ./audio.nix;
25 |
26 | # Languages
27 | all-languages = import ./all-languages.nix;
28 | webdev = import ./webdev.nix;
29 | javascript = import ./javascript.nix;
30 | typescript = import ./typescript.nix;
31 | elm = import ./elm.nix;
32 | haskell = import ./haskell.nix;
33 | bash = import ./bash.nix;
34 | java = import ./java.nix;
35 | lua = import ./lua.nix;
36 | fennel = import ./fennel.nix;
37 | rust = import ./rust.nix;
38 | nix = import ./nix.nix;
39 | c = import ./c.nix;
40 | common-lisp = import ./common-lisp.nix;
41 | python = import ./python.nix;
42 | latex = import ./latex.nix;
43 | ocaml = import ./ocaml.nix;
44 |
45 | # pandoc = import ./pandoc.nix;
46 | steam = import ./steam.nix;
47 | nvidia = import ./nvidia.nix;
48 | gitega = import ./gitega.nix;
49 | virtual-machines = import ./virtual-machines.nix;
50 | tree-sitter = import ./tree-sitter.nix;
51 | fix-suspend = import ./fix-suspend.nix;
52 | open-rgb = import ./open-rgb.nix;
53 | docker = import ./docker.nix {
54 | inherit pkgs;
55 | inherit user;
56 | };
57 | jellyfin = import ./jellyfin.nix;
58 | encryption = import ./encryption.nix;
59 | aria2 = import ./aria2.nix;
60 | dynamic-wallpaper = import ./dynamic-wallpaper.nix;
61 | android = import ./android.nix;
62 | postgres = import ./postgres.nix;
63 | battery-thing = import ./battery-thing.nix;
64 | pix2tex = import ./pix2tex.nix;
65 | math = import ./math.nix;
66 | swaylock-plugin = import ./swaylock-plugin.nix;
67 | radicale = import ./radicale.nix;
68 | grocy = import ./grocy.nix;
69 | }
70 |
--------------------------------------------------------------------------------
/nix/modules/nixos/desktop.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ./audio.nix
4 | ./fonts.nix
5 | ];
6 |
7 | options = {};
8 |
9 | config = {
10 | environment.systemPackages = with pkgs; [
11 | anki-bin
12 | calibre
13 | swaynotificationcenter
14 | feh
15 | mangohud
16 | (tor-browser-bundle-bin.override {
17 | # useHardenedMalloc = false;
18 | })
19 | thunderbird-128
20 | libnotify
21 | neovide
22 | peek
23 | # pop-launcher
24 | syncthing
25 | ydotool
26 | xfce.thunar
27 | nautilus
28 | file-roller
29 | stable.element-desktop
30 | mpv
31 | vlc
32 | zathura
33 | gsmartcontrol
34 | swww
35 | rnote
36 | xournalpp
37 | inkscape-with-extensions
38 | stable.kgeotag
39 | (callPackage ../../pkgs/zotero-wrapped {})
40 | # (callPackage ../../pkgs/logseq-wrapped {})
41 | # (callPackage ../../pkgs/firefox-trapped {})
42 | firefox
43 | pr331310.qutebrowser
44 | ];
45 |
46 | services = {
47 | syncthing = {
48 | enable = true;
49 | user = "b3nj4m1n";
50 | dataDir = "/home/b3nj4m1n/.local/share";
51 | configDir = "/home/b3nj4m1n/.config/syncthing";
52 | };
53 | };
54 |
55 | services.xserver.enable = true;
56 |
57 | # TODO Use the same DM config on both systems
58 | /*
59 | services.xserver.displayManager.lightdm = {
60 | greeters = {
61 | slick.enable = true;
62 | };
63 | };
64 | */
65 | # hardware.opengl.mesaPackage = pkgs.mesa_22; # Workaround TODO remove when fixed
66 |
67 | services.xserver.xkb = {
68 | options = "caps:escape";
69 | layout = "de";
70 | };
71 |
72 | xdg.mime = {
73 | enable = true;
74 | defaultApplications = {
75 | "application/pdf" = "org.pwmt.zathura.desktop";
76 | };
77 | };
78 | };
79 | }
80 |
--------------------------------------------------------------------------------
/nix/modules/nixos/docker.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | user,
4 | ...
5 | }: {
6 | imports = [
7 | ];
8 |
9 | options = {};
10 |
11 | config = {
12 | environment.systemPackages = with pkgs; [
13 | docker-compose
14 | ];
15 | virtualisation.docker.enable = true;
16 | users.users."${user}".extraGroups = ["docker"];
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/nix/modules/nixos/elm.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | elmPackages.elm
10 | elmPackages.elm-language-server
11 | elmPackages.elm-format
12 | ];
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/nix/modules/nixos/encryption.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | cryptsetup
10 | ];
11 | };
12 | }
13 |
--------------------------------------------------------------------------------
/nix/modules/nixos/fennel.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ./lua.nix
4 | ];
5 |
6 | options = {};
7 |
8 | config = {
9 | environment.systemPackages = with pkgs; [
10 | fennel
11 | fnlfmt
12 | # fennel-language-server
13 | ];
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/nix/modules/nixos/fix-suspend.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | systemd.services.fixSuspend = {
9 | enable = true;
10 | description = "Fix immediate wakeup on suspend/hibernate";
11 | unitConfig = {
12 | Type = "oneshot";
13 | };
14 | serviceConfig = {
15 | User = "root";
16 | ExecStart = "-${pkgs.bash}/bin/bash -c \"echo GPP0 > /proc/acpi/wakeup\"";
17 | };
18 | wantedBy = ["multi-user.target"];
19 | };
20 | };
21 | }
22 |
--------------------------------------------------------------------------------
/nix/modules/nixos/fonts.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | # fonts.enableDefaultPackages = true;
9 | fonts.packages = with pkgs; [
10 | arkpandora_ttf
11 | liberation_ttf
12 | xits-math
13 | newcomputermodern
14 | nerd-fonts.fantasque-sans-mono
15 | nerd-fonts.fira-mono
16 | nerd-fonts.ubuntu-mono
17 | ];
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/nix/modules/nixos/gitega.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | systemd.timers."gitega" = {
9 | wantedBy = ["timers.target"];
10 | timerConfig = {
11 | OnBootSec = "15min";
12 | OnUnitActiveSec = "1day";
13 | Unit = "gitega.service";
14 | };
15 | };
16 | systemd.services.gitega = {
17 | description = "Run gitega";
18 | path = with pkgs; [libnotify findutils python313];
19 | environment = {
20 | PYTHONPATH = let
21 | packageNames = ["cffi" "pycparser" "requests" "brotlicffi" "certifi" "charset-normalizer" "idna" "urllib3" "brotli" "pysocks" "colorama" "dateutils" "python-dateutil" "six" "pytz"];
22 | packages = ["${pkgs.python313}"] ++ map (s: "${pkgs.python313Packages.${s}}") packageNames;
23 | packagesFull = map (s: "${s}/lib/python3.9/site-packages") packages;
24 | packagesPath = builtins.concatStringsSep ":" packagesFull;
25 | in "${packagesPath}";
26 | };
27 | script = let
28 | gitegaSourcePath = "/home/b3nj4m1n/code/gitega";
29 | gitegaDataPath = "/home/b3nj4m1n/.local/share/gitega";
30 | email = "b3nj5m1n@gmx.net";
31 | in ''
32 | cd ${gitegaSourcePath}
33 | for account in $(find "${gitegaDataPath}/" -maxdepth 1 ! -path . -type d -printf '%P\n' | sed 's/-github//g');
34 | do
35 | XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send "Updating github stats for: $account"
36 | python update.py --name "$account" --rootDir "${gitegaDataPath}" \
37 | && XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send "Successfully updated github stats for: $account"
38 | done
39 | '';
40 | serviceConfig = {
41 | Type = "oneshot";
42 | User = "b3nj4m1n";
43 | };
44 | };
45 | };
46 | }
47 |
--------------------------------------------------------------------------------
/nix/modules/nixos/grocy.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | ];
10 | virtualisation.oci-containers.containers.grocy = {
11 | image = "lscr.io/linuxserver/grocy:latest";
12 | ports = ["9283:80"];
13 | environment = {
14 | PUID = "1000";
15 | PGID = "1000";
16 | TZ = "Etc/UTC";
17 | };
18 | autoStart = true;
19 | volumes = [
20 | "config:/config"
21 | ];
22 | };
23 | /*
24 | services.grocy = {
25 | enable = true;
26 | hostName = "0.0.0.0";
27 | settings = {
28 | currency = "EUR";
29 | culture = "de";
30 | calendar = {
31 | firstDayOfWeek = 1;
32 | };
33 | };
34 | };
35 | */
36 | networking.firewall.allowedTCPPorts = [9283];
37 | networking.firewall.allowedUDPPorts = [9283];
38 | };
39 | }
40 |
--------------------------------------------------------------------------------
/nix/modules/nixos/haskell.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | cabal-install
10 | ghc
11 | haskell-language-server
12 | ];
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/nix/modules/nixos/java.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = [
9 | # pkgs.jdt-language-server
10 | pkgs.openjdk
11 | pkgs.openjdk11
12 | pkgs.openjdk8
13 | (pkgs.writeShellScriptBin "jdtls" "${pkgs.jdt-language-server}/bin/jdt-language-server $@")
14 | ];
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/nix/modules/nixos/javascript.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | nodePackages.npm
10 | nodePackages.typescript-language-server
11 | # nodePackages.parcel
12 | stable.nodejs
13 | yarn
14 | ];
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/nix/modules/nixos/jellyfin.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | services.jellyfin.enable = true;
9 | networking.firewall.allowedTCPPorts = [8096];
10 | networking.firewall.allowedUDPPorts = [8096];
11 | };
12 | }
13 |
--------------------------------------------------------------------------------
/nix/modules/nixos/latex.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | texlive.combined.scheme-full
10 | texlab
11 | # ltex-ls-plus
12 | ];
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/nix/modules/nixos/lua.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | lua
10 | luajit
11 | sumneko-lua-language-server
12 | ];
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/nix/modules/nixos/math.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | # ./neovim.nix
4 | ./zsh.nix
5 | ];
6 |
7 | options = {};
8 |
9 | config = {
10 | environment.systemPackages = with pkgs; [
11 | libqalculate # qalc cli
12 | stable.sage
13 | sagetex
14 | typst
15 | typstfmt
16 | typst-live
17 | typstyle
18 | tinymist
19 | websocat
20 | stable.typst-preview
21 | numbat
22 | ];
23 | };
24 | }
25 |
--------------------------------------------------------------------------------
/nix/modules/nixos/neovim.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | neovim
10 | luajitPackages.luarocks
11 | # tree-sitter
12 | # tree-sitter-grammars.tree-sitter-norg
13 | ];
14 | programs.neovim = {
15 | enable = true;
16 | withRuby = true;
17 | withPython3 = true;
18 | withNodeJs = true;
19 | };
20 | };
21 | }
22 |
--------------------------------------------------------------------------------
/nix/modules/nixos/networking.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | iwd
10 | iwgtk
11 | nmap
12 | wpa_supplicant_gui
13 | wireguard-tools
14 | openconnect # VPN client compatible with anyconnect protocol
15 | networkmanagerapplet
16 | ];
17 | networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
18 | # networking.networkmanager.wifi.backend = "iwd";
19 | programs.nm-applet.enable = true;
20 | networking.nftables.enable = true;
21 | networking.firewall = {
22 | enable = true;
23 | allowedTCPPorts = [22 30021];
24 | };
25 | networking.wireless.userControlled.enable = true;
26 | # networking.wireless.enable = true;
27 | networking.wireless.extraConfig = ''
28 |
29 | '';
30 | };
31 | }
32 |
--------------------------------------------------------------------------------
/nix/modules/nixos/nix.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | alejandra
10 | nil
11 | ];
12 | };
13 | }
14 |
--------------------------------------------------------------------------------
/nix/modules/nixos/nvidia.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | services.xserver.videoDrivers = ["nvidia"];
9 | hardware.opengl.enable = true;
10 | hardware.nvidia.modesetting.enable = true;
11 | };
12 | }
13 |
--------------------------------------------------------------------------------
/nix/modules/nixos/ocaml.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | ocaml
10 | opam
11 | dune_3
12 | ocamlPackages.odoc
13 | ocamlPackages.ocaml-lsp
14 | ocamlPackages.utop
15 | ocamlPackages.ocamlformat
16 | ];
17 | };
18 | }
19 |
--------------------------------------------------------------------------------
/nix/modules/nixos/open-rgb.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | openrgb
10 | ];
11 | services.udev.extraRules = builtins.readFile "${pkgs.openrgb}/lib/udev/rules.d/60-openrgb.rules";
12 | };
13 | }
14 |
--------------------------------------------------------------------------------
/nix/modules/nixos/pandoc.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: let
2 | system = pkgs.system;
3 |
4 | pkgs_pandoc = import (builtins.fetchGit {
5 | name = "pandoc-2.13";
6 | url = "https://github.com/NixOS/nixpkgs/";
7 | ref = "refs/heads/nixpkgs-unstable";
8 | rev = "141439f6f11537ee349a58aaf97a5a5fc072365c";
9 | }) {inherit system;};
10 | # wrapper = pkgs_pandoc.lib.makeOverridable ({ } :
11 | # pkgs.symlinkJoin {
12 | # name = "pandoc";
13 | # paths = [ pkgs_pandoc.pandoc ];
14 | # buildInputs = [ pkgs.makeWrapper ];
15 | # postBuild = ''
16 | # wrapProgram "$out/bin/pandoc" --add-flags "--data-dir=/run/current-system/sw/share/pandoc/"
17 | # '';
18 | # });
19 | in {
20 | imports = [
21 | ];
22 |
23 | options = {};
24 |
25 | config = {
26 | environment.systemPackages = [
27 | pkgs_pandoc.pandoc
28 | pkgs_pandoc.haskellPackages.pandoc-crossref
29 | pkgs_pandoc.haskellPackages.pandoc-include-code
30 | pkgs.texlive.combined.scheme-full
31 | pkgs.dasel
32 | pkgs.m4
33 | ];
34 | };
35 | }
36 |
--------------------------------------------------------------------------------
/nix/modules/nixos/pix2tex.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | (callPackage stdenv.mkDerivation {
10 | name = "pix2tex";
11 | src = pkgs.writeShellScriptBin "pix2tex" ''
12 | ${pkgs.sway-contrib.grimshot}/bin/grimshot save area /tmp/pix2tex_screenshot.png && ${pkgs.curl}/bin/curl -s -X POST -F "file=@/tmp/pix2tex_screenshot.png" -L http://127.0.0.1:8502/predict | ${pkgs.jq}/bin/jq -r | ${pkgs.wl-clipboard}/bin/wl-copy
13 | '';
14 | installPhase = ''
15 | mkdir -p $out/bin
16 | cp $src/bin/pix2tex $out/bin/pix2tex
17 | chmod +x $out/bin/pix2tex
18 | '';
19 | })
20 | ];
21 | virtualisation.oci-containers.containers.pix2tex = {
22 | image = "lukasblecher/pix2tex";
23 | ports = ["8502:8502"];
24 | };
25 | };
26 | }
27 |
--------------------------------------------------------------------------------
/nix/modules/nixos/postgres.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | postgresql
10 | pr229184.pgadmin
11 | ];
12 | services.postgresql = {
13 | package = pkgs.postgresql;
14 | };
15 | # services.pgadmin = {
16 | # enable = true;
17 | # initialEmail = "b3nj4m1n@gmx.net";
18 | # initialPasswordFile = let
19 | # pw_file = pkgs.writeTextFile {
20 | # name = "pgadmin-password";
21 | # text = ''
22 | # 123456
23 | # '';
24 | # };
25 | # in "${pw_file}";
26 | # };
27 | };
28 | }
29 |
--------------------------------------------------------------------------------
/nix/modules/nixos/python.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | python3
10 | python312Packages.jedi-language-server
11 | python312Packages.python-lsp-server
12 | poetry
13 | pipx
14 | python311Packages.bpython
15 | ];
16 | };
17 | }
18 |
--------------------------------------------------------------------------------
/nix/modules/nixos/radicale.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | ];
10 | services.radicale = {
11 | enable = true;
12 | settings = {
13 | server = {
14 | hosts = ["0.0.0.0:5232" "[::]:5232"];
15 | };
16 | storage = {
17 | filesystem_folder = "/var/lib/radicale/collections";
18 | };
19 | auth = {
20 | type = "none";
21 | # htpasswd_filename = "/etc/radicale/users";
22 | # htpasswd_encryption = "bcrypt";
23 | };
24 | };
25 | };
26 | networking.firewall.allowedTCPPorts = [5232];
27 | networking.firewall.allowedUDPPorts = [5232];
28 | };
29 | }
30 |
--------------------------------------------------------------------------------
/nix/modules/nixos/rust.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | # (fenix.complete.withComponents [
10 | # "cargo"
11 | # "clippy"
12 | # "rust-src"
13 | # "rustc"
14 | # "rustfmt"
15 | # ])
16 | rust-toolchain
17 | rust-analyzer-nightly
18 | cargo-nextest
19 | cargo-expand
20 | cargo-watch
21 | cargo-audit
22 | sqlx-cli
23 | ];
24 | };
25 | }
26 |
--------------------------------------------------------------------------------
/nix/modules/nixos/security.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | keychain
10 | libfido2
11 | # yubikey-manager # TODO
12 | pinentry
13 | pinentry-curses
14 | pinentry-gtk2
15 | polkit_gnome
16 | dbus
17 | ];
18 | security.polkit.enable = true;
19 | systemd = {
20 | user.services.polkit-gnome-authentication-agent-1 = {
21 | description = "polkit-gnome-authentication-agent-1";
22 | wantedBy = ["graphical-session.target"];
23 | wants = ["graphical-session.target"];
24 | after = ["graphical-session.target"];
25 | serviceConfig = {
26 | Type = "simple";
27 | ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
28 | Restart = "on-failure";
29 | RestartSec = 1;
30 | TimeoutStopSec = 10;
31 | };
32 | };
33 | };
34 | services.pcscd.enable = true;
35 | programs.gnupg.agent = {
36 | enable = true;
37 | enableSSHSupport = true;
38 | pinentryPackage = pkgs.pinentry-gtk2;
39 | };
40 | services.openssh = {
41 | enable = true;
42 | settings = {
43 | PermitRootLogin = "no";
44 | PasswordAuthentication = false;
45 | };
46 | };
47 | services.dbus = {
48 | enable = true;
49 | implementation = "broker";
50 | };
51 | };
52 | }
53 |
--------------------------------------------------------------------------------
/nix/modules/nixos/shared-repos.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | # This requires read-only deployment keys to be set up for the relevant repositories
9 | systemd.services.setupRepos = {
10 | enable = true;
11 | description = "Automatically pull down some repositories";
12 | path = [pkgs.git pkgs.openssh];
13 | unitConfig = {
14 | Type = "simple";
15 | After = ["network-online.target"];
16 | Wants = ["network-online.target"];
17 | };
18 | serviceConfig = {
19 | User = "b3nj4m1n";
20 | ExecStart = "-${pkgs.bash}/bin/bash /home/b3nj4m1n/.local/share/bin/setup-repos.sh";
21 | };
22 | wantedBy = ["multi-user.target"];
23 | };
24 |
25 | services.cron = {
26 | enable = true;
27 | systemCronJobs = [
28 | "10 * * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/.local/share/task true"
29 | "42 17 * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/.local/share/task false"
30 |
31 | "11 * * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/.local/share/timew/data true"
32 | "43 17 * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/.local/share/timew/data false"
33 |
34 | "12 * * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/backup_sh_history.sh /home/b3nj4m1n/.local/share/sh_history/history true"
35 | "44 17 * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/backup_sh_history.sh /home/b3nj4m1n/.local/share/sh_history/history false"
36 |
37 | "13 * * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/.local/share/logseq true"
38 | "45 17 * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/.local/share/logseq false"
39 |
40 | "14 * * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/Zotero true"
41 | "46 17 * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/Zotero false"
42 |
43 | "01 * * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/uni/get-current.sh"
44 | "*/5 * * * * b3nj4m1n /usr/bin/env sh /home/b3nj4m1n/uni/get-current.sh"
45 | ];
46 | };
47 | };
48 | }
49 |
--------------------------------------------------------------------------------
/nix/modules/nixos/shell.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | # ./neovim.nix
4 | ./zsh.nix
5 | ];
6 |
7 | options = {};
8 |
9 | config = {
10 | environment.systemPackages = with pkgs; [
11 | aria # Basically a better wget
12 | atuin # Save & search shell history
13 | bat # Better cat (syntax highlighting, etc.)
14 | bottom # System monitor
15 | cmatrix # A masterhacker essential
16 | difftastic # Better diff which understands syntax
17 | direnv # Automatically load env variables when entering directory
18 | doctl # Digital ocean cli
19 | dotter # Dotfile management
20 | du-dust # More intuitive du
21 | duf # Display disk usage stats in a readable way
22 | eza # Better ls
23 | fd # Better find
24 | ffmpeg-full # Video (& audio) transcoding, scaling, etc.
25 | figlet # Almost as important as toilet
26 | file # Get information about what kind of file you're looking at
27 | git # I mean it's git
28 | git-crypt # Encrypt files when pushing repos, decrypt when pulling
29 | glow # Render markdown in the terminal
30 | gnumake # You know make
31 | helix # Like neovim but less config
32 | hexdino # Hex editor
33 | hexyl # View binary files
34 | hyperfine # Benchmark command performance
35 | inotify-tools # Watch for file changes
36 | jq # Jesus christ it's JSON Bourne
37 | just # Like make but easier
38 | killall # Kill processes by name
39 | libqalculate # qalc cli
40 | mlocate # Locate files quickly from cached database of files
41 | mmv-go # Rename files using $EDITOR
42 | neomutt # TUI email client
43 | parallel # GNU parallel
44 | pfetch # Like neofetch but faster and more minimal
45 | stable.pmount # Easier mounting
46 | progress # Show progress bar for coreutils
47 | rage # Rust version of age (actually good encryption)
48 | rclone
49 | ripgrep # Very fast grep, searches directory recursively by default
50 | sd # Move intuitive sed
51 | skim # Like fzf, but in rust... yeah that's the only reason
52 | smartmontools # Monitor S.M.A.R.T. values
53 | sops # Secret management
54 | sqlite # Sqlite cli
55 | starship # Fast af prompt generator with tons of useful info
56 | taplo # Like jq for toml
57 | taskwarrior3 # The endboss of task management
58 | tealdeer # tldr client
59 | timewarrior # Companion to taskwarrior which I still have not set up properly
60 | tmux # Tabs, panes, sessions, etc.
61 | toilet # Almost as important as figlet
62 | tokei # Get LOC stats for a directory
63 | unzip # Unzips zips
64 | wget # You know this one
65 | xplr # TUI file explorer
66 | yt-dlp # Download youtube videos
67 | zellij # Sort of a little bit like tmux
68 | zoxide # More modern version of z (remember directories, cd into them without specifying full path)
69 | zstd # Compression
70 | ];
71 | };
72 | }
73 |
--------------------------------------------------------------------------------
/nix/modules/nixos/steam.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | programs.steam = {
9 | enable = true;
10 | remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
11 | dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
12 | };
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/nix/modules/nixos/sway.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ./wayland.nix
4 | ./dynamic-wallpaper.nix
5 | ./swaylock-plugin.nix
6 | ];
7 |
8 | options = {};
9 |
10 | config = {
11 | environment.systemPackages = with pkgs; [
12 | swaylock-effects
13 | autotiling-rs
14 | sway-contrib.grimshot
15 | ];
16 | services.dynamic-wallpaper = {
17 | enable = true;
18 | theme = "tokyo";
19 | transitionDuration = 10;
20 | };
21 | services.swaylock-plugin = {
22 | enable = true;
23 | };
24 | programs.sway.enable = true;
25 | services.displayManager.defaultSession = "sway";
26 | };
27 | }
28 |
--------------------------------------------------------------------------------
/nix/modules/nixos/swaylock-plugin.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | config,
4 | lib,
5 | ...
6 | }:
7 | with lib; let
8 | cfg = config.services.swaylock-plugin;
9 | in {
10 | imports = [
11 | ];
12 |
13 | options.services.swaylock-plugin = {
14 | enable = mkEnableOption "swaylock-plugin";
15 | };
16 |
17 | config = {
18 | environment.systemPackages = with pkgs; [
19 | pkgs.swaylock-plugin
20 | swaybg
21 | mpvpaper
22 | ];
23 | security.pam.services.swaylock-plugin.text = "auth include login";
24 | };
25 | }
26 |
--------------------------------------------------------------------------------
/nix/modules/nixos/terminal.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ./shell.nix
4 | ];
5 |
6 | options = {};
7 |
8 | config = {
9 | environment.systemPackages = with pkgs; [
10 | alacritty
11 | devour
12 | wezterm
13 | ];
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/nix/modules/nixos/tree-sitter.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: let
2 | system = pkgs.system;
3 |
4 | pkgs_treesitter = import (builtins.fetchTarball {
5 | url = "https://github.com/mrene/nixpkgs/archive/refs/heads/tree-sitter-wrapper-test.tar.gz";
6 | sha256 = "sha256:0a3lkl75cw58mma780wcbi9xx4v14m9in9n9scdva1mpalbi69yg";
7 | }) {inherit system;};
8 | in {
9 | imports = [
10 | ];
11 |
12 | options = {};
13 |
14 | config = {
15 | environment.systemPackages = [
16 | pkgs_treesitter.tree-sitter.withAllGrammarSources
17 | ];
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/nix/modules/nixos/typescript.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ./javascript.nix
4 | ];
5 |
6 | options = {};
7 |
8 | config = {
9 | environment.systemPackages = with pkgs; [
10 | deno
11 | nodePackages.typescript
12 | nodePackages.typescript-language-server
13 | # nodePackages.parcel
14 | ];
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/nix/modules/nixos/ulauncher.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | inputs,
4 | ...
5 | }: {
6 | imports = [
7 | ];
8 |
9 | options = {};
10 |
11 | config = {
12 | environment.systemPackages = with pkgs; [
13 | ulauncher
14 | tlp
15 | # (pkgs.python3.withPackages (ps: with ps; [google]))
16 | ];
17 | /*
18 | systemd.user.services."ulauncher" = {
19 | unitConfig = {
20 | "Description" = "Ulauncher";
21 | };
22 | serviceConfig = {
23 | Type = "oneshot";
24 | ExecStart = "${pkgs.ulauncher}/bin/ulauncher --hide-window";
25 | };
26 | };
27 | */
28 | systemd.user.services."ulauncher" = {
29 | unitConfig = {
30 | "Description" = "Linux Application Launcher";
31 | "Documentation" = ["https://ulauncher.io/"];
32 | };
33 | environment = let
34 | /*
35 | wrapt-timeout-decorator = ps:
36 | with ps; [
37 | (
38 | buildPythonPackage rec {
39 | pname = "wrapt_timeout_decorator";
40 | version = "1.4.0";
41 | src = fetchPypi {
42 | inherit pname version;
43 | sha256 = "";
44 | };
45 | doCheck = false;
46 | propagatedBuildInputs = [
47 | # pkgs.python3Packages.numpy
48 | ];
49 | }
50 | )
51 | ];
52 | */
53 | pydeps = pkgs.python3.withPackages (pp:
54 | with pp; [
55 | google
56 | pytz # https://github.com/tchar/ulauncher-albert-calculate-anything
57 | pint # https://github.com/tchar/ulauncher-albert-calculate-anything
58 | requests # https://github.com/tchar/ulauncher-albert-calculate-anything
59 | parsedatetime # https://github.com/tchar/ulauncher-albert-calculate-anything
60 | google-api-python-client # https://github.com/Carlosmape/ulauncher-calendar/blob/master/requirements.txt
61 | google-auth-oauthlib # https://github.com/Carlosmape/ulauncher-calendar/blob/master/requirements.txt
62 | pydbus
63 | pygobject3
64 | # (wrapt-timeout-decorator pp)
65 | ]);
66 | pydeps_stable = pkgs.stable.python3.withPackages (pp:
67 | with pp; [
68 | simpleeval # https://github.com/tchar/ulauncher-albert-calculate-anything
69 | ]);
70 | in {
71 | PYTHONPATH = "${pydeps}/${pydeps.sitePackages}:${pydeps_stable}/${pydeps_stable.sitePackages}";
72 | };
73 | serviceConfig = {
74 | Type = "simple";
75 | Restart = "always";
76 | RestartSec = 1;
77 | ExecStart = pkgs.writeShellScript "ulauncher-env-wrapper.sh" ''
78 | export PATH="''${XDG_BIN_HOME}:$HOME/.nix-profile/bin:/etc/profiles/per-user/$USER/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin"
79 | export GDK_BACKEND=x11
80 | exec ${pkgs.ulauncher}/bin/ulauncher --hide-window
81 | '';
82 | };
83 | };
84 | };
85 | }
86 |
--------------------------------------------------------------------------------
/nix/modules/nixos/virtual-machines.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | # qemu_full
10 | virt-manager
11 | virt-viewer
12 | dnsmasq
13 | vde2
14 | bridge-utils
15 | netcat-openbsd
16 | libguestfs
17 | ];
18 | virtualisation.libvirtd.enable = true;
19 | programs.dconf.enable = true;
20 | };
21 | }
22 |
--------------------------------------------------------------------------------
/nix/modules/nixos/wayland.nix:
--------------------------------------------------------------------------------
1 | {
2 | pkgs,
3 | inputs,
4 | ...
5 | }: {
6 | imports = [
7 | ./desktop.nix
8 | ./ulauncher.nix
9 | ];
10 |
11 | options = {};
12 |
13 | config = {
14 | environment.systemPackages = with pkgs; [
15 | cliphist
16 | eww
17 | kanshi
18 | tofi
19 | wayland
20 | wev
21 | wl-clipboard
22 | wlr-randr
23 | wlprop
24 | wofi
25 | ];
26 | hardware.brillo.enable = true;
27 | services.dbus.enable = true;
28 | security.pam.services.swaylock = {};
29 | xdg.portal = {
30 | enable = true;
31 | wlr.enable = true;
32 | # lxqt.enable = true;
33 | extraPortals = [pkgs.xdg-desktop-portal-gtk];
34 | # extraPortals = with pkgs; [
35 | # xdg-desktop-portal-wlr
36 | # xdg-desktop-portal-gtk
37 | # ];
38 | };
39 | };
40 | }
41 |
--------------------------------------------------------------------------------
/nix/modules/nixos/webdev.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ./javascript.nix
4 | ./typescript.nix
5 | ./elm.nix
6 | ];
7 |
8 | options = {};
9 |
10 | config = {
11 | environment.systemPackages = with pkgs; [
12 | /*
13 | nodePackages.vscode-css-languageserver-bin
14 | nodePackages.vscode-html-languageserver-bin
15 | */
16 | vscode-langservers-extracted
17 | ];
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/nix/modules/nixos/zsh.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | imports = [
3 | ];
4 |
5 | options = {};
6 |
7 | config = {
8 | environment.systemPackages = with pkgs; [
9 | zsh
10 | zsh-syntax-highlighting
11 | ];
12 | environment.shells = with pkgs; [zsh];
13 | programs.zsh.enable = true;
14 | users.defaultUserShell = pkgs.zsh;
15 | };
16 | }
17 |
--------------------------------------------------------------------------------
/nix/nixpkgs.nix:
--------------------------------------------------------------------------------
1 | # A nixpkgs instance that is grabbed from the pinned nixpkgs commit in the lock file
2 | # This is useful to avoid using channels when using legacy nix commands
3 | let
4 | lock = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.nixpkgs.locked;
5 | in
6 | import (fetchTarball {
7 | url = "https://github.com/nixos/nixpkgs/archive/${lock.rev}.tar.gz";
8 | sha256 = lock.narHash;
9 | })
10 |
--------------------------------------------------------------------------------
/nix/pkgs/aria_ng/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | stdenv,
4 | fetchFromGitHub,
5 | makeWrapper,
6 | pkgs,
7 | fetchzip,
8 | }:
9 | stdenv.mkDerivation rec {
10 | pname = "aria_ng";
11 | version = "1.3.4";
12 |
13 | src = fetchzip {
14 | url = "https://github.com/mayswind/AriaNg/releases/download/${version}/AriaNg-${version}.zip";
15 | sha256 = "sha256-JTJ/PAgpuMGIIBBqiCkWFcFu7a7GVpBvJ/HoRF+NGAk=";
16 | stripRoot = false;
17 | };
18 |
19 | nativeBuildInputs = with pkgs; [];
20 |
21 | installPhase = ''
22 | runHook preInstall
23 | mkdir -p "$out"
24 | cp -r * "$out/"
25 | runHook postInstall
26 | '';
27 | }
28 |
--------------------------------------------------------------------------------
/nix/pkgs/bemoji/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | stdenvNoCC,
4 | fetchFromGitHub,
5 | makeWrapper,
6 | pkgs,
7 | }:
8 | stdenvNoCC.mkDerivation rec {
9 | pname = "bemoji";
10 | version = "0.3.0";
11 |
12 | src = fetchFromGitHub {
13 | owner = "marty-oehme";
14 | repo = pname;
15 | rev = version;
16 | sha256 = "sha256-XXNrUaS06UHF3cVfIfWjGF1sdPE709W2tFhfwTitzNs=";
17 | };
18 |
19 | nativeBuildInputs = with pkgs; [makeWrapper wofi wl-clipboard wtype];
20 |
21 | installPhase = ''
22 | runHook preInstall
23 | install -Dm755 bemoji "$out/share/bemoji/bemoji.sh"
24 | install -Dm644 assets/* -t "$out/share/bemoji/assets"
25 |
26 | mkdir -p "$out/bin"
27 | ln -s "$out/share/bemoji/bemoji.sh" "$out/bin/bemoji"
28 | wrapProgram "$out/bin/bemoji" \
29 | --prefix PATH : "${lib.makeBinPath (with pkgs; [wofi wl-clipboard wtype])}"
30 |
31 | runHook postInstall
32 | '';
33 | }
34 |
--------------------------------------------------------------------------------
/nix/pkgs/default.nix:
--------------------------------------------------------------------------------
1 | # Custom packages, that can be defined similarly to ones from nixpkgs
2 | # You can build them using 'nix build .#example' or (legacy) 'nix-build -A example'
3 | {
4 | pkgs ? (import ../nixpkgs.nix) {},
5 | system,
6 | fenix,
7 | pfui,
8 | ghostty,
9 | }: {
10 | # fenix = import fenix {inherit system;};
11 | rust-toolchain = fenix.packages.${system}.stable.toolchain;
12 | rust-analyzer-nightly = fenix.packages.${system}.stable.rust-analyzer;
13 | pfui = pfui.defaultPackage.${system};
14 | ghostty = ghostty.packages.${system}.default;
15 | eisvogel = pkgs.callPackage ./eisvogel {};
16 | # logseq-wrapped = pkgs.callPackage ./logseq-wrapped {};
17 | # logseq-wrapped = if system == "x86_64-linux" then pkgs.callPackage ./logseq-wrapped {} else null;
18 | # logseq-wrapped = lib.optional (system == "x86_64-linux") (pkgs.callPackage ./logseq-wrapped {});
19 | bemoji = pkgs.callPackage ./bemoji {};
20 | wofi-calc = pkgs.callPackage ./wofi-calc {};
21 | # tree-sitter-grammar = {
22 | # norg = pkgs.callPackage ./tree-sitter-grammar {
23 | # lang-name = "norg";
24 | # repo-owner = "nvim-neorg";
25 | # repo-name = "tree-sitter-norg";
26 | # repo-version = "0.1.0";
27 | # repo-rev = "dfac5ad2740a79b18ae849590a924e7bad3f1b23";
28 | # repo-sha = "sha256-nH9Y2mYXRehqvq0kp1DkoI2dIAaCidFAxlKos8wZmks=";
29 | # };
30 | # };
31 | aria_ng = pkgs.callPackage ./aria_ng {};
32 | dynamic-wallpapers = pkgs.callPackage ./dynamic-wallpapers {};
33 | homepage = pkgs.callPackage ./homepage {};
34 | fennel-language-server = pkgs.callPackage ./fennel-language-server {};
35 | swaylock-plugin = pkgs.callPackage ./swaylock-plugin {};
36 | ltex-nightly = pkgs.callPackage ./ltex-nightly {};
37 | }
38 |
--------------------------------------------------------------------------------
/nix/pkgs/dynamic-wallpapers/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | stdenv,
4 | fetchFromGitHub,
5 | makeWrapper,
6 | pkgs,
7 | fetchzip,
8 | }:
9 | stdenv.mkDerivation rec {
10 | pname = "dynamic-wallpapers";
11 | version = "0.0.1";
12 | ref = "de6bc647b4a8aa459bbc6dc8fc411569bec7ac44";
13 |
14 | src = fetchFromGitHub {
15 | owner = "adi1090x";
16 | repo = "dynamic-wallpaper";
17 | rev = ref;
18 | sha256 = "sha256-Tq4m4MnUMVt3PzKsWtIp5s01XOv3cs+eW4U8VQZ4OlA=";
19 | };
20 | # src = fetchzip {
21 | # url = "https://github.com/adi1090x/dynamic-wallpaper/archive/${ref}.zip";
22 | # sha256 = "sha256-Tq4m4MnUMVt3PzKsWtIp5s01XOv3cs+eW4U8VQZ4OlA=";
23 | # stripRoot = false;
24 | # };
25 |
26 | nativeBuildInputs = with pkgs; [];
27 |
28 | installPhase = ''
29 | runHook preInstall
30 | ls
31 | mkdir -p "$out"
32 | cp -r ./images "$out/images"
33 | runHook postInstall
34 | '';
35 | }
36 |
--------------------------------------------------------------------------------
/nix/pkgs/eisvogel/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | stdenvNoCC,
4 | fetchFromGitHub,
5 | makeWrapper,
6 | pkgs,
7 | fetchzip,
8 | }:
9 | stdenvNoCC.mkDerivation rec {
10 | pname = "eisvogel";
11 | version = "2.2.0";
12 |
13 | # src = fetchFromGitHub {
14 | # owner = "Wandmalfarbe";
15 | # repo = "pandoc-latex-template";
16 | # rev = "v${version}";
17 | # sha256 = "sha256-5/xKGleBuyL+F1l7FnXkDMZT+wcpDve83BeoRkpDt18=";
18 | # };
19 | src = fetchzip {
20 | url = "https://github.com/Wandmalfarbe/pandoc-latex-template/releases/download/v2.2.0/Eisvogel.tar.gz";
21 | sha256 = "sha256-rGX4GyPk2HcGfilmtz3l61tF0l3GHCSEhuzFLifrxHU=";
22 | stripRoot = false;
23 | };
24 |
25 | nativeBuildInputs = with pkgs; [];
26 |
27 | installPhase = ''
28 | runHook preInstall
29 | sed -i 's/pagenumbering{arabic}//g' eisvogel.latex # This makes title page count as page 1
30 | sed -i 's/\\begin{document}/\\begin{document}\n\\pagenumbering{Roman}/g' eisvogel.latex # This makes it use roman numberals for page counting before the main content
31 | install -Dm644 eisvogel.latex "$out/share/pandoc/templates/eisvogel.latex"
32 | runHook postInstall
33 | '';
34 | }
35 |
--------------------------------------------------------------------------------
/nix/pkgs/fennel-language-server/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | stdenv,
3 | pkgs,
4 | fetchFromGitHub,
5 | rustPlatform,
6 | ...
7 | }:
8 | rustPlatform.buildRustPackage rec {
9 | pname = "fennel-language-server";
10 | version = "0.1.0";
11 |
12 | src = fetchFromGitHub {
13 | owner = "rydesun";
14 | repo = pname;
15 | rev = "d0c65db2ef43fd56390db14c422983040b41dd9c";
16 | hash = "sha256-KU2MPmgHOS/WesBzCmEoHHXHoDWCyqjy49tmMmZw5BQ=";
17 | };
18 |
19 | cargoHash = "sha256-yYjs7vwKSTriTjUrvKECDyLWVkN1EMrYuPiI3c5lY5U=";
20 | verifyCargoDeps = true;
21 | }
22 |
--------------------------------------------------------------------------------
/nix/pkgs/firefox-trapped/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | stdenv,
3 | pkgs,
4 | }:
5 | stdenv.mkDerivation {
6 | name = "firefox-trapped";
7 | version = "1.0";
8 |
9 | buildInputs = with pkgs; [
10 | stable.firefox-bin
11 | ];
12 |
13 | src = pkgs.writeShellScriptBin "firefox-trapper.sh" ''
14 | systemd-run --user --scope -p MemoryLimit=8G -p MemorySwapMax=0 ${pkgs.stable.firefox-bin}/bin/firefox &!
15 | '';
16 |
17 | installPhase = ''
18 | mkdir -p $out/bin
19 | cp $src/bin/firefox-trapper.sh $out/bin/firefox
20 | chmod +x $out/bin/firefox
21 | cp -r ${pkgs.stable.firefox-bin}/share $out/
22 | # cp -r ${pkgs.stable.firefox-bin}/lib $out/
23 | '';
24 |
25 | meta = {
26 | conflicts = [{name = "firefox";} {name = "firefox-bin";}];
27 | };
28 | }
29 |
--------------------------------------------------------------------------------
/nix/pkgs/homepage/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | stdenv,
4 | fetchFromGitHub,
5 | makeWrapper,
6 | pkgs,
7 | fetchzip,
8 | }:
9 | pkgs.buildNpmPackage rec {
10 | pname = "homepage";
11 | version = "0.6.16";
12 |
13 | # src = ./.;
14 | # src = fetchzip {
15 | # url = "https://github.com/benphelps/homepage/archive/refs/tags/v0.6.16.tar.gz";
16 | # sha256 = "sha256-CUq1nTyQK84pKbj1pQfW0m+8kuABWnE0DyaJr0DhxEk=";
17 | # # stripRoot = false;
18 | # };
19 | src = fetchFromGitHub {
20 | owner = "benphelps";
21 | repo = pname;
22 | rev = "v${version}";
23 | sha256 = "sha256-38ISnMxov7tZ6TeTZ+yDrFcKE289rwaR1VABKF+J++g=";
24 | };
25 |
26 | nativeBuildInputs = with pkgs; [python39];
27 |
28 | npmDepsHash = "sha256-O6SQYx5vxscMsbWv0ynUYqdUkOp/nMtdvlZ/Mp95sBY=";
29 |
30 | # The prepack script runs the build script, which we'd rather do in the build phase.
31 | npmPackFlags = ["--ignore-scripts"];
32 |
33 | NODE_OPTIONS = "--openssl-legacy-provider";
34 |
35 | preBuild = ''
36 | mkdir -p config
37 | '';
38 |
39 | installPhase = ''
40 | mkdir -p $out/share/homepage/config/logs
41 | cp -r ./.next/standalone/. $out/share/homepage/
42 | cp -r ./src/skeleton/* $out/share/homepage/config/
43 | cp -r ./.next/static/ $out/share/homepage/.next/
44 | touch $out/share/homepage/config/logs/homepage.log
45 | '';
46 | }
47 |
--------------------------------------------------------------------------------
/nix/pkgs/logseq-wrapped/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | stdenv,
3 | pkgs,
4 | }:
5 | stdenv.mkDerivation {
6 | name = "logseq-wrapped";
7 | version = "1.0";
8 |
9 | buildInputs = with pkgs; [
10 | logseq
11 | libnotify
12 | ];
13 |
14 | src = pkgs.writeShellScriptBin "logseq-wrapper.sh" ''
15 | ${pkgs.libnotify}/bin/notify-send "Logseq" "Syncing logseq database";
16 | /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/.local/share/logseq false
17 | ${pkgs.logseq}/bin/logseq
18 | ${pkgs.libnotify}/bin/notify-send "Logseq" "Syncing logseq database";
19 | /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/.local/share/logseq false
20 | '';
21 |
22 | installPhase = ''
23 | mkdir -p $out/bin
24 | cp $src/bin/logseq-wrapper.sh $out/bin/logseq
25 | chmod +x $out/bin/logseq
26 | cp -r ${pkgs.logseq}/share $out/
27 | '';
28 |
29 | meta = {
30 | conflicts = [{name = "logseq";}];
31 | };
32 | }
33 |
--------------------------------------------------------------------------------
/nix/pkgs/ltex-nightly/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | stdenvNoCC,
4 | fetchurl,
5 | fetchzip,
6 | makeBinaryWrapper,
7 | jre_headless,
8 | unzip,
9 | tree,
10 | }:
11 | stdenvNoCC.mkDerivation rec {
12 | pname = "ltex-nightly";
13 | version = "15.5.0-alpha.nightly.2025-04-04";
14 |
15 | src = fetchurl {
16 | url = "https://github.com/ltex-plus/vscode-ltex-plus/releases/download/nightly/vscode-ltex-plus-${version}-offline-linux-aarch64.vsix";
17 | sha256 = "sha256-SLawFwnZsZ8cDhYmP9sE/W+clw7jadNavPS+verDFsQ=";
18 | };
19 |
20 | nativeBuildInputs = [makeBinaryWrapper unzip tree];
21 | phases = ["installPhase"]; # Removes all phases except installPhase
22 |
23 | installPhase = ''
24 | runHook preInstall
25 | cp $src .
26 | tree
27 | unzip *-vscode-ltex-plus-${version}-offline-linux-aarch64.vsix
28 | tree
29 |
30 | cd extension/lib/ltex-ls-plus-18.5.0-alpha.nightly.2025-04-04
31 | mkdir -p $out
32 | cp -rfv bin/ lib/ $out
33 | rm -fv $out/bin/.lsp-cli.json $out/bin/*.bat
34 | for file in $out/bin/{ltex-ls-plus,ltex-cli-plus}; do
35 | wrapProgram $file --set JAVA_HOME "${jre_headless}"
36 | done
37 |
38 | runHook postInstall
39 | '';
40 |
41 | meta = let
42 | inherit (lib) licenses maintainers;
43 | in {
44 | homepage = "https://ltex-plus.github.io/ltex-plus/";
45 | description = "LSP language server for LanguageTool";
46 | license = licenses.mpl20;
47 | mainProgram = "ltex-cli-plus";
48 | maintainers = [maintainers.FirelightFlagboy];
49 | platforms = jre_headless.meta.platforms;
50 | };
51 | }
52 |
--------------------------------------------------------------------------------
/nix/pkgs/pfui/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | stdenv,
3 | pkgs,
4 | fetchFromGitHub,
5 | rustPlatform,
6 | ...
7 | }: let
8 | libPath = with pkgs;
9 | lib.makeLibraryPath [
10 | libpulseaudio
11 | ];
12 | in
13 | rustPlatform.buildRustPackage rec {
14 | pname = "pfui";
15 | version = "0.1.0";
16 |
17 | src = fetchFromGitHub {
18 | owner = "b3nj5m1n";
19 | repo = pname;
20 | rev = version;
21 | hash = "sha256-SeTEGq0R3TthHbxC2/mZAk/Kvgjt13l7sw1tcje7Wxg=";
22 | };
23 |
24 | cargoHash = "sha256-T3EBNvTifHbn5Lh4owMlqpUSoL6vXLBVRbhHPzjBb0M=";
25 | verifyCargoDeps = true;
26 |
27 | nativeBuildInputs = [pkgs.makeWrapper];
28 | buildInputs = with pkgs; [
29 | libpulseaudio
30 | ];
31 | LD_LIBRARY_PATH = libPath;
32 |
33 | preConfigure = ''
34 | export HOME=$(mktemp -d)
35 | '';
36 | postInstall = ''
37 | wrapProgram "$out/bin/pfui" --prefix LD_LIBRARY_PATH : "${libPath}"
38 | '';
39 | }
40 |
--------------------------------------------------------------------------------
/nix/pkgs/swaylock-plugin/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | stdenv,
4 | fetchFromGitHub,
5 | makeWrapper,
6 | pkgs,
7 | fetchzip,
8 | }:
9 | stdenv.mkDerivation rec {
10 | pname = "swaylock-plugin";
11 | version = "0.0.1";
12 | ref = "9a267f3e4570edf4b2e52f35dec233e5922475d0";
13 |
14 | src = fetchFromGitHub {
15 | owner = "mstoeckl";
16 | repo = "swaylock-plugin";
17 | rev = ref;
18 | sha256 = "sha256-Fl2XbRkapXGLSP5lX3pDOhjpA7Pc9Ht4VJuZCtIrubE=";
19 | };
20 |
21 | nativeBuildInputs = with pkgs; [meson wayland wayland-protocols wayland-scanner libxkbcommon cairo gdk-pixbuf pam pkg-config ninja scdoc];
22 |
23 | mesonFlags = [
24 | "-Dpam=enabled"
25 | "-Dgdk-pixbuf=enabled"
26 | "-Dman-pages=enabled"
27 | ];
28 |
29 | /*
30 | installPhase = ''
31 | runHook preInstall
32 | mkdir -p "$out/bin"
33 | mkdir -p "$out/etc/pam.d"
34 | cp ./swaylock-plugin "$out/bin/"
35 | echo "auth include login" > "$out/etc/pam.d/swaylock-plugin"
36 | runHook postInstall
37 | '';
38 | */
39 | }
40 |
--------------------------------------------------------------------------------
/nix/pkgs/tree-sitter-grammar/default.nix:
--------------------------------------------------------------------------------
1 | # This will put the generated parser in /run/current-system/sw/share/ts-grammars
2 | # I tried to make this generic but it will probably only work for neorg without some extra work
3 | {
4 | lang-name,
5 | repo-owner,
6 | repo-name,
7 | repo-version,
8 | repo-rev,
9 | repo-sha,
10 | lib,
11 | stdenvNoCC,
12 | fetchFromGitHub,
13 | makeWrapper,
14 | pkgs,
15 | }:
16 | stdenvNoCC.mkDerivation rec {
17 | pname = repo-name;
18 | version = repo-version;
19 |
20 | src = fetchFromGitHub {
21 | owner = repo-owner;
22 | repo = repo-name;
23 | rev = repo-rev;
24 | sha256 = repo-sha;
25 | };
26 |
27 | nativeBuildInputs = with pkgs; [tree-sitter nodejs];
28 |
29 | installPhase = ''
30 | runHook preInstall
31 | install -Dm644 grammar.js -t "$out/share/ts-grammars/${pname}"
32 | install -Dm644 package.json -t "$out/share/ts-grammars/${pname}"
33 | cd $out/share/ts-grammars/${pname}
34 | tree-sitter generate
35 | runHook postInstall
36 | '';
37 | }
38 |
--------------------------------------------------------------------------------
/nix/pkgs/wofi-calc/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | stdenvNoCC,
4 | fetchFromGitHub,
5 | makeWrapper,
6 | pkgs,
7 | }:
8 | stdenvNoCC.mkDerivation rec {
9 | pname = "wofi-calc";
10 | version = "1.1";
11 |
12 | src = fetchFromGitHub {
13 | owner = "Zeioth";
14 | repo = pname;
15 | rev = version;
16 | sha256 = "sha256-TqxlVivyMITB2/sT84ywPwEN54kENBzJ/hQfUeSNTKY=";
17 | };
18 |
19 | nativeBuildInputs = with pkgs; [makeWrapper wofi libqalculate];
20 |
21 | installPhase = ''
22 | runHook preInstall
23 | install -Dm755 wofi-calc.sh "$out/share/wofi-calc/wofi-calc.sh"
24 |
25 | mkdir -p "$out/bin"
26 | ln -s "$out/share/wofi-calc/wofi-calc.sh" "$out/bin/wofi-calc"
27 | wrapProgram "$out/bin/wofi-calc" \
28 | --prefix PATH : "${lib.makeBinPath (with pkgs; [wofi libqalculate])}"
29 |
30 | runHook postInstall
31 | '';
32 | }
33 |
--------------------------------------------------------------------------------
/nix/pkgs/zotero-wrapped/default.nix:
--------------------------------------------------------------------------------
1 | {
2 | stdenv,
3 | pkgs,
4 | }:
5 | stdenv.mkDerivation {
6 | name = "zotero-wrapped";
7 | version = "1.0";
8 |
9 | buildInputs = with pkgs; [
10 | zotero
11 | libnotify
12 | ];
13 |
14 | src = pkgs.writeShellScriptBin "zotero-wrapper.sh" ''
15 | ${pkgs.libnotify}/bin/notify-send "Zotero" "Syncing zotero database";
16 | /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/Zotero false
17 | ${pkgs.zotero}/bin/zotero
18 | ${pkgs.libnotify}/bin/notify-send "Zotero" "Syncing zotero database";
19 | /usr/bin/env sh /home/b3nj4m1n/.local/share/bin/auto_commit.sh /home/b3nj4m1n/Zotero false
20 | '';
21 |
22 | installPhase = ''
23 | mkdir -p $out/bin
24 | cp $src/bin/zotero-wrapper.sh $out/bin/zotero
25 | chmod +x $out/bin/zotero
26 | cp -r ${pkgs.zotero}/share $out/
27 | '';
28 |
29 | meta = {
30 | conflicts = [{name = "zotero";}];
31 | };
32 | }
33 |
--------------------------------------------------------------------------------
/nix/shell.nix:
--------------------------------------------------------------------------------
1 | # Shell for bootstrapping flake-enabled nix and home-manager
2 | # You can enter it through 'nix develop' or (legacy) 'nix-shell'
3 | {pkgs ? (import ./nixpkgs.nix) {}}: {
4 | default = pkgs.mkShell {
5 | # Enable experimental features without having to specify the argument
6 | NIX_CONFIG = "experimental-features = nix-command flakes";
7 | nativeBuildInputs = with pkgs; [nix home-manager git act];
8 | };
9 | }
10 |
--------------------------------------------------------------------------------
/scripts/auto_commit.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # shellcheck disable=SC2015
3 |
4 | # Automatically commit all changes in the given git repository and push
5 |
6 | REPO_DIR="$1"
7 | SILENT="$2"
8 |
9 | NAME="Commitbot"
10 | EMAIL=""
11 |
12 | # ----- ----- ----- Do not change anything below this line ----- ----- ----- #
13 |
14 | unalias -a
15 |
16 | fuckup() {
17 | echo "runnign test"
18 | cd "$REPO_DIR" || exit 1
19 | echo "$PWD"
20 | if git rev-parse --verify -q REBASE_HEAD >/dev/null 2>&1 \
21 | || git rev-parse --verify -q MERGE_HEAD >/dev/null 2>&1 \
22 | || [ "$(cd "$REPO_DIR" && git diff --name-only --diff-filter=U --relative | head -c1 | wc -c)" -ne 0 ] \
23 | ; then
24 | XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send -u "critical" --wait "Something's gone very wrong: $REPO_DIR"&
25 | exit 1
26 | fi
27 | }
28 | fuckup
29 |
30 | notify() {
31 | if [ "$SILENT" != true ]; then
32 | if command -v termux-setup-storage; then
33 | termux-notification -c "$1"
34 | else
35 | XDG_RUNTIME_DIR=/run/user/$(id -u) notify-send "$1"
36 | fi
37 | fi
38 | }
39 |
40 | GIT_COMMITTER_NAME="$NAME"
41 | GIT_COMMITTER_EMAIL="$EMAIL"
42 |
43 | AUTHOR="$NAME <$EMAIL>"
44 |
45 | read -r -d '' MESSAGE << EOM
46 | $(date -u +"%a %d %b %Y %H:%M") [auto commit]
47 |
48 | $(date +%s)
49 | EOM
50 |
51 | eval "$(keychain --dir "$HOME/.cache/keychain" --eval --quiet "{{ ssh_key_name }}")"
52 |
53 | cd "$REPO_DIR" && git pull || notify "Failed pulling $REPO_DIR"
54 | if [ "$(git status --porcelain)" ]; then
55 | cd "$REPO_DIR" && git add --all || notify "Failed staging changes in $REPO_DIR"
56 | cd "$REPO_DIR" && git -c user.name="$GIT_COMMITTER_NAME" -c user.email="$GIT_COMMITTER_EMAIL" commit --no-gpg-sign --author "$AUTHOR" -m "$MESSAGE" || notify "Failed committing changes in $REPO_DIR"
57 | cd "$REPO_DIR" && printf "%s\n" "$SSH_PW" | git push || notify "Failed pushing changes in $REPO_DIR"
58 | fi
59 | fuckup
60 |
61 | notify "Done updating changes in $REPO_DIR"
62 |
63 | date +%s > "/tmp/sync-status-$(echo "$REPO_DIR" | sha256sum | cut -d' ' --fields=1)"
64 |
--------------------------------------------------------------------------------
/scripts/autoclick.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env nix-shell
2 | #! nix-shell -i bash -p bash gum
3 |
4 | export YDOTOOL_SOCKET="/tmp/.ydotool_socket"
5 | export SWAYSOCK="/run/user/1000/sway-ipc.1000.25003.sock"
6 |
7 |
8 | # # Initialize a variable to store the PID of the running command
9 | # command_pid=""
10 |
11 | # # Listen to workspace events and toggle the command
12 | # while true; do
13 | # command_pid=$(swaymsg -t subscribe '[ "workspace" ]' | while read -r line; do
14 | # if [ -z "$command_pid" ]; then
15 | # # If command_pid is empty, start the command and store its PID
16 | # ydotool click --repeat 100 --next-delay 25 0xC0 &
17 | # printf "%s" $!
18 | # else
19 | # # If command_pid is not empty, kill the command and reset command_pid
20 | # kill -9 "$command_pid"
21 | # printf ""
22 | # fi
23 | # break
24 | # done &)
25 | # done
26 |
27 |
28 | ydotool click --repeat 1 --next-delay 25 0xC0 &
29 |
30 | sleep 1
31 |
32 | ydotool click --repeat 100000000000 --next-delay 25 0xC0 &
33 |
34 | trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
35 | swaymsg -t subscribe '[ "workspace" ]' | while read -r line; do
36 | exit
37 | done
38 |
--------------------------------------------------------------------------------
/scripts/backup_sh_history.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | BACKUP_FILE="$1"
4 | BACKUP_DIR="$(dirname "$BACKUP_FILE")"
5 | ATUIN_FILE="$HOME/.local/share/atuin/history.db"
6 |
7 | SILENT="$2"
8 |
9 | cd "$BACKUP_DIR" || exit
10 | git pull
11 |
12 | NEW="$(
13 | while read -d $'\x1E' -r row; do
14 | printf "%q\n" "$row"
15 | done < <(sqlite3 -batch -noheader -ascii "$ATUIN_FILE" 'SELECT * FROM history;')
16 | )"
17 |
18 | CURRENT=$(cat "$BACKUP_FILE")
19 |
20 | printf "%s\n%s" "$NEW" "$CURRENT" | sort | uniq > "$BACKUP_FILE"
21 |
22 | "$HOME"/.local/share/bin/auto_commit.sh "$BACKUP_DIR" "$SILENT"
23 |
--------------------------------------------------------------------------------
/scripts/bsod.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Creates a blue screen of death when laptop battery needs to be swapped
4 | # Run by systemd unit on a timer (see battery-thing.nix)
5 |
6 | # if [ "$(id -u)" -ne 0 ]; then
7 | # echo "This script must be run as root"
8 | # exit 1
9 | # fi
10 |
11 | # Check if battery level is below 60%
12 | battery_level=$(cat /sys/class/power_supply/BAT0/capacity)
13 | if [ "$battery_level" -gt 50 ]; then
14 | exit
15 | fi
16 |
17 | # Check if battery is discharging
18 | battery_status=$(cat /sys/class/power_supply/BAT0/status)
19 | if [ "$battery_status" != "Discharging" ]; then
20 | exit
21 | fi
22 |
23 | chvt 4
24 | echo -e "\033c" | tee /dev/tty4
25 |
26 | cols=$(stty -F /dev/tty4 size | cut -d' ' -f2)
27 | rows=$(stty -F /dev/tty4 size | cut -d' ' -f1)
28 |
29 | # Turn background blue
30 | printf "\033[44m" | tee /dev/tty4
31 | # Unless the battery is really low, in which case it should be red
32 | if [ "$battery_level" -lt 20 ]; then
33 | echo -e "\033[41m" | tee /dev/tty4
34 | fi
35 |
36 | x="$rows"
37 | y="$cols"
38 |
39 | middle_row=$((x / 2 + 1))
40 |
41 | for i in $(seq 1 "$x"); do
42 | if [ "$i" -eq "$middle_row" ]; then
43 | text="WARNING: SWAP BATTERY"
44 | padding=$(( (y - ${#text}) / 2 ))
45 | row=""
46 | for j in $(seq 1 "$padding"); do
47 | row="${row} "
48 | done
49 | row="${row}${text}"
50 | printf "%s" "$row" | tee /dev/tty4
51 | else
52 | row=""
53 | for j in $(seq 1 "$y"); do
54 | row="${row} "
55 | done
56 | printf "%s" "$row" | tee /dev/tty4
57 | fi
58 | done
59 |
--------------------------------------------------------------------------------
/scripts/bspwm-resize.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | size=${2:-'10'}
4 | dir=$1
5 |
6 | # Find current window mode
7 | is_tiled() {
8 | bspc query -T -n | grep -q '"state":"tiled"'
9 | }
10 | # If the window is floating, move it
11 | if ! is_tiled; then
12 | #only parse input if window is floating,tiled windows accept input as is
13 | case "$dir" in
14 | west) switch="-w"
15 | sign="-"
16 | ;;
17 | east) switch="-w"
18 | sign="+"
19 | ;;
20 | north) switch="-h"
21 | sign="-"
22 | ;;
23 | south) switch="-h"
24 | sign="+"
25 | ;;
26 | esac
27 | xdo resize "${switch}" "${sign}""${size}"
28 |
29 | # Otherwise, window is tiled: switch with window in given direction
30 | else
31 | case "$dir" in
32 | west) bspc node @west -r -"$size" || bspc node @east -r -"${size}"
33 | ;;
34 | east) bspc node @west -r +"$size" || bspc node @east -r +"${size}"
35 | ;;
36 | north) bspc node @south -r -"$size" || bspc node @north -r -"${size}"
37 | ;;
38 | south) bspc node @south -r +"$size" || bspc node @north -r +"${size}"
39 | ;;
40 | esac
41 | fi
42 |
--------------------------------------------------------------------------------
/scripts/bspwm-swap-or-move-in.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # By https://github.com/ikn/
4 |
5 | dir=$1
6 | bspc node -n "${dir}".!automatic || bspc node -s "${dir}"
7 |
--------------------------------------------------------------------------------
/scripts/colors.sh:
--------------------------------------------------------------------------------
1 | export RED='\033[0;31m'
2 | export GREEN='\033[0;32m'
3 | export YELLOW='\033[0;33m'
4 | export PURPLE='\033[0;35m'
5 | export LGREEN='\033[1;32m'
6 | export LORANGE='\033[1;33m'
7 | export LBLUE='\033[1;34m'
8 | export LPURPLE='\033[1;35m'
9 | export LCYAN='\033[1;36m'
10 | export NC='\033[0m'
11 |
--------------------------------------------------------------------------------
/scripts/cookie_clicker_ascend_loop.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env nix-shell
2 | #! nix-shell -i bash -p bash ydotool
3 |
4 | export YDOTOOL_SOCKET="/tmp/.ydotool_socket"
5 |
6 | buy_all_upgrades() {
7 | # Move to buy all button
8 | ydotool mousemove --absolute -x 865 -y 73
9 | ydotool click 0xC0
10 | reset_upgrade_menu
11 | }
12 | ascend() {
13 | # Move to legacy button
14 | ydotool mousemove --absolute -x 770 -y 40
15 | ydotool click 0xC0
16 | # Move to ascend button
17 | ydotool mousemove --absolute -x 480 -y 305
18 | ydotool click 0xC0
19 | sleep 7
20 | # Move to reincarnate button
21 | ydotool mousemove --absolute -x 480 -y 50
22 | ydotool click 0xC0
23 | # Move to yes button
24 | ydotool mousemove --absolute -x 470 -y 280
25 | ydotool click 0xC0
26 | }
27 | buy_cursors() {
28 | # Move to cursors
29 | ydotool mousemove --absolute -x 865 -y 150
30 | ydotool click --repeat 1 --next-delay 200 0xC0
31 | }
32 | buy_condensors() {
33 | ydotool mousemove --absolute -x 905 -y 530
34 | ydotool click --repeat 1 --next-delay 200 0xC0
35 | }
36 | buy_100() {
37 | ydotool mousemove --absolute -x 905 -y 125
38 | ydotool click 0xC0
39 | }
40 | reset_upgrade_menu() {
41 | sleep 0.1
42 | ydotool mousemove --absolute -x 480 -y 305
43 | sleep 0.2
44 | }
45 |
46 | loop() {
47 | while true
48 | do
49 | buy_all_upgrades
50 | buy_100
51 | buy_cursors
52 | sleep 2
53 | buy_all_upgrades
54 | buy_100
55 | buy_cursors
56 | buy_condensors
57 | buy_all_upgrades
58 | sleep 2
59 | buy_all_upgrades
60 | buy_100
61 | buy_cursors
62 | buy_condensors
63 | buy_all_upgrades
64 | sleep 2
65 | buy_all_upgrades
66 | buy_100
67 | buy_cursors
68 | buy_condensors
69 | buy_all_upgrades
70 | sleep 2
71 | buy_all_upgrades
72 | buy_100
73 | buy_cursors
74 | buy_condensors
75 | buy_all_upgrades
76 | sleep 2
77 | buy_all_upgrades
78 | buy_100
79 | buy_cursors
80 | buy_condensors
81 | buy_all_upgrades
82 | sleep 2
83 | # buy_all_upgrades
84 | # sleep 5
85 | ascend
86 | sleep 1
87 | done
88 | }
89 | loop
90 |
--------------------------------------------------------------------------------
/scripts/download_yt_music_favorites.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env nix-shell
2 | #! nix-shell -i bash -p bash gum
3 |
4 | # Downloads youtube music favorites into navidrome compatible file structure
5 | # and saves m3u of playlist
6 | # After running: su, then
7 | # rsync -rauL --info=progress2 . /var/lib/navidrome/music
8 | # then do full scan in navidrome web interface
9 |
10 | BASE_DIRECTORY="."
11 | PlAYLIST_FILE="favs.m3u"
12 |
13 | echo "#EXTM3U" > "$PlAYLIST_FILE"
14 |
15 | start_spinner() {
16 | gum spin --spinner "$2" --title "Downloading $1..." sleep 1000 &
17 | SPIN_PID=$!
18 | }
19 |
20 | stop_spinner() {
21 | kill "$SPIN_PID"
22 | }
23 |
24 | yt-dlp "https://music.youtube.com/playlist?list=LM" \
25 | --cookies-from-browser firefox \
26 | -j --flat-playlist \
27 | --parse-metadata "album:%(album)s" \
28 | --parse-metadata "artist:%(artist)s" \
29 | | while IFS= read -r line; do
30 | song_url=$(echo "$line" | jq -r '.url')
31 | title=$(echo "$line" | jq -r '.title')
32 | start_spinner "$title" "globe"
33 | yt-dlp "$song_url" \
34 | --extract-audio --audio-format mp3 \
35 | --cookies-from-browser firefox \
36 | --output "$BASE_DIRECTORY/%(artist)s/%(album)s/%(track_number)s %(title)s.mp3" \
37 | --download-archive archive.txt \
38 | --add-metadata \
39 | --embed-thumbnail \
40 | --parse-metadata "album:%(album)s" \
41 | --parse-metadata "artist:%(artist)s" \
42 | --quiet
43 |
44 | filename=$(fd "$title" -F -e "mp3")
45 | echo "$BASE_DIRECTORY/$filename" >> "$PlAYLIST_FILE"
46 | stop_spinner
47 | done
48 |
49 |
--------------------------------------------------------------------------------
/scripts/downscale-music-collection.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env nix-shell
2 | #! nix-shell -i dash -p dash findutils ffmpeg-full
3 |
4 | # This will loop over all files in the music dir, find files with a high bitrate
5 | # and convert them down to a more reasonable bitrate. Credit: https://askubuntu.com/a/536891
6 |
7 | music_dir="/mnt/wolfpack/music/"
8 |
9 | cd "$music_dir" || exit
10 | find . -name '*.mp3' -exec sh -c 'ffprobe -show_streams -select_streams a:0 "$0" | grep -F "bit_rate=320000" && ffmpeg -y -i "$0" -c:a libmp3lame -b:a 128k /tmp/temp.mp3 && mv /tmp/temp.mp3 "$0"' '{}' \;
11 |
--------------------------------------------------------------------------------
/scripts/emoji-picker.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Opens a menu with a list of unicode emojis, the selection will be copied to clipboard or typed directly
4 | # Taken from here: https://github.com/LukeSmithxyz/voidrice
5 |
6 | if [ "$(loginctl show-session "$(awk '/tty/ {print $1}' <(loginctl))" -p Type | awk -F= '{print $2}')" = "wayland" ]; then
7 | notify-send "emoji picker" "Use bemoji" &
8 | exit
9 | fi
10 |
11 | # Get user selection via rofi -dmenu from emoji file.
12 | # chosen=$(cut -d ';' -f1 ./assets/emoji.txt | rofi -dmenu -i -l 10 -fn "UbuntuMono Nerd Font Mono" -nf "#ff0066" | sed "s/ .*//")
13 | chosen=$(cut -d ';' -f1 /bin/scripts/assets/emoji.txt | rofi -dmenu -p "> " -fn "Twemoji" | sed "s/ .*//")
14 |
15 | # Exit if none chosen.
16 | [ -z "$chosen" ] && exit
17 |
18 | notify-send "emoji picker" "'$chosen' copied to clipboard." &
19 |
--------------------------------------------------------------------------------
/scripts/eww/mpd:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | mpc > /dev/null
4 | while [ $? -ne 0 ]; do
5 | sleep 5
6 | printf "\nMPD not running...\n"
7 | done
8 |
9 | print_info() {
10 | song=$(mpc -f "%artist% - %title%" current)
11 | info=$(mpc)
12 | if grep -q "playing" <<< "$info"
13 | then
14 | printf "\n%s\n" "$(mpc -f "%artist% - %title%" current)"
15 | else
16 | printf "\npaused\n";
17 | fi
18 | }
19 |
20 | print_info
21 | mpc idleloop | while read -r _ ; do
22 | print_info
23 | done
24 |
--------------------------------------------------------------------------------
/scripts/eww/start-eww:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # # https://github.com/elkowar/eww/issues/178#issuecomment-1229498664
4 | # bspc subscribe node_state | while read -r _ _ _ _ state flag; do
5 | # if [ "$state" != fullscreen ]; then continue; fi
6 | # if [ "$flag" = on ]; then
7 | # xdotool search --class eww-bar windowunmap
8 | # else
9 | # xdotool search --class eww-bar windowmap
10 | # fi
11 | # done &
12 |
13 | if [ "$(hostname)" = "emperor" ]
14 | then
15 | eww open bar --screen "2460G4"
16 | eww open smallbar --screen "HP E232"
17 | else
18 | eww open bar
19 | fi
20 |
--------------------------------------------------------------------------------
/scripts/eww/volume:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # https://unix.stackexchange.com/a/230533
4 | print_volume() {
5 | pactl list sinks | grep '^[[:space:]]Volume:' | \
6 | head -n $(( SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,'
7 | }
8 |
9 | volume=$(print_volume)
10 | printf "\n%s\n" "$volume"
11 | pactl subscribe | while read -r _ ; do
12 | new_volume=$(print_volume)
13 | if [ "$volume" != "$new_volume" ]; then
14 | volume="$new_volume"
15 | printf "\n%s\n" "$volume"
16 | fi
17 | done
18 |
--------------------------------------------------------------------------------
/scripts/eww/workspace:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | workspace() {
4 | identifier="$1"
5 | current="$2"
6 | occupied="$3"
7 | name=$(bspc query -d "$identifier" -D --names)
8 | state="empty"
9 | if [[ "$current" == *"$identifier"* ]]; then
10 | state="current"
11 | elif [[ "$occupied" == *"$identifier"* ]]; then
12 | state="occupied"
13 | fi
14 | printf '
15 | {
16 | "name": "%s",
17 | "state": "%s",
18 | "identifier": "%s"
19 | }' "$name" "$state" "$identifier"
20 | }
21 |
22 | workspaces() {
23 | all=$(bspc query -D)
24 | current=$(bspc query -D -d .focused)
25 | occupied=$(bspc query -D -d .occupied)
26 | result="["
27 | while IFS= read -r identifier; do
28 | result="$result$(workspace "$identifier" "$current" "$occupied"),"
29 | done <<< "$all"
30 | result="${result%,*}"
31 | result="$result]"
32 | printf "%s" "$result" | tr --delete '\n' | tr --delete ' '
33 | printf "\n"
34 | }
35 |
36 | workspaces
37 |
38 | workspaces
39 | bspc subscribe all | while read -r _ ; do
40 | printf "\n"
41 | workspaces
42 | done
43 |
--------------------------------------------------------------------------------
/scripts/extract_norg.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | NORG_FILE="$1"
4 |
5 | QUERY="""
6 | (ranged_tag
7 | (tag_name) @name
8 | (ranged_tag_content) @code
9 | (#eq? @name \"code\"))
10 | """
11 |
12 | extraced_code=$(tree-sitter query --captures <(printf "%s" "$QUERY") "$NORG_FILE" | /bin/sed "s/ pattern:\s*\w*, capture:\s*\w*\s*-\s*name, start:\s*(\w*,\s*\w*),\s*end:\s(\w*,\s*\w*),\s*text:\s\`code\`//" | /bin/sed "s/ pattern:\s*\w*, capture:\s*\w*\s*-\s*code, start:\s*(\w*,\s*\w*),\s*end:\s(\w*,\s*\w*),\s*text:\s/---\n/" | awk '{ if (NR!=1) { print substr($0, 3, length($0)-5) } }' RS="---")
13 |
14 | echo "$extraced_code"
15 |
--------------------------------------------------------------------------------
/scripts/fav-song.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # This script grabs the track currently played by cmus and puts the filename into a playlist file
4 | # The menu displayed will contain every file in the specified dir starting with a.
5 | # Typing any name will automatically save to a new filename (Full path needs to be typed)
6 |
7 | # Directory to search for m3u files
8 | dirname="/mnt/Vault/music"
9 | # Filter for finding playlist files
10 | filter="a.*.m3u"
11 |
12 | # Get selection
13 | files=$(find $dirname -maxdepth 1 -name "$filter")
14 | # File to write to
15 | filename=$(printf "%s" "$files" | rofi -dmenu -c)
16 |
17 | [ -z "$filename" ] && exit
18 |
19 | # Get relative path to song and write it to the file
20 | # songname=$(cmus-remote -Q 2>/dev/null | sed "s/file \/mnt\/Vault\/music/./;t;d")
21 | songname=$(mpc -f "%file%" current | sed 's/^/\.\//g')
22 | printf "%s\n" "$songname" >> "$filename"
23 |
24 | # Display notification
25 | filename=$(echo "$filename" | rev | cut -d '/' -f 1 | rev)
26 | songname=$(echo "$songname" | rev | cut -d '/' -f 1 | rev)
27 | notify-send -a "fav-song" "Save song" "Song $songname to $filename successfully"
28 |
--------------------------------------------------------------------------------
/scripts/filestat.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | FILE="$1"
4 | DATABASE="$2"
5 | ABS_PATH="$(realpath "$FILE")"
6 | ABS_PATH="$(printf "%q" "$ABS_PATH")"
7 |
8 | printf "%s\n" "$ABS_PATH"
9 |
10 | sqlite3 "$DATABASE" \
11 | "CREATE TABLE IF NOT EXISTS files (
12 | path TEXT PRIMARY KEY,
13 | path_rel TEXT,
14 | permissions INTEGER,
15 | device_number INTEGER,
16 | raw_mode TEXT,
17 | file_type TEXT,
18 | group_id INTEGER,
19 | num_hardlinks INTEGER,
20 | mount_point TEXT,
21 | size INTEGER,
22 | device_type INTEGER,
23 | user_id INTEGER,
24 | user_name TEXT,
25 | time_birth INTEGER,
26 | time_last_access INTEGER,
27 | time_last_data_modification INTEGER,
28 | time_last_status_modification INTEGER
29 | );"
30 |
31 | sqlite3 "$DATABASE" \
32 | "INSERT INTO files (
33 | path,
34 | path_rel,
35 | permissions,
36 | device_number,
37 | raw_mode,
38 | file_type,
39 | group_id,
40 | num_hardlinks,
41 | mount_point,
42 | size,
43 | device_type,
44 | user_id,
45 | user_name,
46 | time_birth,
47 | time_last_access,
48 | time_last_data_modification,
49 | time_last_status_modification)
50 | VALUES
51 | ('$ABS_PATH', $(stat --printf="%N, %a, %d, '%f', '%F', %g, %h, '%m', %s, %r, %u, '%U', %W, %X, %Y, %Z)" "$FILE")
52 | ;"
53 |
54 |
55 |
--------------------------------------------------------------------------------
/scripts/generate_audio_for_anki_deck.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env nix-shell
2 | #! nix-shell -i bash -p bash piper-tts parallel
3 |
4 | anki_deck="$1"
5 | line_count=$(wc -l < "$anki_deck")
6 | count_total=$((line_count - 6))
7 | declare -x count_total
8 |
9 | echo "0" > "/tmp/anki_audio_progress"
10 |
11 | read_progress() {
12 | read -r progress < "/tmp/anki_audio_progress"
13 | }
14 | export -f read_progress
15 |
16 | increase_progress() {
17 | read_progress
18 | progress=$((progress + 1))
19 | echo "$progress" > "/tmp/anki_audio_progress"
20 | }
21 | export -f increase_progress
22 |
23 | audios="$HOME/.local/share/Anki2/User 1/collection.media/"
24 | cd "$audios" || exit
25 |
26 | echo ""
27 |
28 | process_line() {
29 | read_progress
30 | line="$1"
31 | # 7 is the index of the column that audio will be generated for
32 | sentence=$(echo "$line" | awk -F "\t" '{print $7}')
33 | sha=$(echo "$sentence" | sha256sum | awk -F " " '{print $1}')
34 | if [ -f "$sha.wav" ]; then
35 | echo -e "$progress/$count_total \e[32m$sentence\e[0m"
36 | increase_progress
37 | else
38 | echo -e "$progress/$count_total \e[31m$sentence\e[0m"
39 | tts --model_name tts_models/en/multi-dataset/tortoise-v2 \
40 | --text "$sentence" \
41 | --out_path "$sha.wav" \
42 | --progress_bar True \
43 | --voice_dir /tmp/tortoise-tts/tortoise/voices \
44 | --speaker_idx "lj" > /dev/null 2> /dev/null
45 | increase_progress
46 | fi
47 | }
48 |
49 | export -f process_line
50 |
51 | tail -n+7 "$anki_deck" | parallel --line-buffer -j 3 process_line
52 |
53 | # Once finished, rewrite the CSV to include the new audio
54 | cd /tmp || exit 1
55 | head -n 7 "$anki_deck" > out.csv
56 | while IFS= read -r line; do
57 | sentence=$(echo "$line" | awk -F "\t" '{print $7}')
58 | sha=$(echo "$sentence" | sha256sum | awk -F " " '{print $1}')
59 | echo "$line" | awk -v sha="[sound:$sha.wav]" 'BEGIN { FS = OFS = "\t" } { $8 = sha; print }' >> out.csv
60 | done <<< "$(tail -n+7 "$anki_deck")"
61 |
--------------------------------------------------------------------------------
/scripts/get_deezer_album_links_by_id3_tags.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env nix-shell
2 | #! nix-shell -i bash -p bash fd exiftool curl
3 |
4 | # Create a loop over each 2-level deep directory
5 | fd . --min-depth 2 --max-depth 2 --type directory | while read -r dir; do
6 | echo "Checking dir: $dir"
7 |
8 | # For every mp3 file in this directory, get the ISRC code
9 | fd . --extension mp3 "$dir" | while read -r file; do
10 | echo "Checking file: $file"
11 |
12 | # Get the ISRC code
13 | ISRC=$(exiftool -ISRC "$file" | awk -F' ' '{print $NF}')
14 |
15 | json_file="$dir/$ISRC.json"
16 |
17 | if [ ! -f "$json_file" ]; then
18 | # Use curl to make a get request to the Deezer API to get the information about the track using the ISRC code
19 | JSON=$(curl -s "https://api.deezer.com/2.0/track/isrc:$ISRC")
20 |
21 | # Check if curl command failed
22 | if [ $? -eq 0 ]; then
23 | # Store the result in a json file with the filename "$ISRC.json"
24 | echo "$JSON" > "$json_file"
25 | else
26 | echo "Curl command failed for file: $file"
27 | exit 1 # Exit the script with an error code
28 | fi
29 | else
30 | echo "JSON file already exists for ISRC: $ISRC"
31 | fi
32 |
33 | # # Use curl to make a get request to the Deezer API to get the information about the track using the ISRC code
34 | # JSON=$(curl -s "https://api.deezer.com/2.0/track/isrc:$ISRC")
35 |
36 | # # Store the result in a json file with the filename "$ISRC.json"
37 | # echo "$JSON" > "$dir/$ISRC.json"
38 | done
39 |
40 | values=()
41 | # fd . --extension json "$dir" | while read -r file; do
42 | # link=$(jq -r '.album.link' "$file")
43 | # if [ -n "$link" ]; then
44 | # values+=("$link")
45 | # fi
46 | # done
47 | while IFS= read -r -d $'\0' file; do
48 | link=$(jq -r '.album.link' "$file")
49 | if [ -n "$link" ]; then
50 | values+=("$link")
51 | fi
52 | done < <(fd . --extension json "$dir" -0)
53 | first_value="${values[0]}"
54 | same_values=true
55 |
56 | for value in "${values[@]}"; do
57 | if [ "$value" != "$first_value" ]; then
58 | same_values=false
59 | break
60 | fi
61 | done
62 |
63 | if [ "$same_values" ]; then
64 | echo "$first_value" > "$dir/link.txt"
65 | fi
66 | echo "Same links: $same_values"
67 | done
68 |
69 |
--------------------------------------------------------------------------------
/scripts/import_deezer_albums_to_beets.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env nix-shell
2 | #! nix-shell -i bash -p bash fd beets parallel
3 | #
4 | # music_dir="/mnt/wolfpack/music_to_import/"; fd . "$music_dir" --min-depth 2 --max-depth 2 --type directory | while read -r dir; do
5 | # if [ -f "$dir/link.txt" ]; then
6 | # url=$(cat "$dir/link.txt")
7 | # echo "importing $dir ($url)"
8 | # beet import -q -m "$dir" --search-id "$url"
9 | # fi
10 | # done
11 |
12 | music_dir="/mnt/wolfpack/music_to_import/"
13 |
14 | # Define a function to process each directory in parallel
15 | process_directory() {
16 | dir="$1"
17 | if [ -f "$dir/link.txt" ]; then
18 | url=$(cat "$dir/link.txt")
19 | echo "importing $dir ($url)"
20 | beet import -q -m "$dir" --search-id "$url"
21 | fi
22 | }
23 |
24 | export -f process_directory # Export the function for use with parallel
25 |
26 | # Find directories and process them in parallel
27 | fd . "$music_dir" --min-depth 2 --max-depth 2 --type directory | \
28 | parallel -j 12 process_directory {}
29 |
30 |
--------------------------------------------------------------------------------
/scripts/is_program_running.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | unalias -a
4 |
5 | if pgrep "$1" > /dev/null; then
6 | echo "running"
7 | else
8 | echo "not running"
9 | fi
10 |
--------------------------------------------------------------------------------
/scripts/keyboard-layout-switcher.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | german="german"
4 | dvorak="dvorak"
5 | pdvorak="programmer dvorak"
6 | english="english"
7 |
8 | if [ "$XDG_CURRENT_DESKTOP" = "sway" ]; then
9 | notify-send -a "keyboard-layout-switcher" "Layout Switcher" "Disabled on sway"
10 | exit
11 | fi
12 | notify-send -a "keyboard-layout-switcher" "Layout Switcher" "Switched keyboard layout to $selection"
13 |
14 | selection=$(printf '%s\n%s\n%s\n%s' "$german" "$dvorak" "$pdvorak" "$english" | rofi -dmenu --prompt="Layout" --hide-scroll --insensitive)
15 |
16 | # Remove all custom mappings
17 | setxkbmap -option
18 |
19 | if [ "$selection" = "$german" ]; then
20 | setxkbmap de
21 | elif [ "$selection" = "$dvorak" ]; then
22 | setxkbmap gb dvorak
23 | elif [ "$selection" = "$pdvorak" ]; then
24 | setxkbmap -layout us -variant dvp -option compose:102 -option numpad:shift3 -option kpdl:semi -option keypad:atm -option caps:shift
25 | xmodmap -e "keycode 94=0x007c"
26 | elif [ "$selection" = "$english" ]; then
27 | setxkbmap gb
28 | fi
29 |
30 | # Send notification
31 | notify-send -a "keyboard-layout-switcher" "Layout Switcher" "Switched keyboard layout to $selection"
32 | # Send signal to lemonblocks
33 | pkill lemonblocks -8 &
34 |
--------------------------------------------------------------------------------
/scripts/mcfly_to_atuin.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | if [ -z "$1" ]; then
4 | echo "No arguments supplied."
5 | echo "First argument should be new atuin database"
6 | echo "Second argument should be mcfly database to migrate."
7 | exit
8 | fi
9 |
10 | sqlite3 "$2" << EOS
11 | BEGIN TRANSACTION;
12 | CREATE TEMPORARY TABLE commands_backup(command,timestamp,exit,cwd,session,id,hostname);
13 | INSERT INTO commands_backup SELECT cmd,(when_run*1000000000),exit_code,IIF(dir IS NULL, 'UNKOWN', dir),session_id,(('$(hostname)' || ':' || '$USER') || '-' || id),('$(hostname)' || ':' || '$USER') FROM commands;
14 | DROP TABLE commands;
15 | CREATE TABLE commands(id, timestamp, duration, exit, command, cwd, session, hostname);
16 | INSERT INTO commands(id,command,timestamp,exit,cwd,session,duration,hostname) SELECT id,command,timestamp,exit,cwd,session,-1,hostname FROM commands_backup;
17 | DROP TABLE commands_backup;
18 | COMMIT;
19 | SELECT * FROM commands LIMIT 20;
20 | EOS
21 |
22 | sqlite3 "$1" << EOS
23 | attach "$2" as to_migrate;
24 | BEGIN;
25 | INSERT OR IGNORE INTO history SELECT * FROM to_migrate.commands;
26 | COMMIT;
27 | detach to_migrate;
28 | EOS
29 |
--------------------------------------------------------------------------------
/scripts/mpd-open-playlist.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # This script shows a list of playlists in a given directory, clears the current playlist in mpd and adds all songs from the selected playlist
4 |
5 | dir="/mnt/Vault/music/"
6 |
7 | selection=$(find "$dir" -maxdepth 1 -name "*.m3u*" | rofi -dmenu -i -matching fuzzy)
8 |
9 | mpc clear
10 |
11 | sed "s|./|mpc add \"|" "$selection" | sed "s|$|\"|" | bash
12 |
13 |
--------------------------------------------------------------------------------
/scripts/mpd-status.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Polybar script for getting the current song from cmus
4 |
5 | # Call cmus-remote -Q to get available information about the current song
6 | song=$(mpc -f "%artist% - %title%" current)
7 | info=$(mpc)
8 | # Store the return value to check if cmus is running
9 | retval=$?
10 |
11 | if [ $retval -ne 0 ]; then
12 | # If the return value is not 0, then echo nothing, since cmus is not running
13 | printf " "
14 | exit
15 | else
16 | # Cmus is running, so find out if it's playing or paused and echo the corresponding glyph
17 | if grep -q "playing" << EOF
18 | $info
19 | EOF
20 | then
21 | printf "";
22 | else
23 | printf "paused";
24 | exit
25 | fi
26 | fi
27 |
28 | chrlen=${#song}
29 |
30 | # How long to make the text before starting to scroll
31 | maxlen=25
32 |
33 | if [ "$chrlen" -ge $maxlen ]; then
34 | # Read offset from file
35 | offset="$(($(head -n 1 /tmp/mpdoffset)))"
36 | # Add one
37 | offset="$((offset + 1))"
38 | # Test if offset should be reset
39 | if [ "$song" != "$(sed "2q;d" /tmp/mpdoffset)" ]; then
40 | rm /tmp/mpdoffset
41 | offset=0
42 | fi
43 | if [ $((offset + maxlen - 1)) -ge "$chrlen" ]; then
44 | rm /tmp/mpdoffset
45 | offset=0
46 | fi
47 | # Write offset back to file
48 | printf '%b\n%s' "$offset" "$song" > /tmp/mpdoffset
49 | song="${song:$offset:$maxlen}"
50 | fi
51 |
52 |
53 | # Parse the info to get the progress in %
54 | # total=$(echo "$info" | sed -r "s/duration //;t;d")
55 | # progr=$(echo "$info" | sed -r "s/position //;t;d")
56 | # perc=$(awk -v n="$total" -v m="$progr" 'BEGIN{ print int(( m/n )*100) }')
57 | perc=$(echo "$info" | grep -oie "([[:digit:]]*%)" | tr '%' ' ' | tr '(' ' ' | tr ')' ' ')
58 | chrlen=${#song}
59 | perc_chr=$(awk -v n="$chrlen" -v m="$perc" 'BEGIN{ print int( n*(m/100)) }')
60 |
61 | # What to put at the beginning of the string
62 | # b="\e[31m"
63 | b="%%{F#ff0066}"
64 | # What to put in the middle of the string
65 | # m="\e[0m"
66 | m="%%{F-}"
67 | # What to put at the end of the string
68 | # e="\e[0m"
69 | e=""
70 |
71 | song="$b${song:0:$perc_chr}$m${song:$perc_chr:$chrlen}$e"
72 | printf "%s" "$song"
73 |
--------------------------------------------------------------------------------
/scripts/open-firewall.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Toggle allowing traffic on a certain port
4 |
5 | PORT="$1"
6 | TABLE_NAME="nixos-fw"
7 |
8 | MODE="$2"
9 |
10 | if [ "$(id -u)" -ne 0 ]; then
11 | echo "This script must be run as root"
12 | exit 1
13 | fi
14 |
15 | handle=$(nft -a list chain inet nixos-fw input | grep "dport $PORT accept" | awk '{print $NF}')
16 |
17 | open() {
18 | nft insert rule inet "$TABLE_NAME" input tcp dport "$PORT" accept
19 | }
20 | close() {
21 | nft delete rule inet "$TABLE_NAME" input handle "$handle"
22 | }
23 |
24 | case "$MODE" in
25 | 0|"toggle")
26 | if [ -n "$handle" ]; then
27 | echo "Port currently open, closing..."
28 | close
29 | else
30 | echo "Port currently closed, opening..."
31 | open
32 | fi
33 | ;;
34 | 1|"open")
35 | echo "Opening port..."
36 | open
37 | ;;
38 | 2|"close")
39 | echo "Closing port..."
40 | close
41 | ;;
42 | *)
43 | echo "Invalid mode: $MODE"
44 | ;;
45 | esac
46 |
--------------------------------------------------------------------------------
/scripts/play-song.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # This script displays a rofi -dmenu with all mp3 files from a folder, upon selection the song will be played in cmus
4 |
5 | # Dir to search for music in
6 | dirname="/mnt/Vault/music/"
7 |
8 | cd "$dirname" || exit
9 | selection=$(find . -name "*.mp3" | rofi -dmenu -i -F)
10 |
11 | [ -z "$selection" ] && exit
12 |
13 | mpc clear
14 | mpc add "$(echo "$selection" | sed 's/\.\///g')"
15 | mpc play
16 |
17 |
18 | # Send notification
19 | songname=$(echo "$selection" | rev | cut -d '/' -f 1 | rev)
20 | notify-send -a "play-song" "Play song" "Now playing song $songname"
21 |
--------------------------------------------------------------------------------
/scripts/program-launcher.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Rofi program launcher
4 |
5 | MAP="/home/b3nj4m1n/.config/wofi/map.csv"
6 |
7 | cut -d ',' -f 1 "$MAP" \
8 | | wofi --dmenu -p "Util " \
9 | | head -n 1 \
10 | | xargs -I --no-run-if-empty grep "{}" "$MAP" \
11 | | cut -d ',' -f 2 \
12 | | head -n 1 \
13 | | xargs -I --no-run-if-empty /usr/bin/env sh -c "{}"
14 |
15 | exit 0
16 |
--------------------------------------------------------------------------------
/scripts/setup-repos.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | USER=b3nj4m1n
4 |
5 | GIT_SSH_COMMAND="ssh -i /home/$USER/.ssh/dk_sh_history -o StrictHostKeyChecking=no" git clone git@github.com:b3nj5m1n/sh_history.git /home/$USER/.local/share/sh_history 2>/dev/null
6 | GIT_SSH_COMMAND="ssh -i /home/$USER/.ssh/dk_tasks -o StrictHostKeyChecking=no" git clone git@github.com:b3nj5m1n/tasks.git /home/$USER/.local/share/task 2>/dev/null
7 | GIT_SSH_COMMAND="ssh -i /home/$USER/.ssh/dk_timew -o StrictHostKeyChecking=no" git clone git@github.com:b3nj5m1n/timew.git /home/$USER/.local/share/timew/data 2>/dev/null
8 | GIT_SSH_COMMAND="ssh -i /home/$USER/.ssh/dk_logseq -o StrictHostKeyChecking=no" git clone git@github.com:b3nj5m1n/logseq-db.git /home/$USER/.local/share/logseq 2>/dev/null
9 | GIT_SSH_COMMAND="ssh -i /home/$USER/.ssh/dk_zotero -o StrictHostKeyChecking=no" git clone git@github.com:b3nj5m1n/zotero-db.git /home/$USER/Zotero 2>/dev/null
10 |
--------------------------------------------------------------------------------
/scripts/sxhkd-help-page.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | cat ~/.config/sxhkd/* | awk '/^[a-z]/ && last {print $0,"\t",last} {last=""} /^#/{last=$0}' | column -t -s ' ' | rofi -dmenu -i
4 |
--------------------------------------------------------------------------------
/scripts/tmuxleft.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . ./tmuxstssrc.sh
3 |
4 | style_text bold
5 | component_currentwindow_or_prefix
6 | component_seperator " " "$default_bg"
7 |
--------------------------------------------------------------------------------
/scripts/tmuxright.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | . ./tmuxstssrc.sh
3 |
4 | style_bold
5 | component_hostname
6 | component_uptime
7 | component_date
8 |
--------------------------------------------------------------------------------
/scripts/tmuxstssrc.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 | # echo "#[fg=#02B696]#[bg=#D5D5B0]#[bold]%d/%m %H:%M"
3 |
4 | ##### Style Variables #####
5 | export default_fg="#f8f8f2"
6 | export default_bg="#282a36"
7 | export default_prefix=" "
8 | export default_suffix=" "
9 | export date_fg="#f8f8f2"
10 | export date_bg="#bd93f9"
11 | export hostname_fg="#f8f8f2"
12 | export hostname_bg="#50fa7b"
13 | export uptime_fg="#f8f8f2"
14 | export uptime_bg="#ffb86c"
15 | export currentwindow_fg="#f8f8f2"
16 | export currentwindow_bg="#bd93f9"
17 |
18 | ##### Style Control #####
19 | style_text() {
20 | printf "#[%s]" "$1"
21 | }
22 | style_fg() {
23 | printf "#[fg=#%s]" "$1"
24 | }
25 | style_bg() {
26 | printf "#[bg=#%s]" "$1"
27 | }
28 | prefix() {
29 | printf "%s" "$default_prefix"
30 | }
31 | suffix() {
32 | printf "%s" "$default_suffix"
33 | }
34 |
35 | component_date() {
36 | style_fg "$date_fg"
37 | style_bg "$date_bg"
38 | prefix
39 | printf "%s" "$(date -u +"%d/%m/%Y")"
40 | suffix
41 | }
42 | component_hostname() {
43 | style_text bold
44 | style_fg "$hostname_fg"
45 | style_bg "$hostname_bg"
46 | prefix
47 | printf "%s" "$(hostname)"
48 | suffix
49 | }
50 | component_uptime() {
51 | style_text bold
52 | style_fg "$uptime_fg"
53 | style_bg "$uptime_bg"
54 | prefix
55 | printf "%s" "$(~/.local/share/bin/uptime.sh)"
56 | suffix
57 | }
58 | component_currentwindow() {
59 | style_text bold
60 | style_fg "$currentwindow_fg"
61 | style_bg "$currentwindow_bg"
62 | prefix
63 | printf "#W"
64 | suffix
65 | }
66 | component_seperator() {
67 | style_fg ""
68 | style_bg "$2"
69 | printf "%s" "$1"
70 | }
71 | component_prefix() {
72 | style_fg "$1"
73 | style_bg "$2"
74 | printf '#{?client_prefix, Prefix ,}'
75 |
76 | }
77 | component_currentwindow_or_prefix() {
78 | style_text bold
79 | style_fg "$currentwindow_fg"
80 | style_bg "$currentwindow_bg"
81 | prefix
82 | printf '%s' '#{?client_prefix,Prefix,#W}'
83 | suffix
84 | }
85 |
--------------------------------------------------------------------------------
/scripts/transcode.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | set -e
4 |
5 | INPUT="$1"
6 |
7 | if grep -q "$INPUT" /drivemecrazy/transcoded.log; then
8 | echo "$INPUT seems to have already been transcoded"
9 | exit 1
10 | fi
11 |
12 | # ffmpeg -threads 10 -init_hw_device vaapi=foo:/dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device foo -i "$INPUT" -filter_hw_device foo -c:v hevc_vaapi -vf 'format=nv12,scale=640:-2,hwupload' -qp 28 -f mp4 "$INPUT.transcode"
13 | ffmpeg -threads 10 -init_hw_device vaapi=foo:/dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -hwaccel_device foo -i "$INPUT" -filter_hw_device foo -c:v hevc_vaapi -vf 'hwupload' -qp 24 -f mp4 "$INPUT.transcode"
14 | printf "%s\n%s" "$(du -h "$INPUT")" "$(du -h "$INPUT.transcode")"
15 | if [ "$(du -bs "$INPUT" | cut -f1)" -gt "$(du -bs "$INPUT.transcode" | cut -f1)" ]; then
16 | mv "$INPUT.transcode" "$INPUT"
17 | printf "%s\nSUCCESS\n" "$INPUT" >> /drivemecrazy/transcoded.log
18 | else
19 | printf "%s\nFUCK\n" "$INPUT" >> /drivemecrazy/transcoded.log
20 | fi
21 |
22 |
--------------------------------------------------------------------------------
/scripts/uptime.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Pass true as first argument to get long form
4 |
5 | seconds_uptime=$(awk '{print int($1)}' /proc/uptime)
6 | seconds_in_year=31556952; seconds_in_month=2629746; seconds_in_day=86400; seconds_in_hour=3600; seconds_in_minute=60;
7 |
8 | # The delimiter between 12 and hours
9 | DELIMITER_UNIT=""
10 | # The delimiter between 12 hours and 6 minutes
11 | DELIMITER_VALUES=" "
12 |
13 | # If we want the long form
14 | if [ "$1" ]; then DELIMITER_UNIT=" "; DELIMITER_VALUES=", "; fi
15 |
16 | unit_s_y="y"; unit_p_y="y" unit_s_mo="mo"; unit_p_mo="mo" unit_s_d="d"; unit_p_d="d" unit_s_h="h"; unit_p_h="h" unit_s_mi="m"; unit_p_mi="m";
17 | if [ "$1" ]; then unit_s_y="year"; unit_p_y="years" unit_s_mo="month"; unit_p_mo="months" unit_s_d="day"; unit_p_d="days" unit_s_h="hour"; unit_p_h="hours" unit_s_mi="minute"; unit_p_mi="minutes"; fi
18 |
19 | print_value() {
20 | if [ "$seconds_uptime" -ge "$1" ]; then
21 | value=$((seconds_uptime / $1))
22 | seconds_uptime=$((seconds_uptime - ( $1 * value )))
23 | unit="$2"
24 | if [ "$value" -gt "1" ]; then unit="$3"; fi
25 | if [ "$4" ]; then delimiter_values=""; else delimiter_values="$DELIMITER_VALUES"; fi
26 | printf "%d%s%s%s" "$value" "$DELIMITER_UNIT" "$unit" "$delimiter_values"
27 | fi
28 | }
29 |
30 | print_value "$seconds_in_year" "$unit_s_y" "$unit_p_y"
31 | print_value "$seconds_in_month" "$unit_s_mo" "$unit_p_mo"
32 | print_value "$seconds_in_day" "$unit_s_d" "$unit_p_d"
33 | print_value "$seconds_in_hour" "$unit_s_h" "$unit_p_h"
34 | print_value "$seconds_in_minute" "$unit_s_mi" "$unit_p_mi"
35 | # print_value "$seconds_in_second" "$unit_s_s" "$unit_p_s" true
36 |
--------------------------------------------------------------------------------
/scripts/wally.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | CURRENT_WALLPAPER="/usr/share/wallpapers/custom/moonRising.png"
4 | WALLPAPER="/home/b3nj4m1n/.config/wallpaper.png"
5 |
6 | # Copy the wallpaper to its appropriate location
7 | cp "$CURRENT_WALLPAPER" "$WALLPAPER"
8 | # Apply effect to wallpaper (Shift hue, i.e. change color)
9 | convert "$WALLPAPER" -modulate 100,100,$((0 + $(awk 'BEGIN{srand(); print int(32767 * rand())}') % 200)) "$WALLPAPER"
10 | # Set the new wallpaper
11 | feh --no-fehbg --bg-scale "$WALLPAPER"
12 |
--------------------------------------------------------------------------------
/secrets/aliases.txt:
--------------------------------------------------------------------------------
1 | {
2 | "data": "ENC[AES256_GCM,data:oE5M0Vh+y47pvloHVyRmDv5cTrYphNY2J4Da0aBtU+4A0CLS,iv:xI2E/C0kegPLsyAjHfPDlu7bg3fM9RbWQDblwqWed8g=,tag:GV3Go0QSTxz+0SYSDD3axw==,type:str]",
3 | "sops": {
4 | "kms": null,
5 | "gcp_kms": null,
6 | "azure_kv": null,
7 | "hc_vault": null,
8 | "age": [
9 | {
10 | "recipient": "age1ey5nqemqxfc7aferu3nyc7r4qt2yy6lz67l856auysnk9kk2e3js8t8u26",
11 | "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrSzhZdWJsZXI4TEwzTUgv\nK1BJZGpXb21qbE5CZFFWQTZxWEwzeHZjNFdrCmRLT2dJbWVJSCtxYmpwZmNKNlJn\nTnFRM0NGQU1rR1c5cHpWdmRGdVVZUEUKLS0tIFRIbGVTTEo4Y1gyUXRVLzU3ekhx\ncVY2SHZabThxRWhBK2RGQTFWMkRvbW8KHbB7AxfcKaOCWQtCTF/YWA++qBX4Tq8W\nDVQBoHw9HjjCC+pMlQBPs4X7Ff7XjKXMD+R5vmx7LlgrmzsLARu0ZQ==\n-----END AGE ENCRYPTED FILE-----\n"
12 | }
13 | ],
14 | "lastmodified": "2023-10-15T14:32:00Z",
15 | "mac": "ENC[AES256_GCM,data:GzjETP2GnFM5oCoNsQlJki1ni3jJnnaLPu7cJOhwUFqoPUB64c/lHGU6L0e1sBKW5LnS6JBodPD8Dg4cATPLza/O3yZLoNThwXpC3tKnF5SGYbi7rVHyJel4Lkg1QqvvBqS30BE71KgLESG8j7X5ha3c7TEhMjNjdc8mO5KAIjI=,iv:tNRyXXgN9JujzfG03d8RkhDaScNyVycvjvDvWDClXj4=,tag:SW7kqQ6OoXvL0ORd4FQNKA==,type:str]",
16 | "pgp": [
17 | {
18 | "created_at": "2023-10-15T14:32:00Z",
19 | "enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAyZAt1g4bmAPAQ/+Mom0btOmuW0HwQb4hTpvyzxPUT4wsUrCN+n5yVjFyFM/\n9sp3ovhFvjpYNByAGIcKI7vcyulIYuBgn1gHz8j3tf8KbQN2dbimQlByKVFibHHJ\nxKiwPp1bN+iM1+qJZOhhH9K5C+o7/j9JeJQmzCFDCP83h939wjA06BeYOkgUIr7t\nnk8SjQquzREOY3sWlkEsLEc/+BPOBCad17d206CRNqRuzAaMFTcWpfkr0t865uRy\nDheahNp4X9vkB8AimpPEPXv68kFzNjzVmNLOrH8LKaCsHZzDOA+2qmY6HMv/Gd/U\nMgXZOsU/zlCqCoS0LrrkgD09IoFQ7h/LXyS6me8dUHEXrL5P/vGPhhY437N/fiJv\nAyadp3qbAPY1J3WylBc2F2JnjF0eKaQTtag7V+LpIsCmB5EmAOsi9+gE+u8EzhnM\nWVZkjP0qHATz7U1uEbSWz07oNxFv2X4GUpZIixhm26CCqtFidL8zwtaQWRZfcXmb\njElOHyFoRvqdp6Pb/TDu7vxyL4wbFiu42BpJMS3OoR0HNlZ1X94uVxZMFaoXyMhG\nnsnci/1698x0Jb75J6v2bTyxonO6vcrdMYLyojoavNLs9SYrNj2Hf2v+vEF1179G\nSfEZq1L1bYZqXnih+BVM+C3JLpzMZYNczE5ebEgr8ZJ4cYPJfzNhfMS3YUSXMSHS\nXgFwtO+fhfoGnQ6fikwzmjdobIo7J9vQIULbLHBGH9mIVIV85FzcDkntYThJz64B\noutC2XY3rrQmqx/BpImZAu79pDveKW2tdpkwEHRYaU/h6KM1DHdX2FXIgcawCfQ=\n=vOq+\n-----END PGP MESSAGE-----",
20 | "fp": "9F7D2083BB220CEEB720E068309D4C8689849C5B"
21 | }
22 | ],
23 | "unencrypted_suffix": "_unencrypted",
24 | "version": "3.8.0"
25 | }
26 | }
--------------------------------------------------------------------------------
/secrets/smartdresultsemail:
--------------------------------------------------------------------------------
1 | {
2 | "data": "ENC[AES256_GCM,data:2BgUThNj0haiwASRnEEV3BGu5knIRV03B2PR7xgE6zz5QhU5xVlxLOI=,iv:dOlukWy4LiMtBWCiRo0tlv25EtJxICWItSKPHF5y/FE=,tag:1je8/kKFYtb0h6nDwSHjgw==,type:str]",
3 | "sops": {
4 | "kms": null,
5 | "gcp_kms": null,
6 | "azure_kv": null,
7 | "hc_vault": null,
8 | "age": [
9 | {
10 | "recipient": "age1ey5nqemqxfc7aferu3nyc7r4qt2yy6lz67l856auysnk9kk2e3js8t8u26",
11 | "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1Mm1lUktaV1pMMUJXeCsr\nRFQxNm5PS28vVlVMeDZZcXpQbUFiTWJ6eVNzCm1ONlVlcUtBY2hSbDZLK29mVk5n\ncjFkbW9xUStWU1AzQklBV21XNloxbXMKLS0tIHdhNWFKM1RXZVVheUl1NWJha3Iw\nN1Q2ZmoyZ0pHZnFha2VoNURUQzBDY1UKPVT/VbzHTltjvsgN9MjwSoHSx6gdAX8/\nYsY9RkTOl2LwT/tZaGdLLGC4IVlTLIijU60N+oYk8ZZ6XqKp9XI3Xw==\n-----END AGE ENCRYPTED FILE-----\n"
12 | }
13 | ],
14 | "lastmodified": "2023-10-15T15:26:10Z",
15 | "mac": "ENC[AES256_GCM,data:vOmetvcxeabmjwhKDrg9KrY/bb0NCLx0nF2+6E0EUwxe4tfFBY07E+HExoIdyNXSqFOLKGdcZyyLEfH6Q7/QDaQa0SqiwMC4zyeuuTxH+hwMzhXoM7RorZtd5gQjoeiYaLAhm+hQJgn8ZWr7ni2tIHAj96D0vl9ykkhtbZ8W+cM=,iv:85E+6WNQHm9HPsr/rPkE7ggiVgtqaYHHNcGu7fURtag=,tag:Ea61RbOa1vyX9d4t2zmcdg==,type:str]",
16 | "pgp": [
17 | {
18 | "created_at": "2023-10-15T15:26:10Z",
19 | "enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMAyZAt1g4bmAPAQ/+PuA3OZ0ppRkxOcpisfbD8wZ8d9VUVTTPbbKSB13OBxvV\nOXqeUgzoOkA478nGHzJ7pI3Qo39g+ht1o59BW12Rw9Ad0HpMTTVCiiDpD7rhDe1X\nidl9i1frfVC7jY3gduvka34nFre+irjUpqu+hVK4DdSuSyoHrw/60/vRNxV0Id/Y\nqzSh5JBBAZjLgqdw7e9Js6jA1UeIKvPfpHPfzMge2EsZwInfU6PgnnCJ7t7jqwXy\n6QDZgjyLXYQVR3RY9FX00k70T4hPWDwMDTT8hSuq3DvyRw4hVhaOHt2NYgn2YDBK\nbYCo64M7bvhRzihpA7FO6eBav5T6w2BrRLuk/m3w2hN042ZhqfPs9vS2LENATJAX\nLrbyH13PFn8Gi36kYjzEzN0Fa/VTSMbJroP/y9v9PDLaIMDCgUxdhE//MyQx3erN\nmtdg7F5yYhgcyJgttFPRnwTPlIa3hLKFyvF8z4gFBOLqZCAQJHOkH1FXChE5elkl\nDzvKhNXGgZC+TwM31VZ42HPDgWj27265oHKk75vE8fR5jBqkXJGGHMM69Dz57eng\nni2yShh0sw+u9Ju32yaa1LQd7CZKEZcgRWWcJ6tSF3NIO7WMyHvtiIk/yEaQKGVJ\nhJVXXOsyn/S3kTf+A6kw6RXvwIOSgNitvWieuvS9d53vPW781Cz2dvT/fnsUJ0nS\nXgFWfAIDckE7dZGYS496mg9dsr8HVh//zkzS1AL9+8vTFHgABTveVDVdApaUwiNJ\ngeI0gEKTra+xXEYzsjz6KYUfPCpKwuQaGC2f/d2Jf0ljuk+aAUpVjalTj8y5wVM=\n=Sfgp\n-----END PGP MESSAGE-----",
20 | "fp": "9F7D2083BB220CEEB720E068309D4C8689849C5B"
21 | }
22 | ],
23 | "unencrypted_suffix": "_unencrypted",
24 | "version": "3.8.0"
25 | }
26 | }
--------------------------------------------------------------------------------