dotfiles.nix (5597B)
1 # modules/home/dotfiles.nix — every dotfile from the dotfiles checkout, placed 2 # by home-manager. 3 # 4 # ~/git/daemon-sec-dotfiles is the restorable snapshot of the Omarchy 5 # workstation (its README: "files restored relative to $HOME"). home-manager 6 # puts each of its files where it belongs as an out-of-store symlink 7 # (mkOutOfStoreSymlink), so there is one source of truth: edit the checkout and 8 # the live config changes; `nh os switch` is only needed when a path is added 9 # or removed here. The links dangle harmlessly until the repo is cloned. 10 # 11 # Not linked, and why (each is one line to add if wanted): 12 # .config/hypr, .config/kitty Nix-managed (modules/home/hyprland.nix, terminal.nix) 13 # .config/nvim the AstroNvim tree; Neovim is nvf now (modules/home/neovim.nix) 14 # .config/starship.toml, .config/fastfetch the Omarchy-era prompt and fetch; both are 15 # Nix-managed now (modules/home/prompt.nix) 16 # .config/mpd, rmpc, mpv, yazi Nix-managed (modules/home/media.nix, yazi.nix), carried from the checkout 17 # .config/omarchy*, Omacom, hyprmoncfg Omarchy's own trees; caelestia.nix reads the 18 # wallpaper directory straight from the checkout 19 # .config/systemd/user Omarchy-era units; caelestia-shell.service there would 20 # fight the home-manager caelestia service 21 # .config/autostart Omarchy autostarts for apps not installed here 22 # .config/mimeapps.list defaults point at chromium / HEY, neither installed: 23 # xdg-open would fail on every link 24 # .config/git turns on commit signing with a key not on this machine 25 # .config/fontconfig, dconf, gtk-4.0 home-manager writes these (fonts.fontconfig, gtk.nix) 26 # .config/gtk-3.0/bookmarks paths under the old /home/daemon-sec 27 # .config/user-dirs.dirs the XDG defaults already match 28 # .config/floorp a browser profile is state, and the profile is Nix-built 29 # now (modules/home/floorp.nix); the checkout's ShyFox tree 30 # is vendored into modules/home/floorp/_shyfox 31 # .config/tmux holds only a disabled backup; ~/.tmux.conf is the config 32 # .bashrc, .bash_profile, .bash_logout source Omarchy's bash rc unguarded (errors on NixOS) 33 # .zshrc, .zprofile the dead decoys; ZDOTDIR=~/.dotfiles bypasses them 34 # .XCompose includes /usr/share/omarchy/default/xcompose 35 # .claude, .codex, .agents live agent state on this machine (plugins, sessions) 36 # bin, .local/bin ~/.local/bin is the live toolbox repo (README) 37 # .local/share/applications Omarchy web-app launchers (omarchy-launch-webapp) 38 # .local/share/icons/hicolor apps install into it; the themes are linked one by one 39 { ... }: 40 { 41 flake.homeModules.dotfiles = 42 { config, lib, ... }: 43 let 44 repo = "${config.home.homeDirectory}/git/daemon-sec-dotfiles"; 45 home = "${repo}/home"; 46 link = path: config.lib.file.mkOutOfStoreSymlink "${home}/${path}"; 47 48 # Same path under $HOME as in the checkout's home/. 49 same = paths: lib.genAttrs paths (p: { source = link p; }); 50 # Entries of .config, by name. 51 config' = names: lib.genAttrs names (n: { source = link ".config/${n}"; }); 52 53 cursorThemes = [ 54 "modernxp-retro-black" # the active cursor (gtk.nix, core.lua) 55 "modernxp-retro-black-hyprcursor" 56 "modernxp-rose-pine" 57 "modernxp-rose-pine-hyprcursor" 58 "retrosmart-rose-pine" 59 "retrosmart-rose-pine-hyprcursor" 60 "rose-pine-hyprcursor" 61 "BreezeX-RosePine-Linux" 62 ]; 63 in 64 { 65 home.file = 66 same [ 67 ".dotfiles" # the zsh ZDOTDIR tree (modules/home/shell.nix sets ZDOTDIR) 68 ".tmux.conf" 69 ".ripgreprc" # RIPGREP_CONFIG_PATH, exported by .dotfiles/config/ripgrep.zsh 70 "Music/AGENTS.md" 71 ] 72 // same (map (t: ".local/share/icons/${t}") cursorThemes) 73 // { 74 # The patched DMMono TTFs live outside home/ in the checkout. 75 ".local/share/fonts/nerd-fonts-dm-mono".source = 76 config.lib.file.mkOutOfStoreSymlink "${repo}/assets/fonts/nerd-fonts-dm-mono"; 77 }; 78 79 xdg.configFile = config' [ 80 # shell and prompt 81 "atuin" 82 "bat" # the "Rose Pine" theme BAT_THEME names (shell.nix rebuilds bat's cache) 83 "carapace" 84 "cheats" # the markdown cheat cards (cheats.zsh, ~/.local/bin/cheat-*) 85 "crossfetch" # the login splash animation (animations.zsh); the fetch card itself is prompt.nix 86 "eza" 87 "mise" 88 # tools 89 "btop" 90 "lazygit" 91 "jj" 92 "emacs" 93 "opencode" 94 "feroxbuster" 95 "uncover" 96 "herdr" 97 "tensaku" 98 "ai-usagebar" 99 "bg-pasticcio" 100 "libvirt" 101 # media 102 "cava" 103 "imv" 104 "zathura" 105 "xournalpp" 106 "spicetify" 107 "vesktop" 108 "pipewire" # 10-sample-rates.conf 109 "wireplumber" # bluetooth-a2dp-autoconnect.conf 110 # terminals and desktop bits 111 "alacritty" 112 "foot" 113 "ghostty" 114 "fcitx5" 115 "xdg-terminals.list" # kitty first, for xdg-terminal-exec 116 "chromium-flags.conf" # read only if a chromium is ever installed 117 "menus" # the chrome-apps application menu entries 118 "uwsm" # env.d/50-rose-pine-cursor (same values core.lua sets) 119 ]; 120 } 121 ; 122 }