NOflake/users/tao/HOME.nix

296 lines
8.8 KiB
Nix
Raw Permalink Normal View History

2024-02-24 02:30:17 -08:00
{
2025-06-22 21:49:42 -07:00
config,
pkgs,
inputs,
lib,
...
2024-03-17 00:22:50 -07:00
}: let
2025-06-22 21:49:42 -07:00
cargoFile = builtins.readFile ./cargo.toml;
cargoConfig = builtins.replaceStrings ["/path/to/sccache" "/path/to/mold"] ["${pkgs.sccache}/bin/sccache" "${pkgs.mold}/bin/mold}"] cargoFile;
age.secrets.syncthing-NOcomputer.file = ../secrets/syncthing-NOcomputer.age;
age.secrets.syncthing-NOlaptop.file = ../secrets/syncthing-NOlaptop.age;
age.secrets.syncthing-uwuraid.file = ../secrets/syncthing-uwuraid.age;
2024-03-17 00:22:50 -07:00
in {
2025-12-28 20:38:52 -08:00
xdg.mimeApps = {
defaultApplications = {
"application/pdf" = "zathura.desktop";
"video/x-matroska" = "mpv.desktop";
};
2026-01-25 16:02:44 -08:00
enable = false;
2025-12-28 20:38:52 -08:00
};
2025-06-22 21:49:42 -07:00
imports = [
./boxxy.nix
(import ./helix.nix {inherit pkgs inputs;})
# ./plasma.nix
# ./firefox.nix
];
2024-01-30 11:08:42 -08:00
2025-06-22 21:49:42 -07:00
# home.sessionPath = [
# "/home/tao/.cargo/bin"
# ];
home.file.".cargo/config.toml".text = cargoConfig;
home.file.".config/autostart" = {
source = ./autostart;
recursive = true;
2025-06-18 00:31:22 -07:00
};
2025-06-22 21:49:42 -07:00
home.file.".config/direnv/lib/".source = ./direnv;
home.file.".config/direnv/lib/".recursive = true;
2024-04-02 10:40:35 -07:00
2025-06-22 21:49:42 -07:00
programs = {
bacon = {
enable = true;
settings.jobs.default = {
command = [
"cargo"
"clippy"
"--"
"-A"
"clippy::bool_to_int_with_if"
"-A"
"clippy::collapsible_else_if"
"-A"
"clippy::collapsible_if"
"-A"
"clippy::derive_partial_eq_without_eq"
"-A"
"clippy::get_first"
"-A"
"clippy::if_same_then_else"
"-A"
"clippy::len_without_is_empty"
"-A"
"clippy::map_entry"
"-A"
"clippy::while_let_on_iterator"
];
need_stdout = false;
};
2024-02-06 11:08:27 -08:00
};
2025-04-30 19:29:00 -07:00
2025-06-22 21:49:42 -07:00
bat = {
enable = true;
config = {
theme = "gruvbox-dark";
};
2025-04-30 19:29:00 -07:00
};
2025-06-22 21:49:42 -07:00
bottom = {
enable = true;
settings = {
color = "gruvbox";
flags = {
battery =
# if lib.strings.hasPrefix "NOlaptop" (builtins.readFile /etc/hostname)
# then true
# else false;
true;
hide_time = true;
enable_gpu = true;
};
};
2025-04-30 19:29:00 -07:00
};
2024-01-30 10:46:26 -08:00
2025-06-22 21:49:42 -07:00
direnv = {
enable = true;
enableNushellIntegration = true;
nix-direnv.enable = true;
2026-02-25 21:10:29 -08:00
config = {
load_dotenv = true;
};
2025-06-22 21:49:42 -07:00
};
2025-04-30 19:29:00 -07:00
2025-06-22 21:49:42 -07:00
jujutsu = {
enable = true;
settings = {
2025-12-10 17:11:28 -08:00
remotes.origin.auto-track-bookmarks = "glob:*";
2025-06-22 21:49:42 -07:00
user = {
name = "Tao Tien";
email = "29749622+taotien@users.noreply.github.com";
};
ui = {
default-command = "log";
2025-10-08 18:29:19 -07:00
pager = "delta --syntax-theme gruvbox-dark";
diff-formatter = ":git";
2026-02-03 00:27:37 -08:00
merge-editor = "mergiraf";
2025-06-22 21:49:42 -07:00
};
2025-08-21 08:17:04 -07:00
fix.tools.alejandra = {
command = ["alejandra"];
patterns = ["glob:'**/*.nix'"];
};
2025-10-08 18:29:19 -07:00
# merge.tools.mergiraf = {
# }
2025-06-22 21:49:42 -07:00
};
# package = inputs.jujutsu.packages.${pkgs.system}.default;
};
2025-04-30 19:29:00 -07:00
2025-08-21 16:36:43 -07:00
mpv = {
config = {
demuxer-max-bytes = "10GiB";
};
};
2025-06-22 21:49:42 -07:00
git = {
enable = true;
2025-11-30 17:01:24 -08:00
settings.user = {
name = "Tao Tien";
email = "29749622+taotien@users.noreply.github.com";
};
2025-06-22 21:49:42 -07:00
# extraConfig = {
# };
ignores = [
"/target"
".direnv"
];
};
2025-06-22 21:49:42 -07:00
nushell = {
enable = true;
configFile.source = ./nushell/config.nu;
envFile.source = ./nushell/env.nu;
# extraConfig = builtins.readFile ./nushell/stuff.nu;
extraConfig = lib.concatStrings (map builtins.readFile (map (x: ./nushell/extras/. + x) (map (x: "/" + x) (builtins.attrNames (builtins.readDir ./nushell/extras)))));
2025-11-04 22:15:58 -08:00
plugins = with pkgs.nushellPlugins; [
];
2025-04-30 19:29:00 -07:00
};
2025-06-22 21:49:42 -07:00
ssh = {
enable = true;
matchBlocks = {
2025-11-30 17:01:24 -08:00
"*" = {
addKeysToAgent = "yes";
compression = true;
};
2025-06-22 21:49:42 -07:00
"stargate" = {
hostname = "stargate.cs.usfca.edu";
user = "tltien";
forwardAgent = true;
identityFile = "/home/tao/.ssh/id_ed25519";
};
2025-11-03 15:52:31 -08:00
# "chupacabra" = {
# hostname = "stargate.cs.usfca.edu";
# user = "tltien";
# forwardAgent = true;
# identityFile = "/home/tao/.ssh/id_ed25519";
# proxyCommand = "ssh chupacabra.cs.usfca.edu";
# };
2025-06-22 21:49:42 -07:00
"github" = {
hostname = "github.com";
forwardAgent = true;
identityFile = "/home/tao/.ssh/id_ed25519";
};
};
2025-06-18 00:31:22 -07:00
};
2024-03-15 12:47:44 -07:00
2025-06-22 21:49:42 -07:00
starship = {
enable = true;
enableNushellIntegration = true;
settings = builtins.fromTOML (builtins.readFile ./starship.toml);
};
2024-02-01 08:56:18 -08:00
2025-06-22 21:49:42 -07:00
# taskwarrior = {
# enable = true;
# package = pkgs.taskwarrior3;
# dataLocation = "/home/tao/sync";
# };
2024-04-09 10:51:12 -07:00
2025-06-22 21:49:42 -07:00
wezterm = {
enable = true;
extraConfig = builtins.readFile ./wezterm.lua;
};
2024-02-11 02:29:23 -08:00
2025-06-22 21:49:42 -07:00
zathura = {
enable = true;
options = {
selection-clipboard = "clipboard";
};
};
2024-02-01 08:56:18 -08:00
2025-06-22 21:49:42 -07:00
zellij = {
enable = true;
settings = {};
};
2024-02-24 14:51:33 -08:00
2025-06-22 21:49:42 -07:00
zoxide = {
enable = true;
enableNushellIntegration = true;
};
2025-06-18 00:31:22 -07:00
};
2025-06-22 21:49:42 -07:00
services = {
pueue = {
enable = true;
settings = {};
};
2024-12-07 15:45:10 -08:00
};
2025-06-22 21:49:42 -07:00
services.syncthing = {
enable = true;
# user = "tao";
# dataDir = "/home/tao/sync";
# configDir = "/home/tao/.config/syncthing";
# openDefaultPorts = true;
2025-08-26 11:47:28 -07:00
# overrideDevices = true;
# overrideFolders = true;
# settings = {
# devices = {
# # we do a lil anti-patterns https://github.com/ryantm/agenix?tab=readme-ov-file#builtinsreadfile-anti-pattern
# # bootstrap by commenting out devices first and rebuild switch impurely
# "nocomputer".id = builtins.readFile config.age.secrets.syncthing-NOcomputer.path;
# "nolaptop".id = builtins.readFile config.age.secrets.syncthing-NOlaptop.path;
# "uwuraid".id = builtins.readFile config.age.secrets.syncthing-uwuraid.path;
# };
# folders = let
# devs = [
# "nocomputer"
# "nolaptop"
# "uwuraid"
# ];
# in {
# # "documents" = {
# # path = "/home/tao/documents";
# # devices = devs;
# # };
# "pictures" = {
# path = "/home/tao/pictures";
# devices = devs;
# };
# "projects" = {
# path = "/home/tao/projects";
# devices = devs;
# };
# "school" = {
# path = "/home/tao/school";
# devices = devs;
# };
# "sync" = {
# path = "/home/tao/sync";
# devices = devs;
# };
# # "work" = {
# # path = "/home/tao/work";
# # devices = devs;
# # };
# };
# };
2025-04-30 19:29:00 -07:00
};
2025-06-18 00:31:22 -07:00
2025-06-22 21:49:42 -07:00
xdg.userDirs = {
desktop = "desktop";
documents = "documents";
download = "downloads";
music = "music";
pictures = "pictures";
templates = "templates";
videos = "videos";
publicShare = null;
createDirectories = true;
enable = true;
};
2024-04-04 02:50:30 -07:00
2025-06-22 21:49:42 -07:00
home.username = "tao";
home.homeDirectory = "/home/tao";
home.stateVersion = "23.11";
2024-01-30 09:41:31 -08:00
}