Files
homelab/hosts/terra/home.nix
T
Erik Simon 3295fbbf0b terra: desktop setup, flatpak, unstable packages, key management
- Hyprland workspace rules: start-communications.sh launches telegram +
  discord into special:communications; qbz/discord/telegram switched to
  flatpak (nix-flatpak, Flathub) — removes qbz and proton-pass-cli flake
  inputs
- proton-pass-cli and claude-code sourced from nixpkgs-unstable; unstable
  pkgs set threaded into home-manager via extraSpecialArgs
- GTK/libadwaita dark theme fixed: dconf color-scheme = prefer-dark written
  declaratively instead of a per-session gsettings call
- scripts/keys: store/restore SSH host keys and sops age keys via Proton
  Pass (ssh_host#<config> / age#<config> / age#admin naming)
2026-07-25 01:26:52 +02:00

106 lines
3.5 KiB
Nix

{ pkgs, ... }:
# home-manager profile for darman on terra. The Hyprland config lives in its
# own module (./hyprland.nix); this handles the rest of the user session
# (theming, terminal, packages).
{
imports = [ ./home/hyprland.nix ];
home.stateVersion = "26.05";
home.keyboard.layout = "de";
programs.git.enable = true;
programs.home-manager.enable = true;
# Give darman a managed ~/.zshrc. Without any zsh dotfile, zsh runs its
# first-run `zsh-newuser-install` prompt on every new terminal. oh-my-zsh +
# powerlevel10k still come from the system /etc/zshrc (common.nix), which
# always loads for interactive shells before this ~/.zshrc.
programs.zsh.enable = true;
# ---- Dracula theming (GTK + Qt) ----
gtk = {
enable = true;
theme = {
name = "Dracula";
package = pkgs.dracula-theme;
};
};
# dracula-qt5-theme ships only a qt5ct color scheme (no style plugin), so
# Qt has to go through qt(5|6)ct rather than a direct style/platformTheme
# name. "qtct" pulls in both qt5ct and qt6ct; qt6ct reads its own config
# but understands the same scheme file format, so both point at it.
qt = {
enable = true;
platformTheme.name = "qtct";
};
xdg.configFile."qt5ct/qt5ct.conf".text = ''
[Appearance]
color_scheme_path=${pkgs.dracula-qt5-theme}/share/qt5ct/colors/Dracula.conf
custom_palette=true
style=Fusion
'';
xdg.configFile."qt6ct/qt6ct.conf".text = ''
[Appearance]
color_scheme_path=${pkgs.dracula-qt5-theme}/share/qt5ct/colors/Dracula.conf
custom_palette=true
style=Fusion
'';
# Custom mime-info defs (sln/slnx). xdg.mime's update-mime-database only
# indexes share/mime/packages inside the hm profile itself, so this has to
# be a package in home.packages, not a plain xdg.dataFile.
xdg.mime.enable = true;
xdg.configFile."quickshell".source = ../../dotfiles/quickshell;
xdg.configFile."scripts".source = ../../dotfiles/scripts;
home.packages = [
(pkgs.writeTextDir "share/mime/packages/application-x-ms-sln.xml"
(builtins.readFile ../../dotfiles/mime/application-x-ms-sln.xml))
pkgs.claude-code
pkgs.quickshell
pkgs.opencode
pkgs.hyprcursor
pkgs.bibata-cursors
];
programs.alacritty = {
enable = true;
settings = {
# NixOS has no /bin/zsh (only /bin/sh); point at the real store path or
# alacritty exits instantly trying to exec a missing shell — which looked
# like "the SUPER+Return keybind doesn't work".
env.SHELL = "${pkgs.zsh}/bin/zsh";
terminal.shell = {
program = "${pkgs.zsh}/bin/zsh";
args = [ "-l" ];
};
window = {
padding = { x = 10; y = 10; };
opacity = 0.8;
};
font.normal = {
family = "DepartureMono Nerd Font";
style = "Regular";
};
colors.primary = {
background = "#222831";
foreground = "#ffd369";
};
# hints.enabled = [
# {
# hyperlinks = true;
# regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\\u0000-\\u001F\\u007F-\\u009F<>\"\\s{-}\\^⟨⟩`]+";
# command = "xdg-open";
# mouse.enabled = true;
# }
# ];
keyboard.bindings = [
# ESC + CR: nix has no literal escape for the ESC control char, so
# fromJSON decodes it from the JSON unicode escape below.
{ key = "Return"; mods = "Shift"; chars = builtins.fromJSON ''"\u001B\r"''; }
];
};
};
}