initial commit

This commit is contained in:
Danilo Reyes 2023-04-10 13:05:53 -06:00
commit 8852818d8b
14 changed files with 2281 additions and 0 deletions

521
configuration.nix Executable file
View File

@ -0,0 +1,521 @@
{ config, pkgs, ... }:
{ # Remember to close this bracket at the end of the document
imports = [
./hardware-configuration.nix
<home-manager/nixos>
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "workstation";
# networking.wireless.enable = true;
networking.networkmanager.enable = true;
time.timeZone = "America/Mexico_City";
i18n.defaultLocale = "en_CA.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "us";
# useXkbConfig = true; # use xkbOptions in tty.
};
services.xserver.enable = true;
services.xserver.layout = "us";
# services.xserver.xkbOptions = {
# "eurosign:e";
# "caps:escape" # map caps to escape.
# };
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
environment.gnome.excludePackages = (with pkgs; [
gnome-photos
gnome-tour
gnome-text-editor
gnome-connections
baobab
])
++ (with pkgs.gnome; [
totem
gedit
gnome-music
epiphany
gnome-characters
yelp
simple-scan
gnome-font-viewer
]);
hardware.bluetooth.enable = true;
hardware.pulseaudio.enable = false;
sound.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
security.sudo = {
enable = true;
wheelNeedsPassword = false;
};
# security.sudo.enable = false;
# security.doas.enable = true;
# security.doas.extraRules = [{
# users = [ "jawz" ];
# keepEnv = true;
# #persist = true;
# noPass = true;
# }];
users.users.jawz = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ];
initialPassword = "password";
shell = pkgs.fish;
packages = with pkgs; [ ];
};
nixpkgs.config = { allowUnfree = true; };
fonts.fontconfig.enable = true;
# services.xserver.libinput.enable = true;
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
home-manager.users.jawz = { config, pkgs, ... }:{
imports = [ ./dotfiles/dconf.nix ];
home.packages = with pkgs; [
blanket # background noise
blender # cgi animation and sculpting
celluloid # video player
cozy # audiobooks player
czkawka # duplicate finder
discord # chat
dropbox # cloud sync
# foliate # ebook reader
# gnome-podcasts # podcast player
# gnome-recipes # migrate these to mealie and delete
godot # game development
google-chrome # web browser
handbrake # video converter, may be unnecessary
# krita # art to your heart desire!
# libreoffice-fresh # office, but based
# lutris # game/emulator manager
megasync # cloud sync
mpdevil # ugly icon, but pretty mpd client nwn
# pika-backup # backups
pitivi # video editor
tilix # terminal
ffmpegthumbnailer # create video thumbnails for nautilus, in absence of totem
mpdas # scrobble mpd songs to last.fm
gdu # disk-space utility, somewhat useful
gocryptfs # encrypted filesystem! shhh!!!
exa # like ls but with colors
trash-cli # oop! didn't meant to delete that
ffmpeg_5 # coolest video converter!
fd # modern find, faster searches
fzf # fuzzy finder! super cool and useful
ripgrep # modern grep
# SH
bashdb # autocomplete
shellcheck # linting
nodePackages.bash-language-server # LSP support
# NIX
nixfmt # linting
# PYTHON.
python # base language
# HASKELL
# cabal-install # haskell interface
# JS
# jq # linting
# Node-js
# nodePackages.pnpm
gnomeExtensions.appindicator
gnomeExtensions.gsconnect
gnome.gnome-tweaks
hunspell
hunspellDicts.it_IT
hunspellDicts.es_MX
hunspellDicts.en_CA
# Fonts
(nerdfonts.override {
fonts = [ "Agave" "CascadiaCode" "SourceCodePro" "Ubuntu" ];
})
# (papirus-icon-theme.override {
# color = "grey";
# })
];
programs.starship.enable = true;
programs.fish = {
enable = true;
# useBabelfish = true; This setting doens't work from inside home-manager
shellAliases = {
ls = "exa --icons --group-directories-first --no-permissions --no-user --no-time";
edit = "emacsclient -t";
comic = "download -u jawz -i (cat $lc | fzf --multi --exact -i)";
gallery = "download -u jawz -i (cat $lw | fzf --multi --exact -i)";
open_gallery = "open (find ${config.xdg.userDirs.download}/To\ Organize/gdl-organizing/ -type d | fzf)";
unique_extensions = "find . -type f | string match -r '([^.\/]+)\$' | sort -u";
cp = "cp -i";
mv = "mv -i";
mkdir = "mkdir -p";
rm = "trash";
".." = "cd ..";
"..." = "cd ../..";
".3" = "cd ../../..";
".4" = "cd ../../../..";
".5" = "cd ../../../../..";
};
shellAbbrs = {
dl = "download -u jawz -i";
e = "edit";
c = "cat";
f = "fzf --multi --exact -i";
sc = "systemctl --user";
jc = "journalctl --user -xeu";
};
interactiveShellInit = ''
set fish_greeting "pika pika chu!!!! also remember fisher!"
# Lists
set -l list_root ${config.home.homeDirectory}/Dropboxxx/jawz
set lw $list_root/watch.txt
set li $list_root/instant.txt
set lc $list_root/comic.txt
set GPG_TTY (tty)
# Set EMACS/VI mode
function fish_user_key_bindings
# fish_default_key_bindings
fish_vi_key_bindings
end
'';
functions = {
nix_magic = ''
nixfmt ~/MEGAsync/nixos/configuration.nix
sudo rsync -r ~/MEGAsync/nixos/ /etc/nixos/
sudo nixos-rebuild switch
'';
};
};
programs.bat = {
enable = true;
config = {
# map-syntax = [ "*.jenkinsfile:Groovy" "*.props:Java Properties" ];
pager = "less -FR";
theme = "base16"; };
};
programs.beets = {
enable = true;
settings = {
directory = "${config.xdg.userDirs.music}";
library = "${config.xdg.dataHome}/beets/musiclibrary.db";
plugins = "embedart fetchart lyrics discogs spotify deezer edit lastgenre mbsync replaygain scrub mpdupdate duplicates info fish ftintitle fuzzy";
ignore_hidden = true;
threaded = true;
duplicate = {
album = false;
delete = false;
};
ftintitle = {
auto = true;
drop = true;
format = "feat. {0}";
};
fetchart = {
maxwidth = 1000;
quality = 70;
enforce_ratio = true;
lastfm_key = "aeae592346534482202bd94bc14a80c4";
fanarttv_key = "f12b0931d2f971a5b5215c3f451bafb7";
sources = "*";
cover_format = "JPEG";
};
embedart = {
auto = true;
maxwidth = 1000;
quality = 70;
remove_art_file = false;
ifempty = true;
};
lyrics = {
auto = true;
sources = "*";
};
replaygain = {
auto = true;
overwrite = true;
peak = "true";
backend = "ffmpeg";
};
lastgenre = {
auto = true;
canonical = true;
force = true;
source = "album";
count = 1;
title_case = true;
};
mpd = {
host = "localhost";
port = 6600;
};
ui = {
color = true;
};
"import" = {
move = true;
write = true;
genres = true;
log = "${config.xdg.dataHome}/beets/beetslog.txt";
};
replace = {
"[\\\\/]" = ""; # \ /
"^\\." = ""; # dotfiles
"[\\x00-\\x1f]" = ""; # NULL to US
"\\x00" = ""; # NULL
"[<>:\"\\?\\*\\|]" = ""; # <>:"?*|
"\\.$" = ""; # dot at the end
"\\s+$" = ""; # ends with whitespace
"^\\s+" = ""; # starts with whitespace
"^-" = ""; # starts with -
};
paths = {
default = "$albumartist/$album/$track $title";
singleton = "Singletons/$artist - $title";
comp = "$album/$track $title";
"albumtype:soundtrack" = "Soundtracks/$album/$track $title";
};
convert = {
auto = true;
embed = true;
delete_originals = true;
extension = "opus";
# command = "ffmpeg -i $source -y -vn -acodec libopus -ab 256k $dest";
};
};
};
programs.git = {
enable = true;
userName = "Danilo Reyes";
userEmail = "CaptainJawZ@outlook.com";
};
programs.gpg = {
enable = true;
homedir = "${config.xdg.dataHome}/gnupg";
};
programs.htop = {
enable = true;
package = pkgs.htop-vim;
};
xdg.configFile."htop/htoprc".source = ./dotfiles/htop/htoprc;
xdg = {
enable = true;
};
xdg.userDirs = {
enable = true;
# createDirectories = true;
desktop = "${config.home.homeDirectory}";
documents = "${config.home.homeDirectory}/Documents";
download = "${config.home.homeDirectory}/Downloads";
music = "${config.home.homeDirectory}/Music";
pictures = "${config.home.homeDirectory}/Pictures";
publicShare = "${config.home.homeDirectory}/.local/hd/Public";
templates = "${config.home.homeDirectory}/.local/share/Templates";
videos = "${config.home.homeDirectory}/Videos";
};
xdg.configFile = {
"wgetrc".source = ./dotfiles/wget/wgetrc;
"configstore/update-notifier-npm-check.json".source = ./dotfiles/npm/update-notifier-npm-check.json;
"npm/npmrc".source = ./dotfiles/npm/npmrc;
"gallery-dl/config.json".source = ./dotfiles/gallery-dl/config.json;
# "gopass/config.yml".source = ./dotfiles/gopass/config.yml;
"mpdasrc".source = ./dotfiles/mpdas/mpdasrc;
};
services.mpd = {
enable = true;
musicDirectory = "${config.xdg.userDirs.music}";
network.listenAddress = "any";
# network.startWhenNeeded = true;
extraConfig = ''
restore_paused "yes"
auto_update "yes"
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
# zeroconf_enabled "yes"
# zeroconf_name "Music Player @ %h"
input {
plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
}
audio_output {
type "pipewire"
name "PipeWire Sound Server"
}
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
replaygain "auto"
replaygain_limit "yes"
volume_normalization "yes"
'';
};
services.mpd-discord-rpc.enable = true;
services.mpdris2 = {
enable = true;
multimediaKeys = true;
mpd.host = "localhost";
};
};
environment.systemPackages = with pkgs; [
wget
git
];
environment.sessionVariables = rec {
# PATH
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
SCRIPTS = "/home/jawz/Development/Scripts";
# DEV PATH
CABAL_CONFIG = "\${XDG_CONFIG_HOME}/cabal/config";
CABAL_DIR = "\${XDG_CACHE_HOME}/cabal";
CARGO_HOME = "\${XDG_DATA_HOME}/cargo";
GEM_HOME = "\${XDG_DATA_HOME}/ruby/gems";
GEM_PATH = "\${XDG_DATA_HOME}/ruby/gems";
GEM_SPEC_CACHE = "\${XDG_DATA_HOME}/ruby/specs";
GOPATH = "\${XDG_DATA_HOME}/go";
NPM_CONFIG_USERCONFIG = "\${XDG_CONFIG_HOME}/npm/npmrc";
PNPM_HOME = "\${XDG_DATA_HOME}/pnpm";
# OPTIONS
LESSHISTFILE = "-";
GHCUP_USE_XDG_DIRS = "true";
RIPGREP_CONFIG_PATH = "\${XDG_CONFIG_HOME}/ripgrep/ripgreprc";
ELECTRUMDIR = "\${XDG_DATA_HOME}/electrum";
VISUAL = "emacsclient -ca emacs";
WGETRC = "\${XDG_CONFIG_HOME}/wgetrc";
"_JAVA_OPTIONS" = "-Djava.util.prefs.userRoot=/home/jawz/.config/java";
# NVIDIA
CUDA_CACHE_PATH = "\${XDG_CACHE_HOME}/nv";
# GBM_BACKEND = "nvidia-drm";
# "__GLX_VENDOR_LIBRARY_NAME" = "nvidia";
# FISH
fisher_path = "\${XDG_CONFIG_HOME}/fish/fisher";
# Themes
# GTK_THEME = "Adwaita:light";
# QT_QPA_PLATFORMTHEME = "adwaita-dark";
# QT_STYLE_OVERRIDE = "adwaita";
# CALIBRE_USE_SYSTEM_THEME = "1";
PATH = [
"\${XDG_BIN_HOME}"
"\${XDG_CONFIG_HOME}/emacs/bin"
# "\${XDG_DATA_HOME}/npm/bin"
# "\${XDG_DATA_HOME}/pnpm"
"\${SCRIPTS}"
];
};
programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
# services.caddy = {
# enable = true;
# email = "CaptainJawZ@outlook.com";
# configFile = ./dotfiles/Caddyfile;
# # config = ''
# # torrent.danilo-reyes.com {
# # reverse_proxy localhost:9091
# # }
# # '';
# };
services.emacs = {
enable = true;
defaultEditor = true;
package = pkgs.emacs28NativeComp;
};
services.fstrim.enable = true;
services.btrfs.autoScrub = {
enable = true;
fileSystems = [
"/"
# "/torrents"
# "/home/jawz/.local/hd" # Maybe change mount point?
];
};
services.openssh = {
enable = true;
ports = [ 25152 ];
};
services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
system.copySystemConfiguration = true;
system.stateVersion = "22.05";
}

891
configuration.org Executable file
View File

@ -0,0 +1,891 @@
#+TITLE: JawZ NixOS main Configuration
#+AUTHOR: Danilo Reyes
#+PROPERTY: header-args :tangle configuration.nix
#+auto_tangle: t
* TODO
- [ ] Check music [0/5]
- [ ] Last.fm
- [ ] Libre.fm (optional)
- [ ] Beet plugins work
- [ ] Beet web server works
- [ ] Move music around
- [ ] System configurations [0/6]
- [ ] Bluetooth multiple devices + pass-through
- [ ] Automatic updates
- [ ] SSH settings
- [ ] Automatic garbage collection
- [ ] Firewall ports
- [ ] Topgrade (perhaps unnecessary)
- [ ] SystemD services [0/3]
- [ ] FStrim
- [ ] BTRFS scrub
- [ ] Personal scripts [0/3]
- [ ] download
- [ ] Instagram
- [ ] startup tasks
- [ ] Migrate dotfiles [0/3]
- [ ] .config [0/3]
- [ ] celluloid [0/2]
- [ ] Make sure plugins work
- [ ] Declare plugins?
- [ ] Firefox [0/7]
https://ffprofile.com/#finish
- [ ] Extensions
- [ ] Settings
- [ ] Gnome integration
- [ ] Profile
- [ ] Bookmarks
- [ ] Extra security/privacy config
- [ ] gallery-dl integration
- [ ]
- [ ] .var
- [ ] .local/share [0/2]
- [ ] beets
- [ ] mpd
- [ ] Migrate apps [0/4]
- [ ] paru
- [ ] pipx
- [ ] pip IMPORTANT for beet
- [ ] appimages
- [ ] Figure out how to get rid of xterm
- [ ] Compile missing apps [0/4]
- [ ] Identity
https://gitlab.gnome.org/YaLTeR/identity
Only challenge may be gstreamer, but probably not an issue. May be the easier one to package.
- [ ] Bats
https://github.com/bats-core/bats-core
- [ ] wine-discord-ipc-bridge
https://github.com/fufexan/nix-gaming
- [ ] make binaries of my own scripts
https://github.com/asimpson/dotfiles/blob/899b45e1586aac04d4e5541d638bbbffc66b4bba/nixos/scripts.nix
- [ ] AdwCustomizer [0/1]
https://github.com/AdwCustomizerTeam/AdwCustomizer
- [ ] Figure out pip
- [ ] (optional) adw-gtk3 theme
https://github.com/lassekongo83/adw-gtk3#readme
I think it can be locally installed, no need for theme, but in case
https://github.com/NixOS/nixpkgs/blob/nixos-22.05/pkgs/data/themes/vertex/default.nix#L32
* ABOUT
Setting up the document.
#+begin_src nix
{ config, pkgs, ... }:
{ # Remember to close this bracket at the end of the document
#+end_src
** IMPORTS
These are files and modules which get loaded onto the configuration file, in the
future I may segment this file into different modules, but for the time being,
the two ones I need are hardware and home-manager.
#+begin_src nix
imports = [
./hardware-configuration.nix
<home-manager/nixos>
];
#+end_src
* BOOT
I am comfortable with the defaults which NixOS recommends for UEFI systems.
#+begin_src nix
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
#+end_src
* SYSTEM CONFIGURATION
** NETWORKING
At the moment, I don't have a wireless card on this computer, however as I build
a new system, such setting may come in handy.
#+begin_src nix
networking.hostName = "workstation";
#+end_src
Pick *ONLY ONE* of the below networking options.
- *wireless.enable* enables wireless support via wpa_supplicant.
- *NetworkManager* it's the default of GNOME, and easiest to use and integrate.
#+begin_src nix
# networking.wireless.enable = true;
networking.networkmanager.enable = true;
#+end_src
** TIMEZONE
#+begin_src nix
time.timeZone = "America/Mexico_City";
#+end_src
** LOCALE
For some reason, useXkbConfig throws an error when building the system, either
way it is an unnecessary setting as my keyboards are the default en_US, only
locale set to Canadian out because I prefer how it displays the date.
#+begin_src nix
i18n.defaultLocale = "en_CA.UTF-8";
console = {
font = "Lat2-Terminus16";
keyMap = "us";
# useXkbConfig = true; # use xkbOptions in tty.
};
#+end_src
* DISPLAY MANAGER
At the time of writing this file, I require of X11, as the NVIDIA support for
Wayland isn't perfect yet. At the time being, the ability to switch through GDM
from Wayland to XORG, it's pretty handy, but in the future these settings will
require an update.
#+begin_src nix
services.xserver.enable = true;
#+end_src
As previously mentioned, the settings for useXkbConfig prompt issues.
#+begin_src nix
services.xserver.layout = "us";
# services.xserver.xkbOptions = {
# "eurosign:e";
# "caps:escape" # map caps to escape.
# };
#+end_src
* GNOME
Sets up GNOME as the default desktop environment, while excluding some
undesirable packages from installing.
#+begin_src nix
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
environment.gnome.excludePackages = (with pkgs; [
gnome-photos
gnome-tour
gnome-text-editor
gnome-connections
baobab
])
++ (with pkgs.gnome; [
totem
gedit
gnome-music
epiphany
gnome-characters
yelp
simple-scan
gnome-font-viewer
]);
#+end_src
* HARDWARE
** BLUETOOTH
#+begin_src nix
hardware.bluetooth.enable = true;
#+end_src
** SOUND
In order to avoid issues with PipeWire, the wiki recommends to disable /sound.enable/
This is a basic PipeWire configuration, in the future stuff like Bluetooth or
latency will require expanding these settings.
#+begin_src nix
hardware.pulseaudio.enable = false;
sound.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
#+end_src
* SECURITY
Recently, I've gotten frustrated with OpenDoas, as such I've decided to
temporarily enable Sudo, but in the future, I plan to revert that decision.
** SUDO
#+begin_src nix
security.sudo = {
enable = true;
wheelNeedsPassword = false;
};
#+end_src
** OPENDOAS
It's mayor advantage over Sudo, is that is being a smaller package, being lessen known
means that there is less security risks associated with it, overall a less
bloated more secure package. Which comes with the caveat that due to it's age,
there is little support for it. Constantly having to resort to hack solutions
such as patches or symlinks.
#+begin_src nix
# security.sudo.enable = false;
# security.doas.enable = true;
# security.doas.extraRules = [{
# users = [ "jawz" ];
# keepEnv = true;
# #persist = true;
# noPass = true;
# }];
#+end_src
* USER
Being part of the "wheel" group, means that the user has root privileges.
#+begin_src nix
users.users.jawz = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ];
initialPassword = "password";
shell = pkgs.fish;
packages = with pkgs; [ ];
};
#+end_src
* MISC SETTINGS
** ALLOW NON FREE packages
#+begin_src nix
nixpkgs.config = { allowUnfree = true; };
#+end_src
** ENABLE FONTCONFIG
If enabled, a Fontconfig configuration file will point to a set of default
fonts. If you don't care about running X11 applications or any other program
that uses Fontconfig, you can turn this option off and prevent a dependency on
all those fonts.
=tip= once that Wayland is ready for deployment, I probably can remove this
setting.
#+begin_src nix
fonts.fontconfig.enable = true;
#+end_src
** WACOM
This setting could be a requirement for my tablet to properly work. Even
though, my tablet is Huion, the Linux Wacom drivers cover most of the settings.
#+begin_src nix
# services.xserver.libinput.enable = true;
#+end_src
* HOME-MANAGER
** HOME-MANAGER SETTINGS
These make it so packages install to '/etc' rather than the user home directory,
also allow for upgrades when rebuilding the system.
#+begin_src nix
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
#+end_src
** PACKAGES
This section of the document categorizes and organizes all he packages that I
want installed, attempting to group them as dependencies of others when
necessary.
#+begin_src nix
home-manager.users.jawz = { config, pkgs, ... }:{
imports = [ ./dotfiles/dconf.nix ];
home.packages = with pkgs; [
#+end_src
*** GUI PACKAGES
#+begin_src nix
blanket # background noise
blender # cgi animation and sculpting
celluloid # video player
cozy # audiobooks player
czkawka # duplicate finder
discord # chat
dropbox # cloud sync
# foliate # ebook reader
# gnome-podcasts # podcast player
# gnome-recipes # migrate these to mealie and delete
godot # game development
google-chrome # web browser
handbrake # video converter, may be unnecessary
# krita # art to your heart desire!
# libreoffice-fresh # office, but based
# lutris # game/emulator manager
megasync # cloud sync
mpdevil # ugly icon, but pretty mpd client nwn
# pika-backup # backups
pitivi # video editor
tilix # terminal
#+end_src
*** MISC PACKAGES
#+begin_src nix
ffmpegthumbnailer # create video thumbnails for nautilus, in absence of totem
mpdas # scrobble mpd songs to last.fm
#+end_src
*** COMMAND-LINE PACKAGES
#+begin_src nix
gdu # disk-space utility, somewhat useful
gocryptfs # encrypted filesystem! shhh!!!
exa # like ls but with colors
trash-cli # oop! didn't meant to delete that
ffmpeg_5 # coolest video converter!
#+end_src
*** DEVELOPMENT PACKAGES
**** DOOM EMACS
#+begin_src nix
fd # modern find, faster searches
fzf # fuzzy finder! super cool and useful
ripgrep # modern grep
# SH
bashdb # autocomplete
shellcheck # linting
nodePackages.bash-language-server # LSP support
# NIX
nixfmt # linting
# PYTHON.
python # base language
# HASKELL
# cabal-install # haskell interface
# JS
# jq # linting
# Node-js
# nodePackages.pnpm
#+end_src
**** EXERCISM
#+begin_src nix
#+end_src
*** GNOME EXTENSIONS
#+begin_src nix
gnomeExtensions.appindicator
gnomeExtensions.gsconnect
gnome.gnome-tweaks
#+end_src
*** HUNSPELL
These dictionaries work with Firefox, Doom Emacs and LibreOffice.
#+begin_src nix
hunspell
hunspellDicts.it_IT
hunspellDicts.es_MX
hunspellDicts.en_CA
#+end_src
*** CUSTOMIZATION PACKAGES
Also, this finishes the packages array, put new modules above.
#+begin_src nix
# Fonts
(nerdfonts.override {
fonts = [ "Agave" "CascadiaCode" "SourceCodePro" "Ubuntu" ];
})
# (papirus-icon-theme.override {
# color = "grey";
# })
];
#+end_src
** DOTFILES
*** FISH
#+begin_src nix
programs.starship.enable = true;
programs.fish = {
enable = true;
# useBabelfish = true; This setting doens't work from inside home-manager
shellAliases = {
ls = "exa --icons --group-directories-first --no-permissions --no-user --no-time";
edit = "emacsclient -t";
comic = "download -u jawz -i (cat $lc | fzf --multi --exact -i)";
gallery = "download -u jawz -i (cat $lw | fzf --multi --exact -i)";
open_gallery = "open (find ${config.xdg.userDirs.download}/To\ Organize/gdl-organizing/ -type d | fzf)";
unique_extensions = "find . -type f | string match -r '([^.\/]+)\$' | sort -u";
cp = "cp -i";
mv = "mv -i";
mkdir = "mkdir -p";
rm = "trash";
".." = "cd ..";
"..." = "cd ../..";
".3" = "cd ../../..";
".4" = "cd ../../../..";
".5" = "cd ../../../../..";
};
shellAbbrs = {
dl = "download -u jawz -i";
e = "edit";
c = "cat";
f = "fzf --multi --exact -i";
sc = "systemctl --user";
jc = "journalctl --user -xeu";
};
interactiveShellInit = ''
#+end_src
#+begin_src fish
set fish_greeting "pika pika chu!!!! also remember fisher!"
# Lists
set -l list_root ${config.home.homeDirectory}/Dropboxxx/jawz
set lw $list_root/watch.txt
set li $list_root/instant.txt
set lc $list_root/comic.txt
set GPG_TTY (tty)
# Set EMACS/VI mode
function fish_user_key_bindings
# fish_default_key_bindings
fish_vi_key_bindings
end
#+end_src
#+begin_src nix
'';
#+end_src
#+begin_src nix
functions = {
nix_magic = ''
#+end_src
#+begin_src fish
nixfmt ~/MEGAsync/nixos/configuration.nix
sudo rsync -r ~/MEGAsync/nixos/ /etc/nixos/
sudo nixos-rebuild switch
#+end_src
#+begin_src nix
'';
};
};
#+end_src
*** BAT
#+begin_src nix
programs.bat = {
enable = true;
config = {
# map-syntax = [ "*.jenkinsfile:Groovy" "*.props:Java Properties" ];
pager = "less -FR";
theme = "base16"; };
};
#+end_src
*** BEETS
#+begin_src nix
programs.beets = {
enable = true;
settings = {
directory = "${config.xdg.userDirs.music}";
library = "${config.xdg.dataHome}/beets/musiclibrary.db";
plugins = "embedart fetchart lyrics discogs spotify deezer edit lastgenre mbsync replaygain scrub mpdupdate duplicates info fish ftintitle fuzzy";
ignore_hidden = true;
threaded = true;
duplicate = {
album = false;
delete = false;
};
ftintitle = {
auto = true;
drop = true;
format = "feat. {0}";
};
fetchart = {
maxwidth = 1000;
quality = 70;
enforce_ratio = true;
lastfm_key = "aeae592346534482202bd94bc14a80c4";
fanarttv_key = "f12b0931d2f971a5b5215c3f451bafb7";
sources = "*";
cover_format = "JPEG";
};
embedart = {
auto = true;
maxwidth = 1000;
quality = 70;
remove_art_file = false;
ifempty = true;
};
lyrics = {
auto = true;
sources = "*";
};
replaygain = {
auto = true;
overwrite = true;
peak = "true";
backend = "ffmpeg";
};
lastgenre = {
auto = true;
canonical = true;
force = true;
source = "album";
count = 1;
title_case = true;
};
mpd = {
host = "localhost";
port = 6600;
};
ui = {
color = true;
};
"import" = {
move = true;
write = true;
genres = true;
log = "${config.xdg.dataHome}/beets/beetslog.txt";
};
replace = {
"[\\\\/]" = ""; # \ /
"^\\." = ""; # dotfiles
"[\\x00-\\x1f]" = ""; # NULL to US
"\\x00" = ""; # NULL
"[<>:\"\\?\\*\\|]" = ""; # <>:"?*|
"\\.$" = ""; # dot at the end
"\\s+$" = ""; # ends with whitespace
"^\\s+" = ""; # starts with whitespace
"^-" = ""; # starts with -
};
paths = {
default = "$albumartist/$album/$track $title";
singleton = "Singletons/$artist - $title";
comp = "$album/$track $title";
"albumtype:soundtrack" = "Soundtracks/$album/$track $title";
};
convert = {
auto = true;
embed = true;
delete_originals = true;
extension = "opus";
# command = "ffmpeg -i $source -y -vn -acodec libopus -ab 256k $dest";
};
};
};
#+end_src
*** GIT
#+begin_src nix
programs.git = {
enable = true;
userName = "Danilo Reyes";
userEmail = "CaptainJawZ@outlook.com";
};
#+end_src
*** GNUPG
#+begin_src nix
programs.gpg = {
enable = true;
homedir = "${config.xdg.dataHome}/gnupg";
};
#+end_src
*** HTOP
#+begin_src nix
programs.htop = {
enable = true;
package = pkgs.htop-vim;
};
xdg.configFile."htop/htoprc".source = ./dotfiles/htop/htoprc;
#+end_src
*** XDG
#+begin_src nix
xdg = {
enable = true;
};
xdg.userDirs = {
enable = true;
# createDirectories = true;
desktop = "${config.home.homeDirectory}";
documents = "${config.home.homeDirectory}/Documents";
download = "${config.home.homeDirectory}/Downloads";
music = "${config.home.homeDirectory}/Music";
pictures = "${config.home.homeDirectory}/Pictures";
publicShare = "${config.home.homeDirectory}/.local/hd/Public";
templates = "${config.home.homeDirectory}/.local/share/Templates";
videos = "${config.home.homeDirectory}/Videos";
};
#+end_src
*** OTHER
#+begin_src nix
xdg.configFile = {
"wgetrc".source = ./dotfiles/wget/wgetrc;
"configstore/update-notifier-npm-check.json".source = ./dotfiles/npm/update-notifier-npm-check.json;
"npm/npmrc".source = ./dotfiles/npm/npmrc;
"gallery-dl/config.json".source = ./dotfiles/gallery-dl/config.json;
# "gopass/config.yml".source = ./dotfiles/gopass/config.yml;
"mpdasrc".source = ./dotfiles/mpdas/mpdasrc;
};
#+end_src
** USER-SERVICES
*** MPD
#+begin_src nix
services.mpd = {
enable = true;
musicDirectory = "${config.xdg.userDirs.music}";
network.listenAddress = "any";
# network.startWhenNeeded = true;
extraConfig = ''
#+end_src
#+begin_src conf
restore_paused "yes"
auto_update "yes"
follow_outside_symlinks "yes"
follow_inside_symlinks "yes"
# zeroconf_enabled "yes"
# zeroconf_name "Music Player @ %h"
input {
plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
}
audio_output {
type "pipewire"
name "PipeWire Sound Server"
}
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
replaygain "auto"
replaygain_limit "yes"
volume_normalization "yes"
#+end_src
#+begin_src nix
'';
};
#+end_src
*** MPD EXTENSIONS
#+begin_src nix
services.mpd-discord-rpc.enable = true;
services.mpdris2 = {
enable = true;
multimediaKeys = true;
mpd.host = "localhost";
};
#+end_src
** CLOSING HOME-MANAGER
#+begin_src nix
};
#+end_src
* ENVIRONMENT PACKAGES
These are a MUST to ensure the optimal function of nix, without these, recovery
may be challenging.
#+begin_src nix
environment.systemPackages = with pkgs; [
wget
git
];
#+end_src
* ENVIRONMENT VARIABLES
#+begin_src nix
environment.sessionVariables = rec {
# PATH
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
SCRIPTS = "/home/jawz/Development/Scripts";
# DEV PATH
CABAL_CONFIG = "\${XDG_CONFIG_HOME}/cabal/config";
CABAL_DIR = "\${XDG_CACHE_HOME}/cabal";
CARGO_HOME = "\${XDG_DATA_HOME}/cargo";
GEM_HOME = "\${XDG_DATA_HOME}/ruby/gems";
GEM_PATH = "\${XDG_DATA_HOME}/ruby/gems";
GEM_SPEC_CACHE = "\${XDG_DATA_HOME}/ruby/specs";
GOPATH = "\${XDG_DATA_HOME}/go";
NPM_CONFIG_USERCONFIG = "\${XDG_CONFIG_HOME}/npm/npmrc";
PNPM_HOME = "\${XDG_DATA_HOME}/pnpm";
# OPTIONS
LESSHISTFILE = "-";
GHCUP_USE_XDG_DIRS = "true";
RIPGREP_CONFIG_PATH = "\${XDG_CONFIG_HOME}/ripgrep/ripgreprc";
ELECTRUMDIR = "\${XDG_DATA_HOME}/electrum";
VISUAL = "emacsclient -ca emacs";
WGETRC = "\${XDG_CONFIG_HOME}/wgetrc";
"_JAVA_OPTIONS" = "-Djava.util.prefs.userRoot=/home/jawz/.config/java";
# NVIDIA
CUDA_CACHE_PATH = "\${XDG_CACHE_HOME}/nv";
# GBM_BACKEND = "nvidia-drm";
# "__GLX_VENDOR_LIBRARY_NAME" = "nvidia";
# FISH
fisher_path = "\${XDG_CONFIG_HOME}/fish/fisher";
# Themes
# GTK_THEME = "Adwaita:light";
# QT_QPA_PLATFORMTHEME = "adwaita-dark";
# QT_STYLE_OVERRIDE = "adwaita";
# CALIBRE_USE_SYSTEM_THEME = "1";
PATH = [
"\${XDG_BIN_HOME}"
"\${XDG_CONFIG_HOME}/emacs/bin"
# "\${XDG_DATA_HOME}/npm/bin"
# "\${XDG_DATA_HOME}/pnpm"
"\${SCRIPTS}"
];
};
#+end_src
* WRAPPERS
Some programs need SUID wrappers.
** NETWORK DIAGNOSTICS TOOL
I don't know what it does, but it's recommended.
#+begin_src nix
programs.mtr.enable = true;
#+end_src
** GNUPG
#+begin_src nix
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
#+end_src
* SYSTEM-SERVICES
** CADDY
#+begin_src nix
# services.caddy = {
# enable = true;
# email = "CaptainJawZ@outlook.com";
# configFile = ./dotfiles/Caddyfile;
# # config = ''
# # torrent.danilo-reyes.com {
# # reverse_proxy localhost:9091
# # }
# # '';
# };
#+end_src
** EMACS
#+begin_src nix
services.emacs = {
enable = true;
defaultEditor = true;
package = pkgs.emacs28NativeComp;
};
#+end_src
** HARD-DRIVE MAINTENANCE
#+begin_src nix
services.fstrim.enable = true;
services.btrfs.autoScrub = {
enable = true;
fileSystems = [
"/"
# "/torrents"
# "/home/jawz/.local/hd" # Maybe change mount point?
];
};
#+end_src
** OPENSSH
#+begin_src nix
services.openssh = {
enable = true;
ports = [ 25152 ];
};
#+end_src
** UDEV
#+begin_src nix
services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
#+end_src
* FIREWALL
Open ports in the firewall.
=TIP= list what app a port belongs to in a table.
#+begin_src nix
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
networking.firewall.enable = false;
#+end_src
* FINAL SYSTEM CONFIGURATIONS
** CREATE COPY OF NIXOS CONFIGURATION
Copy the NixOS configuration file and link it from the resulting system
(/run/current-system/configuration.nix). This is useful in case you
accidentally delete configuration.nix.
#+begin_src nix
system.copySystemConfiguration = true;
#+end_src
** NIX VERSION
This value determines the NixOS release from which the default settings for
stateful data, like file locations and database versions on your system.
Its perfectly fine and recommended to leave this value at the release version
of the first install of this system.
Before changing this value read the documentation for this option.
#+begin_src nix
system.stateVersion = "22.05";
#+end_src
** CLOSING :D
That super pesky closing bracket.
#+begin_src nix
}
#+end_src

147
dotfiles/Caddyfile Executable file
View File

@ -0,0 +1,147 @@
sonarr.danilo-reyes.com {
reverse_proxy localhost:8989
}
code.danilo-reyes.com {
reverse_proxy localhost:5538
}
radarr.danilo-reyes.com {
reverse_proxy localhost:7878
}
bazarr.danilo-reyes.com {
reverse_proxy localhost:6767
}
prowlarr.danilo-reyes.com {
reverse_proxy localhost:9696
}
flix.danilo-reyes.com {
reverse_proxy localhost:8096
}
library.danilo-reyes.com {
reverse_proxy localhost:5000
}
shiori.danilo-reyes.com {
reverse_proxy localhost:7680
}
start.danilo-reyes.com {
reverse_proxy localhost:5005
}
torrent.danilo-reyes.com {
reverse_proxy localhost:9091
}
kitchen.danilo-reyes.com {
reverse_proxy localhost:9925
}
vault.danilo-reyes.com {
log {
level INFO
output file /home/jawz/Development/Docker/vaultwarden/caddy.log {
roll_size 10MB
roll_keep 10
}
}
tls captainjawz@outlook.com
# comment if giving issues with firefox
encode gzip
@insecureadmin {
not remote_ip 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8
path /admin*
}
redir @insecureadmin /
reverse_proxy /notifications/hub localhost:3012
reverse_proxy localhost:7780 {
header_up X-Real-IP {remote_host}
}
}
searx.danilo-reyes.com {
log {
output discard
}
tls captainjawz@outlook.com
@api {
path /config
path /healthz
path /stats/errors
path /stats/checker
}
@static {
path /static/*
}
@notstatic {
not path /static/*
}
@imageproxy {
path /image_proxy
}
@notimageproxy {
not path /image_proxy
}
header {
# Enable HTTP Strict Transport Security (HSTS) to force clients to always connect via HTTPS
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
# Enable cross-site filter (XSS) and tell browser to block detected attacks
X-XSS-Protection "1; mode=block"
# Prevent some browsers from MIME-sniffing a response away from the declared Content-Type
X-Content-Type-Options "nosniff"
# Disable some features
Permissions-Policy "accelerometer=(),ambient-light-sensor=(),autoplay=(),camera=(),encrypted-media=(),focus-without-user-activation=(),geolocation=(),gyroscope=(),magnetometer=(),microphone=(),midi=(),payment=(),picture-in-picture=(),speaker=(),sync-xhr=(),usb=(),vr=()"
# Disable some features (legacy)
Feature-Policy "accelerometer 'none';ambient-light-sensor 'none'; autoplay 'none';camera 'none';encrypted-media 'none';focus-without-user-activation 'none'; geolocation 'none';gyroscope 'none';magnetometer 'none';microphone 'none';midi 'none';payment 'none';picture-in-picture 'none'; speaker 'none';sync-xhr 'none';usb 'none';vr 'none'"
# Referer
Referrer-Policy "no-referrer"
# X-Robots-Tag
X-Robots-Tag "noindex, noarchive, nofollow"
# Remove Server header
-Server
}
header @api {
Access-Control-Allow-Methods "GET, OPTIONS"
Access-Control-Allow-Origin "*"
}
# Cache
header @static {
# Cache
Cache-Control "public, max-age=31536000"
defer
}
header @notstatic {
# No Cache
Cache-Control "no-cache, no-store"
Pragma "no-cache"
}
# CSP (see http://content-security-policy.com/ )
header @imageproxy {
Content-Security-Policy "default-src 'none'; img-src 'self' data:"
}
header @notimageproxy {
Content-Security-Policy "upgrade-insecure-requests; default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; form-action 'self'; font-src 'self'; frame-ancestors 'self'; base-uri 'self'; connect-src 'self' https://overpass-api.de; img-src 'self' data: https://*.tile.openstreetmap.org; frame-src https://www.youtube-nocookie.com https://player.vimeo.com https://www.dailymotion.com https://www.deezer.com https://www.mixcloud.com https://w.soundcloud.com https://embed.spotify.com"
}
# SearXNG
handle {
encode zstd gzip
reverse_proxy localhost:8080 {
header_up X-Forwarded-Port {http.request.port}
header_up X-Forwarded-Proto {http.request.scheme}
}
}
}

128
dotfiles/dconf.nix Executable file
View File

@ -0,0 +1,128 @@
# Generated via dconf2nix: https://github.com/gvolpe/dconf2nix
{ lib, ... }:
with lib.hm.gvariant;
{
dconf.settings = {
"com/gexperts/Tilix" = {
control-scroll-zoom = true;
copy-on-select = true;
new-instance-mode = "new-session";
terminal-title-style = "none";
theme-variant = "system";
};
"com/gexperts/Tilix/profiles" = {
list = [ "2b7c4080-0ddd-46c5-8f23-563fd3ba789d" ];
};
"com/gexperts/Tilix/profiles/2b7c4080-0ddd-46c5-8f23-563fd3ba789d" = {
background-color = "#FAFAFAFAFAFA";
background-transparency-percent = 0;
badge-color = "#AC7EA8";
badge-color-set = false;
badge-position = "northeast";
badge-text = "";
badge-use-system-font = true;
bold-color-set = false;
bold-is-bright = false;
cursor-colors-set = false;
custom-command = "fish";
font = "SauceCodePro Nerd Font Mono 17";
foreground-color = "#444444444444";
highlight-colors-set = false;
login-shell = false;
notify-silence-enabled = false;
palette = [ "#777776767B7B" "#FFFF5F5F5F5F" "#8787AFAF5F5F" "#FFFFAFAF8787" "#5F5F9393FFFF" "#FFFF5F5FFFFF" "#5F5FE3E3FFFF" "#C0C0BFBFBCBC" "#5F5F5A5A6060" "#FFFF87878787" "#AFAFD7D78787" "#FFFFD7D7AFAF" "#8787AFAFFFFF" "#FFFF8787FFFF" "#8787EAEAFFFF" "#9A9A99999696" ];
scrollback-lines = 2147483647;
use-custom-command = false;
use-system-font = false;
use-theme-colors = false;
visible-name = "Light Theme";
};
"io/github/celluloid-player/celluloid" = {
dark-theme-enable = false;
mpv-config-enable = true;
mpv-config-file = "file:///home/jawz/.config/mpv/mpv.conf";
mpv-input-config-enable = true;
mpv-input-config-file = "file:///home/jawz/.config/mpv/input.conf";
settings-migrated = true;
};
"org/gnome/Weather" = {
locations = "[<(uint32 2, <('Querétaro', 'MMQT', true, [(0.35953782591083194, -1.752019674975877)], [(0.35953782591083194, -1.752019674975877)])>)>]";
};
"org/gnome/clocks" = {
world-clocks = "[{'location': <(uint32 2, <('Seattle', 'KBFI', true, [(0.82983133145337307, -2.134775231953554)], [(0.83088509144255718, -2.135097419733472)])>)>}, {'location': <(uint32 2, <('Dallas', 'KDAL', true, [(0.57338429251143708, -1.690448351049749)], [(0.57217226606568217, -1.6895950770317414)])>)>}, {'location': <(uint32 2, <('Cleveland', 'KBKL', true, [(0.72475767592128648, -1.4253910094957791)], [(0.72430282566492421, -1.4258538708134081)])>)>}, {'location': <(uint32 2, <('London', 'EGWU', false, [(0.89971722940307675, -0.007272211034407213)], [(0.89971722940307675, -0.007272211034407213)])>)>}, {'location': <(uint32 2, <('Auckland', 'NZAA', true, [(-0.64606271726433173, 3.0508355324860883)], [(-0.64344472338634029, 3.0502537618865206)])>)>}]";
};
"org/gnome/desktop/datetime" = {
automatic-timezone = true;
};
"org/gnome/desktop/input-sources" = {
sources = [ (mkTuple [ "xkb" "us" ]) ];
xkb-options = [ "compose:menu" ];
};
"org/gnome/desktop/interface" = {
icon-theme = "Papirus";
};
"org/gnome/desktop/peripherals/keyboard" = {
numlock-state = true;
};
"org/gnome/desktop/peripherals/touchpad" = {
two-finger-scrolling-enabled = true;
};
"org/gnome/desktop/privacy" = {
disable-camera = true;
disable-microphone = true;
old-files-age = mkUint32 30;
recent-files-max-age = -1;
};
"org/gnome/desktop/search-providers" = {
sort-order = [ "org.gnome.Contacts.desktop" "org.gnome.Documents.desktop" "org.gnome.Nautilus.desktop" ];
};
"org/gnome/desktop/session" = {
idle-delay = mkUint32 900;
};
"org/gnome/desktop/wm/preferences" = {
action-middle-click-titlebar = "minimize";
};
"org/gnome/nautilus/preferences" = {
open-folder-on-dnd-hover = false;
};
"org/gnome/shell/weather" = {
automatic-location = true;
locations = "[<(uint32 2, <('Querétaro', 'MMQT', true, [(0.35953782591083194, -1.752019674975877)], [(0.35953782591083194, -1.752019674975877)])>)>]";
};
"org/gnome/shell/world-clocks" = {
locations = "[<(uint32 2, <('Seattle', 'KBFI', true, [(0.82983133145337307, -2.134775231953554)], [(0.83088509144255718, -2.135097419733472)])>)>, <(uint32 2, <('Dallas', 'KDAL', true, [(0.57338429251143708, -1.690448351049749)], [(0.57217226606568217, -1.6895950770317414)])>)>, <(uint32 2, <('Cleveland', 'KBKL', true, [(0.72475767592128648, -1.4253910094957791)], [(0.72430282566492421, -1.4258538708134081)])>)>, <(uint32 2, <('London', 'EGWU', false, [(0.89971722940307675, -0.007272211034407213)], [(0.89971722940307675, -0.007272211034407213)])>)>, <(uint32 2, <('Auckland', 'NZAA', true, [(-0.64606271726433173, 3.0508355324860883)], [(-0.64344472338634029, 3.0502537618865206)])>)>]";
};
"org/gnome/system/location" = {
enabled = true;
};
"org/gnome/tweaks" = {
show-extensions-notice = false;
};
"org/mpdevil/mpdevil" = {
mpris = false;
};
};
}

200
dotfiles/gallery-dl/config.json Executable file
View File

@ -0,0 +1,200 @@
{
"extractor": {
"cookies": ["chrome", "Default", "gnomekeyring"],
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36",
"retries": 10,
"sleep-request": 0,
"directlink": {
"directory": [],
"filename": "{filename}.{extension}"
},
"twitter": {
"directory": ["{user[name]}"],
"retweets": false,
"videos": true,
"logout": true
},
"flickr": {
"directory": ["{category}", "{owner[username]}"],
"size-max": "Original",
"access-token": "72157720849409732-e83af94a8ca145aa",
"access-token-secret": "0c7e86529694756a"
},
"instagram": {
"sleep-request": 5,
"directory": ["{username}"],
"parent-directory": true,
"highlights": {
"reverse": "true",
"directory": ["{username}"]
},
"stories": {
"reverse": "true",
"directory": ["{username}"]
},
"tagged": {
"directory": ["{tagged_username}", "tagged"]
}
},
"kemonoparty": {
"directory": ["{category}", "{user}"],
"retries": 10,
"timeout": 5,
"filename": "{id}_{filename}.{extension}"
},
"exhentai": {
"directory": ["{category}", "{title}"]
},
"tumblr": {
"directory": ["{blog_name}"],
"access-token": "NIbuc8UhR7ipT6Mqvy91TaFSnmDG0VnpElIyac8Lb36L7dAN3j",
"access-token-secret": "0YqHwyYFUH1JerYjS2N0snAA8xiB3OFSI6Z91skoBpuqs5SJAc",
"external": true,
"inline": true,
"posts": "all",
"reblogs": false,
"parent-directory": true,
"api-key": "uhBUtgPaX9gl7eaD8suGWW6ZInRedQoVT6xsZzopljy0jXHqm5",
"api-secret": "D3FDj1INyPzXikVpp4jmzSqjlC9czFUQ8oj2I883PSYJdqwURv"
},
"deviantart": {
"client-id": "20016",
"client-secret": "52e1f9b0cb26e673da36f69e2ddd0e9a",
"refresh-token": "4f9817b7c42671003e10dd5a5a48473855779359",
"directory": ["{username}"],
"include": "gallery,scraps",
"flat": true,
"original": true,
"mature": true,
"auto-watch": true,
"auto-unwatch": true
},
"furaffinity": {
"directory": ["{artist}"],
"include": ["scraps", "gallery"]
},
"patreon": {
"directory": [
"(Patreon) {creator[vanity]}",
"({date:%Y%m%d}) {title} ({id})"
],
"filename": "{filename}.{extension}"
},
"blogger": {
"directory": ["{blog[name]}", "{post[author]}"],
"filename": "{filename} - {num}.{extension}"
},
"artstation": {
"directory": ["{userinfo[username]}"],
"external": true
},
"gfycat": {
"format": "webm"
},
"reddit": {
"user-agent": "Python:gallery-dl:v1.0 (by /u/captainjawz)",
"client-id": "T7nZ6WZ3_onJWBhLP8r08g",
"refresh-token": "184157546842-lQ_NOSVjzJ6udAsvple9mftkOcs0rg",
"directory": ["{author}"],
"parent-directory": true
},
"redgifs": {
"directory": ["{userName}"]
},
"imgur": {
"mp4": true
},
"paheal": {
"directory": ["Husbands", "{search_tags}"]
},
"e621": {
"directory": ["Husbands", "{search_tags}"]
},
"pixiv": {
"refresh-token": "O4kc9tTzGItuuacDcfmevW6NELjm5CJdWiAbZdUv3Kk",
"directory": ["{user[account]} - {user[id]}"],
"ugoira": true,
"favorite": {
"directory": [
"{user_bookmark[account]} - {user_bookmark[id]}",
"Bookmarks"
]
},
"postprocessors": [
{
"name": "ugoira",
"extension": "webm",
"keep-files": false,
"whitelist": ["pixiv"],
"ffmpeg-twopass": true,
"ffmpeg-args": ["-c:v", "libvpx", "-crf", "4", "-b:v", "5000k", "-an"]
}
]
},
"readcomiconline": {
"chapter-reverse": true,
"directory": ["Comics", "{comic}", "{comic} #{issue}"],
"quality": "hq",
"captcha": "wait",
"postprocessors": ["cbz"]
},
"kissmanga": {
"chapter-reverse": true,
"directory": ["Manga", "{manga}", "{manga} Ch.{chapter}{chapter_minor}"],
"captcha": "wait",
"postprocessors": ["cbz"]
},
"mangahere": {
"chapter-reverse": true,
"directory": ["Manga", "{manga}", "{manga} Ch.{chapter}{chapter_minor}"],
"postprocessors": ["cbz"]
},
"mangadex": {
"chapter-reverse": true,
"chapter-filter": "lang == 'en'",
"directory": ["Manga", "{manga}", "{manga} Ch.{chapter}{chapter_minor}"],
"postprocessors": ["cbz"]
},
"mangareader": {
"chapter-reverse": true,
"directory": ["Manga", "{manga}", "{manga} Ch.{chapter}{chapter_minor}"],
"postprocessors": ["cbz"]
},
"mangapanda": {
"chapter-reverse": true,
"directory": ["Manga", "{manga}", "{manga} Ch.{chapter}{chapter_minor}"],
"postprocessors": ["cbz"]
},
"webtoons": {
"chapter-reverse": true,
"directory": ["Webtoons", "{comic}", "{comic} #{episode}"],
"postprocessors": ["cbz"]
}
},
"output": {
"mode": "auto"
},
"downloader": {
"part": true,
"part-directory": "/home/jawz/.cache/gallery-dl",
"ytdl": {
"logging": true,
"format": "bestvideo+bestaudio/best",
"forward-cookies": true
},
"http": {
"rate": null,
"retries": 5,
"timeout": 10.0,
"verify": true
}
},
"postprocessor": {
"cbz": {
"name": "zip",
"compression": "store",
"mode": "safe",
"extension": "cbz"
}
}
}

10
dotfiles/gopass/config.yml Executable file
View File

@ -0,0 +1,10 @@
autoclip: true
autoimport: false
cliptimeout: 45
exportkeys: false
nopager: false
notifications: false
parsing: true
path: /home/jawz/.local/share/pass
safecontent: true
mounts: {}

61
dotfiles/htop/htoprc Executable file
View File

@ -0,0 +1,61 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
htop_version=3.2.1
config_reader_min_version=3
fields=18 0 123 124 46 47 38 50 1
hide_kernel_threads=0
hide_userland_threads=0
shadow_other_users=0
show_thread_names=0
show_program_path=0
highlight_base_name=1
highlight_deleted_exe=1
highlight_megabytes=1
highlight_threads=1
highlight_changes=0
highlight_changes_delay_secs=5
find_comm_in_cmdline=1
strip_exe_from_cmdline=1
show_merged_command=1
header_margin=1
screen_tabs=1
detailed_cpu_time=0
cpu_count_from_one=1
show_cpu_usage=1
show_cpu_frequency=1
show_cpu_temperature=1
degree_fahrenheit=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=3
enable_mouse=1
delay=15
hide_function_bar=0
header_layout=two_67_33
column_meters_0=LeftCPUs Swap Tasks NetworkIO Memory
column_meter_modes_0=1 1 2 2 2
column_meters_1=RightCPUs Hostname Uptime LoadAverage
column_meter_modes_1=1 2 2 2
tree_view=1
sort_key=38
tree_sort_key=0
sort_direction=-1
tree_sort_direction=1
tree_view_always_by_pid=1
all_branches_collapsed=1
screen:Main=NICE PID COMM EXE PERCENT_CPU PERCENT_MEM M_VIRT NLWP Command
.sort_key=M_VIRT
.tree_sort_key=PID
.tree_view=1
.tree_view_always_by_pid=1
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=1
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
.sort_key=IO_RATE
.tree_sort_key=PID
.tree_view=0
.tree_view_always_by_pid=0
.sort_direction=-1
.tree_sort_direction=1
.all_branches_collapsed=0

4
dotfiles/mpdas/mpdasrc Executable file
View File

@ -0,0 +1,4 @@
username = Dornisaurio
password = PUOghI][pd<nIfjNl|!P3+>Ux|1W>druS)Alxh]b{!B0QM~,u@SKRi>p?xb)3qEy
host = localhost
port = 6600

7
dotfiles/npm/npmrc Executable file
View File

@ -0,0 +1,7 @@
user=0
unsafe-perm=true
prefix=${XDG_DATA_HOME}/npm
cache=${XDG_CACHE_HOME}/npm
tmp=${XDG_RUNTIME_DIR}/npm
init-module=${XDG_CONFIG_HOME}/npm/config/npm-init.js
store-dir=${XDG_DATA_HOME}/pnpm-store

View File

@ -0,0 +1,4 @@
{
"optOut": false,
"lastUpdateCheck": 1646662583446
}

1
dotfiles/wget/wgetrc Executable file
View File

@ -0,0 +1 @@
hsts-file = /home/jawz/.cache/wget-hsts

55
hardware-configuration.nix Executable file
View File

@ -0,0 +1,55 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/3061620b-35eb-4b5f-b4e8-0e208404a749";
fsType = "btrfs";
options = [ "subvol=@" "compress=zstd:3" "ssd" "space_cache=v2" "commit=120" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/3061620b-35eb-4b5f-b4e8-0e208404a749";
fsType = "btrfs";
options = [ "subvol=@home" "compress=zstd:3" "ssd" "space_cache=v2" "commit=120" ];
};
fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/3061620b-35eb-4b5f-b4e8-0e208404a749";
fsType = "btrfs";
options = [ "subvol=@nix" "compress=zstd:3" "ssd" "space_cache=v2" "commit=120" "noatime" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/FF77-8AB3";
fsType = "vfat";
};
fileSystems."/swap" =
{ device = "/dev/disk/by-uuid/3061620b-35eb-4b5f-b4e8-0e208404a749";
fsType = "btrfs";
options = [ "subvol=@swap" "noatime" ];
};
swapDevices = [ { device = "/swap/swapfile"; } ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

90
pacman list Executable file
View File

@ -0,0 +1,90 @@
# adw-gtk3
# adwaita-qt5
bash-language-server
caddy
curtail
# dnsmasq
# docker
# docker-compose
fail2ban
firewalld
fontdownloader
furtherance
gallery-dl-git
gnome-kra-ora-thumbnailer-git
graphviz
grilo-plugins
gtkhash-nautilus-git
haskell-language-server
hoogle
hunspell-en_ca
hunspell-es_mx
hunspell-it
identity-git
intel-ucode
languagetool
lazydocker
man-db
man-pages
menulibre
mousai
mpc
mpd
mpdas
mpdevil
mpdris2
mypaint
nautilus-megasync
ncmpcpp
neofetch
noise-suppression-for-voice
noto-fonts-cjk
npm
nss-mdns
nvidia
nvidia-container-toolkit
opendoas
orca
pacman-contrib
papirus-folders-git
papirus-libreoffice-theme
paru
patch
pika-backup
pipewire-v4l2
pkgconf
pokemon-colorscripts-git
protonvpn
pureref
python-nautilus
python-pipx
qemu-desktop
reflector
ripgrep
rmlint
rygel
samba
seahorse
seahorse-nautilus
shellcheck
starship
steam
sushi
syncplay
syncthing
texlive-latexextra
texlive-science
tilix
timeshift
topgrade
transmission-gtk
trash-cli
vino
virt-manager
warp
webp-pixbuf-loader
wine
wl-clipboard
xclip
xdg-user-dirs-gtk
zram-generator

162
pacman list new Executable file
View File

@ -0,0 +1,162 @@
adw-gtk3
adwaita-qt5
bash-bats # exercism
bash-language-server
beets # check plugins
bluez-utils-compat
celluloid
curtail # build
discord
discount
dnsmasq
docker
docker-compose
dropbox
easyeffects
emacs
eog
exa
exercism
fail2ban
fd
ffmpegthumbnailer
file-roller
firefox
firewalld
fish
flex
foliate
fontdownloader
furtherance
fzf
gallery-dl-git
gdm
gdu
geary
gifsicle
gnome-backgrounds
gnome-browser-connector
gnome-calculator
gnome-calendar
gnome-clocks
gnome-kra-ora-thumbnailer-git
gnome-logs
gnome-maps
gnome-podcasts
gnome-recipes
gnome-remote-desktop
gnome-shell-extension-gsconnect
gnome-system-monitor
gnome-tweaks
gnome-user-share
gnome-weather
gocryptfs
godot
google-chrome
graphviz
grilo-plugins
gst-plugin-pipewire
gtkhash-nautilus-git
gvfs-afc
gvfs-google
gvfs-gphoto2
gvfs-mtp
gvfs-nfs
gvfs-smb
handbrake
hoogle
htop
huiontablet
hunspell-en_ca
hunspell-es_mx
hunspell-it
identity
intel-ucode
krita
languagetool
lazydocker
libreoffice-fresh
linux-firmware
linux-headers
lutris
make
malcontent
man-db
man-pages
menulibre
mousai
mpc
mpd
mpdas
mpdevil
mpdris2
mypaint
nautilus-megasync
ncmpcpp
neofetch
nerd-fonts-cascadia-code
nerd-fonts-source-code-pro
nerd-fonts-ubuntu-mono
nixfmt
noise-suppression-for-voice
noto-fonts-cjk
noto-fonts-emoji
npm
nss-mdns
nvidia
nvidia-container-toolkit
orca
pacman-contrib
papirus-folders-git
papirus-libreoffice-theme
paru
patch
pika-backup
pipewire-v4l2
pitivi
pkgconf
pokemon-colorscripts-git
pokeshell-git
profile-sync-daemon
protonvpn
pureref
python-discogs-client
python-httpx
python-nautilus
python-pip
python-pipx
python-pylast
qemu-desktop
reflector
ripgrep
rmlint
rygel
samba
seahorse
seahorse-nautilus
shfmt
sshfs
starship
steam
sudo
sushi
syncplay
syncthing
texlive-latexextra
texlive-science
tilix
tldr
topgrade
transmission-gtk
trash-cli
vino
virt-manager
warp
webp-pixbuf-loader
wine
wl-clipboard
xclip
xdg-ninja-git
xdg-user-dirs-gtk
yt-dlp
zram-generator