{ config, lib, pkgs, homedir, enable-gui ? true, ... }: with lib; let name = "Niten"; email = "niten@fudo.org"; doom-emacs-config = pkgs.fetchgit { url = "https://git.fudo.org/niten/doom-emacs.git"; rev = "0ab1532c856ccdb6ce46c5948054279f439eb1f2"; sha256 = "06mh74i5hmb15xid7w31wjc4v339cgddd667bpaphqnw666sm08h"; }; doom-emacs = pkgs.callPackage (pkgs.fetchgit { url = "https://github.com/vlaci/nix-doom-emacs.git"; rev = "fee14d217b7a911aad507679dafbeaa8c1ebf5ff"; sha256 = "1g0izscjh5nv4n0n1m58jc6z27i9pkbxs17mnb05a83ffdbmmva6"; }) { 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 steamPackages.steamcmd steamPackages.steam-fonts steamPackages.steam-runtime xclip ]; common-packages = with pkgs; [ ant asdf atop binutils btrfs-progs bundix byobu cdrtools cargo clojure clj2nix 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 ]; 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 = { emacs = { enable = true; package = doom-emacs; client = { enable = true; arguments = [ "-t" ]; }; }; 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"; }; # 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 = "${doom-emacs}/bin/emacsclient -t"; ALTERNATE_EDITOR = ""; DOOM_EMACS_SITE_PATH = "${doom-emacs-config}/site.d"; HISTCONTROL = "ignoredups:ignorespace"; }; }; systemd.user.tmpfiles.rules = map (dir: "d ${homedir}/${dir} 700 niten - - -") ensure-directories; }