2025-06-01 20:52:31 -07:00
|
|
|
{ lib, config, inputs, pkgs, ...} :
|
2025-05-30 21:29:59 -07:00
|
|
|
let
|
|
|
|
|
pathToKeys = ../common/keys/yubi;
|
|
|
|
|
yubiKeys =
|
|
|
|
|
lib.lists.forEach (builtins.attrNames (builtins.readDir pathToKeys))
|
|
|
|
|
(key: lib.substring 0 (lib.stringLength key - lib.stringLength ".pub") key); # Remove .pub suffix.
|
|
|
|
|
yubikeyPublicKeyEntries = lib.attrsets.mergeAttrsList (
|
|
|
|
|
lib.lists.map
|
|
|
|
|
(key: { ".ssh/${key}.pub".source = "${pathToKeys}/${key}.pub"; })
|
|
|
|
|
yubiKeys
|
|
|
|
|
);
|
|
|
|
|
in
|
|
|
|
|
{
|
|
|
|
|
imports = [
|
2025-06-03 22:10:35 -07:00
|
|
|
# TODO: Move all hyprland related config to its own module.
|
2025-06-06 21:20:48 -07:00
|
|
|
../../home-modules/hyprland
|
2025-06-03 22:10:35 -07:00
|
|
|
|
2025-06-02 01:01:12 -07:00
|
|
|
../../home-modules/direnv.nix
|
2025-07-07 00:45:37 -07:00
|
|
|
../../home-modules/ghostty-config.nix
|
2025-05-30 21:29:59 -07:00
|
|
|
../../home-modules/git.nix
|
|
|
|
|
../../home-modules/lazygit.nix
|
2025-07-07 00:45:37 -07:00
|
|
|
../../home-modules/nvim.nix
|
2025-05-30 21:29:59 -07:00
|
|
|
../../home-modules/sops.nix
|
2025-06-03 22:10:35 -07:00
|
|
|
../../home-modules/ssh-client.nix
|
2025-07-07 00:45:37 -07:00
|
|
|
../../home-modules/starship.nix
|
|
|
|
|
../../home-modules/tmux.nix
|
|
|
|
|
../../home-modules/zsh.nix
|
2025-05-30 21:29:59 -07:00
|
|
|
];
|
|
|
|
|
|
2025-06-01 21:05:43 -07:00
|
|
|
ghostty.font-size = "14";
|
|
|
|
|
ghostty.window-decoration = false;
|
|
|
|
|
|
2025-05-30 21:29:59 -07:00
|
|
|
home = {
|
|
|
|
|
username = "jmug";
|
|
|
|
|
homeDirectory = "/home/jmug";
|
|
|
|
|
|
|
|
|
|
packages = with pkgs; [
|
2025-07-05 17:42:50 -07:00
|
|
|
# Media
|
|
|
|
|
loupe
|
|
|
|
|
vlc
|
2025-06-01 23:23:04 -07:00
|
|
|
# Audio
|
|
|
|
|
wireplumber
|
2025-06-11 00:17:38 -07:00
|
|
|
spotify-player
|
2025-06-01 23:23:04 -07:00
|
|
|
# Screen management
|
|
|
|
|
brightnessctl
|
2025-05-30 21:29:59 -07:00
|
|
|
# Secret management.
|
|
|
|
|
age
|
|
|
|
|
sops
|
2025-06-01 20:53:38 -07:00
|
|
|
# Browsers
|
|
|
|
|
ungoogled-chromium
|
2025-06-05 00:27:27 -07:00
|
|
|
# Coms
|
2025-06-11 00:17:38 -07:00
|
|
|
(webcord.override { electron = inputs.nixpkgs-electron-32.legacyPackages."aarch64-linux".electron; })
|
2025-06-05 14:29:13 -07:00
|
|
|
whatsie
|
2025-07-05 17:42:50 -07:00
|
|
|
obs-studio
|
2025-07-11 00:55:14 -07:00
|
|
|
# Dev tools
|
|
|
|
|
flyctl
|
2025-05-30 21:29:59 -07:00
|
|
|
];
|
|
|
|
|
|
2025-06-01 20:53:38 -07:00
|
|
|
pointerCursor = {
|
|
|
|
|
gtk.enable = true;
|
|
|
|
|
x11.enable = true;
|
|
|
|
|
hyprcursor.enable = true;
|
|
|
|
|
name = "Posy_Cursor_Black";
|
|
|
|
|
package = pkgs."posy-cursors";
|
|
|
|
|
};
|
|
|
|
|
|
2025-05-30 21:29:59 -07:00
|
|
|
file = {} // yubikeyPublicKeyEntries;
|
|
|
|
|
|
|
|
|
|
stateVersion = "25.05"; # Do not change!!!
|
|
|
|
|
};
|
|
|
|
|
|
2025-06-03 20:43:43 -07:00
|
|
|
gtk = {
|
|
|
|
|
enable = true;
|
|
|
|
|
gtk3 = {
|
|
|
|
|
extraConfig = {
|
|
|
|
|
gtk-application-prefer-dark-theme = 1;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
gtk4 = {
|
|
|
|
|
extraConfig = {
|
|
|
|
|
gtk-application-prefer-dark-theme = 1;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
theme = {
|
|
|
|
|
name = "palenight";
|
|
|
|
|
package = pkgs.palenight-theme;
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-06-11 00:17:38 -07:00
|
|
|
qt = {
|
|
|
|
|
enable = true;
|
|
|
|
|
platformTheme = "gtk";
|
|
|
|
|
};
|
2025-06-03 20:43:43 -07:00
|
|
|
dconf.settings = {
|
|
|
|
|
"org/gnome/desktop/interface" = {
|
|
|
|
|
color-scheme = "prefer-dark";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
xdg.configFile = {
|
|
|
|
|
"gtk-4.0/assets".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/assets";
|
|
|
|
|
"gtk-4.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk.css";
|
|
|
|
|
"gtk-4.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk-dark.css";
|
|
|
|
|
};
|
|
|
|
|
|
2025-05-30 21:29:59 -07:00
|
|
|
programs.ssh = {
|
|
|
|
|
enable = true;
|
|
|
|
|
addKeysToAgent = "yes";
|
|
|
|
|
matchBlocks = {
|
|
|
|
|
"git" = {
|
|
|
|
|
host = "github.com";
|
|
|
|
|
user = "git";
|
|
|
|
|
identityFile = [
|
|
|
|
|
"/home/jmug/.ssh/id_yubikey" # Auto updated symlik that matches all yubikeys.
|
|
|
|
|
"/home/jmug/.ssh/id_jmug" # Fallback key with passphrase.
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
"forgejo" = {
|
|
|
|
|
host = "code.jmug.me";
|
|
|
|
|
user = "forgejo";
|
|
|
|
|
identityFile = [
|
|
|
|
|
"/home/jmug/.ssh/id_yubikey" # Auto updated symlik that matches all yubikeys.
|
|
|
|
|
"/home/jmug/.ssh/id_jmug" # Fallback key with passphrase.
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
wsl = {
|
|
|
|
|
user = "jmug";
|
|
|
|
|
hostname = "192.168.10.241";
|
|
|
|
|
port = 69;
|
|
|
|
|
forwardAgent = true;
|
|
|
|
|
identityFile = [
|
|
|
|
|
"/home/jmug/.ssh/id_yubikey" # Auto updated symlik that matches all yubikeys.
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
ws = {
|
|
|
|
|
user = "jmug";
|
|
|
|
|
hostname = "98.59.213.212";
|
|
|
|
|
port = 69;
|
|
|
|
|
forwardAgent = true;
|
|
|
|
|
identityFile = [
|
|
|
|
|
"/home/jmug/.ssh/id_yubikey" # Auto updated symlik that matches all yubikeys.
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2025-05-30 22:19:01 -07:00
|
|
|
|
2025-05-30 21:29:59 -07:00
|
|
|
programs.zsh.shellAliases = {
|
2025-07-11 00:55:14 -07:00
|
|
|
fly = "flyctl";
|
2025-05-30 21:29:59 -07:00
|
|
|
# TODO: Interpolate the name of the host here.
|
|
|
|
|
nrsw = "sudo nixos-rebuild switch --flake /home/jmug/nixos#asahi"; # parametrize this as home dir.
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Let Home Manager install and manage itself.
|
|
|
|
|
programs.home-manager.enable = true;
|
|
|
|
|
}
|