mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
024102c45c
Now that I have time, I've learnt that Git submodules are not supported well with flake-based setup. Instead, I'll use my dotfiles repo as one of the inputs as a non-flake which is exactly what I want. NICE!
235 lines
5.7 KiB
Nix
235 lines
5.7 KiB
Nix
{ inputs, config, options, lib, pkgs, ... }:
|
|
|
|
let
|
|
yt-dlp-for-audio-config = pkgs.writeText "yt-dlp-for-audio-config" ''
|
|
# Don't overwrite for cautious individuals.
|
|
--no-overwrite
|
|
|
|
# To make sure all audio-related.
|
|
--extract-audio
|
|
--format bestaudio
|
|
--audio-format opus
|
|
|
|
--output '%(track_number,playlist_autonumber)d-%(track,title)s.%(ext)s'
|
|
--download-archive archive
|
|
|
|
# Add all sorts of metadata.
|
|
--embed-thumbnail
|
|
--add-metadata
|
|
'';
|
|
yt-dlp-for-audio = pkgs.writeScriptBin "yt-dlp-audio" ''
|
|
${pkgs.yt-dlp}/bin/yt-dlp --config-location "${yt-dlp-for-audio-config}" $@
|
|
'';
|
|
getDotfiles = path: {
|
|
source = "${inputs.dotfiles}/${path}";
|
|
recursive = true;
|
|
};
|
|
in {
|
|
programs.home-manager.enable = true;
|
|
|
|
home.packages = with pkgs; [
|
|
ncmpcpp
|
|
vscodium-fhs
|
|
neovim
|
|
yt-dlp-for-audio
|
|
];
|
|
|
|
fonts.fontconfig.enable = true;
|
|
|
|
# My specific usual stuff.
|
|
programs.git = let email = "foo.dogsquared@gmail.com"; in {
|
|
enable = true;
|
|
package = pkgs.gitFull;
|
|
lfs.enable = true;
|
|
userName = "Gabriel Arazas";
|
|
userEmail = email;
|
|
extraConfig = {
|
|
# This is taken from the official Git book, for future references.
|
|
sendemail = {
|
|
smtpserver = "smtp.gmail.com";
|
|
smtpencryption = "tls";
|
|
smtpserverport = 587;
|
|
smtpuser = email;
|
|
};
|
|
};
|
|
};
|
|
|
|
# My music player setup, completely configured with Nix!
|
|
services.mopidy = {
|
|
enable = true;
|
|
extensionPackages = with pkgs; [
|
|
mopidy-beets
|
|
mopidy-funkwhale
|
|
mopidy-internetarchive
|
|
mopidy-iris
|
|
mopidy-local
|
|
mopidy-mpd
|
|
mopidy-mpris
|
|
mopidy-youtube
|
|
];
|
|
|
|
settings = {
|
|
http = {
|
|
hostname = "0.0.0.0";
|
|
};
|
|
|
|
file = {
|
|
enabled = true;
|
|
media_dirs = [
|
|
"$XDG_MUSIC_DIR|Music"
|
|
];
|
|
};
|
|
|
|
internetarchive = {
|
|
enabled = true;
|
|
browse_limit = 150;
|
|
search_limit = 150;
|
|
collections = [
|
|
"fav-foo-dogsquared"
|
|
"audio"
|
|
"etree"
|
|
"audio_music"
|
|
"audio_foreign"
|
|
];
|
|
};
|
|
};
|
|
};
|
|
|
|
services.recoll = {
|
|
enable = true;
|
|
settings = {
|
|
topdirs = "~/Downloads ~/Documents ~/library";
|
|
"skippedNames+" = "node_modules";
|
|
|
|
"~/library/projects" = {
|
|
"skippedNames+" = ".editorconfig .gitignore result flake.lock go.sum";
|
|
};
|
|
|
|
"~/library/projects/software" = {
|
|
"skippedNames+" = "target result";
|
|
};
|
|
};
|
|
};
|
|
|
|
# My custom modules.
|
|
profiles = {
|
|
i18n.enable = true;
|
|
dev = {
|
|
enable = true;
|
|
shell.enable = true;
|
|
extras.enable = true;
|
|
};
|
|
editors.emacs.enable = true;
|
|
desktop = {
|
|
enable = true;
|
|
graphics.enable = true;
|
|
audio.enable = true;
|
|
multimedia.enable = true;
|
|
};
|
|
research.enable = true;
|
|
};
|
|
|
|
services.archivebox = {
|
|
enable = true;
|
|
archivePath = "%h/library/archives";
|
|
withDependencies = true;
|
|
webserver.enable = true;
|
|
|
|
jobs = {
|
|
arts = {
|
|
links = [
|
|
"https://www.davidrevoy.com/feed/rss"
|
|
"https://librearts.org/index.xml"
|
|
];
|
|
startAt = "weekly";
|
|
};
|
|
|
|
computer = {
|
|
links = [
|
|
"https://blog.mozilla.org/en/feed/"
|
|
"https://distill.pub/rss.xml"
|
|
"https://drewdevault.com/blog/index.xml"
|
|
"https://fasterthanli.me/index.xml"
|
|
"https://jvns.ca/atom.xml"
|
|
"https://www.bytelab.codes/rss/"
|
|
"https://www.collabora.com/feed"
|
|
"https://www.jntrnr.com/atom.xml"
|
|
"https://yosoygames.com.ar/wp/?feed=rss"
|
|
"https://simblob.blogspot.com/feeds/posts/default"
|
|
];
|
|
startAt = "daily";
|
|
};
|
|
|
|
projects = {
|
|
links = [
|
|
"https://veloren.net/rss.xml"
|
|
"https://guix.gnu.org/feeds/blog.atom"
|
|
"https://fedoramagazine.org/feed/"
|
|
"https://nixos.org/blog/announcements-rss.xml"
|
|
];
|
|
startAt = "*-*-1/2";
|
|
};
|
|
};
|
|
};
|
|
|
|
services.bleachbit.enable = true;
|
|
|
|
home.sessionVariables = {
|
|
MANPAGER = "nvim +Man!";
|
|
EDITOR = "nvim";
|
|
};
|
|
|
|
# WHOA! Even browsers with extensions can be declarative!
|
|
programs.brave = {
|
|
enable = true;
|
|
extensions = [
|
|
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; } # Vimium
|
|
{ id = "ekhagklcjbdpajgpjgmbionohlpdbjgc"; } # Zotero connector
|
|
{ id = "jfnifeihccihocjbfcfhicmmgpjicaec"; } # GSConnect
|
|
{ id = "aapbdbdomjkkjkaonfhkkikfgjllcleb"; } # Google Translate (yes, I'm disappointed in myself)
|
|
{ id = "egpjdkipkomnmjhjmdamaniclmdlobbo"; } # Firenvim
|
|
{ id = "gknkbkaapnhpmkcgkmdekdffgcddoiel"; } # Open Access Button
|
|
{ id = "fpnmgdkabkmnadcjpehmlllkndpkmiak"; } # Wayback Machine
|
|
{ id = "gphhapmejobijbbhgpjhcjognlahblep"; } # GNOME Shell integration
|
|
];
|
|
};
|
|
|
|
programs.irssi = {
|
|
enable = true;
|
|
networks.liberachat = {
|
|
nick = "foo-dogsquared";
|
|
server = {
|
|
address = "irc.libera.chat";
|
|
port = 6697;
|
|
};
|
|
channels = {
|
|
nixos = { };
|
|
guix = { };
|
|
};
|
|
};
|
|
};
|
|
|
|
xdg.userDirs = {
|
|
enable = true;
|
|
createDirectories = true;
|
|
|
|
# The XDG base directories. Most of my setup with this user will be my
|
|
# personal computer so I'll set them like so...
|
|
documents = "$HOME/library/documents";
|
|
music = "$HOME/library/music";
|
|
pictures = "$HOME/library/pictures";
|
|
templates = "$HOME/library/templates";
|
|
videos = "$HOME/library/videos";
|
|
};
|
|
|
|
# All of the personal configurations.
|
|
xdg.configFile = {
|
|
"doom" = getDotfiles "emacs";
|
|
"kitty" = getDotfiles "kitty";
|
|
"lazygit" = getDotfiles "lazygit";
|
|
"lf" = getDotfiles "lf";
|
|
"nvim" = getDotfiles "nvim";
|
|
"wezterm" = getDotfiles "wezterm";
|
|
};
|
|
}
|