{ config, lib, pkgs, homedir, ... }: with lib; let name = "Niten"; email = "niten@fudo.org"; hostname = config.instance.hostname; host-config = config.fudo.hosts.${hostname}; enable-gui = host-config.enable-gui; doom-emacs-config = pkgs.fetchgit { url = "https://git.fudo.org/niten/doom-emacs.git"; rev = "6fdc2b5d0d97e49b59e1fc06cf7930b4e488e70b"; sha256 = "06zj8r000m8bjfpgwljaz5s563xg6cfva85i75ianh97209p1j0a"; }; doom-emacs = pkgs.callPackage (pkgs.fetchgit { url = "https://github.com/vlaci/nix-doom-emacs.git"; rev = "3893c50877a9d2d5d4aeee524ba1539f22115f1f"; sha256 = "1jz8mxh143a4470mq303ng6dh3bxi6mcppqli4z0m13qhqssh4fx"; }) { doomPrivateDir = "${pkgs.doom-emacs-config}"; extraPackages = with pkgs.emacsPackages; [ elpher use-package ]; emacsPackagesOverlay = self: super: { irony = super.irony.overrideAttrs (esuper: { buildInputs = esuper.buildInputs ++ [ pkgs.cmake pkgs.libclang pkgs.clang ]; }); spinner = let version = "1.7.4"; in pkgs.emacsPackages.trivialBuild { inherit version; pname = "spinner"; src = builtins.fetchTarball { url = "https://elpa.gnu.org/packages/spinner-${version}.tar"; sha256 = "1jj40d68lmz91ynzwqg0jqdjpa9cn5md1hmvjfhy0cr3l16qpfw5"; }; buildPhase = ":"; }; }; }; gui-packages = with pkgs; let steam-with-pipewire = (steam.override { extraLibraries = pkgs: [ pkgs.pipewire ]; }); in [ exodus firefox jq nyxt openttd redshift signal-desktop spotify # steam-with-pipewire # steam-with-pipewire.run xclip ]; common-packages = with pkgs; [ ant asdf atop binutils btrfs-progs bundix byobu cdrtools cargo clojure cmake curl doom-emacs # doom-emacs-config # doomEmacsInit enca file fortune git gnome.gnome-tweaks gnutls gnupg google-chrome guile imagemagick ipfs iptables jdk leiningen libisofs lispPackages.quicklisp lsof lshw minecraft mkpasswd mplayer mtr nixfmt nix-index nixops nix-prefetch-git nyxt nmap opencv-java openldap openssl pciutils pipewire pv pwgen python ruby rustc sbcl stdenv telnet texlive.combined.scheme-basic tmux unzip youtube-dl yubikey-manager yubikey-personalization # Check and pick a favorite molly-brown ncgopher amfora asuka kristall castor ]; hm = (import { inherit lib; }); ensure-directories = [ ".emacs.d/.local/etc/eshell" ]; in { programs = { bash = { enable = true; }; git = { enable = true; userName = name; userEmail = email; ignores = [ "*~" ]; extraConfig = { pull = { rebase = false; }; }; }; }; xresources.properties = mkIf enable-gui { "Xft.antialias" = 1; "Xft.autohint" = 0; "Xft.dpi" = 192; "Xft.hinting" = 1; "Xft.hintstyle" = "hintfull"; "Xft.lcdfilter" = "lcddefault"; }; services.gpg-agent.enable = true; home = { packages = if enable-gui then common-packages ++ gui-packages else common-packages; file = { ".local/share/openttd/baseset" = mkIf enable-gui { source = "${pkgs.openttd-data}/data"; }; ".doom.d" = { source = pkgs.doom-emacs-config; }; # For nixified emacs ".emacs.d/init.el".text = '' (load "default.el") (setq package-archives nil) ;; (add-to-list 'package-directory-list "~/.nix-profile/share/emacs/site-lisp/elpa") (package-initialize) ''; ".xsessions" = { executable = true; text = '' # -*-bash-*- gdmauth=$XAUTHORITY unset XAUTHORITY export XAUTHORITY xauth merge "$gdmauth" if [ -f $HOME/.xinitrc ]; then bash --login -i $HOME/.xinitrc fi ''; }; ".fonts.conf" = { source = ../static/fonts.conf; }; }; sessionVariables = { EDITOR = "emacsclient -t"; ALTERNATE_EDITOR = ""; HISTCONTROL = "ignoredups:ignorespace"; }; # activation = let # ensure-dir-script = dir: '' # $DRY_RUN_CMD [[ -d "${dir}" ]] || mkdir -p "${dir}" # ''; # ensure-dirs-script = # concatStringsSep "\n" (map ensure-dir-script ensure-directories); # in hm.dag.entryAfter [ "writeBoundary" ] ensure-dirs-script; }; systemd.user.tmpfiles.rules = map (dir: "d ${homedir}/${dir} 700 niten - - -") ensure-directories; }