diff --git a/configuration.nix b/configuration.nix index add2a90..e50ac96 100644 --- a/configuration.nix +++ b/configuration.nix @@ -3,756 +3,745 @@ let open_firewall_ports = [ 80 # http 443 # https + 6969 # HentaiAtHome 25152 # ssh 49494 # gerbera ]; - open_firewall_port_ranges = [ - { from = 1714; to = 1764; } # kdeconnect - ]; + open_firewall_port_ranges = [{ + from = 1714; + to = 1764; + } # kdeconnect + ]; VERSION = "23.05"; # "https://github.com/nix-community/home-manager/archive/master.tar.gz"; - unstable_tarball = builtins.fetchTarball - https://github.com/nixos/nixpkgs/tarball/master; - unstable = import unstable_tarball { - config = config.nixpkgs.config; + unstable_tarball = + builtins.fetchTarball "https://github.com/nixos/nixpkgs/tarball/master"; + unstable = import unstable_tarball { config = config.nixpkgs.config; }; + nix-gaming = import (builtins.fetchTarball + "https://github.com/fufexan/nix-gaming/archive/master.tar.gz"); + nextcloud_scrapsync = pkgs.writeScriptBin "nextcloud_scrapsync" + (builtins.readFile ./scripts/nextcloud_scrapsync.sh); + manage_library = pkgs.writeScriptBin "manage_library" + (builtins.readFile ./scripts/manage_library.fish); + ffmpeg4discord = pkgs.writeScriptBin "ffmpeg4discord" + (builtins.readFile ./scripts/ffmpeg4discord.py); +in { # Remember to close this bracket at the end of the document + + imports = [ + ./hardware-configuration.nix + + + "${nix-gaming}/modules/pipewireLowLatency.nix" + ]; + + networking.hostName = "workstation"; + # networking.wireless.enable = true; + networking.networkmanager.enable = true; + + time.timeZone = "America/Mexico_City"; + + i18n = { + defaultLocale = "en_CA.UTF-8"; + extraLocaleSettings = { LC_MONETARY = "es_MX.UTF-8"; }; }; - nix-gaming = import (builtins.fetchTarball "https://github.com/fufexan/nix-gaming/archive/master.tar.gz"); - nextcloud_scrapsync = pkgs.writeScriptBin - "nextcloud_scrapsync" (builtins.readFile ./scripts/nextcloud_scrapsync.sh); - manage_library = pkgs.writeScriptBin - "manage_library" (builtins.readFile ./scripts/manage_library.fish); - ffmpeg4discord = pkgs.writeScriptBin - "ffmpeg4discord" (builtins.readFile ./scripts/ffmpeg4discord.py); -in -{ # Remember to close this bracket at the end of the document - -imports = [ - ./hardware-configuration.nix - - - "${nix-gaming}/modules/pipewireLowLatency.nix" -]; - -networking.hostName = "workstation"; -# networking.wireless.enable = true; -networking.networkmanager.enable = true; - -time.timeZone = "America/Mexico_City"; - -i18n = { - defaultLocale = "en_CA.UTF-8"; - extraLocaleSettings = { - LC_MONETARY = "es_MX.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + # useXkbConfig = true; # use xkbOptions in tty. }; -}; -console = { - font = "Lat2-Terminus16"; - keyMap = "us"; - # useXkbConfig = true; # use xkbOptions in tty. -}; -services = { - xserver = { - enable = true; - videoDrivers = [ "nvidia" ]; - displayManager.gdm.enable = true; - desktopManager.gnome.enable = true; - layout = "us"; - libinput.enable = true; # Wacom required? - }; -}; - -environment.gnome.excludePackages = (with pkgs; [ - gnome-photos - gnome-tour - gnome-text-editor - gnome-connections - # gnome-shell-extensions - baobab -]) -++ (with pkgs.gnome; [ - # totem - gedit - gnome-music - epiphany - gnome-characters - yelp - gnome-font-viewer - cheese -]); - -# Sets up QT to use adwaita themes. -qt = { - enable = true; - platformTheme = "gnome"; - style = "adwaita"; -}; - -hardware.pulseaudio.enable = false; -sound.enable = false; -security.rtkit.enable = true; -services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - lowLatency = { - enable = true; - quantum = 64; - rate = 48000; - }; -}; - -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; -# }]; - -nixpkgs.config = { - allowUnfree = true; -}; - -users.users.jawz = { - isNormalUser = true; - extraGroups = [ "wheel" "networkmanager" "docker" "scanner" "lp" ]; - initialPassword = "password"; - shell = pkgs.fish; - openssh = { - authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB5GaQM4N+yGAByibOFQOBVMV/6TjOfaGIP+NunMiK76 gpodeacero\cdreyes@100CDREYES" ]; - }; - packages = (with pkgs; [ - -blender # cgi animation and sculpting -godot # game development -gdtoolkit # gdscript language server -krita # art to your heart desire! -drawpile # arty party with friends!! -mypaint # not the best art program -mypaint-brushes # but it's got some -mypaint-brushes1 # nice damn brushes -pureref # create inspiration/reference boards -gimp # the coolest bestest art program to never exist - -lutris # game/emulator manager -grapejuice # roblox manager -minecraft # minecraft official launcher -parsec-bin # remote gaming with friends -protonup-qt # update proton-ge - -# nix-gaming.packages.${pkgs.hostPlatform.system}.wine-discord-ipc-bridge - -libreoffice-fresh # office, but based -calibre # ugly af eBook library manager -foliate # gtk eBook reader -gnome-feeds # feed reader, maybe will replace with nextcloud -wike # gtk wikipedia wow! -furtherance # I made this one tehee track time utility -gnome.simple-scan # scanner - -# sequeler # friendly SQL client -blanket # background noise -czkawka # duplicate finder -pika-backup # backups -# tilix # used to be my favourite terminal, but it's so outdated, that each time I use it less and less… -gnome-obfuscate # censor private information -metadata-cleaner # remove any metadata and geolocation from files -gnome-recipes # migrate these to mealie and delete -denaro # manage your finances -# celeste # sync tool for any cloud provider -libgda # for pano shell extension - -celluloid # video player -cozy # audiobooks player -gnome-podcasts # podcast player -handbrake # video converter, may be unnecessary -curtail # image compressor -pitivi # video editor -identity # compare images or videos -mousai # poor man shazam -tagger # tag music files -# bottles # wine prefix manager -obs-studio # screen recorder & streamer -shortwave # listen to world radio -nextcloud-client # self-hosted google-drive alternative - -discord # chat -google-chrome # web browser with spyware included -firefox # web browser that allows to disable spyware -# librewolf # no spyware web browser -tor-browser-bundle-bin # dark web, so dark! -# hugo # website engine -nicotine-plus # remember Ares? -warp # never used, but supposedly cool for sharing files -HentaiAtHome # uh-oh - -yt-dlp # downloads videos from most video websites -unstable.gallery-dl # similar to yt-dlp but for most image gallery websites -gdu # disk-space utility, somewhat useful -du-dust # rusty du -gocryptfs # encrypted filesystem! shhh!!! -exa # like ls but with colors -trash-cli # oop! didn't meant to delete that -ffmpeg_6 # coolest video converter! -neofetch # use once for brag, never again -rmlint # probably my favourite app, amazing dupe finder that integrates well with BTRFS -tldr # man for retards -# ffmpegthumbnailer # create video thumbnails for nautilus, in absence of totem -vcsi # video thumbnails for torrents, can I replace it with ^? -mediainfo # technical info about videos, needed by some of my scripts -tree-sitter # code parsing, required by Doom emacs -torrenttools # create torrent files from the terminal! -lm_sensors # for extension, displays cpu temp - -# My own scripts -nextcloud_scrapsync -ffmpeg4discord -manage_library - -# required by doom emacs, but still are rather useful. -fd # modern find, faster searches -fzf # fuzzy finder! super cool and useful -ripgrep # modern grep -languagetool # proofreader for English. check if works without the service -graphviz # graphs -# these two are for doom everywhere -xorg.xwininfo -xdotool - -# development environment -nix-direnv # creates ephimeral environments -direnv # manages development environment -exercism # learn to code - -# SH -bats # testing system, required by Exercism -bashdb # autocomplete -shellcheck # linting -shfmt # a shell parser and formatter -file # required by my tasks script? -gnome.zenity # dependency of my scripts -xclip # manipulate clipboard from scripts - -# NIX -nixfmt # linting -cachix # why spend time compiling? - -# PYTHON. -python3 # base language -pipenv # python development workflow for humans -poetry # dependency management made easy - -# C# & Rust -# omnisharp-roslyn # c# linter and code formatter - -# HASKELL -# cabal-install # haskell interface - -# JS -# jq # linting -nodejs # not as bad as I thought - -hunspell -hunspellDicts.it_IT -hunspellDicts.es_MX -hunspellDicts.en_CA - -# Themes -adw-gtk3 -# gradience # theme customizer, allows you to modify adw-gtk3 themes -gnome.gnome-tweaks # tweaks for the gnome desktop environment - -# Fonts -(nerdfonts.override { - fonts = [ "Agave" "CascadiaCode" "SourceCodePro" "Ubuntu" "FiraCode" "Iosevka" ]; -}) -symbola -(papirus-icon-theme.override { - color = "adwaita"; -}) - -]) ++ (with pkgs.python3Packages; [ - flake8 # wraper for pyflakes, pycodestyle and mccabe - isort # sort Python imports - nose # testing and running python scripts - pyflakes # checks source code for errors - pytest # framework for writing tests - speedtest-cli # check internet speed from the comand line - editorconfig # follow rules of contributin - black # Python code formatter - pylint # bug and style checker for python - (buildPythonApplication rec { - pname = "download"; - version = "1.5"; - src = ./scripts/download/.; - doCheck = false; - buildInputs = [ setuptools ]; - propagatedBuildInputs = - [ pyyaml types-pyyaml ]; - }) - (buildPythonApplication rec { - pname = "classifier"; - version = "2.0"; - src = fetchPypi { - inherit pname version; - sha256 = "sha256-yHtc0qNZbKIkhhxrh0Zh5KWWsC/aU51WX1oEPVN9nOg="; + services = { + xserver = { + enable = true; + videoDrivers = [ "nvidia" ]; + displayManager.gdm.enable = true; + desktopManager.gnome.enable = true; + layout = "us"; + libinput.enable = true; # Wacom required? }; - doCheck = false; - buildInputs = [ setuptools ]; - propagatedBuildInputs = - [ arrow ]; - }) - (buildPythonApplication rec { - pname = "ffpb"; - version = "0.4.1"; - src = fetchPypi { - inherit pname version; - sha256 = "sha256-7eVqbLpMHS1sBw2vYS4cTtyVdnnknGtEI8190VlXflk="; + }; + + environment.gnome.excludePackages = (with pkgs; [ + gnome-photos + gnome-tour + gnome-text-editor + gnome-connections + # gnome-shell-extensions + baobab + ]) ++ (with pkgs.gnome; [ + # totem + gedit + gnome-music + epiphany + gnome-characters + yelp + gnome-font-viewer + cheese + ]); + + # Sets up QT to use adwaita themes. + qt = { + enable = true; + platformTheme = "gnome"; + style = "adwaita"; + }; + + hardware.pulseaudio.enable = false; + sound.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + lowLatency = { + enable = true; + quantum = 64; + rate = 48000; }; - doCheck = false; - buildInputs = [ setuptools ]; - propagatedBuildInputs = - [ tqdm ]; - }) + }; -]) ++ (with pkgs.bat-extras; [ - batman # man pages - batpipe # piping - batgrep # ripgrep - batdiff # this is getting crazy! - batwatch # probably my next best friend - prettybat # trans your sourcecode! + security.sudo = { + enable = true; + wheelNeedsPassword = false; + }; -]) ++ (with pkgs.fishPlugins; [ - sponge # keep history clean from typos - fzf-fish # fish command line with fzf keybindings - colored-man-pages # self explanatory - autopair-fish # who has time for a closing bracket? - bass # integrate bash utilities on fish + # security.sudo.enable = false; + # security.doas.enable = true; + # security.doas.extraRules = [{ + # users = [ "jawz" ]; + # keepEnv = true; + # #persist = true; + # noPass = true; + # }]; -]) ++ (with pkgs.gnomeExtensions; [ - appindicator # applets for open applications - gsconnect # sync data and notifications from your phone - freon # hardware temperature monitor - panel-scroll # scroll well to change workspaces - reading-strip # like putting a finger on every line I read - tactile # window manager - pano # clipboard manager -# ]) ++ (with unstable.pkgs.gnomeExtensions; [ + nixpkgs.config = { allowUnfree = true; }; -]) ++ (with pkgs.nodePackages; [ - dockerfile-language-server-nodejs # LSP - bash-language-server # LSP - pyright # LSP - markdownlint-cli # Linter - prettier # Linter - pnpm # Package manager -]); }; # <--- end of package list + users.users.jawz = { + isNormalUser = true; + extraGroups = [ "wheel" "networkmanager" "docker" "scanner" "lp" ]; + initialPassword = "password"; + shell = pkgs.fish; + openssh = { + authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB5GaQM4N+yGAByibOFQOBVMV/6TjOfaGIP+NunMiK76 gpodeacerocdreyes@100CDREYES" + ]; + }; + packages = (with pkgs; [ -fonts.fontconfig.enable = true; + blender # cgi animation and sculpting + godot # game development + gdtoolkit # gdscript language server + krita # art to your heart desire! + drawpile # arty party with friends!! + mypaint # not the best art program + mypaint-brushes # but it's got some + mypaint-brushes1 # nice damn brushes + pureref # create inspiration/reference boards + gimp # the coolest bestest art program to never exist -home-manager.useUserPackages = true; -home-manager.useGlobalPkgs = true; + lutris # game/emulator manager + grapejuice # roblox manager + minecraft # minecraft official launcher + parsec-bin # remote gaming with friends + protonup-qt # update proton-ge -home-manager.users.jawz = { config, pkgs, ... }:{ + # nix-gaming.packages.${pkgs.hostPlatform.system}.wine-discord-ipc-bridge + + libreoffice-fresh # office, but based + calibre # ugly af eBook library manager + foliate # gtk eBook reader + gnome-feeds # feed reader, maybe will replace with nextcloud + wike # gtk wikipedia wow! + furtherance # I made this one tehee track time utility + gnome.simple-scan # scanner + + # sequeler # friendly SQL client + blanket # background noise + czkawka # duplicate finder + pika-backup # backups + # tilix # used to be my favourite terminal, but it's so outdated, that each time I use it less and less… + gnome-obfuscate # censor private information + metadata-cleaner # remove any metadata and geolocation from files + gnome-recipes # migrate these to mealie and delete + denaro # manage your finances + # celeste # sync tool for any cloud provider + libgda # for pano shell extension + + celluloid # video player + cozy # audiobooks player + gnome-podcasts # podcast player + handbrake # video converter, may be unnecessary + curtail # image compressor + pitivi # video editor + identity # compare images or videos + mousai # poor man shazam + tagger # tag music files + # bottles # wine prefix manager + obs-studio # screen recorder & streamer + shortwave # listen to world radio + nextcloud-client # self-hosted google-drive alternative + + discord # chat + google-chrome # web browser with spyware included + firefox # web browser that allows to disable spyware + # librewolf # no spyware web browser + tor-browser-bundle-bin # dark web, so dark! + # hugo # website engine + nicotine-plus # remember Ares? + warp # never used, but supposedly cool for sharing files + HentaiAtHome # uh-oh + + yt-dlp # downloads videos from most video websites + unstable.gallery-dl # similar to yt-dlp but for most image gallery websites + gdu # disk-space utility, somewhat useful + du-dust # rusty du + gocryptfs # encrypted filesystem! shhh!!! + exa # like ls but with colors + trash-cli # oop! didn't meant to delete that + ffmpeg_6 # coolest video converter! + neofetch # use once for brag, never again + rmlint # probably my favourite app, amazing dupe finder that integrates well with BTRFS + tldr # man for retards + # ffmpegthumbnailer # create video thumbnails for nautilus, in absence of totem + vcsi # video thumbnails for torrents, can I replace it with ^? + mediainfo # technical info about videos, needed by some of my scripts + tree-sitter # code parsing, required by Doom emacs + torrenttools # create torrent files from the terminal! + lm_sensors # for extension, displays cpu temp + + # My own scripts + nextcloud_scrapsync + ffmpeg4discord + manage_library + + # required by doom emacs, but still are rather useful. + fd # modern find, faster searches + fzf # fuzzy finder! super cool and useful + ripgrep # modern grep + languagetool # proofreader for English. check if works without the service + graphviz # graphs + # these two are for doom everywhere + xorg.xwininfo + xdotool + + # development environment + nix-direnv # creates ephimeral environments + direnv # manages development environment + exercism # learn to code + + # SH + bats # testing system, required by Exercism + bashdb # autocomplete + shellcheck # linting + shfmt # a shell parser and formatter + file # required by my tasks script? + gnome.zenity # dependency of my scripts + xclip # manipulate clipboard from scripts + + # NIX + nixfmt # linting + cachix # why spend time compiling? + + # PYTHON. + python3 # base language + pipenv # python development workflow for humans + poetry # dependency management made easy + + # C# & Rust + # omnisharp-roslyn # c# linter and code formatter + + # HASKELL + # cabal-install # haskell interface + + # JS + # jq # linting + nodejs # not as bad as I thought + + hunspell + hunspellDicts.it_IT + hunspellDicts.es_MX + hunspellDicts.en_CA + + # Themes + adw-gtk3 + # gradience # theme customizer, allows you to modify adw-gtk3 themes + gnome.gnome-tweaks # tweaks for the gnome desktop environment + + # Fonts + (nerdfonts.override { + fonts = [ + "Agave" + "CascadiaCode" + "SourceCodePro" + "Ubuntu" + "FiraCode" + "Iosevka" + ]; + }) + symbola + (papirus-icon-theme.override { color = "adwaita"; }) + + ]) ++ (with pkgs.python3Packages; [ + flake8 # wraper for pyflakes, pycodestyle and mccabe + isort # sort Python imports + nose # testing and running python scripts + pyflakes # checks source code for errors + pytest # framework for writing tests + speedtest-cli # check internet speed from the comand line + editorconfig # follow rules of contributin + black # Python code formatter + pylint # bug and style checker for python + (buildPythonApplication rec { + pname = "download"; + version = "1.5"; + src = ./scripts/download/.; + doCheck = false; + buildInputs = [ setuptools ]; + propagatedBuildInputs = [ pyyaml types-pyyaml ]; + }) + (buildPythonApplication rec { + pname = "classifier"; + version = "2.0"; + src = fetchPypi { + inherit pname version; + sha256 = "sha256-yHtc0qNZbKIkhhxrh0Zh5KWWsC/aU51WX1oEPVN9nOg="; + }; + doCheck = false; + buildInputs = [ setuptools ]; + propagatedBuildInputs = [ arrow ]; + }) + (buildPythonApplication rec { + pname = "ffpb"; + version = "0.4.1"; + src = fetchPypi { + inherit pname version; + sha256 = "sha256-7eVqbLpMHS1sBw2vYS4cTtyVdnnknGtEI8190VlXflk="; + }; + doCheck = false; + buildInputs = [ setuptools ]; + propagatedBuildInputs = [ tqdm ]; + }) + + ]) ++ (with pkgs.bat-extras; [ + batman # man pages + batpipe # piping + batgrep # ripgrep + batdiff # this is getting crazy! + batwatch # probably my next best friend + prettybat # trans your sourcecode! + + ]) ++ (with pkgs.fishPlugins; [ + sponge # keep history clean from typos + fzf-fish # fish command line with fzf keybindings + colored-man-pages # self explanatory + autopair-fish # who has time for a closing bracket? + bass # integrate bash utilities on fish + + ]) ++ (with pkgs.gnomeExtensions; [ + appindicator # applets for open applications + gsconnect # sync data and notifications from your phone + freon # hardware temperature monitor + panel-scroll # scroll well to change workspaces + reading-strip # like putting a finger on every line I read + tactile # window manager + pano # clipboard manager + blur-my-shell # make the overview more visually appealing + # forge # window manager + # ]) ++ (with unstable.pkgs.gnomeExtensions; [ + + ]) ++ (with pkgs.nodePackages; [ + dockerfile-language-server-nodejs # LSP + bash-language-server # LSP + pyright # LSP + markdownlint-cli # Linter + prettier # Linter + pnpm # Package manager + ]); + }; # <--- end of package list + + fonts.fontconfig.enable = true; + + home-manager.useUserPackages = true; + home-manager.useGlobalPkgs = true; + + home-manager.users.jawz = { config, pkgs, ... }: { home.stateVersion = VERSION; home.packages = with pkgs; [ ]; -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 /mnt/disk2/scrapping/JawZ/gallery-dl -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 ../../../../.."; + 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 /mnt/disk2/scrapping/JawZ/gallery-dl -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"; + ex = "ls"; + e = "edit"; + c = "cat"; + f = "fzf --multi --exact -i"; + sc = "systemctl --user"; + jc = "journalctl --user -xeu"; + }; + interactiveShellInit = '' + + function fish_greeting + ~/.local/bin/pokemon-colorscripts -r --no-title + end + # Lists + set -l list_root ${config.home.homeDirectory}/.config/jawz/lists/jawz + set lw $list_root/watch.txt + set li $list_root/instant.txt + set lc $list_root/comic.txt + set command_timeout = 30 + + set GPG_TTY (tty) + + # Set EMACS/VI mode + function fish_user_key_bindings + # fish_default_key_bindings + fish_vi_key_bindings + end + + ''; + + functions = { + nixos-magic = '' + + set -l nix_file "$HOME/Development/NixOS/configuration.nix" + set -l hardware_file "$HOME/Development/NixOS/hardware-configuration.nix" + nixfmt $nix_file + nixfmt $hardware_file + sudo nixos-rebuild switch -I nixos-config=$nix_file + + ''; + mkcd = '' + + mkdir -pv $argv + cd $argv + + ''; + }; + }; + + programs = { + bat = { + enable = true; + config = { + pager = "less -FR"; + theme = "base16"; + }; + }; + git = { + enable = true; + userName = "Danilo Reyes"; + userEmail = "CaptainJawZ@outlook.com"; + }; + htop = { + enable = true; + package = pkgs.htop-vim; + }; + }; + + xdg = { + enable = true; + 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"; + }; + 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; + "htop/htoprc".source = ./dotfiles/htop/htoprc; + }; + }; + + services = { + lorri.enable = true; + emacs = { + enable = true; + defaultEditor = true; + package = pkgs.emacs; + }; + }; + }; - shellAbbrs = { - dl = "download -u jawz -i"; - ex = "ls"; - e = "edit"; - c = "cat"; - f = "fzf --multi --exact -i"; - sc = "systemctl --user"; - jc = "journalctl --user -xeu"; - }; - interactiveShellInit = '' -function fish_greeting - ~/.local/bin/pokemon-colorscripts -r --no-title -end -# Lists -set -l list_root ${config.home.homeDirectory}/.config/jawz/lists/jawz -set lw $list_root/watch.txt -set li $list_root/instant.txt -set lc $list_root/comic.txt -set command_timeout = 30 - -set GPG_TTY (tty) - -# Set EMACS/VI mode -function fish_user_key_bindings - # fish_default_key_bindings - fish_vi_key_bindings -end - -''; - -functions = { - nixos-magic = '' - -set -l nix_file "$HOME/Development/NixOS/configuration.nix" -set -l hardware_file "$HOME/Development/NixOS/hardware-configuration.nix" -nixfmt $nix_file -nixfmt $hardware_file -sudo nixos-rebuild switch -I nixos-config=$nix_file - - ''; - mkcd = '' - - mkdir -pv $argv - cd $argv - - ''; - }; -}; - -programs = { - bat = { - enable = true; - config = { - pager = "less -FR"; - theme = "base16"; }; - }; - git = { - enable = true; - userName = "Danilo Reyes"; - userEmail = "CaptainJawZ@outlook.com"; - }; - htop = { - enable = true; - package = pkgs.htop-vim; - }; -}; - -xdg = { - enable = true; - 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"; - }; - 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; - "htop/htoprc".source = ./dotfiles/htop/htoprc; - }; -}; - -services = { - lorri.enable = true; - emacs = { - enable = true; - defaultEditor = true; - package = pkgs.emacs; - }; -}; - -}; - -environment.systemPackages = with pkgs; [ - wget - docker-compose # easy way to migrate my docker anywhere! -]; - -environment.variables = rec { - # PATH - XDG_CACHE_HOME = "\${HOME}/.cache"; - XDG_CONFIG_HOME = "\${HOME}/.config"; - XDG_BIN_HOME = "\${HOME}/.local/bin"; - XDG_DATA_HOME = "\${HOME}/.local/share"; - XDG_STATE_HOME = "\${HOME}/.local/state"; - - # 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 - HISTFILE = "\${XDG_STATE_HOME}/bash/history"; - 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"; - XCOMPOSECACHE = "${XDG_CACHE_HOME}/X11/xcompose"; - "_JAVA_OPTIONS" = "-Djava.util.prefs.userRoot=\${XDG_CONFIG_HOME}/java"; - - # NVIDIA - CUDA_CACHE_PATH = "\${XDG_CACHE_HOME}/nv"; - # GBM_BACKEND = "nvidia-drm"; - # "__GLX_VENDOR_LIBRARY_NAME" = "nvidia"; - - # Themes - # GTK_THEME = "Adwaita:light"; - # QT_QPA_PLATFORMTHEME = "adwaita"; - # QT_STYLE_OVERRIDE = "adwaita"; - CALIBRE_USE_SYSTEM_THEME = "1"; - - PATH = [ - "\${HOME}/.local/bin" - "\${XDG_CONFIG_HOME}/emacs/bin" - "\${XDG_DATA_HOME}/npm/bin" - "\${XDG_DATA_HOME}/pnpm" + environment.systemPackages = with pkgs; [ + wget + docker-compose # easy way to migrate my docker anywhere! ]; -}; -virtualisation.docker = { + environment.variables = rec { + # PATH + XDG_CACHE_HOME = "\${HOME}/.cache"; + XDG_CONFIG_HOME = "\${HOME}/.config"; + XDG_BIN_HOME = "\${HOME}/.local/bin"; + XDG_DATA_HOME = "\${HOME}/.local/share"; + XDG_STATE_HOME = "\${HOME}/.local/state"; + + # 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 + HISTFILE = "\${XDG_STATE_HOME}/bash/history"; + 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"; + XCOMPOSECACHE = "${XDG_CACHE_HOME}/X11/xcompose"; + "_JAVA_OPTIONS" = "-Djava.util.prefs.userRoot=\${XDG_CONFIG_HOME}/java"; + + # NVIDIA + CUDA_CACHE_PATH = "\${XDG_CACHE_HOME}/nv"; + # GBM_BACKEND = "nvidia-drm"; + # "__GLX_VENDOR_LIBRARY_NAME" = "nvidia"; + + # Themes + # GTK_THEME = "Adwaita:light"; + # QT_QPA_PLATFORMTHEME = "adwaita"; + # QT_STYLE_OVERRIDE = "adwaita"; + CALIBRE_USE_SYSTEM_THEME = "1"; + + PATH = [ + "\${HOME}/.local/bin" + "\${XDG_CONFIG_HOME}/emacs/bin" + "\${XDG_DATA_HOME}/npm/bin" + "\${XDG_DATA_HOME}/pnpm" + ]; + }; + + virtualisation.docker = { enable = true; storageDriver = "btrfs"; enableNvidia = true; -}; + }; -snapraid = { - enable = true; - touchBeforeSync = true; - sync.interval = "02:00"; - scrub = { - plan = 10; - olderThan = 10; - interval = "4:00"; - }; - parityFiles = [ - "/mnt/parity/snapraid.parity" - ]; - extraConfig = '' - autosave 50 - ''; - exclude = [ - "/tmp/" - "/lost+found/" - "/multimedia/downloads/" - "/scrapping/nextcloud/" - "/backups/" - ]; - dataDisks = { - d1 = "/mnt/disk1/"; - d2 = "/mnt/disk2/"; - }; - contentFiles = [ - "/var/snapraid.content" - "/mnt/disk1/snapraid.content" - "/mnt/disk2/snapraid.content" - ]; -}; - -programs = { - fish.enable = true; - mtr.enable = true; - neovim = { + snapraid = { enable = true; - vimAlias = true; - }; - gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - geary = { - enable = true; - }; - steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - }; -}; - -services = { - printing = { - enable = true; - drivers = [ pkgs.hplip pkgs.hplipWithPlugin ]; - }; - avahi.enable = true; - avahi.nssmdns = true; - fstrim.enable = true; - btrfs.autoScrub = { - enable = true; - fileSystems = [ - "/" - "/mnt/disk1" - "/mnt/disk2" + touchBeforeSync = true; + sync.interval = "02:00"; + scrub = { + plan = 10; + olderThan = 10; + interval = "4:00"; + }; + parityFiles = [ "/mnt/parity/snapraid.parity" ]; + extraConfig = '' + autosave 50 + ''; + exclude = [ + "/tmp/" + "/lost+found/" + "/multimedia/downloads/" + "/scrapping/nextcloud/" + "/backups/" + ]; + dataDisks = { + d1 = "/mnt/disk1/"; + d2 = "/mnt/disk2/"; + }; + contentFiles = [ + "/var/snapraid.content" + "/mnt/disk1/snapraid.content" + "/mnt/disk2/snapraid.content" ]; }; - openssh = { - enable = true; - ports = [ 25152 ]; - settings = { - PasswordAuthentication = false; - KbdInteractiveAuthentication = false; + + programs = { + fish.enable = true; + mtr.enable = true; + neovim = { + enable = true; + vimAlias = true; }; - startWhenNeeded = true; - listenAddresses = [ - { + gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + geary = { enable = true; }; + steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + }; + }; + + services = { + printing = { + enable = true; + drivers = [ pkgs.hplip pkgs.hplipWithPlugin ]; + }; + avahi.enable = true; + avahi.nssmdns = true; + fstrim.enable = true; + btrfs.autoScrub = { + enable = true; + fileSystems = [ "/" "/mnt/disk1" "/mnt/disk2" ]; + }; + openssh = { + enable = true; + ports = [ 25152 ]; + settings = { + PasswordAuthentication = false; + KbdInteractiveAuthentication = false; + }; + startWhenNeeded = true; + listenAddresses = [{ addr = "0.0.0.0"; port = 25152; - } - ]; + }]; + }; + # udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; + emacs = { + enable = true; + defaultEditor = true; + package = pkgs.emacs; + }; }; - # udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; - emacs = { - enable = true; - defaultEditor = true; - package = pkgs.emacs; - }; -}; -systemd.services = { - "docker-compose" = { - enable = true; - restartIfChanged = true; - description = "Start docker-compose servers"; - after = [ "docker.service" "docker.socket" ]; - requires = [ "docker.service" "docker.socket" ]; - wantedBy = [ "default.target" ]; - environment = { - FILE = "/home/jawz/Development/Docker/docker-compose.yml"; + systemd.services = { + "docker-compose" = { + enable = true; + restartIfChanged = true; + description = "Start docker-compose servers"; + after = [ "docker.service" "docker.socket" ]; + requires = [ "docker.service" "docker.socket" ]; + wantedBy = [ "default.target" ]; + environment = { + FILE = "/home/jawz/Development/Docker/docker-compose.yml"; + }; + path = [ pkgs.docker-compose ]; + serviceConfig = { + Restart = "on-failure"; + RestartSec = 30; + ExecStart = + "${pkgs.docker-compose}/bin/docker-compose -f \${FILE} up --remove-orphans"; + ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f \${FILE} down"; + }; }; - path = [ - pkgs.docker-compose - ]; - serviceConfig = { - Restart = "on-failure"; - RestartSec = 30; - ExecStart = "${pkgs.docker-compose}/bin/docker-compose -f \${FILE} up --remove-orphans"; - ExecStop = "${pkgs.docker-compose}/bin/docker-compose -f \${FILE} down"; + "nextcloud_scrapsync" = { + description = "Sync scrapped files with nextcloud"; + wantedBy = [ "default.target" ]; + path = [ pkgs.bash nextcloud_scrapsync ]; + serviceConfig = { + RestartSec = 30; + ExecStart = "${nextcloud_scrapsync}/bin/nextcloud_scrapsync"; + }; }; }; - "nextcloud_scrapsync" = { - description = "Sync scrapped files with nextcloud"; - wantedBy = [ "default.target" ]; - path = [ - pkgs.bash - nextcloud_scrapsync - ]; - serviceConfig = { - RestartSec = 30; - ExecStart = "${nextcloud_scrapsync}/bin/nextcloud_scrapsync"; + systemd.timers = { + "nextcloud_scrapsync" = { + enable = true; + description = "Sync scrapped files with nextcloud"; + wantedBy = [ "timers.target" ]; + timerConfig = { + OnCalendar = [ + "*-*-* 01:32:00" + "*-*-* 08:32:00" + "*-*-* 14:32:00" + "*-*-* 20:32:00" + ]; + RandomizedDelaySec = 30; + Persistent = true; + }; }; }; -}; -systemd.timers = { - "nextcloud_scrapsync" = { - enable = true; - description = "Sync scrapped files with nextcloud"; - wantedBy = [ "timers.target" ]; - timerConfig = { - OnCalendar= [ - "*-*-* 01:32:00" - "*-*-* 08:32:00" - "*-*-* 14:32:00" - "*-*-* 20:32:00" + systemd.user.services = { + "HentaiAtHome" = { + enable = true; + restartIfChanged = true; + description = "Run hentai@home server"; + wantedBy = [ "default.target" ]; + path = [ pkgs.HentaiAtHome ]; + serviceConfig = { + Restart = "on-failure"; + RestartSec = 30; + WorkingDirectory = "/mnt/hnbox"; + ExecStart = "${pkgs.HentaiAtHome}/bin/HentaiAtHome"; + }; + }; + "manage_library" = { + enable = true; + restartIfChanged = true; + description = "Run the manage library fish script"; + wantedBy = [ "default.target" ]; + path = [ pkgs.fish manage_library ]; + serviceConfig = { + Restart = "on-failure"; + RestartSec = 30; + ExecStart = "${manage_library}/bin/manage_library"; + }; + }; + }; + + networking.firewall.allowedTCPPorts = open_firewall_ports; + networking.firewall.allowedUDPPorts = open_firewall_ports; + networking.firewall.allowedTCPPortRanges = open_firewall_port_ranges; + networking.firewall.allowedUDPPortRanges = open_firewall_port_ranges; + # networking.firewall.enable = false; + + system = { + copySystemConfiguration = true; + stateVersion = VERSION; + }; + nix = { + settings = { + substituters = [ + "https://nix-gaming.cachix.org" + "https://nixpkgs-python.cachix.org" + "https://devenv.cachix.org" ]; - RandomizedDelaySec = 30; - Persistent = true; + trusted-public-keys = [ + "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" + "nixpkgs-python.cachix.org-1:hxjI7pFxTyuTHn2NkvWCrAUcNZLNS3ZAvfYNuYifcEU=" + "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" + ]; + }; + gc = { + automatic = true; + dates = "weekly"; }; }; -}; -systemd.user.services = { - "HentaiAtHome" = { - enable = true; - restartIfChanged = true; - description = "Run hentai@home server"; - wantedBy = [ "default.target" ]; - path = [ - pkgs.HentaiAtHome - ]; - serviceConfig = { - Restart = "on-failure"; - RestartSec = 30; - WorkingDirectory="/mnt/hnbox"; - ExecStart = "${pkgs.HentaiAtHome}/bin/HentaiAtHome"; - }; - }; - "manage_library" = { - enable = true; - restartIfChanged = true; - description = "Run the manage library fish script"; - wantedBy = [ "default.target" ]; - path = [ - pkgs.fish - manage_library - ]; - serviceConfig = { - Restart = "on-failure"; - RestartSec = 30; - ExecStart = "${manage_library}/bin/manage_library"; - }; - }; -}; - -networking.firewall.allowedTCPPorts = open_firewall_ports; -networking.firewall.allowedUDPPorts = open_firewall_ports; -networking.firewall.allowedTCPPortRanges = open_firewall_port_ranges; -networking.firewall.allowedUDPPortRanges = open_firewall_port_ranges; -# networking.firewall.enable = false; - -system = { - copySystemConfiguration = true; - stateVersion = VERSION; -}; -nix = { - settings = { - substituters = [ - "https://nix-gaming.cachix.org" - "https://nixpkgs-python.cachix.org" - "https://devenv.cachix.org" - ]; - trusted-public-keys = [ - "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" - "nixpkgs-python.cachix.org-1:hxjI7pFxTyuTHn2NkvWCrAUcNZLNS3ZAvfYNuYifcEU=" - "devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" - ]; - }; - gc = { - automatic = true; - dates = "weekly"; - }; -}; } diff --git a/configuration.org b/configuration.org index 2e5fccd..3ab58f6 100755 --- a/configuration.org +++ b/configuration.org @@ -41,6 +41,7 @@ let open_firewall_ports = [ 80 # http 443 # https + 6969 # HentaiAtHome 25152 # ssh 49494 # gerbera ]; @@ -543,6 +544,8 @@ symbola reading-strip # like putting a finger on every line I read tactile # window manager pano # clipboard manager + blur-my-shell # make the overview more visually appealing + # forge # window manager # ]) ++ (with unstable.pkgs.gnomeExtensions; [ #+end_src