From 8784c36ae7b9bad586e4c401a1cacd4d24df4ee8 Mon Sep 17 00:00:00 2001 From: Niten Date: Thu, 2 Sep 2021 13:21:18 -0700 Subject: [PATCH] Initial checkin --- home.nix | 184 ++++++++++++++++++++++++++++++++++++++++++++ package-overlay.nix | 38 +++++++++ 2 files changed, 222 insertions(+) create mode 100644 home.nix create mode 100644 package-overlay.nix diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..f75ccc8 --- /dev/null +++ b/home.nix @@ -0,0 +1,184 @@ +{ username, user-email, config, lib, pkgs, home-dir, enable-gui ? true, ... }: + +with lib; +let + + gui-packages = with pkgs; + let + steam-with-pipewire = + (steam.override { extraLibraries = pkgs: [ pkgs.pipewire ]; }); + in [ + exodus + firefox + gnome.gnome-tweaks + google-chrome + imagemagick + jq + minecraft + mplayer + nyxt + openttd + pv + 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 + user-doom-emacs + enca + file + fortune + git + gnutls + gnupg + guile + ipfs + iptables + jdk + leiningen + libisofs + lispPackages.quicklisp + lsof + lshw + mkpasswd + mtr + nixfmt + nix-index + nixops + nix-prefetch-git + nmap + opencv-java + openldap + openssl + pciutils + pwgen + python + ruby + rustc + sbcl + stdenv + telnet + texlive.combined.scheme-basic + tmux + unzip + yubikey-manager + yubikey-personalization + youtube-dl + + # Check and pick a favorite + molly-brown + ncgopher + amfora + asuka + kristall + castor + ]; + + ensure-directories = [ ".emacs.d/.local/etc/eshell" ]; + +in { + + overlays = [ + (callPackage ./package-overlay.nix) + ]; + + programs = { + bash.enable = true; + git = { + enable = true; + userName = username; + userEmail = user-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" = mkIf enable-gui { + executable = true; + text = '' + # -*-bash-*- + gdmauth=$XAUTHORITY + unset XAUTHORITY + export XAUTHORITY + xauth merge "$gdmauth" + + if [ -f $HOME/.xinitrc ]; then + bash --login -i $HOME/.xinitrc + fi + ''; + }; + }; + + 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; +} diff --git a/package-overlay.nix b/package-overlay.nix new file mode 100644 index 0000000..ff709ce --- /dev/null +++ b/package-overlay.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: final: prev: rec { + + doom-emacs-config = pkgs.fetchgit { + url = "https://git.fudo.org/niten/doom-emacs.git"; + rev = "0ab1532c856ccdb6ce46c5948054279f439eb1f2"; + sha256 = "06mh74i5hmb15xid7w31wjc4v339cgddd667bpaphqnw666sm08h"; + }; + + doom-emacs-pkg = pkgs.fetchgit { + url = "https://github.com/vlaci/nix-doom-emacs.git"; + rev = "fee14d217b7a911aad507679dafbeaa8c1ebf5ff"; + sha256 = "1g0izscjh5nv4n0n1m58jc6z27i9pkbxs17mnb05a83ffdbmmva6"; + }; + + user-doom-emacs = pkgs.callPackage doom-emacs-pkg { + doomPrivateDir = doom-emacs-cfg; + extraPackages = with pkgs.emacsPackages; [ + elpher + use-package + ]; + emacsPackagesOverlay = final: prev: { + irony = prev.irony.overrideAttrs (eprev: { + 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 = ":"; + }; + }; + }; +}