289 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			289 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ inputs, config, pkgs, lib, ... }:
 | 
						|
  let
 | 
						|
    userName = "nate";
 | 
						|
    fullName = "Nate Anderson";
 | 
						|
    email = "n8r@tuta.io";
 | 
						|
    unstable = import inputs.nixpkgs-unstable { system = "x86_64-linux"; config.allowUnfree = true; };
 | 
						|
  in
 | 
						|
{
 | 
						|
  imports = [
 | 
						|
      ../../../shared/modules/apps/firefox/firefox.nix
 | 
						|
  ];
 | 
						|
  
 | 
						|
  home.username = userName;
 | 
						|
  home.homeDirectory = "/home/${userName}";
 | 
						|
 | 
						|
  programs.home-manager.enable = true;
 | 
						|
 | 
						|
  home.stateVersion = "25.05"; # Please read the comment before changing.
 | 
						|
 | 
						|
  # The home.packages option allows you to install Nix packages into your
 | 
						|
  # environment.
 | 
						|
  firefoxApp.enable = true;
 | 
						|
  
 | 
						|
  fonts.fontconfig.enable = true;
 | 
						|
 | 
						|
  # Niri configuration will go in dotfiles
 | 
						|
  # Optional, hint Electron apps to use Wayland:
 | 
						|
  home.packages = with pkgs; [
 | 
						|
    ### ---
 | 
						|
    ### niri packages
 | 
						|
    swaybg
 | 
						|
    swaylock-effects
 | 
						|
    wofi
 | 
						|
    wl-clipboard # System clipboard
 | 
						|
    waybar
 | 
						|
    networkmanagerapplet
 | 
						|
    libnotify
 | 
						|
    swaynotificationcenter
 | 
						|
    syncthingtray
 | 
						|
    lynx
 | 
						|
    qutebrowser
 | 
						|
    brightnessctl
 | 
						|
    ### ---
 | 
						|
 | 
						|
    chromium
 | 
						|
    #
 | 
						|
    # Dev Tools
 | 
						|
    #
 | 
						|
    helix
 | 
						|
    ghostty
 | 
						|
    docker
 | 
						|
    docker-compose
 | 
						|
    jq
 | 
						|
    python310
 | 
						|
    unstable.claude-code
 | 
						|
    ### LSP's
 | 
						|
    nil
 | 
						|
    nodePackages_latest.bash-language-server
 | 
						|
    openscad-lsp
 | 
						|
    vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
 | 
						|
    # python311Packages.python-lsp-server
 | 
						|
    ### Misc
 | 
						|
    usbutils
 | 
						|
    openscad
 | 
						|
 | 
						|
    #
 | 
						|
    # Gaming
 | 
						|
    #
 | 
						|
    webcord
 | 
						|
 | 
						|
    #
 | 
						|
    # Unix tools
 | 
						|
    #
 | 
						|
    bat
 | 
						|
    duf
 | 
						|
    du-dust
 | 
						|
    fd
 | 
						|
    fzf
 | 
						|
    lsd
 | 
						|
    ripgrep
 | 
						|
    tre-command
 | 
						|
    gtop
 | 
						|
    htop
 | 
						|
    neofetch
 | 
						|
    unzip
 | 
						|
    llpp
 | 
						|
    nmap
 | 
						|
    gnupg
 | 
						|
    pinentry-tty
 | 
						|
 | 
						|
    #
 | 
						|
    # Photo / Video
 | 
						|
    #
 | 
						|
    imv
 | 
						|
    mpv
 | 
						|
    gimp
 | 
						|
    ffmpeg
 | 
						|
    tenacity
 | 
						|
    yt-dlp
 | 
						|
 | 
						|
    #
 | 
						|
    # Communication
 | 
						|
    #
 | 
						|
    mumble
 | 
						|
    slack
 | 
						|
    unstable.signal-desktop
 | 
						|
 | 
						|
    #
 | 
						|
    # Other
 | 
						|
    #
 | 
						|
    keepassxc
 | 
						|
    yubioath-flutter
 | 
						|
 | 
						|
    #
 | 
						|
    # Style
 | 
						|
    #
 | 
						|
    catppuccin-kvantum
 | 
						|
    libsForQt5.qtstyleplugin-kvantum
 | 
						|
    libsForQt5.qt5ct
 | 
						|
    # Install fonts
 | 
						|
    lato
 | 
						|
    unstable.nerd-fonts.hurmit
 | 
						|
    unstable.nerd-fonts.overpass
 | 
						|
    unstable.nerd-fonts.monaspace
 | 
						|
    monaspace
 | 
						|
    recursive
 | 
						|
  ];
 | 
						|
 | 
						|
  #
 | 
						|
  # Dotfiles
 | 
						|
  # 
 | 
						|
 | 
						|
  # Static symlinks
 | 
						|
  home.file = lib.mkMerge [
 | 
						|
    # Shared dotfiles
 | 
						|
    (let
 | 
						|
      sharedDotfilesPath = ../../../shared/dotfiles;
 | 
						|
    in
 | 
						|
      if builtins.pathExists sharedDotfilesPath then
 | 
						|
        builtins.listToAttrs (map (name: {
 | 
						|
          name = "${config.xdg.configHome}/${name}";
 | 
						|
          value = { source = lib.mkDefault (sharedDotfilesPath + "/${name}"); };
 | 
						|
        }) (builtins.attrNames (builtins.readDir sharedDotfilesPath)))
 | 
						|
      else {})
 | 
						|
    # Add local dotfiles, overriding from local over shared
 | 
						|
    (let
 | 
						|
      localDotfilesPath = ../../dotfiles;
 | 
						|
    in
 | 
						|
      if builtins.pathExists localDotfilesPath && builtins.readDir localDotfilesPath != {} then
 | 
						|
        builtins.listToAttrs (map (name: {
 | 
						|
          name = "${config.xdg.configHome}/${name}";
 | 
						|
          value = { source = localDotfilesPath + "/${name}"; };
 | 
						|
        }) (builtins.attrNames (builtins.readDir localDotfilesPath)))
 | 
						|
      else {})
 | 
						|
    {
 | 
						|
      ".icons/default/index.theme".text = ''
 | 
						|
        [icon theme]
 | 
						|
        Inherits=Catppuccin-Macchiato-Lavender-Cursors
 | 
						|
      '';
 | 
						|
    }
 | 
						|
  ];
 | 
						|
 | 
						|
  # Active symlinks
 | 
						|
  xdg.configFile = {
 | 
						|
    # Active linked dotfiles
 | 
						|
    "niri".source =   config.lib.file.mkOutOfStoreSymlink "/home/nate/nixos/frame12/linked-dotfiles/niri";
 | 
						|
    "waybar".source = config.lib.file.mkOutOfStoreSymlink "/home/nate/nixos/frame12/linked-dotfiles/waybar";
 | 
						|
    # Shared
 | 
						|
    "helix".source = config.lib.file.mkOutOfStoreSymlink "/home/nate/nixos/shared/linked-dotfiles/helix";
 | 
						|
    
 | 
						|
    # Theme configuration
 | 
						|
    "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";
 | 
						|
    "Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini {}).generate "kvantum.kvconfig" {
 | 
						|
      General.theme = "catppuccin-macchiato-lavender";
 | 
						|
     };
 | 
						|
  };
 | 
						|
 | 
						|
  home.sessionVariables = {
 | 
						|
    BAT_THEME="Catppuccin Macchiato";
 | 
						|
    EDITOR = "hx";
 | 
						|
    # For electron apps
 | 
						|
    NIXOS_OZONE_WL = "1";
 | 
						|
  };
 | 
						|
 | 
						|
  # Git setup
 | 
						|
  programs.git = {
 | 
						|
    enable = true;
 | 
						|
    userEmail = email;
 | 
						|
    userName = fullName;
 | 
						|
    extraConfig = {
 | 
						|
      include = { path = "${config.xdg.configHome}/macchiato.gitconfig"; };
 | 
						|
      init = { defaultBranch = "main"; };
 | 
						|
      pull = { ff = "only"; };
 | 
						|
      merge = { conflictStyle="zdiff3"; };
 | 
						|
      push = { autoSetupRemote="true"; };
 | 
						|
      delta = { features = "Catppuccin Macchiato"; };
 | 
						|
    };
 | 
						|
    delta.enable = true;
 | 
						|
  };
 | 
						|
 | 
						|
  programs = {
 | 
						|
    direnv = {
 | 
						|
      enable = true;
 | 
						|
      enableZshIntegration = true; # see note on other shells below
 | 
						|
      nix-direnv.enable = true;
 | 
						|
    };
 | 
						|
 | 
						|
    bash.enable = true; # see note on other shells below
 | 
						|
  };
 | 
						|
 | 
						|
  # enable saving ssh secrets (needed for go mod installing private packages)
 | 
						|
  services.gnome-keyring.enable = true;
 | 
						|
  services.gnome-keyring.components = [ "ssh" "secrets" ];
 | 
						|
 | 
						|
  # Zsh setup
 | 
						|
  programs.zsh = {
 | 
						|
      enable = true;
 | 
						|
      oh-my-zsh = {
 | 
						|
          enable = true;
 | 
						|
          plugins = [ "git" "ssh-agent" ];
 | 
						|
          theme = "half-life";
 | 
						|
      };
 | 
						|
      initContent = ''
 | 
						|
          eval "$(direnv hook zsh)"
 | 
						|
 | 
						|
          yt-audio() {
 | 
						|
            nix-shell -p yt-dlp --run "yt-dlp -x $1 --audio-format mp3"
 | 
						|
          }
 | 
						|
 | 
						|
          # Better Unix Aliases
 | 
						|
          alias ls="lsd"
 | 
						|
          alias l="lsd --almost-all --long"
 | 
						|
          alias llm="lsd --timesort --long"
 | 
						|
          alias lS="lsd --oneline --classic"
 | 
						|
          alias lt="lsd --tree --depth=2"
 | 
						|
          alias grep="rg"
 | 
						|
          alias cat="bat --paging=never"
 | 
						|
          alias rm="rm -i"
 | 
						|
      '';
 | 
						|
      profileExtra = ''
 | 
						|
          export XDG_DATA_DIRS=$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share
 | 
						|
      '';
 | 
						|
  };
 | 
						|
 | 
						|
  qt = {
 | 
						|
    enable = true;
 | 
						|
    platformTheme.name = "qtct";
 | 
						|
    style.name = "kvantum";
 | 
						|
  };
 | 
						|
 | 
						|
  gtk = {
 | 
						|
    enable = true;
 | 
						|
    cursorTheme = {
 | 
						|
      package = pkgs.catppuccin-cursors.macchiatoLavender;
 | 
						|
      name = "Catppuccin-Macchiato-Lavender-Cursors";
 | 
						|
    };
 | 
						|
    iconTheme = {
 | 
						|
      package = pkgs.catppuccin-papirus-folders;
 | 
						|
      name = "Papirus-Dark";
 | 
						|
    };
 | 
						|
    theme = {
 | 
						|
      name = "catppuccin-macchiato-lavender-compact+rimless";
 | 
						|
      package = pkgs.catppuccin-gtk.override {
 | 
						|
        accents = [ "lavender" ];
 | 
						|
        size = "compact";
 | 
						|
        tweaks = [ "rimless" ];
 | 
						|
        variant = "macchiato";
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  services.wlsunset = {
 | 
						|
    enable = true;
 | 
						|
    sunrise = "07:00";
 | 
						|
    sunset = "17:00";
 | 
						|
    temperature.night = 3500;
 | 
						|
  };
 | 
						|
 | 
						|
  services.kdeconnect = {
 | 
						|
    enable = true;
 | 
						|
    indicator = true;
 | 
						|
  };
 | 
						|
 | 
						|
  # Enable bluetooth headphone controls
 | 
						|
  services.mpris-proxy.enable = true;
 | 
						|
}
 |