2023-11-07 21:49:36 +01:00
{ pkgs , config , lib , . . . }:
2023-11-07 23:17:40 +01:00
let
direnv = {
# Environment variables making programs stay out of $HOME, but also needing we create a directory for them
CARGOHOME = " ${ config . xdg . cacheHome } / c a r g o " ; # There are config in there that we can version if one want
CCACHE_DIR = " ${ config . xdg . cacheHome } / c c a c h e " ; # The config file alone seems to be not enough
DASHT_DOCSETS_DIR = " ${ config . xdg . cacheHome } / d a s h _ d o c s e t s " ;
GOPATH = " ${ config . xdg . cacheHome } / g o " ;
GRADLE_USER_HOME = " ${ config . xdg . cacheHome } / g r a d l e " ;
MIX_ARCHIVES = " ${ config . xdg . cacheHome } / m i x / a r c h i v e s " ;
MONO_GAC_PREFIX = " ${ config . xdg . cacheHome } / m o n o " ;
npm_config_cache = " ${ config . xdg . cacheHome } / n p m " ;
PARALLEL_HOME = " ${ config . xdg . cacheHome } / p a r a l l e l " ;
TERMINFO = " ${ config . xdg . configHome } / t e r m i n f o " ;
WINEPREFIX = " ${ config . xdg . stateHome } / w i n e p r e f i x / d e f a u l t " ;
YARN_CACHE_FOLDER = " ${ config . xdg . cacheHome } / y a r n " ;
# TODO Some of that stuff is not really relavant any more
} ;
in
2023-10-28 22:09:36 +02:00
{
2023-11-07 21:49:36 +01:00
programs =
let
2023-11-07 23:17:40 +01:00
commonRc = lib . strings . concatLines ( [
''
# Colored ls
2023-11-19 20:51:05 +01:00
# TODO Doesn't allow completion. Check out lsd instead
2023-11-07 23:17:40 +01:00
_colored_ls ( ) {
\ ls - lh - - color = always $ @ | awk '
BEGIN {
FPAT = " ( [ [ : s p a c e : ] ] * [ ^ [ : s p a c e : ] ] + ) " ;
OFS = " " ;
}
{
$ 1 = " \0 3 3 [ 3 6 m " $ 1 " \0 3 3 [ 0 m " ;
$ 2 = " \0 3 3 [ 3 1 m " $ 2 " \0 3 3 [ 0 m " ;
$ 3 = " \0 3 3 [ 3 2 m " $ 3 " \0 3 3 [ 0 m " ;
$ 4 = " \0 3 3 [ 3 2 m " $ 4 " \0 3 3 [ 0 m " ;
$ 5 = " \0 3 3 [ 3 1 m " $ 5 " \0 3 3 [ 0 m " ;
$ 6 = " \0 3 3 [ 3 4 m " $ 6 " \0 3 3 [ 0 m " ;
$ 7 = " \0 3 3 [ 3 4 m " $ 7 " \0 3 3 [ 0 m " ;
print
}
'
}
alias ll = " _ c o l o r e d _ l s "
alias la = " _ c o l o r e d _ l s - a "
''
] ++ map ( d : " m k d i r - p ${ d } " ) ( builtins . attrValues direnv ) ) ;
2023-11-08 12:23:30 +01:00
# TODO Those directory creations should probably done on home-manager activation
2023-11-07 21:49:36 +01:00
commonSessionVariables = {
TIME_STYLE = " + % Y - % m - % d % H : % M : % S " ;
# Less colors
LESS = " - R " ;
LESS_TERMCAP_mb = " $ ' \E [ 1 ; 3 1 m ' " ; # begin blink
LESS_TERMCAP_md = " $ ' \E [ 1 ; 3 6 m ' " ; # begin bold
LESS_TERMCAP_me = " $ ' \E [ 0 m ' " ; # reset bold/blink
LESS_TERMCAP_so = " $ ' \E [ 0 1 ; 4 4 ; 3 3 m ' " ; # begin reverse video
LESS_TERMCAP_se = " $ ' \E [ 0 m ' " ; # reset reverse video
LESS_TERMCAP_us = " $ ' \E [ 1 ; 3 2 m ' " ; # begin underline
LESS_TERMCAP_ue = " $ ' \E [ 0 m ' " ; # reset underline
# Fzf
FZF_COMPLETION_OPTS = " ${ lib . strings . concatStringsSep " " config . programs . fzf . fileWidgetOptions } " ;
2023-11-06 23:12:47 +01:00
} ;
2023-11-10 23:31:11 +01:00
treatsHomeAsJunk = [
# Programs that think $HOME is a reasonable place to put their junk
# and don't allow the user to change those questionable choices
" a d b "
" a u d a c i t y "
" b i n w a l k " # Should use .config according to the GitHub code though
" c a b a l " # TODO May have options but last time I tried it it crashed
" c m a k e "
" d d d "
" g h i d r a "
" i t c h "
" s i m p l e s c r e e n r e c o r d e r " # Easy fix https://github.com/MaartenBaert/ssr/blob/1556ae456e833992fb6d39d40f7c7d7c337a4160/src/Main.cpp#L252
" v d "
" w p a _ c l i "
# TODO Maybe we can do something about node-gyp
] ;
2023-11-07 21:49:36 +01:00
commonShellAliases = {
2023-11-10 23:31:11 +01:00
# Completion for existing commands
ls = " l s - h - - c o l o r = a u t o " ;
mkdir = " m k d i r - v " ;
# cp = "cp -i"; # Disabled because conflicts with the ZSH/Bash one. This separation is confusing I swear.
mv = " m v - i v " ;
free = " f r e e - h " ;
df = " d f - h " ;
ffmpeg = " f f m p e g - h i d e _ b a n n e r " ;
ffprobe = " f f p r o b e - h i d e _ b a n n e r " ;
ffplay = " f f p l a y - h i d e _ b a n n e r " ;
# TODO Add ipython --no-confirm-exit --pdb
# Frequent mistakes
sl = " l s " ;
al = " l a " ;
mdkir = " m k d i r " ;
systemclt = " s y s t e m c t l " ;
please = " s u d o " ;
# Shortcuts for commonly used commands
# ll = "ls -l"; # Disabled because would overwrite the colored one
# la = "ls -la"; # Eh maybe it's not that bad, but for now let's keep compatibility
s = " s u d o - s - E " ;
# n = "$HOME/.config/i3/terminal & disown"; # Not used anymore since alacritty daemon mode doesn't preserve environment variables
x = " s t a r t x ${ config . xdg . configHome } / x i n i t r c ; l o g o u t " ;
nx = " n v i d i a - x r u n ${ config . xdg . configHome } / x i n i t r c ; s u d o s y s t e m c t l s t a r t n v i d i a - x r u n - p m ; l o g o u t " ;
# TODO Put in display.nix
# Was also thinking of not storing the config in .config and use nix-store instead,
# but maybe it's a bad idea as home-manager switch doesn't replace aliases in running shells
# FIXME Is it still relevant with NixOS?
# Give additional config to those programs, and not have them in my path
bower = " b o w e r - - c o n f i g . s t o r a g e . p a c k a g e s = ${ config . xdg . cacheHome } / b o w e r / p a c k a g e s - - c o n f i g . s t o r a g e . r e g i s t r y = ${ config . xdg . cacheHome } / b o w e r / r e g i s t r y - - c o n f i g . s t o r a g e . l i n k s = ${ config . xdg . cacheHome } / b o w e r / l i n k s " ;
gdb = " g d b - x ${ config . xdg . configHome } / g d b i n i t " ;
iftop = " i f t o p - c ${ config . xdg . configHome } / i f t o p r c " ;
lmms = " l m m s - - c o n f i g ${ config . xdg . configHome } / l m m s r c . x m l " ;
# Preference
vi = " n v i m " ;
vim = " n v i m " ;
wol = " w a k e o n l a n " ; # TODO Really, isn't wol better? Also wtf Arch aliases to pass because neither is installed anyways x)
mutt = " n e o m u t t " ;
# Bash/Zsh only
2023-11-07 21:49:36 +01:00
cp = " c p - i - - r e f l i n k = a u t o " ;
grep = " g r e p - - c o l o r = a u t o " ;
dd = " d d s t a t u s = p r o g r e s s " ;
rm = " r m - v - - o n e - f i l e - s y s t e m " ;
2023-11-10 23:31:11 +01:00
# free = "free -m"; # Disabled because... no? Why?
2023-11-07 21:49:36 +01:00
diff = " d i f f - - c o l o r = a u t o " ;
dmesg = " d m e s g - - c t i m e " ;
wget = " w g e t - - h s t s - f i l e ${ config . xdg . cacheHome } / w g e t - h s t s " ;
2023-11-26 21:04:58 +01:00
# Imported from scripts
rms = '' ${ pkgs . findutils } / b i n / f i n d . - n a m e " * . s y n c - c o n f l i c t - * " - d e l e t e '' ; # Remove syncthing conflict files
pw = '' ${ pkgs . pwgen } / b i n / p w g e n 3 2 - y '' ; # Generate passwords. ln((26*2+10)**32)/ln(2) ≅ 190 bits of entropy
newestFile = '' ${ pkgs . findutils } / b i n / f i n d - t y p e f - p r i n t f ' % T + % p \ n ' | s o r t | t a i l '' ;
oldestFile = '' ${ pkgs . findutils } / b i n / f i n d - t y p e f - p r i n t f ' % T + % p \ n ' | s o r t | h e a d '' ;
tracefiles = '' ${ pkgs . strace } / b i n / s t r a c e - f - t - e t r a c e = f i l e '' ;
} // lib . optionalAttrs config . frogeye . desktop . xorg {
noise = '' ${ pkgs . sox } / b i n / p l a y - c 2 - n s y n t h $' ' + '' { 1 } noise'' ;
beep = '' ${ pkgs . sox } / b i n / p l a y - n s y n t h s i n e E 5 s i n e A 4 r e m i x 1 - 2 f a d e 0 . 5 1 . 2 0 . 5 2 > / d e v / n u l l '' ;
# FIXME ALSA lib dlmisc.c:337:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_pulse.so (/nix/store/9b06fxbvm07iy9f9dvi5vk2iy9pk8hyz-alsa-lib-1.2.8/lib/alsa-lib/libasound_module_pcm_pulse.so: cannot open shared object file: No such file or directory)
2023-11-12 22:44:20 +01:00
} // lib . attrsets . mergeAttrsList ( map ( p : { " ${ p } " = " H O M E = ${ config . xdg . cacheHome } / j u n k h o m e ${ p } " ; } ) treatsHomeAsJunk ) ;
2023-11-10 23:31:11 +01:00
# TODO Maybe make nixpkg wrapper instead? So it also works from dmenu
# Could also accept my fate... Home-manager doesn't necessarily make it easy to put things out of the home directory
2023-11-07 21:49:36 +01:00
historySize = 100000 ;
historyFile = " ${ config . xdg . cacheHome } / s h e l l _ h i s t o r y " ;
in
{
home-manager . enable = true ;
bash = {
enable = true ;
bashrcExtra = lib . strings . concatLines [
commonRc
''
shopt - s expand_aliases
shopt - s histappend
''
] ;
sessionVariables = commonSessionVariables ;
historySize = historySize ;
historyFile = historyFile ;
historyFileSize = historySize ;
historyControl = [ " e r a s e d u p s " " i g n o r e d u p s " " i g n o r e s p a c e " ] ;
shellAliases = commonShellAliases ;
2023-10-28 23:03:27 +02:00
} ;
2023-11-07 21:49:36 +01:00
zsh = {
enable = true ;
enableAutosuggestions = true ;
enableCompletion = true ;
enableSyntaxHighlighting = true ;
# syntaxHighlighting.enable = true; # 23.11 syntax
historySubstringSearch . enable = true ;
initExtra = lib . strings . concatLines [
commonRc
( builtins . readFile ./zshrc.sh )
] ;
defaultKeymap = " v i i n s " ;
history = {
size = historySize ;
save = historySize ;
path = historyFile ;
expireDuplicatesFirst = true ;
2023-10-28 23:03:27 +02:00
} ;
2023-11-07 21:49:36 +01:00
sessionVariables = commonSessionVariables ;
shellAliases = commonShellAliases ;
} ;
dircolors = {
enable = true ;
enableBashIntegration = true ;
enableZshIntegration = true ;
# UPST This thing put stuff in .dircolors when it actually doesn't have to
} ;
powerline-go = {
enable = true ;
modules = [ " u s e r " " h o s t " " v e n v " " c w d " " p e r m s " " g i t " ] ;
modulesRight = [ " j o b s " " e x i t " " d u r a t i o n " " l o a d " ] ;
settings = {
colorize-hostname = true ;
max-width = 25 ;
cwd-max-dir-size = 10 ;
duration = " $ ( t e s t - n \" $ _ _ T I M E R \" & & e c h o $ ( ( $ E P O C H R E A L T I M E - $ \{ _ _ T I M E R : - E P O C H R E A L T I M E } ) ) | | e c h o 0 ) " ;
# UPST Implement this properly in home-manager, would allow for bash support
} ;
extraUpdatePS1 = '' u n s e t _ _ T I M E R '' ;
} ;
# neovim = {
# enable = true;
# defaultEditor = true;
# vimAlias = true;
# viAlias = true;
# vimdiffAlias = true;
# };
# FIXME Still want this despite using nixvim
gpg = {
enable = true ;
homedir = " ${ config . xdg . stateHome } / g n u p g " ;
settings = {
# Remove fluff
no-greeting = true ;
no-emit-version = true ;
no-comments = true ;
# Output format that I prefer
keyid-format = " 0 x l o n g " ;
# Show fingerprints
with-fingerprint = true ;
# Make sure to show if key is invalid
# (should be default on most platform,
# but just to be sure)
list-options = " s h o w - u i d - v a l i d i t y " ;
verify-options = " s h o w - u i d - v a l i d i t y " ;
# Stronger algorithm (https://wiki.archlinux.org/title/GnuPG#Different_algorithm)
personal-digest-preferences = " S H A 5 1 2 " ;
cert-digest-algo = " S H A 5 1 2 " ;
default-preference-list = " S H A 5 1 2 S H A 3 8 4 S H A 2 5 6 S H A 2 2 4 A E S 2 5 6 A E S 1 9 2 A E S C A S T 5 Z L I B B Z I P 2 Z I P U n c o m p r e s s e d " ;
personal-cipher-preferences = " T W O F I S H C A M E L L I A 2 5 6 A E S 3 D E S " ;
} ;
publicKeys = [ {
source = builtins . fetchurl {
url = " h t t p s : / / k e y s . o p e n p g p . o r g / v k s / v 1 / b y - f i n g e r p r i n t / 4 F B A 9 3 0 D 3 1 4 A 0 3 2 1 5 E 2 C D B 0 A 8 3 1 2 C 8 C A C 1 B A C 2 8 9 " ;
sha256 = " s h a 2 5 6 : 1 0 y 9 x q c y 1 v y k 2 p 8 b a a y 1 4 p 3 v w d n l w y n k 0 f v f b i k a 6 5 h z 2 z 8 y w 2 c m " ;
} ;
trust = " u l t i m a t e " ;
} ] ;
} ;
fzf = {
enable = true ;
enableZshIntegration = true ;
defaultOptions = [ " - - h e i g h t 4 0 % " " - - l a y o u t = d e f a u l t " ] ;
2023-11-12 21:53:52 +01:00
fileWidgetOptions = [ " - - p r e v i e w ' [ [ - d { } ] ] & & ${ pkgs . coreutils } / b i n / l s - l - - c o l o r = a l w a y s { } | | [ [ \$ ( ${ pkgs . file } / b i n / f i l e - - m i m e { } ) = ~ b i n a r y ] ] & & ${ pkgs . file } / b i n / f i l e - - b r i e f { } | | ( ${ pkgs . highlight } / b i n / h i g h l i g h t - O a n s i - l { } | | c o d e r a y { } | | r o u g i f y { } | | ${ pkgs . coreutils } / b i n / c a t { } ) 2 > / d e v / n u l l | h e a d - 5 0 0 ' " ] ;
# file and friends are not in PATH by default... so here we want aboslute paths, which means those won't get reloaded. Meh.
2023-11-07 21:49:36 +01:00
} ;
# TODO highlight or bat
nix-index = {
enable = true ;
enableZshIntegration = true ;
} ;
less . enable = true ;
2023-11-12 22:44:20 +01:00
git = {
enable = true ;
aliases = {
" g i t " = " ! e x e c g i t " ; # In case I write one too many git
} ;
ignores = [
" * . s w p "
" * . s w o "
" * . y c m _ e x t r a _ c o n f . p y "
" t a g s "
" . m y p y _ c a c h e "
] ;
lfs . enable = true ;
signing = {
key = " 0 x 8 3 1 2 C 8 C A C 1 B A C 2 8 9 " ; # FIXME Only in extension
# TODO signByDefault?
} ;
userEmail = " g e o f f r e y @ f r o g e y e . f r " ;
userName = " G e o f f r e y “ F r o g e y e ” P r e u d ' h o m m e " ;
extraConfig = {
core = {
editor = " n v i m " ;
} ;
push = {
default = " m a t c h i n g " ;
} ;
pull = {
ff = " o n l y " ;
} ;
2023-11-23 22:54:11 +01:00
} // lib . optionalAttrs config . frogeye . desktop . xorg {
2023-11-26 21:04:58 +01:00
diff . tool = " m e l d " ;
difftool . prompt = false ;
" d i f f t o o l \" m e l d \" " . cmd = " ${ pkgs . meld } / b i n / m e l d \" $ L O C A L \" \" $ R E M O T E \" " ;
# This escapes quotes, which isn't the case in the original, hoping this isn't an issue.
2023-11-12 22:44:20 +01:00
} ;
# TODO Delta syntax highlighter... and other cool-looking options?
} ;
readline = {
enable = true ;
variables = {
" b e l l - s t y l e " = " n o n e " ;
" c o l o r e d - c o m p l e t i o n - p r e f i x " = true ;
" c o l o r e d - s t a t s " = true ;
" c o m p l e t i o n - i g n o r e - c a s e " = true ;
" c o m p l e t i o n - q u e r y - i t e m s " = 200 ;
" e d i t i n g - m o d e " = " v i " ;
" h i s t o r y - p r e s e r v e - p o i n t " = true ;
" h i s t o r y - s i z e " = 10000 ;
" h o r i z o n t a l - s c r o l l - m o d e " = false ;
" m a r k - d i r e c t o r i e s " = true ;
" m a r k - m o d i f i e d - l i n e s " = false ;
" m a r k - s y m l i n k e d - d i r e c t o r i e s " = true ;
" m a t c h - h i d d e n - f i l e s " = true ;
" m e n u - c o m p l e t e - d i s p l a y - p r e f i x " = true ;
" p a g e - c o m p l e t i o n s " = true ;
" p r i n t - c o m p l e t i o n s - h o r i z o n t a l l y " = false ;
" r e v e r t - a l l - a t - n e w l i n e " = false ;
" s h o w - a l l - i f - a m b i g u o u s " = true ;
" s h o w - a l l - i f - u n m o d i f i e d " = true ;
" s h o w - m o d e - i n - p r o m p t " = true ;
" s k i p - c o m p l e t e d - t e x t " = true ;
" v i s i b l e - s t a t s " = false ;
} ;
extraConfig = builtins . readFile ./inputrc ;
} ;
2023-11-20 22:09:28 +01:00
tmux =
let
themepack = pkgs . tmuxPlugins . mkTmuxPlugin
rec {
pluginName = " t m u x - t h e m e p a c k " ;
version = " 1 . 1 . 0 " ;
rtpFilePath = " t h e m e p a c k . t m u x " ;
src = pkgs . fetchFromGitHub {
owner = " j i m e h " ;
repo = " t m u x - t h e m e p a c k " ;
rev = " ${ version } " ;
sha256 = " f 6 y 9 2 k Y s K D F a n N x 5 A T x 4 B k a B / E 7 U r m y I H U / 5 Z 0 1 o t Q E = " ;
} ;
} ;
in
{
enable = true ;
mouse = false ;
clock24 = true ;
# TODO Vim mode?
plugins = with pkgs . tmuxPlugins ; [
sensible
] ;
extraConfig = builtins . readFile ./tmux.conf + " s o u r c e - f i l e ${ themepack } / s h a r e / t m u x - p l u g i n s / t m u x - t h e m e p a c k / p o w e r l i n e / d e f a u l t / g r e e n . t m u x t h e m e \n " ;
} ;
2023-11-05 23:19:04 +01:00
} ;
2023-11-08 12:23:30 +01:00
services = {
gpg-agent = {
enable = true ;
enableBashIntegration = true ;
enableZshIntegration = true ;
enableSshSupport = true ;
pinentryFlavor = " g t k 2 " ; # Falls back to curses when needed
2023-11-10 23:31:11 +01:00
sshKeys = [ " 7 2 A 5 F 2 9 1 3 0 2 6 7 7 6 5 9 3 9 4 7 C F 0 0 D F F 3 3 0 E 8 2 0 E 7 3 1 D " ] ; # TODO This seems to prevent other keys from being added?
2023-11-08 12:23:30 +01:00
# FIXME For g extension, as base is not supposed to have private keys
} ;
} ;
2023-11-12 22:44:20 +01:00
xdg = {
configFile = {
" c c a c h e . c o n f " = {
text = " c c a c h e _ d i r = ${ config . xdg . cacheHome } / c c a c h e " ;
} ;
" g d b i n i t " = {
text = ''
define hook-quit
set confirm off
end
'' ;
} ;
" i f t o p r c " = {
text = ''
port-resolution : no
promiscuous : no
port-display : on
link-local : yes
use-bytes : yes
show-totals : yes
log-scale : yes
'' ;
} ;
2023-11-19 22:41:09 +01:00
" p y t h o n s t a r t u p . p y " = {
text = ( builtins . readFile ./pythonstartup.py ) ;
} ;
2023-11-19 23:19:03 +01:00
" s c r e e n r c " = {
text = ( builtins . readFile ./screenrc ) ;
} ;
2023-11-12 22:44:20 +01:00
} ;
} ;
2023-11-05 21:32:31 +01:00
home = {
stateVersion = " 2 3 . 0 5 " ;
2023-11-05 21:36:11 +01:00
language = {
base = " e n _ U S . U T F - 8 " ;
2023-11-23 13:24:59 +01:00
# time = "en_DK.UTF-8"; # FIXME Disabled because complaints during nixos-rebuild switch
2023-11-05 21:36:11 +01:00
} ;
2023-11-05 21:32:31 +01:00
packages = with pkgs ; [
# dotfiles dependencies
coreutils
bash
gnugrep
gnused
gnutar
openssl
wget
curl
python3Packages . pip
2023-11-26 21:04:58 +01:00
rename
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# shell
zsh-completions
nix-zsh-completions
zsh-history-substring-search
powerline-go
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# terminal essentials
moreutils
man
2023-11-22 00:52:31 +01:00
# nodePackages.insect # FIXME Don't install on aarch64
# TODO Use whatever replaces insect
2023-11-05 21:32:31 +01:00
translate-shell
unzip
unrar
p7zip
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# remote
openssh
rsync
borgbackup
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# cleanup
ncdu
jdupes
duperemove
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# local monitoring
htop
iotop
iftop
lsof
strace
pv
progress
speedtest-cli
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# multimedia toolbox
sox
imagemagick
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# password
pass
pwgen
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# Mail
isync
msmtp
notmuch
neomutt
lynx
2023-10-28 22:09:36 +02:00
2023-11-05 21:32:31 +01:00
# Organisation
vdirsyncer
khard
khal
todoman
syncthing
2023-10-28 22:09:36 +02:00
2023-11-26 22:45:07 +01:00
# TODO Lots of redundancy with other way things are defined here
2023-11-05 21:32:31 +01:00
] ;
2023-11-07 23:17:40 +01:00
sessionVariables = {
# Favourite commands
PAGER = " ${ pkgs . coreutils } / b i n / l e s s " ;
EDITOR = " ${ pkgs . neovim } / b i n / n v i m " ;
2023-11-22 14:05:48 +01:00
# Extra config
2023-11-07 23:17:40 +01:00
BOOT9_PATH = " ${ config . xdg . dataHome } / c i t r a - e m u / s y s d a t a / b o o t 9 . b i n " ;
CCACHE_CONFIGPATH = " ${ config . xdg . configHome } / c c a c h e . c o n f " ;
2023-11-08 12:23:30 +01:00
# INPUTRC = "${config.xdg.configHome}/inputrc"; # UPST Will use programs.readline, but doesn't allow path setting
2023-11-07 23:17:40 +01:00
LESSHISTFILE = " ${ config . xdg . stateHome } / l e s s h s t " ;
NODE_REPL_HISTORY = " ${ config . xdg . cacheHome } / n o d e _ r e p l _ h i s t o r y " ;
PYTHONSTARTUP = " ${ config . xdg . configHome } / p y t h o n s t a r t u p . p y " ;
2023-11-20 22:42:51 +01:00
# TODO I think we're not using the urxvt daemon on purpose?
# TODO this should be desktop only, as a few things are too.
2023-11-07 23:17:40 +01:00
SCREENRC = " ${ config . xdg . configHome } / s c r e e n r c " ;
SQLITE_HISTFILE = " ${ config . xdg . stateHome } / s q l i t e _ h i s t o r y " ;
YARN_DISABLE_SELF_UPDATE_CHECK = " t r u e " ; # This also disable the creation of a ~/.yarnrc file
2023-11-22 14:05:48 +01:00
} // lib . optionalAttrs config . frogeye . desktop . xorg {
# Favourite commands
VISUAL = " ${ pkgs . neovim } / b i n / n v i m " ;
BROWSER = " ${ config . programs . qutebrowser . package } / b i n / q u t e b r o w s e r " ;
# Extra config
RXVT_SOCKET = " ${ config . xdg . stateHome } / u r x v t d " ; # Used to want -$HOME suffix, hopefullt this isn't needed
2023-11-07 23:17:40 +01:00
# XAUTHORITY = "${config.xdg.configHome}/Xauthority"; # Disabled as this causes lock-ups with DMs
2023-11-22 14:05:48 +01:00
} // direnv ;
2023-11-07 23:17:40 +01:00
# TODO Session variables only get reloaded on login I think.
sessionPath = [
2023-11-26 21:04:58 +01:00
" ${ config . home . homeDirectory } / . l o c a l / b i n "
2023-11-07 23:17:40 +01:00
" ${ config . home . sessionVariables . GOPATH } "
2023-11-26 23:58:22 +01:00
" ${ config . frogeye . dotfiles . path } / s c r i p t s "
2023-11-07 23:17:40 +01:00
] ;
2023-11-26 22:45:07 +01:00
file = {
" . f a c e " = {
source = pkgs . runCommand " f a c e . p n g " { } " ${ pkgs . inkscape } / b i n / i n k s c a p e ${ ./face.svg } - w 1 0 2 4 - o $ o u t " ;
} ;
} ;
2023-11-05 21:32:31 +01:00
} ;
2023-10-28 22:09:36 +02:00
}