1

Nixos: Various cleanups

This commit is contained in:
2024-06-04 22:28:25 +02:00
parent a196102ebb
commit 5178993594
13 changed files with 346 additions and 282 deletions

View File

@ -15,6 +15,7 @@
# This is a module
# Because no imports/options/config is defined explicitly, everything is treated as config
# { inputs, lib, ... }: { ... } gets turned into { inputs, lib, ... }: { config = { ... }; } implicitly
# TODO: Add nixified.ai module
rec {
# Every module is a nix expression, specifically a function { inputs, lib, ... }: { ... }
# Every module (/function) is called with the same arguments as this module (home.nix)
@ -131,10 +132,13 @@ rec {
"jetbrains-idea"
"jetbrains-pycharm"
"jetbrains-rustrover"
"jetbrains-rider"
"code-url-handler"
];
"3" = [
"obsidian"
"unityhub"
"Unity"
];
"4" = [
"firefox"
@ -172,6 +176,7 @@ rec {
"jetbrains-idea"
"jetbrains-pycharm"
"jetbrains-rustrover"
"jetbrains-rider"
"code-url-handler"
"neovide"
];
@ -179,37 +184,12 @@ rec {
kitty.enable = true;
misc = {
enable = true;
keepass = {
enable = true;
autostart = false; # TODO: This option should use hyprland module
};
protonmail = {
enable = true;
autostart = false; # TODO: This option should use hyprland module
};
};
neovim = {
enable = true;
alias = true;
neovide = true;
};
# lazyvim = {
# enable = true;
# alias = true;
# neovide = true;
# };
nextcloud = {
enable = true;
autostart = false; # TODO: This option should use hyprland module
};
nnn.enable = true;
# ranger = {
@ -230,51 +210,23 @@ rec {
};
};
manual.manpages.enable = true;
manual.html.enable = true;
manual = {
manpages.enable = true;
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
# Generate a list of installed user packages in ~/.local/share/current-user-packages
home.file.".local/share/current-user-packages".text = let
packages = builtins.map (p: "${p.name}") home.packages;
sortedUnique = builtins.sort builtins.lessThan (lib.unique packages);
formatted = builtins.concatStringsSep "\n" sortedUnique;
in
formatted;
home.file.".config/mpv" = {
recursive = true;
source = ../../config/mpv;
};
# TODO: Latex module
home.file."texmf/tex/latex/custom/christex.sty".source = ../../config/latex/christex.sty;
home.file."Notes/Obsidian/Chriphost/christex.sty".source = ../../config/latex/christex.sty; # For obsidian notes
home.file.".indentconfig.yaml".source = ../../config/latex/.indentconfig.yaml;
home.file.".indentsettings.yaml".source = ../../config/latex/.indentsettings.yaml;
# TODO: Use mkLink
# home.file."Notes/Obsidian/Chriphost/latex_snippets.json".source = ../../config/obsidian/latex_snippets.json;
home.file."Notes/Obsidian/Chriphost/.obsidian/snippets/latex_preview.css".source = ../../config/obsidian/css_snippets/latex_preview.css;
# TODO: If navi enabled
# TODO: Symlink this, so the config doesn't have to be rebuilt every time
home.file.".local/share/navi/cheats/christoph.cheat".source = ../../config/navi/christoph.cheat;
home.activation = {
linkObsidianLatexSnippets =
lib.hm.dag.entryAfter ["writeBoundary"]
(mylib.modules.mkLink "~/NixFlake/config/obsidian/latex_snippets.json" "~/Notes/Obsidian/Chriphost/latex_snippets.json");
};
xdg.mime.enable = true;
xdg.mimeApps = {
enable = true;
associations.added = nixosConfig.xdg.mime.addedAssociations;
associations.removed = nixosConfig.xdg.mime.removedAssociations;
inherit (nixosConfig.xdg.mime) defaultApplications; # Equal to "defaultApplications = nixosConfig.xdg.mime.defaultApplications"
xdg = {
mime.enable = true;
mimeApps = {
enable = true;
associations.added = nixosConfig.xdg.mime.addedAssociations;
associations.removed = nixosConfig.xdg.mime.removedAssociations;
inherit (nixosConfig.xdg.mime) defaultApplications; # Equal to "defaultApplications = nixosConfig.xdg.mime.defaultApplications"
};
};
home = {
@ -306,147 +258,162 @@ rec {
# WINEFSYNC = 1;
# WINEPREFIX = "/home/christoph/.wine";
# NOTE: GTK_IM_MODULE, QT_IM_MODULE, XMODIFIERS are set by HomeManager fcitx5 module
# GTK_IM_MODULE, QT_IM_MODULE, XMODIFIERS are set by HomeManager fcitx5 module
};
file = {
# Generate a list of installed user packages in ~/.local/share/current-user-packages
".local/share/current-user-packages".text = let
packages = builtins.map (p: "${p.name}") home.packages;
sortedUnique = builtins.sort builtins.lessThan (lib.unique packages);
formatted = builtins.concatStringsSep "\n" sortedUnique;
in
formatted;
".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;
# TODO: Use mkLink
# "Notes/Obsidian/Chriphost/latex_snippets.json".source = ../../config/obsidian/latex_snippets.json;
"Notes/Obsidian/Chriphost/.obsidian/snippets/latex_preview.css".source = ../../config/obsidian/css_snippets/latex_preview.css;
# TODO: If navi enabled
# TODO: Symlink this, so the config doesn't have to be rebuilt every time
".local/share/navi/cheats/christoph.cheat".source = ../../config/navi/christoph.cheat;
};
activation = {
linkObsidianLatexSnippets =
lib.hm.dag.entryAfter ["writeBoundary"]
(mylib.modules.mkLink "~/NixFlake/config/obsidian/latex_snippets.json" "~/Notes/Obsidian/Chriphost/latex_snippets.json");
};
# TODO: Make a module for standard UNIX replacements
# Add stuff for your user as you see fit:
packages = with pkgs; [
# Shell utils
(ripgrep.override {withPCRE2 = true;}) # fast as fuck
gdu # Alternative to du-dust (I like it better)
duf # Disk usage analyzer (for all disk overview)
sd # sed alternative
fclones # duplicate file finder
tealdeer # very fast tldr (so readable man)
atool # Archive preview
ffmpegthumbnailer # Video thumbnails
mediainfo
tree # Folder preview
unrar
p7zip
unzip
progress
tokei # Text file statistics in a project
appimage-run
nvd # nix rebuild diff
file
# spotdl # TODO: Borked
# Hardware/Software info
pciutils # lspci
glxinfo # opengl info
wayland-utils # wayland-info
aha # ansi html adapter? TODO: Why did I install this?
clinfo # OpenCL info
vulkan-tools # vulkaninfo
libva-utils # vainfo
vdpauinfo
hwloc
lm_sensors
acpica-tools # Dump ACPI tables etc.
# Video/Image utils
ffmpeg_5-full # I love ffmpeg (v5, including ffplay)
ffmpeg-normalize
imagemagick # Convert image (magic)
ueberzugpp # Display images in terminal (alacritty)
# Document utils
# TODO: Latex module with individual packages or HomeManager
texlive.combined.scheme-full
poppler_utils # pdfunite
graphviz # generate graphs from code
plantuml
gnuplot # generate function plots
pdf2svg
pandoc # document converting madness
inkscape # for latex
# Networking
dig
tcpdump
traceroute
wireshark
gping # ping with graph
curlie # curl a'la httpie
wget # download that shit
dogdns # dns client
rsync # cp on steroids
rclone # Rsync for cloud
httpie # Cool http client
# suricata
cifs-utils # Mount samba shares
nfs-utils
sshfs
protonvpn-cli
# GUI apps
vlc
cool-retro-term
ventoy-full # Bootable USB for many ISOs
sqlitebrowser # To modify tables
dbeaver-bin # To import/export data + diagrams
hoppscotch # Test APIs
# decker # TODO: Build failure
signal-desktop
filezilla
anki
# octave # GNU matlab basically
font-manager
nextcloud-client
keepassxc
protonmail-bridge
# Office
wacomtablet # For xournalpp/krita
xournalpp # Write with a pen, like old people
# libreoffice-qt
hunspell # I cna't type
hunspellDicts.en_US
hunspellDicts.de_DE
obsidian # knowledge-base
# logseq # knowledge-base
# TODO: Module, I need to add python packages from multiple modules to the same interpreter
python312
jetbrains.clion
jetbrains.rust-rover
jetbrains.pycharm-professional
jetbrains.idea-ultimate
AusweisApp2
# Use NixCommunity binary cache
cachix
# Generate documentation
# modules-options-doc
];
# Do not change
stateVersion = "22.05";
};
# TODO: Split this more between laptop and desktop...
# TODO: Make a module for standard UNIX replacements
# Add stuff for your user as you see fit:
home.packages = with pkgs; [
# Shell utils
(ripgrep.override {withPCRE2 = true;}) # fast as fuck
gdu # Alternative to du-dust (I like it better)
duf # Disk usage analyzer (for all disk overview)
sd # sed alternative
fclones # duplicate file finder
tealdeer # very fast tldr (so readable man)
atool # Archive preview
ffmpegthumbnailer # Video thumbnails
mediainfo
tree # Folder preview
unrar
p7zip
unzip
progress
tokei # Text file statistics in a project
appimage-run
nvd # nix rebuild diff
file
# spotdl # TODO: Borked
# Hardware/Software info
pciutils # lspci
glxinfo # opengl info
wayland-utils # wayland-info
aha # ansi html adapter? TODO: Why did I install this?
clinfo # OpenCL info
vulkan-tools # vulkaninfo
libva-utils # vainfo
vdpauinfo
hwloc
lm_sensors
acpica-tools # Dump ACPI tables etc.
# Video/Image utils
ffmpeg_5-full # I love ffmpeg (v5, including ffplay)
ffmpeg-normalize
x265
imagemagick # Convert image (magic)
ueberzugpp # Display images in terminal (alacritty)
# Document utils
# TODO: Latex module with individual packages or HomeManager
texlive.combined.scheme-full
poppler_utils # pdfunite
graphviz # generate graphs from code
plantuml
gnuplot # generate function plots
pdf2svg
pandoc # document converting madness
# Networking
dig
tcpdump
traceroute
wireshark
gping # ping with graph
curlie # curl a'la httpie
wget # download that shit
dogdns # dns client
rsync # cp on steroids
rclone # Rsync for cloud
httpie # Cool http client
# suricata
cifs-utils # Mount samba shares
nfs-utils
sshfs
protonvpn-cli
# GUI apps
vlc
cool-retro-term
ventoy-full # Bootable USB for many ISOs
# spotify # Uses flatpak
sqlitebrowser # To modify tables
dbeaver-bin # To import/export data + diagrams
hoppscotch # Test APIs
# decker # TODO: Build failure
signal-desktop
filezilla
# calibre # Do I even read
# virt-manager
# gource # Visualize git commit log, completely useless
# anki-bin # Use anki-bin as anki is some versions behind NOTE: anki-bin doesn't support fcitx5 :(
anki
# inputs.nixos-conf-editor.packages."x86_64-linux".nixos-conf-editor
# octave # GNU matlab basically
# logisim-evolution # Digital circuit simulator
# digital # Digital circuit simulator
# okteta # hex editor
# kdiff3 # diff/patch tool
font-manager
# Office
# sioyek # Scientific pdf reader # HM program
xournalpp # Write with a pen, like old people
# libreoffice-qt
hunspell # I cna't type
hunspellDicts.en_US
hunspellDicts.de_DE
obsidian # knowledge-base
# logseq # knowledge-base
# TODO: Module, I need to add python packages from multiple modules to the same interpreter
python312
jetbrains.clion
jetbrains.rust-rover
jetbrains.pycharm-professional
jetbrains.idea-ultimate
# Media
wacomtablet
# blender
# godot_4
obs-studio
# vlc # Addition to mpv without any shaders etc
kdenlive
krita
inkscape
# handbrake
# makemkv
AusweisApp2
# Use NixCommunity binary cache
cachix
# Generate documentation
# modules-options-doc
];
# home.file.".options-doc".source = "${pkgs.modules-options-doc}";
# Packages with extra options managed by HomeManager natively

View File

@ -1,5 +1,5 @@
# Here goes the stuff that will only be enabled on the desktop
{...}: {
{pkgs, ...}: {
imports = [
../../modules
];
@ -48,53 +48,29 @@
];
};
# audio = {
# enable = false;
# carla.enable = false;
# bitwig.enable = true; # TODO: Check what happens when upgrade plan ends, do I need to pin the version then?
# tenacity.enable = true;
# faust.enable = true;
# bottles.enable = false;
# yabridge.enable = true;
# yabridge.autoSync = true;
# noisesuppression = {
# noisetorch.enable = false;
# noisetorch.autostart = false;
# easyeffects.enable = false;
# easyeffects.autostart = false;
# };
# cardinal.enable = true;
# distrho.enable = true;
# };
# gaming = {
# enable = false;
# prism.enable = true;
# bottles.enable = false;
# cemu.enable = true;
# # TODO: Webcord
# # discordChromium.enable = false;
# # discordElectron.enable = false; # This is the nixpkgs version, prefer the one from flatpak module
# # dwarffortress.enable = false;
# steam = {
# enable = true;
# gamescope = true;
# adwaita = false;
# protonup = true;
# };
# };
# TODO: Also set the dunst monitor
waybar.monitor = "HDMI-A-1";
};
# home.packages = with pkgs; [
# quartus-prime-lite # Intel FPGA design software
# ];
home.packages = with pkgs; [
# quartus-prime-lite # Intel FPGA design software
unityhub
jetbrains.rider
(with dotnetCorePackages;
combinePackages [
sdk_6_0_1xx
sdk_7_0_3xx
sdk_8_0_2xx
]) # For Rider/Unity
mono # For Rider/Unity
blender
# godot_4
obs-studio
kdenlive
krita
# makemkv
];
};
}