diff --git a/home/christoph/default.nix b/home/christoph/default.nix index 222dd8c1..751d5614 100644 --- a/home/christoph/default.nix +++ b/home/christoph/default.nix @@ -7,10 +7,11 @@ username, lib, mylib, + nixosConfig, config, pkgs, ... -} @ inputs: +}: # This is a HM module. # Because no imports/options/config is defined explicitly, everything is treated as config: # { inputs, lib, ... }: { ... } gets turned into { inputs, lib, ... }: { config = { ... }; } implicitly. @@ -144,6 +145,7 @@ rec { }; kitty.enable = true; + latex.enable = true; neovim = { enable = true; @@ -171,12 +173,12 @@ rec { html.enable = false; }; - # Make fonts installed through user packages available to applications - # NOTE: I don't think I need this anymore as all fonts are installed through the system config but let's keep this just in case - fonts.fontconfig.enable = true; # Also updates the font-cache + # Make fonts installed through user packages available to applications. + # Also updates the font-cache. + fonts.fontconfig.enable = true; # This only works when HM is installed as a system module, - # as nixosConfig won't be available otherwise + # as nixosConfig won't be available otherwise. xdg = { mime.enable = true; mimeApps = { @@ -222,20 +224,6 @@ rec { in formatted; - # TODO: If mpv enabled - ".config/mpv" = { - recursive = true; - source = ../../config/mpv; - }; - - # TODO: Latex module - # "texmf/tex/latex/custom/christex.sty".source = ../../config/latex/christex.sty; - # "Notes/Obsidian/Chriphost/christex.sty".source = ../../config/latex/christex.sty; # For obsidian notes - ".indentconfig.yaml".source = ../../config/latex/.indentconfig.yaml; - ".indentsettings.yaml".source = ../../config/latex/.indentsettings.yaml; - "Notes/Obsidian/Chriphost/latex_snippets.json".source = ../../config/obsidian/latex_snippets.json; # TODO: Symlink - "Notes/Obsidian/Chriphost/.obsidian/snippets/latex_preview.css".source = ../../config/obsidian/css_snippets/latex_preview.css; - # TODO: If navi enabled ".local/share/navi/cheats/christoph.cheat".source = ../../config/navi/christoph.cheat; # TODO :Symlink }; @@ -252,7 +240,6 @@ rec { # Add stuff for your user as you see fit: packages = with pkgs; [ - # TODO: Make a module for standard UNIX replacements # Shell utils (ripgrep.override {withPCRE2 = true;}) # fast as fuck gdu # Alternative to du-dust (I like it better) @@ -290,15 +277,12 @@ rec { imagemagick # Convert image (magic) # Document utils - # TODO: Latex module with individual packages or HomeManager - texliveFull poppler_utils # pdfunite graphviz # generate graphs from code plantuml # generate diagrams gnuplot # generate function plots pdf2svg # extract vector graphics from pdf pandoc # document converting madness - inkscape # for latex # Networking dig # Make DNS requests @@ -406,7 +390,6 @@ rec { git = { enable = true; lfs.enable = true; - delta.enable = false; # TODO: Build failure userEmail = "christoph.urlacher@protonmail.com"; userName = "Christoph Urlacher"; diff --git a/home/modules/fish/default.nix b/home/modules/fish/default.nix index 86f11dd1..6f64e41e 100644 --- a/home/modules/fish/default.nix +++ b/home/modules/fish/default.nix @@ -1,6 +1,5 @@ { config, - nixosConfig, lib, mylib, pkgs, @@ -89,7 +88,7 @@ in { }; plugins = [ - # oh-my-fish plugins are stored in their own repositories, which + # Oh-my-fish plugins are stored in their own repositories, which # makes them simple to import into home-manager. # NOTE: Currently, HM ignores theme plugins # { @@ -111,18 +110,21 @@ in { shellAbbrs = let # Only add " | bat" if bat is installed batify = command: command + (optionalString config.programs.bat.enable " | bat"); + # Same as above but with args for bat batifyWithArgs = command: args: command + (optionalString config.programs.bat.enable (" | bat " + args)); - # NOTE: These can be used for my config.modules and for HM config.programs, as both of these add the package to home.packages + # These can be used for my config.modules and for HM config.programs, + # as both of these add the package to home.packages hasHomePackage = package: (contains config.home.packages package); + # Only add fish abbr if package is installed abbrify = package: abbr: (optionalAttrs (hasHomePackage package) abbr); in mkMerge [ - # Default abbrs, always available + # Abbrs that are always available are defined here. { - # Shell basic + # Shell basics c = "clear"; q = "exit"; @@ -130,7 +132,7 @@ in { h = batifyWithArgs "history" "-l fish"; # -l fish sets syntax highlighting to fish listabbrs = batifyWithArgs "abbr" "-l fish"; - # tools + # Tools cd = "z"; # zoxide for quickjump to previously visited locations b = "z -"; # jump to previous dir mkdir = "mkdir -p"; # also create parents (-p) @@ -141,7 +143,7 @@ in { np = "nnncd -a -P p"; ssh = "kitty +kitten ssh"; - # systemd + # Systemd failed = "systemctl --failed"; errors = "journalctl -p 3 -xb"; kernelerrors = "journalctl -p 3 -xb -k"; @@ -149,7 +151,6 @@ in { useruniterrors = "journalctl -xb --user-unit="; # NFS shares - # TODO: Make a rofi menu out of this? Maybe general purpose menu? Or menu for all abbrs? msusenet = "sudo mount.nfs4 192.168.86.20:/mnt/WD\\ Blue\\ Stripe\\ 2T/Usenet /media/Stash-Usenet"; mspicture = "sudo mount.nfs4 192.168.86.20:/mnt/WD\\ Blue\\ Stripe\\ 2T/Picture /media/Stash-Picture"; msvideo = "sudo mount.nfs4 192.168.86.20:/mnt/WD\\ Blue\\ Stripe\\ 2T/Video /media/Stash-Video"; @@ -159,28 +160,34 @@ in { mmusic = "sudo mount.nfs4 192.168.86.20:/mnt/SG\\ Exos\\ Mirror\\ 18TB/Music /media/Music"; musenet = "sudo mount.nfs4 192.168.86.20:/mnt/SG\\ Exos\\ Mirror\\ 18TB/Usenet /media/Usenet"; - # disassemble + # Disassemble disassemble = "objdump -d -S -M intel"; } # Abbrs only available if package is installed (abbrify pkgs.btop {top = "btop";}) + (abbrify pkgs.duf { df = "duf"; disksummary = "duf"; }) + (abbrify pkgs.eza { ls = "eza --color=always --group-directories-first -F --git --icons=always"; # color-ls lsl = "eza --color=always --group-directories-first -F -l --git --icons=always --octal-permissions"; lsa = "eza --color=always --group-directories-first -F -l -a --git --icons=always --octal-permissions"; tre = "eza --color=always --group-directories-first -F -T -L 2 ---icons=always"; }) + (abbrify pkgs.fd {find = "fd";}) + (abbrify pkgs.fzf {fuzzy = "fzf --preview 'bat --color=always --style=numbers --line-range=:500 {}'";}) + (abbrify pkgs.gdu { du = "gdu"; storageanalysis = "gdu"; }) + (abbrify pkgs.git { gs = "git status"; gcm = "git commit -m"; @@ -188,29 +195,20 @@ in { glg = "git log --graph --decorate --oneline"; gcl = "git clone"; }) + (abbrify pkgs.gping {ping = "gping";}) + (abbrify pkgs.lazygit {lg = "lazygit";}) - # (abbrify pkgs.navi {n = "navi";}) - (abbrify pkgs.notmuch { - mailrefresh = "notmuch new"; - mailsearch = "notmuch search"; - }) - (abbrify pkgs.protonvpn-cli { - vpnon = "protonvpn-cli c -f"; - vpnat = "protonvpn-cli c --cc at"; - vpnch = "protonvpn-cli c --cc ch"; - vpnlu = "protonvpn-cli c --cc lu"; - vpnus = "protonvpn-cli c --cc us"; - vpnhk = "protonvpn-cli c --cc hk"; - vpnkr = "protonvpn-cli c --cc kr"; - vpnoff = "protonvpn-cli d"; - }) + (abbrify pkgs.ranger {r = "ranger --choosedir=$HOME/.rangerdir; set LASTDIR (cat $HOME/.rangerdir); cd $LASTDIR";}) + (abbrify pkgs.rsync { - # cp = "rsync -ahv --inplace --partial --info=progress2"; + copy = "rsync -ahv --inplace --partial --info=progress2"; rsync = "rsync -ahv --inplace --partial --info=progress2"; }) + (abbrify pkgs.sd {sed = "sd";}) + (abbrify pkgs.yt-dlp { mp4 = "yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' --recode-video mp4"; # the -f options are yt-dlp defaults mp3 = "yt-dlp -f 'ba' --extract-audio --audio-format mp3"; diff --git a/home/modules/hyprland/default.nix b/home/modules/hyprland/default.nix index 27be968f..b69e1dae 100644 --- a/home/modules/hyprland/default.nix +++ b/home/modules/hyprland/default.nix @@ -6,8 +6,9 @@ lib, mylib, pkgs, + nixosConfig, ... -} @ inputs: let +}: let cfg = config.modules.hyprland; in { options.modules.hyprland = import ./options.nix {inherit lib mylib;}; @@ -17,7 +18,7 @@ in { { # This assertion is not possible if HM is used standalone, # because nixosConfig won't be available. - assertion = inputs.nixosConfig.programs.hyprland.enable; + assertion = nixosConfig.programs.hyprland.enable; message = "Can't enable Hyprland module with Hyprland disabled!"; } ];