NixDaemon

NixOS pentest workstation as one flake — IceBreaker's successor
git clone https://git.daemon-sec.xyz/NixDaemon.git
Log | Files | Refs | README

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 }