# This file contains common configuration applied to every host. # It should only `enable` options defined in the `modules/by-name` directory. { config, pkgs, lib, ... }: { soispha = { boot.enable = true; cleanup.enable = true; documentation.enable = true; fonts = { enable = true; enableEmoji = true; }; home-manager.enable = true; impermanence = { enable = true; directories = [ "/etc/nixos" "/var/log" "/var/lib/systemd" "/var/lib/nixos" ]; }; polkit.enable = true; power.enable = true; services = { adb = { enable = true; user = "soispha"; }; fwupd.enable = true; mpd = { enable = true; directories = let data = "${config.home-manager.users.soispha.xdg.dataHome}/mpd"; in { inherit data; playlists = "${data}/playlists"; runtime = "/run/user/${builtins.toString config.users.users.soispha.uid}/mpd"; music = config.home-manager.users.soispha.programs.beets.settings.directory; }; mpc = { enable = true; beetsPkg = config.home-manager.users.soispha.programs.beets.package; }; }; ollama.enable = false; postgresql.enable = false; printing.enable = true; scanning.enable = true; snapper.enable = true; steam.enable = false; systemDiff.enable = true; unison = { enable = true; foreign.userName = "soispha"; dataDir = "${config.home-manager.users.soispha.xdg.dataHome}/unison"; userSourceDir = "/srv/home/soispha"; pathsToIgnore = let extractTarget = attr: "~/${attr.target}"; homeManagerSymlinks = builtins.map extractTarget (builtins.attrValues config.home-manager.users.soispha.home.file); in [ # already synchronized by the taskserver "~/.local/share/task" # Should not be synchronized "~/.local/share/unison" # Is just to big to be synchronized (# TODO: Work around that <2024-08-31> ) "~/media/music" ] ++ homeManagerSymlinks; pathsToSync = [ "~/.local/state/mpv" "~/.local/state/nvim" "~/.local/share" "~/.local/.Trash-1000" "~/.mozilla/firefox" "~/media" "~/school" "~/repos" ]; }; }; programs = { nvim = { enable = true; shell = pkgs.zsh; }; atuin.enable = true; direnv.enable = true; git.enable = true; imv.enable = true; less.enable = true; lf.enable = true; river = { enable = true; init = { rules = [ { app-id = "float"; title = "*"; action = "float"; } { app-id = "mpv"; title = "*"; action = "float"; } { app-id = "ModernGL"; title = "*"; action = "float"; } { app-id = "*"; title = "Manim Slides"; action = "float"; } { app-id = "*"; title = "floating please"; action = "float"; } { app-id = "*"; title = "*"; action = "ssd"; } # This remove the focus border around Firefox (which is useful because the Firefox is nearly always in its own tag.) { app-id = "firefox"; title = "*"; action = "csd"; } ]; generalSettings = { # background background-color = "0x002b36"; border-color-focused = "0x93a1a1"; border-color-unfocused = "0x586e75"; # keyboard repeat rate set-repeat = ["50" "300"]; # Cursor focus-follows-cursor = "normal"; # hide-cursor = ["timeout" "2000"]; hide-cursor = ["when-typing" "enabled"]; set-cursor-warp = "on-output-change"; xcursor-theme = ["Nordzy-cursors" "24"]; }; inputs = { pointer-1133-49970-Logitech_Gaming_Mouse_G502 = [["pointer-accel" "0"] ["accel-profile" "none"]]; pointer-12951-6505-ZSA_Technology_Labs_Moonlander_Mark_I = [["pointer-accel" "0"] ["accel-profile" "none"]]; }; backgroundStart = [ pkgs.gammastep pkgs.yambar pkgs.mako ["${lib.getExe pkgs.swaybg}" "--image" "${./abstract-nord.png}"] pkgs.swayidle pkgs.alacritty ]; }; }; swaylock.enable = true; taskwarrior.enable = true; yambar.enable = true; yt.enable = true; zathura.enable = true; zsh.enable = true; }; sound.enable = true; version.enable = true; }; }