-8
.direnv/bin/nix-direnv-reload
-8
.direnv/bin/nix-direnv-reload
···
1
-
#!/usr/bin/env bash
2
-
dir="$(realpath $(dirname ${BASH_SOURCE[0]})/../..)"
3
-
_nix_direnv_force_reload=1 direnv exec "$dir" true
4
-
direnv reload
5
-
# direnv reload updates the mtime of .envrc. Also update the timestamp of the
6
-
# profile_rc file to keep track that we actually are up to date.
7
-
touch $dir/.direnv/{nix,flake}-profile-*.rc
8
-
-1863
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
-1863
.direnv/flake-profile-a5d5b61aa8a61b7d9d765e1daf971a9a578f1cfa.rc
···
1
-
unset shellHook
2
-
PATH=${PATH:-}
3
-
nix_saved_PATH="$PATH"
4
-
XDG_DATA_DIRS=${XDG_DATA_DIRS:-}
5
-
nix_saved_XDG_DATA_DIRS="$XDG_DATA_DIRS"
6
-
AR='ar'
7
-
export AR
8
-
AS='as'
9
-
export AS
10
-
BASH='/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin/bash'
11
-
CC='gcc'
12
-
export CC
13
-
CONFIG_SHELL='/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin/bash'
14
-
export CONFIG_SHELL
15
-
CXX='g++'
16
-
export CXX
17
-
HOSTTYPE='x86_64'
18
-
HOST_PATH='/nix/store/m38gwq0w8w7qyjn9s00balyp7cv3m5p9-coreutils-9.3/bin:/nix/store/01znf87kiw5xx1dj0f7djrnrbg84ij28-findutils-4.9.0/bin:/nix/store/vq4vmndw555m7ld2bi6pq8kr348qvb6a-diffutils-3.10/bin:/nix/store/rwa7qyds01qzxvq7zq3kgnkrzzpw4s66-gnused-4.9/bin:/nix/store/n062zcsmfl9gfp6vfkcg0asb8jjwmy5i-gnugrep-3.11/bin:/nix/store/4v7m4yx07b3anmbznfhihjc8xiizyna9-gawk-5.2.2/bin:/nix/store/mi3pm67ps7c7k11aqki9182ygzg8j503-gnutar-1.35/bin:/nix/store/5c0ancqnpi0cf1h49mv13w68a950s9z0-gzip-1.13/bin:/nix/store/q5cv7r1sh3s4niyq7vm6h1j74394naxs-bzip2-1.0.8-bin/bin:/nix/store/bh7sbl99ygfvw9w96936nrhw46jmcmqq-gnumake-4.4.1/bin:/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin:/nix/store/mbh9gx43gsc5av019vsdkazbyiic3f0f-patch-2.7.6/bin:/nix/store/3q6fnwcm677l1q60vkhcf9m1gxhv83jm-xz-5.4.4-bin/bin:/nix/store/a5s2dmba16pw8l52f496gw0b7nli7mbn-file-5.45/bin'
19
-
export HOST_PATH
20
-
IFS='
21
-
'
22
-
IN_NIX_SHELL='impure'
23
-
export IN_NIX_SHELL
24
-
LD='ld'
25
-
export LD
26
-
LINENO='76'
27
-
MACHTYPE='x86_64-pc-linux-gnu'
28
-
NIX_BINTOOLS='/nix/store/qcg3rpl1l103zb1xfsw40wm9j5hzrp7y-binutils-wrapper-2.40'
29
-
export NIX_BINTOOLS
30
-
NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
31
-
export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
32
-
NIX_BUILD_CORES='4'
33
-
export NIX_BUILD_CORES
34
-
NIX_CC='/nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0'
35
-
export NIX_CC
36
-
NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1'
37
-
export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu
38
-
NIX_CFLAGS_COMPILE=' -frandom-seed=q6hnwi6rdy -isystem /nix/store/hsv5438lvzq106llix5xi0f7cdvqk95q-nix-2.18.1-dev/include -isystem /nix/store/gdz3j02p6mfzmxs9zsssszwpppigb70g-boehm-gc-8.2.2-dev/include -isystem /nix/store/d7jspi1ws93ya34zriyrdxz5v5z6lijj-nlohmann_json-3.11.2/include -isystem /nix/store/hsv5438lvzq106llix5xi0f7cdvqk95q-nix-2.18.1-dev/include -isystem /nix/store/gdz3j02p6mfzmxs9zsssszwpppigb70g-boehm-gc-8.2.2-dev/include -isystem /nix/store/d7jspi1ws93ya34zriyrdxz5v5z6lijj-nlohmann_json-3.11.2/include'
39
-
export NIX_CFLAGS_COMPILE
40
-
NIX_CONFIG='experimental-features = nix-command flakes'
41
-
export NIX_CONFIG
42
-
NIX_ENFORCE_NO_NATIVE='1'
43
-
export NIX_ENFORCE_NO_NATIVE
44
-
NIX_HARDENING_ENABLE='fortify fortify3 stackprotector pic strictoverflow format relro bindnow'
45
-
export NIX_HARDENING_ENABLE
46
-
NIX_LDFLAGS='-rpath /home/anish/usr/helm/outputs/out/lib -L/nix/store/gfmmah5rc4vl8mhli495lh5savq842p0-boehm-gc-8.2.2/lib -L/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1/lib -L/nix/store/gfmmah5rc4vl8mhli495lh5savq842p0-boehm-gc-8.2.2/lib -L/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1/lib'
47
-
export NIX_LDFLAGS
48
-
NIX_NO_SELF_RPATH='1'
49
-
NIX_STORE='/nix/store'
50
-
export NIX_STORE
51
-
NM='nm'
52
-
export NM
53
-
OBJCOPY='objcopy'
54
-
export OBJCOPY
55
-
OBJDUMP='objdump'
56
-
export OBJDUMP
57
-
OLDPWD=''
58
-
export OLDPWD
59
-
OPTERR='1'
60
-
OSTYPE='linux-gnu'
61
-
PATH='/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1/bin:/nix/store/p3s38kgwd16d2dimspckp5f1rri43mnq-home-manager-unstable-2023-12-31/bin:/nix/store/pz4jng8kb4iv9x67r730las2mdkv8s8q-git-2.42.0/bin:/nix/store/p8p72q6anyf0whaf9i75jynzk2z4ml36-agenix-0.13.0/bin:/nix/store/lfx4in7iqbbx5b6b85cndw268ria5512-deploy-rs-unstable-2023-12-20/bin:/nix/store/8nwmr2kmkrl1mnggka7fjibcglk68rc0-dnscontrol-4.6.0/bin:/nix/store/h3ayxf5dk1gdf3s5716fh1ys815qxxag-patchelf-0.15.0/bin:/nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0/bin:/nix/store/f94yr35af3xdiscbj6cp6kafvmn55gv9-gcc-12.3.0/bin:/nix/store/vksrk76p5cfbjxb0n95vdkxy7fl2cbcm-glibc-2.38-27-bin/bin:/nix/store/m38gwq0w8w7qyjn9s00balyp7cv3m5p9-coreutils-9.3/bin:/nix/store/qcg3rpl1l103zb1xfsw40wm9j5hzrp7y-binutils-wrapper-2.40/bin:/nix/store/idiaraknw071d20nlqp49s18gbvw4wa0-binutils-2.40/bin:/nix/store/m38gwq0w8w7qyjn9s00balyp7cv3m5p9-coreutils-9.3/bin:/nix/store/01znf87kiw5xx1dj0f7djrnrbg84ij28-findutils-4.9.0/bin:/nix/store/vq4vmndw555m7ld2bi6pq8kr348qvb6a-diffutils-3.10/bin:/nix/store/rwa7qyds01qzxvq7zq3kgnkrzzpw4s66-gnused-4.9/bin:/nix/store/n062zcsmfl9gfp6vfkcg0asb8jjwmy5i-gnugrep-3.11/bin:/nix/store/4v7m4yx07b3anmbznfhihjc8xiizyna9-gawk-5.2.2/bin:/nix/store/mi3pm67ps7c7k11aqki9182ygzg8j503-gnutar-1.35/bin:/nix/store/5c0ancqnpi0cf1h49mv13w68a950s9z0-gzip-1.13/bin:/nix/store/q5cv7r1sh3s4niyq7vm6h1j74394naxs-bzip2-1.0.8-bin/bin:/nix/store/bh7sbl99ygfvw9w96936nrhw46jmcmqq-gnumake-4.4.1/bin:/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin:/nix/store/mbh9gx43gsc5av019vsdkazbyiic3f0f-patch-2.7.6/bin:/nix/store/3q6fnwcm677l1q60vkhcf9m1gxhv83jm-xz-5.4.4-bin/bin:/nix/store/a5s2dmba16pw8l52f496gw0b7nli7mbn-file-5.45/bin'
62
-
export PATH
63
-
PS4='+ '
64
-
RANLIB='ranlib'
65
-
export RANLIB
66
-
READELF='readelf'
67
-
export READELF
68
-
SIZE='size'
69
-
export SIZE
70
-
SOURCE_DATE_EPOCH='315532800'
71
-
export SOURCE_DATE_EPOCH
72
-
STRINGS='strings'
73
-
export STRINGS
74
-
STRIP='strip'
75
-
export STRIP
76
-
XDG_DATA_DIRS='/nix/store/gfmmah5rc4vl8mhli495lh5savq842p0-boehm-gc-8.2.2/share:/nix/store/d7jspi1ws93ya34zriyrdxz5v5z6lijj-nlohmann_json-3.11.2/share:/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1/share:/nix/store/p3s38kgwd16d2dimspckp5f1rri43mnq-home-manager-unstable-2023-12-31/share:/nix/store/pz4jng8kb4iv9x67r730las2mdkv8s8q-git-2.42.0/share:/nix/store/h3ayxf5dk1gdf3s5716fh1ys815qxxag-patchelf-0.15.0/share'
77
-
export XDG_DATA_DIRS
78
-
__structuredAttrs=''
79
-
export __structuredAttrs
80
-
buildInputs=''
81
-
export buildInputs
82
-
buildPhase='{ echo "------------------------------------------------------------";
83
-
echo " WARNING: the existence of this path is not guaranteed.";
84
-
echo " It is an internal implementation detail for pkgs.mkShell.";
85
-
echo "------------------------------------------------------------";
86
-
echo;
87
-
# Record all build inputs as runtime dependencies
88
-
export;
89
-
} >> "$out"
90
-
'
91
-
export buildPhase
92
-
builder='/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin/bash'
93
-
export builder
94
-
cmakeFlags=''
95
-
export cmakeFlags
96
-
configureFlags=''
97
-
export configureFlags
98
-
defaultBuildInputs=''
99
-
defaultNativeBuildInputs='/nix/store/h3ayxf5dk1gdf3s5716fh1ys815qxxag-patchelf-0.15.0 /nix/store/v5qyd49a256y44pz75qnsp9741mg336k-update-autotools-gnu-config-scripts-hook /nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh /nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh /nix/store/wzdsbnv2ba3nj91aql8jjdddfmkkdh7h-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh /nix/store/wmknncrif06fqxa16hpdldhixk95nds0-strip.sh /nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0'
100
-
depsBuildBuild=''
101
-
export depsBuildBuild
102
-
depsBuildBuildPropagated=''
103
-
export depsBuildBuildPropagated
104
-
depsBuildTarget=''
105
-
export depsBuildTarget
106
-
depsBuildTargetPropagated=''
107
-
export depsBuildTargetPropagated
108
-
depsHostHost=''
109
-
export depsHostHost
110
-
depsHostHostPropagated=''
111
-
export depsHostHostPropagated
112
-
depsTargetTarget=''
113
-
export depsTargetTarget
114
-
depsTargetTargetPropagated=''
115
-
export depsTargetTargetPropagated
116
-
doCheck=''
117
-
export doCheck
118
-
doInstallCheck=''
119
-
export doInstallCheck
120
-
dontAddDisableDepTrack='1'
121
-
export dontAddDisableDepTrack
122
-
declare -a envBuildBuildHooks=()
123
-
declare -a envBuildHostHooks=()
124
-
declare -a envBuildTargetHooks=()
125
-
declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
126
-
declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' )
127
-
declare -a envTargetTargetHooks=()
128
-
declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' )
129
-
guess='4'
130
-
initialPath='/nix/store/m38gwq0w8w7qyjn9s00balyp7cv3m5p9-coreutils-9.3 /nix/store/01znf87kiw5xx1dj0f7djrnrbg84ij28-findutils-4.9.0 /nix/store/vq4vmndw555m7ld2bi6pq8kr348qvb6a-diffutils-3.10 /nix/store/rwa7qyds01qzxvq7zq3kgnkrzzpw4s66-gnused-4.9 /nix/store/n062zcsmfl9gfp6vfkcg0asb8jjwmy5i-gnugrep-3.11 /nix/store/4v7m4yx07b3anmbznfhihjc8xiizyna9-gawk-5.2.2 /nix/store/mi3pm67ps7c7k11aqki9182ygzg8j503-gnutar-1.35 /nix/store/5c0ancqnpi0cf1h49mv13w68a950s9z0-gzip-1.13 /nix/store/q5cv7r1sh3s4niyq7vm6h1j74394naxs-bzip2-1.0.8-bin /nix/store/bh7sbl99ygfvw9w96936nrhw46jmcmqq-gnumake-4.4.1 /nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15 /nix/store/mbh9gx43gsc5av019vsdkazbyiic3f0f-patch-2.7.6 /nix/store/3q6fnwcm677l1q60vkhcf9m1gxhv83jm-xz-5.4.4-bin /nix/store/a5s2dmba16pw8l52f496gw0b7nli7mbn-file-5.45'
131
-
mesonFlags=''
132
-
export mesonFlags
133
-
name='nix-shell-env'
134
-
export name
135
-
nativeBuildInputs='/nix/store/hsv5438lvzq106llix5xi0f7cdvqk95q-nix-2.18.1-dev /nix/store/p3s38kgwd16d2dimspckp5f1rri43mnq-home-manager-unstable-2023-12-31 /nix/store/pz4jng8kb4iv9x67r730las2mdkv8s8q-git-2.42.0 /nix/store/p8p72q6anyf0whaf9i75jynzk2z4ml36-agenix-0.13.0 /nix/store/lfx4in7iqbbx5b6b85cndw268ria5512-deploy-rs-unstable-2023-12-20 /nix/store/8nwmr2kmkrl1mnggka7fjibcglk68rc0-dnscontrol-4.6.0'
136
-
export nativeBuildInputs
137
-
out='/home/anish/usr/helm/outputs/out'
138
-
export out
139
-
outputBin='out'
140
-
outputDev='out'
141
-
outputDevdoc='REMOVE'
142
-
outputDevman='out'
143
-
outputDoc='out'
144
-
outputInclude='out'
145
-
outputInfo='out'
146
-
outputLib='out'
147
-
outputMan='out'
148
-
outputs='out'
149
-
export outputs
150
-
patches=''
151
-
export patches
152
-
phases='buildPhase'
153
-
export phases
154
-
pkg='/nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0'
155
-
declare -a pkgsBuildBuild=()
156
-
declare -a pkgsBuildHost=('/nix/store/hsv5438lvzq106llix5xi0f7cdvqk95q-nix-2.18.1-dev' '/nix/store/gdz3j02p6mfzmxs9zsssszwpppigb70g-boehm-gc-8.2.2-dev' '/nix/store/gfmmah5rc4vl8mhli495lh5savq842p0-boehm-gc-8.2.2' '/nix/store/d7jspi1ws93ya34zriyrdxz5v5z6lijj-nlohmann_json-3.11.2' '/nix/store/j7nl2pj606d8ld5818hw3z3fbz00sdc5-nix-2.18.1' '/nix/store/p3s38kgwd16d2dimspckp5f1rri43mnq-home-manager-unstable-2023-12-31' '/nix/store/pz4jng8kb4iv9x67r730las2mdkv8s8q-git-2.42.0' '/nix/store/p8p72q6anyf0whaf9i75jynzk2z4ml36-agenix-0.13.0' '/nix/store/lfx4in7iqbbx5b6b85cndw268ria5512-deploy-rs-unstable-2023-12-20' '/nix/store/8nwmr2kmkrl1mnggka7fjibcglk68rc0-dnscontrol-4.6.0' '/nix/store/h3ayxf5dk1gdf3s5716fh1ys815qxxag-patchelf-0.15.0' '/nix/store/v5qyd49a256y44pz75qnsp9741mg336k-update-autotools-gnu-config-scripts-hook' '/nix/store/h9lc1dpi14z7is86ffhl3ld569138595-audit-tmpdir.sh' '/nix/store/m54bmrhj6fqz8nds5zcj97w9s9bckc9v-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/jivxp510zxakaaic7qkrb7v1dd2rdbw9-multiple-outputs.sh' '/nix/store/wzdsbnv2ba3nj91aql8jjdddfmkkdh7h-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/ngg1cv31c8c7bcm2n8ww4g06nq7s4zhm-set-source-date-epoch-to-latest.sh' '/nix/store/wmknncrif06fqxa16hpdldhixk95nds0-strip.sh' '/nix/store/vylmp73qymnv4siaqn1kl2hghj07hrj8-gcc-wrapper-12.3.0' '/nix/store/qcg3rpl1l103zb1xfsw40wm9j5hzrp7y-binutils-wrapper-2.40' )
157
-
declare -a pkgsBuildTarget=()
158
-
declare -a pkgsHostHost=()
159
-
declare -a pkgsHostTarget=()
160
-
declare -a pkgsTargetTarget=()
161
-
declare -a postFixupHooks=('_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev' )
162
-
declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' )
163
-
declare -a preConfigureHooks=('_multioutConfig' )
164
-
preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase'
165
-
declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' )
166
-
preferLocalBuild='1'
167
-
export preferLocalBuild
168
-
prefix='/home/anish/usr/helm/outputs/out'
169
-
declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' )
170
-
propagatedBuildInputs=''
171
-
export propagatedBuildInputs
172
-
declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build-inputs' )
173
-
propagatedNativeBuildInputs=''
174
-
export propagatedNativeBuildInputs
175
-
declare -a propagatedTargetDepFiles=('propagated-target-target-deps' )
176
-
shell='/nix/store/7dpxg7ki7g8ynkdwcqf493p2x8divb4i-bash-5.2-p15/bin/bash'
177
-
export shell
178
-
shellHook=''
179
-
export shellHook
180
-
stdenv='/nix/store/kv5wkk7xgc8paw9azshzlmxraffqcg0i-stdenv-linux'
181
-
export stdenv
182
-
strictDeps=''
183
-
export strictDeps
184
-
system='x86_64-linux'
185
-
export system
186
-
declare -a unpackCmdHooks=('_defaultUnpack' )
187
-
_accumFlagsArray ()
188
-
{
189
-
190
-
local name;
191
-
if [ -n "$__structuredAttrs" ]; then
192
-
for name in "$@";
193
-
do
194
-
local -n nameref="$name";
195
-
flagsArray+=(${nameref+"${nameref[@]}"});
196
-
done;
197
-
else
198
-
for name in "$@";
199
-
do
200
-
local -n nameref="$name";
201
-
case "$name" in
202
-
*Array)
203
-
flagsArray+=(${nameref+"${nameref[@]}"})
204
-
;;
205
-
*)
206
-
flagsArray+=(${nameref-})
207
-
;;
208
-
esac;
209
-
done;
210
-
fi
211
-
}
212
-
_activatePkgs ()
213
-
{
214
-
215
-
local hostOffset targetOffset;
216
-
local pkg;
217
-
for hostOffset in "${allPlatOffsets[@]}";
218
-
do
219
-
local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}";
220
-
for targetOffset in "${allPlatOffsets[@]}";
221
-
do
222
-
(( hostOffset <= targetOffset )) || continue;
223
-
local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]";
224
-
local pkgsSlice="${!pkgsRef}[@]";
225
-
for pkg in ${!pkgsSlice+"${!pkgsSlice}"};
226
-
do
227
-
activatePackage "$pkg" "$hostOffset" "$targetOffset";
228
-
done;
229
-
done;
230
-
done
231
-
}
232
-
_addRpathPrefix ()
233
-
{
234
-
235
-
if [ "${NIX_NO_SELF_RPATH:-0}" != 1 ]; then
236
-
export NIX_LDFLAGS="-rpath $1/lib ${NIX_LDFLAGS-}";
237
-
fi
238
-
}
239
-
_addToEnv ()
240
-
{
241
-
242
-
local depHostOffset depTargetOffset;
243
-
local pkg;
244
-
for depHostOffset in "${allPlatOffsets[@]}";
245
-
do
246
-
local hookVar="${pkgHookVarVars[depHostOffset + 1]}";
247
-
local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}";
248
-
for depTargetOffset in "${allPlatOffsets[@]}";
249
-
do
250
-
(( depHostOffset <= depTargetOffset )) || continue;
251
-
local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]";
252
-
if [[ -z "${strictDeps-}" ]]; then
253
-
local visitedPkgs="";
254
-
for pkg in "${pkgsBuildBuild[@]}" "${pkgsBuildHost[@]}" "${pkgsBuildTarget[@]}" "${pkgsHostHost[@]}" "${pkgsHostTarget[@]}" "${pkgsTargetTarget[@]}";
255
-
do
256
-
if [[ "$visitedPkgs" = *"$pkg"* ]]; then
257
-
continue;
258
-
fi;
259
-
runHook "${!hookRef}" "$pkg";
260
-
visitedPkgs+=" $pkg";
261
-
done;
262
-
else
263
-
local pkgsRef="${pkgsVar}[$depTargetOffset - $depHostOffset]";
264
-
local pkgsSlice="${!pkgsRef}[@]";
265
-
for pkg in ${!pkgsSlice+"${!pkgsSlice}"};
266
-
do
267
-
runHook "${!hookRef}" "$pkg";
268
-
done;
269
-
fi;
270
-
done;
271
-
done
272
-
}
273
-
_allFlags ()
274
-
{
275
-
276
-
export system pname name version;
277
-
for varName in $(awk 'BEGIN { for (v in ENVIRON) if (v ~ /^[a-z][a-zA-Z0-9_]*$/) print v }');
278
-
do
279
-
if (( "${NIX_DEBUG:-0}" >= 1 )); then
280
-
printf "@%s@ -> %q\n" "${varName}" "${!varName}" 1>&2;
281
-
fi;
282
-
args+=("--subst-var" "$varName");
283
-
done
284
-
}
285
-
_assignFirst ()
286
-
{
287
-
288
-
local varName="$1";
289
-
local _var;
290
-
local REMOVE=REMOVE;
291
-
shift;
292
-
for _var in "$@";
293
-
do
294
-
if [ -n "${!_var-}" ]; then
295
-
eval "${varName}"="${_var}";
296
-
return;
297
-
fi;
298
-
done;
299
-
echo;
300
-
echo "error: _assignFirst: could not find a non-empty variable whose name to assign to ${varName}.";
301
-
echo " The following variables were all unset or empty:";
302
-
echo " $*";
303
-
if [ -z "${out:-}" ]; then
304
-
echo ' If you do not want an "out" output in your derivation, make sure to define';
305
-
echo ' the other specific required outputs. This can be achieved by picking one';
306
-
echo " of the above as an output.";
307
-
echo ' You do not have to remove "out" if you want to have a different default';
308
-
echo ' output, because the first output is taken as a default.';
309
-
echo;
310
-
fi;
311
-
return 1
312
-
}
313
-
_callImplicitHook ()
314
-
{
315
-
316
-
local def="$1";
317
-
local hookName="$2";
318
-
if declare -F "$hookName" > /dev/null; then
319
-
"$hookName";
320
-
else
321
-
if type -p "$hookName" > /dev/null; then
322
-
source "$hookName";
323
-
else
324
-
if [ -n "${!hookName:-}" ]; then
325
-
eval "${!hookName}";
326
-
else
327
-
return "$def";
328
-
fi;
329
-
fi;
330
-
fi
331
-
}
332
-
_defaultUnpack ()
333
-
{
334
-
335
-
local fn="$1";
336
-
local destination;
337
-
if [ -d "$fn" ]; then
338
-
destination="$(stripHash "$fn")";
339
-
if [ -e "$destination" ]; then
340
-
echo "Cannot copy $fn to $destination: destination already exists!";
341
-
echo "Did you specify two \"srcs\" with the same \"name\"?";
342
-
return 1;
343
-
fi;
344
-
cp -pr --reflink=auto -- "$fn" "$destination";
345
-
else
346
-
case "$fn" in
347
-
*.tar.xz | *.tar.lzma | *.txz)
348
-
xz -d < "$fn" | tar xf - --warning=no-timestamp
349
-
;;
350
-
*.tar | *.tar.* | *.tgz | *.tbz2 | *.tbz)
351
-
tar xf "$fn" --warning=no-timestamp
352
-
;;
353
-
*)
354
-
return 1
355
-
;;
356
-
esac;
357
-
fi
358
-
}
359
-
_doStrip ()
360
-
{
361
-
362
-
local -ra flags=(dontStripHost dontStripTarget);
363
-
local -ra debugDirs=(stripDebugList stripDebugListTarget);
364
-
local -ra allDirs=(stripAllList stripAllListTarget);
365
-
local -ra stripCmds=(STRIP STRIP_FOR_TARGET);
366
-
local -ra ranlibCmds=(RANLIB RANLIB_FOR_TARGET);
367
-
stripDebugList=${stripDebugList[*]:-lib lib32 lib64 libexec bin sbin};
368
-
stripDebugListTarget=${stripDebugListTarget[*]:-};
369
-
stripAllList=${stripAllList[*]:-};
370
-
stripAllListTarget=${stripAllListTarget[*]:-};
371
-
local i;
372
-
for i in ${!stripCmds[@]};
373
-
do
374
-
local -n flag="${flags[$i]}";
375
-
local -n debugDirList="${debugDirs[$i]}";
376
-
local -n allDirList="${allDirs[$i]}";
377
-
local -n stripCmd="${stripCmds[$i]}";
378
-
local -n ranlibCmd="${ranlibCmds[$i]}";
379
-
if [[ -n "${dontStrip-}" || -n "${flag-}" ]] || ! type -f "${stripCmd-}" 2> /dev/null 1>&2; then
380
-
continue;
381
-
fi;
382
-
stripDirs "$stripCmd" "$ranlibCmd" "$debugDirList" "${stripDebugFlags[*]:--S -p}";
383
-
stripDirs "$stripCmd" "$ranlibCmd" "$allDirList" "${stripAllFlags[*]:--s -p}";
384
-
done
385
-
}
386
-
_eval ()
387
-
{
388
-
389
-
if declare -F "$1" > /dev/null 2>&1; then
390
-
"$@";
391
-
else
392
-
eval "$1";
393
-
fi
394
-
}
395
-
_makeSymlinksRelative ()
396
-
{
397
-
398
-
local symlinkTarget;
399
-
if [ "${dontRewriteSymlinks-}" ] || [ ! -e "$prefix" ]; then
400
-
return;
401
-
fi;
402
-
while IFS= read -r -d '' f; do
403
-
symlinkTarget=$(readlink "$f");
404
-
if [[ "$symlinkTarget"/ != "$prefix"/* ]]; then
405
-
continue;
406
-
fi;
407
-
if [ ! -e "$symlinkTarget" ]; then
408
-
echo "the symlink $f is broken, it points to $symlinkTarget (which is missing)";
409
-
fi;
410
-
echo "rewriting symlink $f to be relative to $prefix";
411
-
ln -snrf "$symlinkTarget" "$f";
412
-
done < <(find $prefix -type l -print0)
413
-
}
414
-
_makeSymlinksRelativeInAllOutputs ()
415
-
{
416
-
417
-
local output;
418
-
for output in $(getAllOutputNames);
419
-
do
420
-
prefix="${!output}" _makeSymlinksRelative;
421
-
done
422
-
}
423
-
_moveLib64 ()
424
-
{
425
-
426
-
if [ "${dontMoveLib64-}" = 1 ]; then
427
-
return;
428
-
fi;
429
-
if [ ! -e "$prefix/lib64" -o -L "$prefix/lib64" ]; then
430
-
return;
431
-
fi;
432
-
echo "moving $prefix/lib64/* to $prefix/lib";
433
-
mkdir -p $prefix/lib;
434
-
shopt -s dotglob;
435
-
for i in $prefix/lib64/*;
436
-
do
437
-
mv --no-clobber "$i" $prefix/lib;
438
-
done;
439
-
shopt -u dotglob;
440
-
rmdir $prefix/lib64;
441
-
ln -s lib $prefix/lib64
442
-
}
443
-
_moveSbin ()
444
-
{
445
-
446
-
if [ "${dontMoveSbin-}" = 1 ]; then
447
-
return;
448
-
fi;
449
-
if [ ! -e "$prefix/sbin" -o -L "$prefix/sbin" ]; then
450
-
return;
451
-
fi;
452
-
echo "moving $prefix/sbin/* to $prefix/bin";
453
-
mkdir -p $prefix/bin;
454
-
shopt -s dotglob;
455
-
for i in $prefix/sbin/*;
456
-
do
457
-
mv "$i" $prefix/bin;
458
-
done;
459
-
shopt -u dotglob;
460
-
rmdir $prefix/sbin;
461
-
ln -s bin $prefix/sbin
462
-
}
463
-
_moveSystemdUserUnits ()
464
-
{
465
-
466
-
if [ "${dontMoveSystemdUserUnits:-0}" = 1 ]; then
467
-
return;
468
-
fi;
469
-
if [ ! -e "${prefix:?}/lib/systemd/user" ]; then
470
-
return;
471
-
fi;
472
-
local source="$prefix/lib/systemd/user";
473
-
local target="$prefix/share/systemd/user";
474
-
echo "moving $source/* to $target";
475
-
mkdir -p "$target";
476
-
( shopt -s dotglob;
477
-
for i in "$source"/*;
478
-
do
479
-
mv "$i" "$target";
480
-
done );
481
-
rmdir "$source";
482
-
ln -s "$target" "$source"
483
-
}
484
-
_moveToShare ()
485
-
{
486
-
487
-
if [ -n "$__structuredAttrs" ]; then
488
-
if [ -z "${forceShare-}" ]; then
489
-
forceShare=(man doc info);
490
-
fi;
491
-
else
492
-
forceShare=(${forceShare:-man doc info});
493
-
fi;
494
-
if [[ -z "$out" ]]; then
495
-
return;
496
-
fi;
497
-
for d in "${forceShare[@]}";
498
-
do
499
-
if [ -d "$out/$d" ]; then
500
-
if [ -d "$out/share/$d" ]; then
501
-
echo "both $d/ and share/$d/ exist!";
502
-
else
503
-
echo "moving $out/$d to $out/share/$d";
504
-
mkdir -p $out/share;
505
-
mv $out/$d $out/share/;
506
-
fi;
507
-
fi;
508
-
done
509
-
}
510
-
_multioutConfig ()
511
-
{
512
-
513
-
if [ "$(getAllOutputNames)" = "out" ] || [ -z "${setOutputFlags-1}" ]; then
514
-
return;
515
-
fi;
516
-
if [ -z "${shareDocName:-}" ]; then
517
-
local confScript="${configureScript:-}";
518
-
if [ -z "$confScript" ] && [ -x ./configure ]; then
519
-
confScript=./configure;
520
-
fi;
521
-
if [ -f "$confScript" ]; then
522
-
local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")";
523
-
fi;
524
-
if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then
525
-
shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')";
526
-
fi;
527
-
fi;
528
-
prependToVar configureFlags --bindir="${!outputBin}"/bin --sbindir="${!outputBin}"/sbin --includedir="${!outputInclude}"/include --oldincludedir="${!outputInclude}"/include --mandir="${!outputMan}"/share/man --infodir="${!outputInfo}"/share/info --docdir="${!outputDoc}"/share/doc/"${shareDocName}" --libdir="${!outputLib}"/lib --libexecdir="${!outputLib}"/libexec --localedir="${!outputLib}"/share/locale;
529
-
prependToVar installFlags pkgconfigdir="${!outputDev}"/lib/pkgconfig m4datadir="${!outputDev}"/share/aclocal aclocaldir="${!outputDev}"/share/aclocal
530
-
}
531
-
_multioutDevs ()
532
-
{
533
-
534
-
if [ "$(getAllOutputNames)" = "out" ] || [ -z "${moveToDev-1}" ]; then
535
-
return;
536
-
fi;
537
-
moveToOutput include "${!outputInclude}";
538
-
moveToOutput lib/pkgconfig "${!outputDev}";
539
-
moveToOutput share/pkgconfig "${!outputDev}";
540
-
moveToOutput lib/cmake "${!outputDev}";
541
-
moveToOutput share/aclocal "${!outputDev}";
542
-
for f in "${!outputDev}"/{lib,share}/pkgconfig/*.pc;
543
-
do
544
-
echo "Patching '$f' includedir to output ${!outputInclude}";
545
-
sed -i "/^includedir=/s,=\${prefix},=${!outputInclude}," "$f";
546
-
done
547
-
}
548
-
_multioutDocs ()
549
-
{
550
-
551
-
local REMOVE=REMOVE;
552
-
moveToOutput share/info "${!outputInfo}";
553
-
moveToOutput share/doc "${!outputDoc}";
554
-
moveToOutput share/gtk-doc "${!outputDevdoc}";
555
-
moveToOutput share/devhelp/books "${!outputDevdoc}";
556
-
moveToOutput share/man "${!outputMan}";
557
-
moveToOutput share/man/man3 "${!outputDevman}"
558
-
}
559
-
_multioutPropagateDev ()
560
-
{
561
-
562
-
if [ "$(getAllOutputNames)" = "out" ]; then
563
-
return;
564
-
fi;
565
-
local outputFirst;
566
-
for outputFirst in $(getAllOutputNames);
567
-
do
568
-
break;
569
-
done;
570
-
local propagaterOutput="$outputDev";
571
-
if [ -z "$propagaterOutput" ]; then
572
-
propagaterOutput="$outputFirst";
573
-
fi;
574
-
if [ -z "${propagatedBuildOutputs+1}" ]; then
575
-
local po_dirty="$outputBin $outputInclude $outputLib";
576
-
set +o pipefail;
577
-
propagatedBuildOutputs=`echo "$po_dirty" | tr -s ' ' '\n' | grep -v -F "$propagaterOutput" | sort -u | tr '\n' ' ' `;
578
-
set -o pipefail;
579
-
fi;
580
-
if [ -z "$propagatedBuildOutputs" ]; then
581
-
return;
582
-
fi;
583
-
mkdir -p "${!propagaterOutput}"/nix-support;
584
-
for output in $propagatedBuildOutputs;
585
-
do
586
-
echo -n " ${!output}" >> "${!propagaterOutput}"/nix-support/propagated-build-inputs;
587
-
done
588
-
}
589
-
_overrideFirst ()
590
-
{
591
-
592
-
if [ -z "${!1-}" ]; then
593
-
_assignFirst "$@";
594
-
fi
595
-
}
596
-
_pruneLibtoolFiles ()
597
-
{
598
-
599
-
if [ "${dontPruneLibtoolFiles-}" ] || [ ! -e "$prefix" ]; then
600
-
return;
601
-
fi;
602
-
find "$prefix" -type f -name '*.la' -exec grep -q '^# Generated by .*libtool' {} \; -exec grep -q "^old_library=''" {} \; -exec sed -i {} -e "/^dependency_libs='[^']/ c dependency_libs='' #pruned" \;
603
-
}
604
-
_updateSourceDateEpochFromSourceRoot ()
605
-
{
606
-
607
-
if [ -n "$sourceRoot" ]; then
608
-
updateSourceDateEpoch "$sourceRoot";
609
-
fi
610
-
}
611
-
activatePackage ()
612
-
{
613
-
614
-
local pkg="$1";
615
-
local -r hostOffset="$2";
616
-
local -r targetOffset="$3";
617
-
(( hostOffset <= targetOffset )) || exit 1;
618
-
if [ -f "$pkg" ]; then
619
-
source "$pkg";
620
-
fi;
621
-
if [[ -z "${strictDeps-}" || "$hostOffset" -le -1 ]]; then
622
-
addToSearchPath _PATH "$pkg/bin";
623
-
fi;
624
-
if (( hostOffset <= -1 )); then
625
-
addToSearchPath _XDG_DATA_DIRS "$pkg/share";
626
-
fi;
627
-
if [[ "$hostOffset" -eq 0 && -d "$pkg/bin" ]]; then
628
-
addToSearchPath _HOST_PATH "$pkg/bin";
629
-
fi;
630
-
if [[ -f "$pkg/nix-support/setup-hook" ]]; then
631
-
source "$pkg/nix-support/setup-hook";
632
-
fi
633
-
}
634
-
addEnvHooks ()
635
-
{
636
-
637
-
local depHostOffset="$1";
638
-
shift;
639
-
local pkgHookVarsSlice="${pkgHookVarVars[$depHostOffset + 1]}[@]";
640
-
local pkgHookVar;
641
-
for pkgHookVar in "${!pkgHookVarsSlice}";
642
-
do
643
-
eval "${pkgHookVar}s"'+=("$@")';
644
-
done
645
-
}
646
-
addToSearchPath ()
647
-
{
648
-
649
-
addToSearchPathWithCustomDelimiter ":" "$@"
650
-
}
651
-
addToSearchPathWithCustomDelimiter ()
652
-
{
653
-
654
-
local delimiter="$1";
655
-
local varName="$2";
656
-
local dir="$3";
657
-
if [[ -d "$dir" && "${!varName:+${delimiter}${!varName}${delimiter}}" != *"${delimiter}${dir}${delimiter}"* ]]; then
658
-
export "${varName}=${!varName:+${!varName}${delimiter}}${dir}";
659
-
fi
660
-
}
661
-
appendToVar ()
662
-
{
663
-
664
-
local -n nameref="$1";
665
-
local useArray type;
666
-
if [ -n "$__structuredAttrs" ]; then
667
-
useArray=true;
668
-
else
669
-
useArray=false;
670
-
fi;
671
-
if declare -p "$1" 2> /dev/null | grep -q '^'; then
672
-
type="$(declare -p "$1")";
673
-
if [[ "$type" =~ "declare -A" ]]; then
674
-
echo "appendToVar(): ERROR: trying to use appendToVar on an associative array, use variable+=([\"X\"]=\"Y\") instead." 1>&2;
675
-
return 1;
676
-
else
677
-
if [[ "$type" =~ "declare -a" ]]; then
678
-
useArray=true;
679
-
else
680
-
useArray=false;
681
-
fi;
682
-
fi;
683
-
fi;
684
-
shift;
685
-
if $useArray; then
686
-
nameref=(${nameref+"${nameref[@]}"} "$@");
687
-
else
688
-
nameref="${nameref-} $*";
689
-
fi
690
-
}
691
-
auditTmpdir ()
692
-
{
693
-
694
-
local dir="$1";
695
-
[ -e "$dir" ] || return 0;
696
-
echo "checking for references to $TMPDIR/ in $dir...";
697
-
local i;
698
-
find "$dir" -type f -print0 | while IFS= read -r -d '' i; do
699
-
if [[ "$i" =~ .build-id ]]; then
700
-
continue;
701
-
fi;
702
-
if isELF "$i"; then
703
-
if {
704
-
printf :;
705
-
patchelf --print-rpath "$i"
706
-
} | grep -q -F ":$TMPDIR/"; then
707
-
echo "RPATH of binary $i contains a forbidden reference to $TMPDIR/";
708
-
exit 1;
709
-
fi;
710
-
fi;
711
-
if isScript "$i"; then
712
-
if [ -e "$(dirname "$i")/.$(basename "$i")-wrapped" ]; then
713
-
if grep -q -F "$TMPDIR/" "$i"; then
714
-
echo "wrapper script $i contains a forbidden reference to $TMPDIR/";
715
-
exit 1;
716
-
fi;
717
-
fi;
718
-
fi;
719
-
done
720
-
}
721
-
bintoolsWrapper_addLDVars ()
722
-
{
723
-
724
-
local role_post;
725
-
getHostRoleEnvHook;
726
-
if [[ -d "$1/lib64" && ! -L "$1/lib64" ]]; then
727
-
export NIX_LDFLAGS${role_post}+=" -L$1/lib64";
728
-
fi;
729
-
if [[ -d "$1/lib" ]]; then
730
-
local -a glob=($1/lib/lib*);
731
-
if [ "${#glob[*]}" -gt 0 ]; then
732
-
export NIX_LDFLAGS${role_post}+=" -L$1/lib";
733
-
fi;
734
-
fi
735
-
}
736
-
buildPhase ()
737
-
{
738
-
739
-
runHook preBuild;
740
-
if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then
741
-
echo "no Makefile or custom buildPhase, doing nothing";
742
-
else
743
-
foundMakefile=1;
744
-
local flagsArray=(${enableParallelBuilding:+-j${NIX_BUILD_CORES}} SHELL=$SHELL);
745
-
_accumFlagsArray makeFlags makeFlagsArray buildFlags buildFlagsArray;
746
-
echoCmd 'build flags' "${flagsArray[@]}";
747
-
make ${makefile:+-f $makefile} "${flagsArray[@]}";
748
-
unset flagsArray;
749
-
fi;
750
-
runHook postBuild
751
-
}
752
-
ccWrapper_addCVars ()
753
-
{
754
-
755
-
local role_post;
756
-
getHostRoleEnvHook;
757
-
if [ -d "$1/include" ]; then
758
-
export NIX_CFLAGS_COMPILE${role_post}+=" -isystem $1/include";
759
-
fi;
760
-
if [ -d "$1/Library/Frameworks" ]; then
761
-
export NIX_CFLAGS_COMPILE${role_post}+=" -iframework $1/Library/Frameworks";
762
-
fi
763
-
}
764
-
checkPhase ()
765
-
{
766
-
767
-
runHook preCheck;
768
-
if [[ -z "${foundMakefile:-}" ]]; then
769
-
echo "no Makefile or custom checkPhase, doing nothing";
770
-
runHook postCheck;
771
-
return;
772
-
fi;
773
-
if [[ -z "${checkTarget:-}" ]]; then
774
-
if make -n ${makefile:+-f $makefile} check > /dev/null 2>&1; then
775
-
checkTarget=check;
776
-
else
777
-
if make -n ${makefile:+-f $makefile} test > /dev/null 2>&1; then
778
-
checkTarget=test;
779
-
fi;
780
-
fi;
781
-
fi;
782
-
if [[ -z "${checkTarget:-}" ]]; then
783
-
echo "no check/test target in ${makefile:-Makefile}, doing nothing";
784
-
else
785
-
local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL=$SHELL);
786
-
_accumFlagsArray makeFlags makeFlagsArray;
787
-
if [ -n "$__structuredAttrs" ]; then
788
-
flagsArray+=("${checkFlags[@]:-VERBOSE=y}");
789
-
else
790
-
flagsArray+=(${checkFlags:-VERBOSE=y});
791
-
fi;
792
-
_accumFlagsArray checkFlagsArray;
793
-
flagsArray+=(${checkTarget});
794
-
echoCmd 'check flags' "${flagsArray[@]}";
795
-
make ${makefile:+-f $makefile} "${flagsArray[@]}";
796
-
unset flagsArray;
797
-
fi;
798
-
runHook postCheck
799
-
}
800
-
compressManPages ()
801
-
{
802
-
803
-
local dir="$1";
804
-
if [ -L "$dir"/share ] || [ -L "$dir"/share/man ] || [ ! -d "$dir/share/man" ]; then
805
-
return;
806
-
fi;
807
-
echo "gzipping man pages under $dir/share/man/";
808
-
find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | while IFS= read -r -d '' f; do
809
-
if gzip -c -n "$f" > "$f".gz; then
810
-
rm "$f";
811
-
else
812
-
rm "$f".gz;
813
-
fi;
814
-
done;
815
-
find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 | sort -z | while IFS= read -r -d '' f; do
816
-
local target;
817
-
target="$(readlink -f "$f")";
818
-
if [ -f "$target".gz ]; then
819
-
ln -sf "$target".gz "$f".gz && rm "$f";
820
-
fi;
821
-
done
822
-
}
823
-
configurePhase ()
824
-
{
825
-
826
-
runHook preConfigure;
827
-
: "${configureScript=}";
828
-
if [[ -z "$configureScript" && -x ./configure ]]; then
829
-
configureScript=./configure;
830
-
fi;
831
-
if [ -z "${dontFixLibtool:-}" ]; then
832
-
export lt_cv_deplibs_check_method="${lt_cv_deplibs_check_method-pass_all}";
833
-
local i;
834
-
find . -iname "ltmain.sh" -print0 | while IFS='' read -r -d '' i; do
835
-
echo "fixing libtool script $i";
836
-
fixLibtool "$i";
837
-
done;
838
-
CONFIGURE_MTIME_REFERENCE=$(mktemp configure.mtime.reference.XXXXXX);
839
-
find . -executable -type f -name configure -exec grep -l 'GNU Libtool is free software; you can redistribute it and/or modify' {} \; -exec touch -r {} "$CONFIGURE_MTIME_REFERENCE" \; -exec sed -i s_/usr/bin/file_file_g {} \; -exec touch -r "$CONFIGURE_MTIME_REFERENCE" {} \;;
840
-
rm -f "$CONFIGURE_MTIME_REFERENCE";
841
-
fi;
842
-
if [[ -z "${dontAddPrefix:-}" && -n "$prefix" ]]; then
843
-
prependToVar configureFlags "${prefixKey:---prefix=}$prefix";
844
-
fi;
845
-
if [[ -f "$configureScript" ]]; then
846
-
if [ -z "${dontAddDisableDepTrack:-}" ]; then
847
-
if grep -q dependency-tracking "$configureScript"; then
848
-
prependToVar configureFlags --disable-dependency-tracking;
849
-
fi;
850
-
fi;
851
-
if [ -z "${dontDisableStatic:-}" ]; then
852
-
if grep -q enable-static "$configureScript"; then
853
-
prependToVar configureFlags --disable-static;
854
-
fi;
855
-
fi;
856
-
fi;
857
-
if [ -n "$configureScript" ]; then
858
-
local -a flagsArray;
859
-
_accumFlagsArray configureFlags configureFlagsArray;
860
-
echoCmd 'configure flags' "${flagsArray[@]}";
861
-
$configureScript "${flagsArray[@]}";
862
-
unset flagsArray;
863
-
else
864
-
echo "no configure script, doing nothing";
865
-
fi;
866
-
runHook postConfigure
867
-
}
868
-
consumeEntire ()
869
-
{
870
-
871
-
if IFS='' read -r -d '' "$1"; then
872
-
echo "consumeEntire(): ERROR: Input null bytes, won't process" 1>&2;
873
-
return 1;
874
-
fi
875
-
}
876
-
distPhase ()
877
-
{
878
-
879
-
runHook preDist;
880
-
local flagsArray=();
881
-
_accumFlagsArray distFlags distFlagsArray;
882
-
flagsArray+=(${distTarget:-dist});
883
-
echo 'dist flags: %q' "${flagsArray[@]}";
884
-
make ${makefile:+-f $makefile} "${flagsArray[@]}";
885
-
if [ "${dontCopyDist:-0}" != 1 ]; then
886
-
mkdir -p "$out/tarballs";
887
-
cp -pvd ${tarballs[*]:-*.tar.gz} "$out/tarballs";
888
-
fi;
889
-
runHook postDist
890
-
}
891
-
dumpVars ()
892
-
{
893
-
894
-
if [ "${noDumpEnvVars:-0}" != 1 ]; then
895
-
export 2> /dev/null >| "$NIX_BUILD_TOP/env-vars" || true;
896
-
fi
897
-
}
898
-
echoCmd ()
899
-
{
900
-
901
-
printf "%s:" "$1";
902
-
shift;
903
-
printf ' %q' "$@";
904
-
echo
905
-
}
906
-
exitHandler ()
907
-
{
908
-
909
-
exitCode="$?";
910
-
set +e;
911
-
if [ -n "${showBuildStats:-}" ]; then
912
-
read -r -d '' -a buildTimes < <(times);
913
-
echo "build times:";
914
-
echo "user time for the shell ${buildTimes[0]}";
915
-
echo "system time for the shell ${buildTimes[1]}";
916
-
echo "user time for all child processes ${buildTimes[2]}";
917
-
echo "system time for all child processes ${buildTimes[3]}";
918
-
fi;
919
-
if (( "$exitCode" != 0 )); then
920
-
runHook failureHook;
921
-
if [ -n "${succeedOnFailure:-}" ]; then
922
-
echo "build failed with exit code $exitCode (ignored)";
923
-
mkdir -p "$out/nix-support";
924
-
printf "%s" "$exitCode" > "$out/nix-support/failed";
925
-
exit 0;
926
-
fi;
927
-
else
928
-
runHook exitHook;
929
-
fi;
930
-
return "$exitCode"
931
-
}
932
-
findInputs ()
933
-
{
934
-
935
-
local -r pkg="$1";
936
-
local -r hostOffset="$2";
937
-
local -r targetOffset="$3";
938
-
(( hostOffset <= targetOffset )) || exit 1;
939
-
local varVar="${pkgAccumVarVars[hostOffset + 1]}";
940
-
local varRef="$varVar[$((targetOffset - hostOffset))]";
941
-
local var="${!varRef}";
942
-
unset -v varVar varRef;
943
-
local varSlice="$var[*]";
944
-
case "${!varSlice-}" in
945
-
*" $pkg "*)
946
-
return 0
947
-
;;
948
-
esac;
949
-
unset -v varSlice;
950
-
eval "$var"'+=("$pkg")';
951
-
if ! [ -e "$pkg" ]; then
952
-
echo "build input $pkg does not exist" 1>&2;
953
-
exit 1;
954
-
fi;
955
-
function mapOffset ()
956
-
{
957
-
local -r inputOffset="$1";
958
-
local -n outputOffset="$2";
959
-
if (( inputOffset <= 0 )); then
960
-
outputOffset=$((inputOffset + hostOffset));
961
-
else
962
-
outputOffset=$((inputOffset - 1 + targetOffset));
963
-
fi
964
-
};
965
-
local relHostOffset;
966
-
for relHostOffset in "${allPlatOffsets[@]}";
967
-
do
968
-
local files="${propagatedDepFilesVars[relHostOffset + 1]}";
969
-
local hostOffsetNext;
970
-
mapOffset "$relHostOffset" hostOffsetNext;
971
-
(( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue;
972
-
local relTargetOffset;
973
-
for relTargetOffset in "${allPlatOffsets[@]}";
974
-
do
975
-
(( "$relHostOffset" <= "$relTargetOffset" )) || continue;
976
-
local fileRef="${files}[$relTargetOffset - $relHostOffset]";
977
-
local file="${!fileRef}";
978
-
unset -v fileRef;
979
-
local targetOffsetNext;
980
-
mapOffset "$relTargetOffset" targetOffsetNext;
981
-
(( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue;
982
-
[[ -f "$pkg/nix-support/$file" ]] || continue;
983
-
local pkgNext;
984
-
read -r -d '' pkgNext < "$pkg/nix-support/$file" || true;
985
-
for pkgNext in $pkgNext;
986
-
do
987
-
findInputs "$pkgNext" "$hostOffsetNext" "$targetOffsetNext";
988
-
done;
989
-
done;
990
-
done
991
-
}
992
-
fixLibtool ()
993
-
{
994
-
995
-
local search_path;
996
-
for flag in $NIX_LDFLAGS;
997
-
do
998
-
case $flag in
999
-
-L*)
1000
-
search_path+=" ${flag#-L}"
1001
-
;;
1002
-
esac;
1003
-
done;
1004
-
sed -i "$1" -e "s^eval \(sys_lib_search_path=\).*^\1'${search_path:-}'^" -e 's^eval sys_lib_.+search_path=.*^^'
1005
-
}
1006
-
fixupPhase ()
1007
-
{
1008
-
1009
-
local output;
1010
-
for output in $(getAllOutputNames);
1011
-
do
1012
-
if [ -e "${!output}" ]; then
1013
-
chmod -R u+w "${!output}";
1014
-
fi;
1015
-
done;
1016
-
runHook preFixup;
1017
-
local output;
1018
-
for output in $(getAllOutputNames);
1019
-
do
1020
-
prefix="${!output}" runHook fixupOutput;
1021
-
done;
1022
-
recordPropagatedDependencies;
1023
-
if [ -n "${setupHook:-}" ]; then
1024
-
mkdir -p "${!outputDev}/nix-support";
1025
-
substituteAll "$setupHook" "${!outputDev}/nix-support/setup-hook";
1026
-
fi;
1027
-
if [ -n "${setupHooks:-}" ]; then
1028
-
mkdir -p "${!outputDev}/nix-support";
1029
-
local hook;
1030
-
for hook in ${setupHooks[@]};
1031
-
do
1032
-
local content;
1033
-
consumeEntire content < "$hook";
1034
-
substituteAllStream content "file '$hook'" >> "${!outputDev}/nix-support/setup-hook";
1035
-
unset -v content;
1036
-
done;
1037
-
unset -v hook;
1038
-
fi;
1039
-
if [ -n "${propagatedUserEnvPkgs:-}" ]; then
1040
-
mkdir -p "${!outputBin}/nix-support";
1041
-
printWords $propagatedUserEnvPkgs > "${!outputBin}/nix-support/propagated-user-env-packages";
1042
-
fi;
1043
-
runHook postFixup
1044
-
}
1045
-
genericBuild ()
1046
-
{
1047
-
1048
-
export GZIP_NO_TIMESTAMPS=1;
1049
-
if [ -f "${buildCommandPath:-}" ]; then
1050
-
source "$buildCommandPath";
1051
-
return;
1052
-
fi;
1053
-
if [ -n "${buildCommand:-}" ]; then
1054
-
eval "$buildCommand";
1055
-
return;
1056
-
fi;
1057
-
if [ -z "${phases[*]:-}" ]; then
1058
-
phases="${prePhases[*]:-} unpackPhase patchPhase ${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase ${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase ${preDistPhases[*]:-} distPhase ${postPhases[*]:-}";
1059
-
fi;
1060
-
for curPhase in ${phases[*]};
1061
-
do
1062
-
runPhase "$curPhase";
1063
-
done
1064
-
}
1065
-
getAllOutputNames ()
1066
-
{
1067
-
1068
-
if [ -n "$__structuredAttrs" ]; then
1069
-
echo "${!outputs[*]}";
1070
-
else
1071
-
echo "$outputs";
1072
-
fi
1073
-
}
1074
-
getHostRole ()
1075
-
{
1076
-
1077
-
getRole "$hostOffset"
1078
-
}
1079
-
getHostRoleEnvHook ()
1080
-
{
1081
-
1082
-
getRole "$depHostOffset"
1083
-
}
1084
-
getRole ()
1085
-
{
1086
-
1087
-
case $1 in
1088
-
-1)
1089
-
role_post='_FOR_BUILD'
1090
-
;;
1091
-
0)
1092
-
role_post=''
1093
-
;;
1094
-
1)
1095
-
role_post='_FOR_TARGET'
1096
-
;;
1097
-
*)
1098
-
echo "binutils-wrapper-2.40: used as improper sort of dependency" 1>&2;
1099
-
return 1
1100
-
;;
1101
-
esac
1102
-
}
1103
-
getTargetRole ()
1104
-
{
1105
-
1106
-
getRole "$targetOffset"
1107
-
}
1108
-
getTargetRoleEnvHook ()
1109
-
{
1110
-
1111
-
getRole "$depTargetOffset"
1112
-
}
1113
-
getTargetRoleWrapper ()
1114
-
{
1115
-
1116
-
case $targetOffset in
1117
-
-1)
1118
-
export NIX_BINTOOLS_WRAPPER_TARGET_BUILD_x86_64_unknown_linux_gnu=1
1119
-
;;
1120
-
0)
1121
-
export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1
1122
-
;;
1123
-
1)
1124
-
export NIX_BINTOOLS_WRAPPER_TARGET_TARGET_x86_64_unknown_linux_gnu=1
1125
-
;;
1126
-
*)
1127
-
echo "binutils-wrapper-2.40: used as improper sort of dependency" 1>&2;
1128
-
return 1
1129
-
;;
1130
-
esac
1131
-
}
1132
-
installCheckPhase ()
1133
-
{
1134
-
1135
-
runHook preInstallCheck;
1136
-
if [[ -z "${foundMakefile:-}" ]]; then
1137
-
echo "no Makefile or custom installCheckPhase, doing nothing";
1138
-
else
1139
-
if [[ -z "${installCheckTarget:-}" ]] && ! make -n ${makefile:+-f $makefile} "${installCheckTarget:-installcheck}" > /dev/null 2>&1; then
1140
-
echo "no installcheck target in ${makefile:-Makefile}, doing nothing";
1141
-
else
1142
-
local flagsArray=(${enableParallelChecking:+-j${NIX_BUILD_CORES}} SHELL=$SHELL);
1143
-
_accumFlagsArray makeFlags makeFlagsArray installCheckFlags installCheckFlagsArray;
1144
-
flagsArray+=(${installCheckTarget:-installcheck});
1145
-
echoCmd 'installcheck flags' "${flagsArray[@]}";
1146
-
make ${makefile:+-f $makefile} "${flagsArray[@]}";
1147
-
unset flagsArray;
1148
-
fi;
1149
-
fi;
1150
-
runHook postInstallCheck
1151
-
}
1152
-
installPhase ()
1153
-
{
1154
-
1155
-
runHook preInstall;
1156
-
if [[ -z "${makeFlags-}" && -z "${makefile:-}" && ! ( -e Makefile || -e makefile || -e GNUmakefile ) ]]; then
1157
-
echo "no Makefile or custom installPhase, doing nothing";
1158
-
runHook postInstall;
1159
-
return;
1160
-
else
1161
-
foundMakefile=1;
1162
-
fi;
1163
-
if [ -n "$prefix" ]; then
1164
-
mkdir -p "$prefix";
1165
-
fi;
1166
-
local flagsArray=(${enableParallelInstalling:+-j${NIX_BUILD_CORES}} SHELL=$SHELL);
1167
-
_accumFlagsArray makeFlags makeFlagsArray installFlags installFlagsArray;
1168
-
if [ -n "$__structuredAttrs" ]; then
1169
-
flagsArray+=("${installTargets[@]:-install}");
1170
-
else
1171
-
flagsArray+=(${installTargets:-install});
1172
-
fi;
1173
-
echoCmd 'install flags' "${flagsArray[@]}";
1174
-
make ${makefile:+-f $makefile} "${flagsArray[@]}";
1175
-
unset flagsArray;
1176
-
runHook postInstall
1177
-
}
1178
-
isELF ()
1179
-
{
1180
-
1181
-
local fn="$1";
1182
-
local fd;
1183
-
local magic;
1184
-
exec {fd}< "$fn";
1185
-
read -r -n 4 -u "$fd" magic;
1186
-
exec {fd}>&-;
1187
-
if [ "$magic" = 'ELF' ]; then
1188
-
return 0;
1189
-
else
1190
-
return 1;
1191
-
fi
1192
-
}
1193
-
isMachO ()
1194
-
{
1195
-
1196
-
local fn="$1";
1197
-
local fd;
1198
-
local magic;
1199
-
exec {fd}< "$fn";
1200
-
read -r -n 4 -u "$fd" magic;
1201
-
exec {fd}>&-;
1202
-
if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then
1203
-
return 0;
1204
-
else
1205
-
if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then
1206
-
return 0;
1207
-
else
1208
-
if [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then
1209
-
return 0;
1210
-
else
1211
-
return 1;
1212
-
fi;
1213
-
fi;
1214
-
fi
1215
-
}
1216
-
isScript ()
1217
-
{
1218
-
1219
-
local fn="$1";
1220
-
local fd;
1221
-
local magic;
1222
-
exec {fd}< "$fn";
1223
-
read -r -n 2 -u "$fd" magic;
1224
-
exec {fd}>&-;
1225
-
if [[ "$magic" =~ \#! ]]; then
1226
-
return 0;
1227
-
else
1228
-
return 1;
1229
-
fi
1230
-
}
1231
-
mapOffset ()
1232
-
{
1233
-
1234
-
local -r inputOffset="$1";
1235
-
local -n outputOffset="$2";
1236
-
if (( inputOffset <= 0 )); then
1237
-
outputOffset=$((inputOffset + hostOffset));
1238
-
else
1239
-
outputOffset=$((inputOffset - 1 + targetOffset));
1240
-
fi
1241
-
}
1242
-
moveToOutput ()
1243
-
{
1244
-
1245
-
local patt="$1";
1246
-
local dstOut="$2";
1247
-
local output;
1248
-
for output in $(getAllOutputNames);
1249
-
do
1250
-
if [ "${!output}" = "$dstOut" ]; then
1251
-
continue;
1252
-
fi;
1253
-
local srcPath;
1254
-
for srcPath in "${!output}"/$patt;
1255
-
do
1256
-
if [ ! -e "$srcPath" ] && [ ! -L "$srcPath" ]; then
1257
-
continue;
1258
-
fi;
1259
-
if [ "$dstOut" = REMOVE ]; then
1260
-
echo "Removing $srcPath";
1261
-
rm -r "$srcPath";
1262
-
else
1263
-
local dstPath="$dstOut${srcPath#${!output}}";
1264
-
echo "Moving $srcPath to $dstPath";
1265
-
if [ -d "$dstPath" ] && [ -d "$srcPath" ]; then
1266
-
rmdir "$srcPath" --ignore-fail-on-non-empty;
1267
-
if [ -d "$srcPath" ]; then
1268
-
mv -t "$dstPath" "$srcPath"/*;
1269
-
rmdir "$srcPath";
1270
-
fi;
1271
-
else
1272
-
mkdir -p "$(readlink -m "$dstPath/..")";
1273
-
mv "$srcPath" "$dstPath";
1274
-
fi;
1275
-
fi;
1276
-
local srcParent="$(readlink -m "$srcPath/..")";
1277
-
if [ -n "$(find "$srcParent" -maxdepth 0 -type d -empty 2> /dev/null)" ]; then
1278
-
echo "Removing empty $srcParent/ and (possibly) its parents";
1279
-
rmdir -p --ignore-fail-on-non-empty "$srcParent" 2> /dev/null || true;
1280
-
fi;
1281
-
done;
1282
-
done
1283
-
}
1284
-
patchELF ()
1285
-
{
1286
-
1287
-
local dir="$1";
1288
-
[ -e "$dir" ] || return 0;
1289
-
echo "shrinking RPATHs of ELF executables and libraries in $dir";
1290
-
local i;
1291
-
while IFS= read -r -d '' i; do
1292
-
if [[ "$i" =~ .build-id ]]; then
1293
-
continue;
1294
-
fi;
1295
-
if ! isELF "$i"; then
1296
-
continue;
1297
-
fi;
1298
-
echo "shrinking $i";
1299
-
patchelf --shrink-rpath "$i" || true;
1300
-
done < <(find "$dir" -type f -print0)
1301
-
}
1302
-
patchPhase ()
1303
-
{
1304
-
1305
-
runHook prePatch;
1306
-
local -a patchesArray;
1307
-
if [ -n "$__structuredAttrs" ]; then
1308
-
patchesArray=(${patches:+"${patches[@]}"});
1309
-
else
1310
-
patchesArray=(${patches:-});
1311
-
fi;
1312
-
for i in "${patchesArray[@]}";
1313
-
do
1314
-
echo "applying patch $i";
1315
-
local uncompress=cat;
1316
-
case "$i" in
1317
-
*.gz)
1318
-
uncompress="gzip -d"
1319
-
;;
1320
-
*.bz2)
1321
-
uncompress="bzip2 -d"
1322
-
;;
1323
-
*.xz)
1324
-
uncompress="xz -d"
1325
-
;;
1326
-
*.lzma)
1327
-
uncompress="lzma -d"
1328
-
;;
1329
-
esac;
1330
-
local -a flagsArray;
1331
-
if [ -n "$__structuredAttrs" ]; then
1332
-
flagsArray=("${patchFlags[@]:--p1}");
1333
-
else
1334
-
flagsArray=(${patchFlags:--p1});
1335
-
fi;
1336
-
$uncompress < "$i" 2>&1 | patch "${flagsArray[@]}";
1337
-
done;
1338
-
runHook postPatch
1339
-
}
1340
-
patchShebangs ()
1341
-
{
1342
-
1343
-
local pathName;
1344
-
local update;
1345
-
while [[ $# -gt 0 ]]; do
1346
-
case "$1" in
1347
-
--host)
1348
-
pathName=HOST_PATH;
1349
-
shift
1350
-
;;
1351
-
--build)
1352
-
pathName=PATH;
1353
-
shift
1354
-
;;
1355
-
--update)
1356
-
update=true;
1357
-
shift
1358
-
;;
1359
-
--)
1360
-
shift;
1361
-
break
1362
-
;;
1363
-
-* | --*)
1364
-
echo "Unknown option $1 supplied to patchShebangs" 1>&2;
1365
-
return 1
1366
-
;;
1367
-
*)
1368
-
break
1369
-
;;
1370
-
esac;
1371
-
done;
1372
-
echo "patching script interpreter paths in $@";
1373
-
local f;
1374
-
local oldPath;
1375
-
local newPath;
1376
-
local arg0;
1377
-
local args;
1378
-
local oldInterpreterLine;
1379
-
local newInterpreterLine;
1380
-
if [[ $# -eq 0 ]]; then
1381
-
echo "No arguments supplied to patchShebangs" 1>&2;
1382
-
return 0;
1383
-
fi;
1384
-
local f;
1385
-
while IFS= read -r -d '' f; do
1386
-
isScript "$f" || continue;
1387
-
read -r oldInterpreterLine < "$f";
1388
-
read -r oldPath arg0 args <<< "${oldInterpreterLine:2}";
1389
-
if [[ -z "${pathName:-}" ]]; then
1390
-
if [[ -n $strictDeps && $f == "$NIX_STORE"* ]]; then
1391
-
pathName=HOST_PATH;
1392
-
else
1393
-
pathName=PATH;
1394
-
fi;
1395
-
fi;
1396
-
if [[ "$oldPath" == *"/bin/env" ]]; then
1397
-
if [[ $arg0 == "-S" ]]; then
1398
-
arg0=${args%% *};
1399
-
args=${args#* };
1400
-
newPath="$(PATH="${!pathName}" command -v "env" || true)";
1401
-
args="-S $(PATH="${!pathName}" command -v "$arg0" || true) $args";
1402
-
else
1403
-
if [[ $arg0 == "-"* || $arg0 == *"="* ]]; then
1404
-
echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)" 1>&2;
1405
-
exit 1;
1406
-
else
1407
-
newPath="$(PATH="${!pathName}" command -v "$arg0" || true)";
1408
-
fi;
1409
-
fi;
1410
-
else
1411
-
if [[ -z $oldPath ]]; then
1412
-
oldPath="/bin/sh";
1413
-
fi;
1414
-
newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)";
1415
-
args="$arg0 $args";
1416
-
fi;
1417
-
newInterpreterLine="$newPath $args";
1418
-
newInterpreterLine=${newInterpreterLine%${newInterpreterLine##*[![:space:]]}};
1419
-
if [[ -n "$oldPath" && ( "$update" == true || "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE" ) ]]; then
1420
-
if [[ -n "$newPath" && "$newPath" != "$oldPath" ]]; then
1421
-
echo "$f: interpreter directive changed from \"$oldInterpreterLine\" to \"$newInterpreterLine\"";
1422
-
escapedInterpreterLine=${newInterpreterLine//\\/\\\\};
1423
-
timestamp=$(stat --printf "%y" "$f");
1424
-
sed -i -e "1 s|.*|#\!$escapedInterpreterLine|" "$f";
1425
-
touch --date "$timestamp" "$f";
1426
-
fi;
1427
-
fi;
1428
-
done < <(find "$@" -type f -perm -0100 -print0)
1429
-
}
1430
-
patchShebangsAuto ()
1431
-
{
1432
-
1433
-
if [[ -z "${dontPatchShebangs-}" && -e "$prefix" ]]; then
1434
-
if [[ "$output" != out && "$output" = "$outputDev" ]]; then
1435
-
patchShebangs --build "$prefix";
1436
-
else
1437
-
patchShebangs --host "$prefix";
1438
-
fi;
1439
-
fi
1440
-
}
1441
-
prependToVar ()
1442
-
{
1443
-
1444
-
local -n nameref="$1";
1445
-
local useArray type;
1446
-
if [ -n "$__structuredAttrs" ]; then
1447
-
useArray=true;
1448
-
else
1449
-
useArray=false;
1450
-
fi;
1451
-
if declare -p "$1" 2> /dev/null | grep -q '^'; then
1452
-
type="$(declare -p "$1")";
1453
-
if [[ "$type" =~ "declare -A" ]]; then
1454
-
echo "prependToVar(): ERROR: trying to use prependToVar on an associative array." 1>&2;
1455
-
return 1;
1456
-
else
1457
-
if [[ "$type" =~ "declare -a" ]]; then
1458
-
useArray=true;
1459
-
else
1460
-
useArray=false;
1461
-
fi;
1462
-
fi;
1463
-
fi;
1464
-
shift;
1465
-
if $useArray; then
1466
-
nameref=("$@" ${nameref+"${nameref[@]}"});
1467
-
else
1468
-
nameref="$* ${nameref-}";
1469
-
fi
1470
-
}
1471
-
printLines ()
1472
-
{
1473
-
1474
-
(( "$#" > 0 )) || return 0;
1475
-
printf '%s\n' "$@"
1476
-
}
1477
-
printWords ()
1478
-
{
1479
-
1480
-
(( "$#" > 0 )) || return 0;
1481
-
printf '%s ' "$@"
1482
-
}
1483
-
recordPropagatedDependencies ()
1484
-
{
1485
-
1486
-
declare -ra flatVars=(depsBuildBuildPropagated propagatedNativeBuildInputs depsBuildTargetPropagated depsHostHostPropagated propagatedBuildInputs depsTargetTargetPropagated);
1487
-
declare -ra flatFiles=("${propagatedBuildDepFiles[@]}" "${propagatedHostDepFiles[@]}" "${propagatedTargetDepFiles[@]}");
1488
-
local propagatedInputsIndex;
1489
-
for propagatedInputsIndex in "${!flatVars[@]}";
1490
-
do
1491
-
local propagatedInputsSlice="${flatVars[$propagatedInputsIndex]}[@]";
1492
-
local propagatedInputsFile="${flatFiles[$propagatedInputsIndex]}";
1493
-
[[ -n "${!propagatedInputsSlice}" ]] || continue;
1494
-
mkdir -p "${!outputDev}/nix-support";
1495
-
printWords ${!propagatedInputsSlice} > "${!outputDev}/nix-support/$propagatedInputsFile";
1496
-
done
1497
-
}
1498
-
runHook ()
1499
-
{
1500
-
1501
-
local hookName="$1";
1502
-
shift;
1503
-
local hooksSlice="${hookName%Hook}Hooks[@]";
1504
-
local hook;
1505
-
for hook in "_callImplicitHook 0 $hookName" ${!hooksSlice+"${!hooksSlice}"};
1506
-
do
1507
-
_eval "$hook" "$@";
1508
-
done;
1509
-
return 0
1510
-
}
1511
-
runOneHook ()
1512
-
{
1513
-
1514
-
local hookName="$1";
1515
-
shift;
1516
-
local hooksSlice="${hookName%Hook}Hooks[@]";
1517
-
local hook ret=1;
1518
-
for hook in "_callImplicitHook 1 $hookName" ${!hooksSlice+"${!hooksSlice}"};
1519
-
do
1520
-
if _eval "$hook" "$@"; then
1521
-
ret=0;
1522
-
break;
1523
-
fi;
1524
-
done;
1525
-
return "$ret"
1526
-
}
1527
-
runPhase ()
1528
-
{
1529
-
1530
-
local curPhase="$*";
1531
-
if [[ "$curPhase" = unpackPhase && -n "${dontUnpack:-}" ]]; then
1532
-
return;
1533
-
fi;
1534
-
if [[ "$curPhase" = patchPhase && -n "${dontPatch:-}" ]]; then
1535
-
return;
1536
-
fi;
1537
-
if [[ "$curPhase" = configurePhase && -n "${dontConfigure:-}" ]]; then
1538
-
return;
1539
-
fi;
1540
-
if [[ "$curPhase" = buildPhase && -n "${dontBuild:-}" ]]; then
1541
-
return;
1542
-
fi;
1543
-
if [[ "$curPhase" = checkPhase && -z "${doCheck:-}" ]]; then
1544
-
return;
1545
-
fi;
1546
-
if [[ "$curPhase" = installPhase && -n "${dontInstall:-}" ]]; then
1547
-
return;
1548
-
fi;
1549
-
if [[ "$curPhase" = fixupPhase && -n "${dontFixup:-}" ]]; then
1550
-
return;
1551
-
fi;
1552
-
if [[ "$curPhase" = installCheckPhase && -z "${doInstallCheck:-}" ]]; then
1553
-
return;
1554
-
fi;
1555
-
if [[ "$curPhase" = distPhase && -z "${doDist:-}" ]]; then
1556
-
return;
1557
-
fi;
1558
-
if [[ -n $NIX_LOG_FD ]]; then
1559
-
echo "@nix { \"action\": \"setPhase\", \"phase\": \"$curPhase\" }" >&"$NIX_LOG_FD";
1560
-
fi;
1561
-
showPhaseHeader "$curPhase";
1562
-
dumpVars;
1563
-
local startTime=$(date +"%s");
1564
-
eval "${!curPhase:-$curPhase}";
1565
-
local endTime=$(date +"%s");
1566
-
showPhaseFooter "$curPhase" "$startTime" "$endTime";
1567
-
if [ "$curPhase" = unpackPhase ]; then
1568
-
[ -n "${sourceRoot:-}" ] && chmod +x "${sourceRoot}";
1569
-
cd "${sourceRoot:-.}";
1570
-
fi
1571
-
}
1572
-
showPhaseFooter ()
1573
-
{
1574
-
1575
-
local phase="$1";
1576
-
local startTime="$2";
1577
-
local endTime="$3";
1578
-
local delta=$(( endTime - startTime ));
1579
-
(( delta < 30 )) && return;
1580
-
local H=$((delta/3600));
1581
-
local M=$((delta%3600/60));
1582
-
local S=$((delta%60));
1583
-
echo -n "$phase completed in ";
1584
-
(( H > 0 )) && echo -n "$H hours ";
1585
-
(( M > 0 )) && echo -n "$M minutes ";
1586
-
echo "$S seconds"
1587
-
}
1588
-
showPhaseHeader ()
1589
-
{
1590
-
1591
-
local phase="$1";
1592
-
echo "Running phase: $phase"
1593
-
}
1594
-
stripDirs ()
1595
-
{
1596
-
1597
-
local cmd="$1";
1598
-
local ranlibCmd="$2";
1599
-
local paths="$3";
1600
-
local stripFlags="$4";
1601
-
local excludeFlags=();
1602
-
local pathsNew=;
1603
-
[ -z "$cmd" ] && echo "stripDirs: Strip command is empty" 1>&2 && exit 1;
1604
-
[ -z "$ranlibCmd" ] && echo "stripDirs: Ranlib command is empty" 1>&2 && exit 1;
1605
-
local pattern;
1606
-
if [ -n "${stripExclude:-}" ]; then
1607
-
for pattern in "${stripExclude[@]}";
1608
-
do
1609
-
excludeFlags+=(-a '!' '(' -name "$pattern" -o -wholename "$prefix/$pattern" ')');
1610
-
done;
1611
-
fi;
1612
-
local p;
1613
-
for p in ${paths};
1614
-
do
1615
-
if [ -e "$prefix/$p" ]; then
1616
-
pathsNew="${pathsNew} $prefix/$p";
1617
-
fi;
1618
-
done;
1619
-
paths=${pathsNew};
1620
-
if [ -n "${paths}" ]; then
1621
-
echo "stripping (with command $cmd and flags $stripFlags) in $paths";
1622
-
local striperr;
1623
-
striperr="$(mktemp --tmpdir="$TMPDIR" 'striperr.XXXXXX')";
1624
-
find $paths -type f "${excludeFlags[@]}" -a '!' -path "$prefix/lib/debug/*" -print0 | xargs -r -0 -n1 -- realpath -z | sort -u -z | xargs -r -0 -n1 -P "$NIX_BUILD_CORES" -- $cmd $stripFlags 2> "$striperr" || exit_code=$?;
1625
-
[[ "$exit_code" = 123 || -z "$exit_code" ]] || ( cat "$striperr" 1>&2 && exit 1 );
1626
-
rm "$striperr";
1627
-
find $paths -name '*.a' -type f -exec $ranlibCmd '{}' \; 2> /dev/null;
1628
-
fi
1629
-
}
1630
-
stripHash ()
1631
-
{
1632
-
1633
-
local strippedName casematchOpt=0;
1634
-
strippedName="$(basename -- "$1")";
1635
-
shopt -q nocasematch && casematchOpt=1;
1636
-
shopt -u nocasematch;
1637
-
if [[ "$strippedName" =~ ^[a-z0-9]{32}- ]]; then
1638
-
echo "${strippedName:33}";
1639
-
else
1640
-
echo "$strippedName";
1641
-
fi;
1642
-
if (( casematchOpt )); then
1643
-
shopt -s nocasematch;
1644
-
fi
1645
-
}
1646
-
substitute ()
1647
-
{
1648
-
1649
-
local input="$1";
1650
-
local output="$2";
1651
-
shift 2;
1652
-
if [ ! -f "$input" ]; then
1653
-
echo "substitute(): ERROR: file '$input' does not exist" 1>&2;
1654
-
return 1;
1655
-
fi;
1656
-
local content;
1657
-
consumeEntire content < "$input";
1658
-
if [ -e "$output" ]; then
1659
-
chmod +w "$output";
1660
-
fi;
1661
-
substituteStream content "file '$input'" "$@" > "$output"
1662
-
}
1663
-
substituteAll ()
1664
-
{
1665
-
1666
-
local input="$1";
1667
-
local output="$2";
1668
-
local -a args=();
1669
-
_allFlags;
1670
-
substitute "$input" "$output" "${args[@]}"
1671
-
}
1672
-
substituteAllInPlace ()
1673
-
{
1674
-
1675
-
local fileName="$1";
1676
-
shift;
1677
-
substituteAll "$fileName" "$fileName" "$@"
1678
-
}
1679
-
substituteAllStream ()
1680
-
{
1681
-
1682
-
local -a args=();
1683
-
_allFlags;
1684
-
substituteStream "$1" "$2" "${args[@]}"
1685
-
}
1686
-
substituteInPlace ()
1687
-
{
1688
-
1689
-
local -a fileNames=();
1690
-
for arg in "$@";
1691
-
do
1692
-
if [[ "$arg" = "--"* ]]; then
1693
-
break;
1694
-
fi;
1695
-
fileNames+=("$arg");
1696
-
shift;
1697
-
done;
1698
-
for file in "${fileNames[@]}";
1699
-
do
1700
-
substitute "$file" "$file" "$@";
1701
-
done
1702
-
}
1703
-
substituteStream ()
1704
-
{
1705
-
1706
-
local var=$1;
1707
-
local description=$2;
1708
-
shift 2;
1709
-
while (( "$#" )); do
1710
-
case "$1" in
1711
-
--replace)
1712
-
pattern="$2";
1713
-
replacement="$3";
1714
-
shift 3;
1715
-
local savedvar;
1716
-
savedvar="${!var}";
1717
-
eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}';
1718
-
if [ "$pattern" != "$replacement" ]; then
1719
-
if [ "${!var}" == "$savedvar" ]; then
1720
-
echo "substituteStream(): WARNING: pattern '$pattern' doesn't match anything in $description" 1>&2;
1721
-
fi;
1722
-
fi
1723
-
;;
1724
-
--subst-var)
1725
-
local varName="$2";
1726
-
shift 2;
1727
-
if ! [[ "$varName" =~ ^[a-zA-Z_][a-zA-Z0-9_]*$ ]]; then
1728
-
echo "substituteStream(): ERROR: substitution variables must be valid Bash names, \"$varName\" isn't." 1>&2;
1729
-
return 1;
1730
-
fi;
1731
-
if [ -z ${!varName+x} ]; then
1732
-
echo "substituteStream(): ERROR: variable \$$varName is unset" 1>&2;
1733
-
return 1;
1734
-
fi;
1735
-
pattern="@$varName@";
1736
-
replacement="${!varName}";
1737
-
eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}'
1738
-
;;
1739
-
--subst-var-by)
1740
-
pattern="@$2@";
1741
-
replacement="$3";
1742
-
eval "$var"'=${'"$var"'//"$pattern"/"$replacement"}';
1743
-
shift 3
1744
-
;;
1745
-
*)
1746
-
echo "substituteStream(): ERROR: Invalid command line argument: $1" 1>&2;
1747
-
return 1
1748
-
;;
1749
-
esac;
1750
-
done;
1751
-
printf "%s" "${!var}"
1752
-
}
1753
-
unpackFile ()
1754
-
{
1755
-
1756
-
curSrc="$1";
1757
-
echo "unpacking source archive $curSrc";
1758
-
if ! runOneHook unpackCmd "$curSrc"; then
1759
-
echo "do not know how to unpack source archive $curSrc";
1760
-
exit 1;
1761
-
fi
1762
-
}
1763
-
unpackPhase ()
1764
-
{
1765
-
1766
-
runHook preUnpack;
1767
-
if [ -z "${srcs:-}" ]; then
1768
-
if [ -z "${src:-}" ]; then
1769
-
echo 'variable $src or $srcs should point to the source';
1770
-
exit 1;
1771
-
fi;
1772
-
srcs="$src";
1773
-
fi;
1774
-
local -a srcsArray;
1775
-
if [ -n "$__structuredAttrs" ]; then
1776
-
srcsArray=("${srcs[@]}");
1777
-
else
1778
-
srcsArray=($srcs);
1779
-
fi;
1780
-
local dirsBefore="";
1781
-
for i in *;
1782
-
do
1783
-
if [ -d "$i" ]; then
1784
-
dirsBefore="$dirsBefore $i ";
1785
-
fi;
1786
-
done;
1787
-
for i in "${srcsArray[@]}";
1788
-
do
1789
-
unpackFile "$i";
1790
-
done;
1791
-
: "${sourceRoot=}";
1792
-
if [ -n "${setSourceRoot:-}" ]; then
1793
-
runOneHook setSourceRoot;
1794
-
else
1795
-
if [ -z "$sourceRoot" ]; then
1796
-
for i in *;
1797
-
do
1798
-
if [ -d "$i" ]; then
1799
-
case $dirsBefore in
1800
-
*\ $i\ *)
1801
-
1802
-
;;
1803
-
*)
1804
-
if [ -n "$sourceRoot" ]; then
1805
-
echo "unpacker produced multiple directories";
1806
-
exit 1;
1807
-
fi;
1808
-
sourceRoot="$i"
1809
-
;;
1810
-
esac;
1811
-
fi;
1812
-
done;
1813
-
fi;
1814
-
fi;
1815
-
if [ -z "$sourceRoot" ]; then
1816
-
echo "unpacker appears to have produced no directories";
1817
-
exit 1;
1818
-
fi;
1819
-
echo "source root is $sourceRoot";
1820
-
if [ "${dontMakeSourcesWritable:-0}" != 1 ]; then
1821
-
chmod -R u+w -- "$sourceRoot";
1822
-
fi;
1823
-
runHook postUnpack
1824
-
}
1825
-
updateAutotoolsGnuConfigScriptsPhase ()
1826
-
{
1827
-
1828
-
if [ -n "${dontUpdateAutotoolsGnuConfigScripts-}" ]; then
1829
-
return;
1830
-
fi;
1831
-
for script in config.sub config.guess;
1832
-
do
1833
-
for f in $(find . -type f -name "$script");
1834
-
do
1835
-
echo "Updating Autotools / GNU config script to a newer upstream version: $f";
1836
-
cp -f "/nix/store/7lk76vdawbx478qq9lvi3mgf73rvcyhd-gnu-config-2023-09-19/$script" "$f";
1837
-
done;
1838
-
done
1839
-
}
1840
-
updateSourceDateEpoch ()
1841
-
{
1842
-
1843
-
local path="$1";
1844
-
local -a res=($(find "$path" -type f -not -newer "$NIX_BUILD_TOP/.." -printf '%T@ %p\0' | sort -n --zero-terminated | tail -n1 --zero-terminated | head -c -1));
1845
-
local time="${res[0]//\.[0-9]*/}";
1846
-
local newestFile="${res[1]}";
1847
-
if [ "${time:-0}" -gt "$SOURCE_DATE_EPOCH" ]; then
1848
-
echo "setting SOURCE_DATE_EPOCH to timestamp $time of file $newestFile";
1849
-
export SOURCE_DATE_EPOCH="$time";
1850
-
local now="$(date +%s)";
1851
-
if [ "$time" -gt $((now - 60)) ]; then
1852
-
echo "warning: file $newestFile may be generated; SOURCE_DATE_EPOCH may be non-deterministic";
1853
-
fi;
1854
-
fi
1855
-
}
1856
-
PATH="$PATH${nix_saved_PATH:+:$nix_saved_PATH}"
1857
-
XDG_DATA_DIRS="$XDG_DATA_DIRS${nix_saved_XDG_DATA_DIRS:+:$nix_saved_XDG_DATA_DIRS}"
1858
-
export NIX_BUILD_TOP="$(mktemp -d -t nix-shell.XXXXXX)"
1859
-
export TMP="$NIX_BUILD_TOP"
1860
-
export TMPDIR="$NIX_BUILD_TOP"
1861
-
export TEMP="$NIX_BUILD_TOP"
1862
-
export TEMPDIR="$NIX_BUILD_TOP"
1863
-
eval "$shellHook"
+4
-5
dns/dnsconfig.js
+4
-5
dns/dnsconfig.js
···
6
6
7
7
D("lakhwara.com", REG_NONE,
8
8
DnsProvider(DNS_HEDNS),
9
-
DefaultTTL(300),
9
+
DefaultTTL(86400),
10
10
//SOA('@', 'ns1.he.net.', 'hostmaster.he.net.', 2022041702, 86400, 7200, 3600000, 86400, TTL(172800)),
11
-
A('anish', '69.61.2.203'),
12
-
A('@', '69.61.2.203'),
13
-
//A('coaching', '103.16.130.98'),
11
+
A('anish', '103.16.130.98'),
12
+
A('coaching', '103.16.130.98'),
14
13
TXT('anish', 'datkey=dat://1a240a14fab2bae9c85ebad29bddc04505aaba24e5fb809c2ccb4cdf71e3a7d5'),
15
14
CNAME('fm1._domainkey', 'fm1.lakhwara.com.dkim.fmhosted.com.'),
16
15
CNAME('fm2._domainkey', 'fm2.lakhwara.com.dkim.fmhosted.com.'),
17
16
CNAME('fm3._domainkey', 'fm3.lakhwara.com.dkim.fmhosted.com.'),
17
+
A('@', '103.16.130.98'),
18
18
MX('@', 10, 'in1-smtp.messagingengine.com.'),
19
19
MX('@', 20, 'in2-smtp.messagingengine.com.'),
20
20
//NAMESERVER('ns1.he.net.'),
···
39
39
A('git', '69.61.2.203', TTL(300)),
40
40
A('bin', '69.61.2.203', TTL(300)),
41
41
A('ci', '69.61.2.203', TTL(300)),
42
-
A('write', '69.61.2.203', TTL(300)),
43
42
// vultr -> nulled: lituus
44
43
A('@', '45.77.48.108', TTL(300)),
45
44
A('jitsi', '45.77.48.108', TTL(300)),
dns/test_nullhex.sh
dns/test_nullhex.sh
+275
-428
flake.lock
+275
-428
flake.lock
···
6
6
"home-manager": "home-manager",
7
7
"nixpkgs": [
8
8
"nixpkgs"
9
-
],
10
-
"systems": "systems"
9
+
]
11
10
},
12
11
"locked": {
13
-
"lastModified": 1747575206,
14
-
"narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=",
12
+
"lastModified": 1690228878,
13
+
"narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=",
15
14
"owner": "ryantm",
16
15
"repo": "agenix",
17
-
"rev": "4835b1dc898959d8547a871ef484930675cb47f1",
16
+
"rev": "d8c973fd228949736dedf61b7f8cc1ece3236792",
18
17
"type": "github"
19
18
},
20
19
"original": {
···
35
34
},
36
35
"locked": {
37
36
"lastModified": 1682226636,
38
-
"narHash": "sha256-fmETHfUtQ5zOVr/4MT5wE7eNALCSQCnEUYZYmV3UEwg=",
37
+
"narHash": "sha256-f/XuEoZYh+aubCfjeduvwZjd5X7IgRYnmuuhGsdfP/U=",
39
38
"ref": "main",
40
39
"rev": "095d14ff2469c8f3de7cbf45d229c0f46a733aae",
41
40
"revCount": 77,
···
48
47
"url": "ssh://gitea@git.sealight.xyz/aynish/basant"
49
48
}
50
49
},
51
-
"breezy": {
52
-
"inputs": {
53
-
"flake-compat": "flake-compat",
54
-
"flake-utils": "flake-utils_2",
55
-
"nixpkgs": [
56
-
"unstable"
57
-
]
58
-
},
59
-
"locked": {
60
-
"lastModified": 1746128594,
61
-
"narHash": "sha256-yynk80vxbBk3zhcGj/FT8lz2DBrjxb/1OoRy8JEbqtQ=",
62
-
"owner": "shymega",
63
-
"repo": "breezy-desktop",
64
-
"rev": "77b9d4ef8dbf6a26427be6f3edae49d3c36fd5bc",
65
-
"type": "github"
66
-
},
67
-
"original": {
68
-
"owner": "shymega",
69
-
"ref": "shymega/add-nix-flake-support",
70
-
"repo": "breezy-desktop",
71
-
"type": "github"
72
-
}
73
-
},
74
50
"brew-src": {
75
51
"flake": false,
76
52
"locked": {
77
-
"lastModified": 1746795192,
78
-
"narHash": "sha256-Cv+RXuzmn2iGBY2Ny/nXBTH+LFKDWIvMxf9a+btKI6M=",
53
+
"lastModified": 1705326576,
54
+
"narHash": "sha256-9PvMgHgdbpb5vBO8fHCRufodR731ynzGMF9+68vKWck=",
79
55
"owner": "Homebrew",
80
56
"repo": "brew",
81
-
"rev": "6f39076b3c2251994419215279d0525ef667fc31",
57
+
"rev": "1c612baa096c69f2fcb221c74e6f5b9979efdcee",
82
58
"type": "github"
83
59
},
84
60
"original": {
85
61
"owner": "Homebrew",
86
-
"ref": "4.5.2",
62
+
"ref": "4.2.4",
87
63
"repo": "brew",
88
64
"type": "github"
89
65
}
···
91
67
"crane": {
92
68
"flake": false,
93
69
"locked": {
94
-
"lastModified": 1699217310,
95
-
"narHash": "sha256-xpW3VFUG7yE6UE6Wl0dhqencuENSkV7qpnpe9I8VbPw=",
70
+
"lastModified": 1686108916,
71
+
"narHash": "sha256-looLH5MdY4erLiJw0XwQohGdr0fJL9y6TJY3898RA2U=",
96
72
"owner": "ipetkov",
97
73
"repo": "crane",
98
-
"rev": "d535642bbe6f377077f7c23f0febb78b1463f449",
74
+
"rev": "8ab1a49432695bd80ff4b7f6c6515da0e926d922",
99
75
"type": "github"
100
76
},
101
77
"original": {
102
78
"owner": "ipetkov",
103
-
"ref": "v0.15.0",
79
+
"ref": "v0.12.2",
104
80
"repo": "crane",
105
81
"type": "github"
106
82
}
···
113
89
]
114
90
},
115
91
"locked": {
116
-
"lastModified": 1744478979,
117
-
"narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=",
92
+
"lastModified": 1673295039,
93
+
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
118
94
"owner": "lnl7",
119
95
"repo": "nix-darwin",
120
-
"rev": "43975d782b418ebf4969e9ccba82466728c2851b",
96
+
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
121
97
"type": "github"
122
98
},
123
99
"original": {
···
134
110
]
135
111
},
136
112
"locked": {
137
-
"lastModified": 1748065210,
138
-
"narHash": "sha256-dFqlLNW6UW19m0vg5FHWLH2G2LGkqYyPs/4YqfoZMoM=",
139
-
"owner": "LnL7",
113
+
"lastModified": 1747752302,
114
+
"narHash": "sha256-XqNAcEFfe5tJZGlx+Su0G67ZwRwZmHNWwiMK0fji0Hw=",
115
+
"owner": "nix-darwin",
140
116
"repo": "nix-darwin",
141
-
"rev": "acd6aa5a9065c6695212be313e06f08f7184cb25",
117
+
"rev": "74ecd01d2c122f8a4a48066ab1d48f3e01671671",
142
118
"type": "github"
143
119
},
144
120
"original": {
145
-
"owner": "LnL7",
146
-
"ref": "master",
121
+
"owner": "nix-darwin",
122
+
"ref": "nix-darwin-25.05",
147
123
"repo": "nix-darwin",
148
124
"type": "github"
149
125
}
150
126
},
151
127
"deploy-rs": {
152
128
"inputs": {
153
-
"flake-compat": "flake-compat_2",
129
+
"flake-compat": "flake-compat",
154
130
"nixpkgs": [
155
131
"nixpkgs"
156
132
],
157
133
"utils": "utils"
158
134
},
159
135
"locked": {
160
-
"lastModified": 1727447169,
161
-
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=",
136
+
"lastModified": 1704875591,
137
+
"narHash": "sha256-eWRLbqRcrILgztU/m/k7CYLzETKNbv0OsT2GjkaNm8A=",
162
138
"owner": "serokell",
163
139
"repo": "deploy-rs",
164
-
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76",
140
+
"rev": "1776009f1f3fb2b5d236b84d9815f2edee463a9b",
165
141
"type": "github"
166
142
},
167
143
"original": {
···
188
164
"dirt-samples-src": {
189
165
"flake": false,
190
166
"locked": {
191
-
"lastModified": 1698439458,
192
-
"narHash": "sha256-Mp8qBpsOvW9Zguv95Kv7EU6S3ICaF2aO02Wz6xGURtE=",
167
+
"lastModified": 1588278411,
168
+
"narHash": "sha256-h8vQxRym6QzNLOTZU7A43VCHuG0H77l+BFwXnC0L1CE=",
193
169
"owner": "tidalcycles",
194
170
"repo": "dirt-samples",
195
-
"rev": "9a6dff8f9ec3cd55b287290cf04e01afa6b8f532",
171
+
"rev": "66d432418c9a7d82cf049d9246adfa62f46df2a6",
196
172
"type": "github"
197
173
},
198
174
"original": {
199
175
"owner": "tidalcycles",
176
+
"ref": "master",
200
177
"repo": "dirt-samples",
201
178
"type": "github"
202
179
}
···
208
185
]
209
186
},
210
187
"locked": {
211
-
"lastModified": 1747742835,
212
-
"narHash": "sha256-kYL4GCwwznsypvsnA20oyvW8zB/Dvn6K5G/tgMjVMT4=",
188
+
"lastModified": 1690739034,
189
+
"narHash": "sha256-roW02IaiQ3gnEEDMCDWL5YyN+C4nBf/te6vfL7rG0jk=",
213
190
"owner": "nix-community",
214
191
"repo": "disko",
215
-
"rev": "df522e787fdffc4f32ed3e1fca9ed0968a384d62",
192
+
"rev": "4015740375676402a2ee6adebc3c30ea625b9a94",
216
193
"type": "github"
217
194
},
218
195
"original": {
···
223
200
},
224
201
"dream2nix": {
225
202
"inputs": {
203
+
"devshell": [
204
+
"sg-nvim",
205
+
"nci"
206
+
],
207
+
"flake-compat": [
208
+
"sg-nvim",
209
+
"nci"
210
+
],
211
+
"flake-parts": [
212
+
"sg-nvim",
213
+
"nci",
214
+
"parts"
215
+
],
216
+
"nix-unit": [
217
+
"sg-nvim",
218
+
"nci"
219
+
],
226
220
"nixpkgs": [
227
221
"sg-nvim",
228
222
"nci",
229
223
"nixpkgs"
230
224
],
231
-
"purescript-overlay": "purescript-overlay",
232
-
"pyproject-nix": "pyproject-nix"
225
+
"pre-commit-hooks": [
226
+
"sg-nvim",
227
+
"nci"
228
+
]
233
229
},
234
230
"locked": {
235
-
"lastModified": 1722526955,
236
-
"narHash": "sha256-fFS8aDnfK9Qfm2FLnQ8pqWk8FzvFEv5LvTuZTZLREnc=",
231
+
"lastModified": 1696373678,
232
+
"narHash": "sha256-D5yaEkxi7VnoRsBDeHYB86FikFYDL/vq77ajo3Pa3Og=",
237
233
"owner": "nix-community",
238
234
"repo": "dream2nix",
239
-
"rev": "3fd4c14d3683baac8d1f94286ae14fe160888b51",
235
+
"rev": "5e2577caaf87661e29405db7e117bda57b0e749d",
240
236
"type": "github"
241
237
},
242
238
"original": {
···
264
260
"flake-compat_2": {
265
261
"flake": false,
266
262
"locked": {
267
-
"lastModified": 1696426674,
268
-
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
269
-
"owner": "edolstra",
270
-
"repo": "flake-compat",
271
-
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
272
-
"type": "github"
273
-
},
274
-
"original": {
275
-
"owner": "edolstra",
276
-
"repo": "flake-compat",
277
-
"type": "github"
278
-
}
279
-
},
280
-
"flake-compat_3": {
281
-
"flake": false,
282
-
"locked": {
283
263
"lastModified": 1641205782,
284
264
"narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=",
285
265
"owner": "edolstra",
···
293
273
"type": "github"
294
274
}
295
275
},
296
-
"flake-compat_4": {
276
+
"flake-compat_3": {
297
277
"flake": false,
298
278
"locked": {
299
-
"lastModified": 1696426674,
300
-
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
279
+
"lastModified": 1673956053,
280
+
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
301
281
"owner": "edolstra",
302
282
"repo": "flake-compat",
303
-
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
304
-
"type": "github"
305
-
},
306
-
"original": {
307
-
"owner": "edolstra",
308
-
"repo": "flake-compat",
309
-
"type": "github"
310
-
}
311
-
},
312
-
"flake-compat_5": {
313
-
"flake": false,
314
-
"locked": {
315
-
"lastModified": 1733328505,
316
-
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
317
-
"owner": "edolstra",
318
-
"repo": "flake-compat",
319
-
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
283
+
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
320
284
"type": "github"
321
285
},
322
286
"original": {
···
327
291
},
328
292
"flake-parts": {
329
293
"inputs": {
330
-
"nixpkgs-lib": [
331
-
"nur",
332
-
"nixpkgs"
333
-
]
294
+
"nixpkgs-lib": "nixpkgs-lib"
334
295
},
335
296
"locked": {
336
-
"lastModified": 1733312601,
337
-
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
297
+
"lastModified": 1696343447,
298
+
"narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=",
338
299
"owner": "hercules-ci",
339
300
"repo": "flake-parts",
340
-
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
301
+
"rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4",
341
302
"type": "github"
342
303
},
343
304
"original": {
···
346
307
"type": "github"
347
308
}
348
309
},
349
-
"flake-parts_2": {
350
-
"inputs": {
351
-
"nixpkgs-lib": "nixpkgs-lib"
352
-
},
353
-
"locked": {
354
-
"lastModified": 1725234343,
355
-
"narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=",
356
-
"owner": "hercules-ci",
357
-
"repo": "flake-parts",
358
-
"rev": "567b938d64d4b4112ee253b9274472dc3a346eb6",
359
-
"type": "github"
360
-
},
361
-
"original": {
362
-
"owner": "hercules-ci",
363
-
"repo": "flake-parts",
364
-
"type": "github"
365
-
}
366
-
},
367
310
"flake-utils": {
368
311
"locked": {
369
312
"lastModified": 1638122382,
···
380
322
}
381
323
},
382
324
"flake-utils_2": {
325
+
"locked": {
326
+
"lastModified": 1667395993,
327
+
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
328
+
"owner": "numtide",
329
+
"repo": "flake-utils",
330
+
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
331
+
"type": "github"
332
+
},
333
+
"original": {
334
+
"owner": "numtide",
335
+
"repo": "flake-utils",
336
+
"type": "github"
337
+
}
338
+
},
339
+
"flake-utils_3": {
383
340
"inputs": {
384
341
"systems": "systems_2"
385
342
},
386
343
"locked": {
387
-
"lastModified": 1726560853,
388
-
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
344
+
"lastModified": 1687709756,
345
+
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
389
346
"owner": "numtide",
390
347
"repo": "flake-utils",
391
-
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
348
+
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
392
349
"type": "github"
393
350
},
394
351
"original": {
···
397
354
"type": "github"
398
355
}
399
356
},
400
-
"flake-utils_3": {
357
+
"flake-utils_4": {
358
+
"inputs": {
359
+
"systems": "systems_3"
360
+
},
401
361
"locked": {
402
-
"lastModified": 1667395993,
403
-
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
362
+
"lastModified": 1681202837,
363
+
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
404
364
"owner": "numtide",
405
365
"repo": "flake-utils",
406
-
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
366
+
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
407
367
"type": "github"
408
368
},
409
369
"original": {
···
412
372
"type": "github"
413
373
}
414
374
},
415
-
"flake-utils_4": {
375
+
"flake-utils_5": {
416
376
"inputs": {
417
377
"systems": "systems_4"
418
378
},
419
379
"locked": {
420
-
"lastModified": 1731533236,
421
-
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
380
+
"lastModified": 1685518550,
381
+
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
422
382
"owner": "numtide",
423
383
"repo": "flake-utils",
424
-
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
384
+
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
385
+
"type": "github"
386
+
},
387
+
"original": {
388
+
"owner": "numtide",
389
+
"repo": "flake-utils",
390
+
"type": "github"
391
+
}
392
+
},
393
+
"flake-utils_6": {
394
+
"inputs": {
395
+
"systems": "systems_5"
396
+
},
397
+
"locked": {
398
+
"lastModified": 1681202837,
399
+
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
400
+
"owner": "numtide",
401
+
"repo": "flake-utils",
402
+
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
425
403
"type": "github"
426
404
},
427
405
"original": {
···
439
417
]
440
418
},
441
419
"locked": {
442
-
"lastModified": 1709087332,
443
-
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
420
+
"lastModified": 1660459072,
421
+
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
444
422
"owner": "hercules-ci",
445
423
"repo": "gitignore.nix",
446
-
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
424
+
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
447
425
"type": "github"
448
426
},
449
427
"original": {
···
454
432
},
455
433
"grasp": {
456
434
"inputs": {
457
-
"flake-utils": "flake-utils_3",
435
+
"flake-utils": "flake-utils_2",
458
436
"nixpkgs": [
459
437
"nixpkgs"
460
438
]
···
476
454
},
477
455
"hardware": {
478
456
"locked": {
479
-
"lastModified": 1747900541,
480
-
"narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=",
457
+
"lastModified": 1691179816,
458
+
"narHash": "sha256-WSMwqzU70ZMRHv1CUAfHEEKJuB0c9c9r0F+lJehXfSI=",
481
459
"owner": "nixos",
482
460
"repo": "nixos-hardware",
483
-
"rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06",
461
+
"rev": "87e3122b67587492a617764f88c71991893fcf8a",
484
462
"type": "github"
485
463
},
486
464
"original": {
···
497
475
]
498
476
},
499
477
"locked": {
500
-
"lastModified": 1745494811,
501
-
"narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=",
478
+
"lastModified": 1682203081,
479
+
"narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=",
502
480
"owner": "nix-community",
503
481
"repo": "home-manager",
504
-
"rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be",
482
+
"rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1",
505
483
"type": "github"
506
484
},
507
485
"original": {
···
534
512
"homebrew-bundle": {
535
513
"flake": false,
536
514
"locked": {
537
-
"lastModified": 1745335228,
538
-
"narHash": "sha256-TIKR2UgtyUmHLNZp255/vLs+1I10hXe+sciMEbAGFwE=",
515
+
"lastModified": 1709834002,
516
+
"narHash": "sha256-KNRwMnyo6ZLphIh2bn02KNOtRf2X3NHqUbS7y4Vmn+M=",
539
517
"owner": "homebrew",
540
518
"repo": "homebrew-bundle",
541
-
"rev": "a3265c84b232e13048ecbf6fc18a2eedfadbeb08",
519
+
"rev": "bb1c80baa7fac67bbffe81a2862c75a5dc7ea4a7",
542
520
"type": "github"
543
521
},
544
522
"original": {
···
550
528
"homebrew-cask": {
551
529
"flake": false,
552
530
"locked": {
553
-
"lastModified": 1748113418,
554
-
"narHash": "sha256-lX4WosoMtusSD4GRDRvzwQwzLJUetg5HEWlMcJ4IQmI=",
531
+
"lastModified": 1709955474,
532
+
"narHash": "sha256-pE5x579FqCieeeEmrUtNKoBsMG41WSOfGWtXCTI9FP4=",
555
533
"owner": "homebrew",
556
534
"repo": "homebrew-cask",
557
-
"rev": "ed1a02852e1c4a5fab4aef776082ca89cd70f09a",
535
+
"rev": "43b9db57368e350c116398c7da6cb5401cd37ebe",
558
536
"type": "github"
559
537
},
560
538
"original": {
···
566
544
"homebrew-core": {
567
545
"flake": false,
568
546
"locked": {
569
-
"lastModified": 1748120562,
570
-
"narHash": "sha256-b4Qd9nAVW8yMqZ5T9B7HfSrDLCrtsw07D98/NWz2xsE=",
547
+
"lastModified": 1709956143,
548
+
"narHash": "sha256-5eyfpnVhxVv3+n53vp4j9DNx7O+mqtQqUn90JKS1PMM=",
571
549
"owner": "homebrew",
572
550
"repo": "homebrew-core",
573
-
"rev": "b26cd07a06b15767688137a68461cb34fe985efa",
551
+
"rev": "a38d7e99bc103e9564208f2d155701d70001c8cc",
574
552
"type": "github"
575
553
},
576
554
"original": {
···
579
557
"type": "github"
580
558
}
581
559
},
582
-
"jovian": {
583
-
"inputs": {
584
-
"nix-github-actions": "nix-github-actions",
585
-
"nixpkgs": [
586
-
"unstable"
587
-
]
588
-
},
589
-
"locked": {
590
-
"lastModified": 1747990026,
591
-
"narHash": "sha256-sG5VbID+x5+xUC+jjgHibnzg8IllVcH+K2TLmYHLPME=",
592
-
"owner": "jovian-experiments",
593
-
"repo": "jovian-nixos",
594
-
"rev": "e2f4ced874406541a7957f7e2b8f05a0d59a0f00",
595
-
"type": "github"
596
-
},
597
-
"original": {
598
-
"owner": "jovian-experiments",
599
-
"repo": "jovian-nixos",
600
-
"type": "github"
601
-
}
602
-
},
603
560
"mk-naked-shell": {
604
561
"flake": false,
605
562
"locked": {
···
621
578
"crane": "crane",
622
579
"dream2nix": "dream2nix",
623
580
"mk-naked-shell": "mk-naked-shell",
624
-
"nixpkgs": "nixpkgs_6",
581
+
"nixpkgs": "nixpkgs_5",
625
582
"parts": "parts",
626
583
"rust-overlay": "rust-overlay_2",
627
584
"treefmt": "treefmt"
628
585
},
629
586
"locked": {
630
-
"lastModified": 1725862543,
631
-
"narHash": "sha256-tq5GovIMh1CaC4wtf7qdnzyab+tlpIspuR13FHAVibA=",
587
+
"lastModified": 1696572678,
588
+
"narHash": "sha256-rcznf00l41VtjzvEGMWOxaj5J/5twES6n30VwbJMgl0=",
632
589
"owner": "yusdacra",
633
590
"repo": "nix-cargo-integration",
634
-
"rev": "b60e6590f9d54041660d5dc86242721eb568371d",
591
+
"rev": "cacb6c94004a35676c193f04afa8821758986bf0",
635
592
"type": "github"
636
593
},
637
594
"original": {
···
645
602
"nixpkgs": "nixpkgs"
646
603
},
647
604
"locked": {
648
-
"lastModified": 1716329735,
649
-
"narHash": "sha256-ap51w+VqG21vuzyQ04WrhI2YbWHd3UGz0e7dc/QQmoA=",
605
+
"lastModified": 1688307440,
606
+
"narHash": "sha256-7PTjbN+/+b799YN7Tk2SS5Vh8A0L3gBo8hmB7Y0VXug=",
650
607
"owner": "LnL7",
651
608
"repo": "nix-darwin",
652
-
"rev": "eac4f25028c1975a939c8f8fba95c12f8a25e01c",
609
+
"rev": "b06bab83bdf285ea0ae3c8e145a081eb95959047",
653
610
"type": "github"
654
611
},
655
612
"original": {
···
658
615
"type": "github"
659
616
}
660
617
},
661
-
"nix-github-actions": {
662
-
"inputs": {
663
-
"nixpkgs": [
664
-
"jovian",
665
-
"nixpkgs"
666
-
]
667
-
},
668
-
"locked": {
669
-
"lastModified": 1729697500,
670
-
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
671
-
"owner": "zhaofengli",
672
-
"repo": "nix-github-actions",
673
-
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
674
-
"type": "github"
675
-
},
676
-
"original": {
677
-
"owner": "zhaofengli",
678
-
"ref": "matrix-name",
679
-
"repo": "nix-github-actions",
680
-
"type": "github"
681
-
}
682
-
},
683
618
"nix-homebrew": {
684
619
"inputs": {
685
620
"brew-src": "brew-src",
621
+
"flake-utils": "flake-utils_3",
686
622
"nix-darwin": "nix-darwin",
687
623
"nixpkgs": "nixpkgs_2"
688
624
},
689
625
"locked": {
690
-
"lastModified": 1747444109,
691
-
"narHash": "sha256-fSufrKr8NdhLMuGZGwjGUfH+TIWrjFTRIBhgCRIyxno=",
626
+
"lastModified": 1705952034,
627
+
"narHash": "sha256-H0nk8Gk8kPw4yi2WwOTsSHgPrzSwyNgWEYHk10IJwfc=",
692
628
"owner": "zhaofengli-wip",
693
629
"repo": "nix-homebrew",
694
-
"rev": "159f21ae77da757bbaeb98c0b16ff2e7b2738350",
630
+
"rev": "40f5ee46b58e7c5f1927e2c5a583dc3d7e571ed9",
695
631
"type": "github"
696
632
},
697
633
"original": {
···
703
639
"nix-matrix-appservices": {
704
640
"inputs": {
705
641
"devshell": "devshell",
706
-
"flake-compat": "flake-compat_3",
642
+
"flake-compat": "flake-compat_2",
707
643
"nixlib": "nixlib",
708
644
"nixpkgs": "nixpkgs_3"
709
645
},
···
738
674
},
739
675
"nixos-hardware": {
740
676
"locked": {
741
-
"lastModified": 1747900541,
742
-
"narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=",
677
+
"lastModified": 1691179816,
678
+
"narHash": "sha256-WSMwqzU70ZMRHv1CUAfHEEKJuB0c9c9r0F+lJehXfSI=",
743
679
"owner": "NixOS",
744
680
"repo": "nixos-hardware",
745
-
"rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06",
681
+
"rev": "87e3122b67587492a617764f88c71991893fcf8a",
746
682
"type": "github"
747
683
},
748
684
"original": {
···
767
703
},
768
704
"nixpkgs-lib": {
769
705
"locked": {
770
-
"lastModified": 1725233747,
771
-
"narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=",
772
-
"type": "tarball",
773
-
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
706
+
"dir": "lib",
707
+
"lastModified": 1696019113,
708
+
"narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
709
+
"owner": "NixOS",
710
+
"repo": "nixpkgs",
711
+
"rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
712
+
"type": "github"
774
713
},
775
714
"original": {
776
-
"type": "tarball",
777
-
"url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz"
715
+
"dir": "lib",
716
+
"owner": "NixOS",
717
+
"ref": "nixos-unstable",
718
+
"repo": "nixpkgs",
719
+
"type": "github"
778
720
}
779
721
},
780
722
"nixpkgs-stable": {
781
723
"locked": {
782
-
"lastModified": 1720386169,
783
-
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
724
+
"lastModified": 1685801374,
725
+
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
784
726
"owner": "NixOS",
785
727
"repo": "nixpkgs",
786
-
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7",
728
+
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
787
729
"type": "github"
788
730
},
789
731
"original": {
790
732
"owner": "NixOS",
791
-
"ref": "nixos-24.05",
733
+
"ref": "nixos-23.05",
792
734
"repo": "nixpkgs",
793
735
"type": "github"
794
736
}
795
737
},
796
738
"nixpkgs_2": {
797
739
"locked": {
798
-
"lastModified": 1746328495,
799
-
"narHash": "sha256-uKCfuDs7ZM3QpCE/jnfubTg459CnKnJG/LwqEVEdEiw=",
740
+
"lastModified": 1688049487,
741
+
"narHash": "sha256-100g4iaKC9MalDjUW9iN6Jl/OocTDtXdeAj7pEGIRh4=",
800
742
"owner": "NixOS",
801
743
"repo": "nixpkgs",
802
-
"rev": "979daf34c8cacebcd917d540070b52a3c2b9b16e",
744
+
"rev": "4bc72cae107788bf3f24f30db2e2f685c9298dc9",
803
745
"type": "github"
804
746
},
805
747
"original": {
···
827
769
},
828
770
"nixpkgs_4": {
829
771
"locked": {
830
-
"lastModified": 1747862697,
831
-
"narHash": "sha256-U4HaNZ1W26cbOVm0Eb5OdGSnfQVWQKbLSPrSSa78KC0=",
772
+
"lastModified": 1747610100,
773
+
"narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=",
832
774
"owner": "nixos",
833
775
"repo": "nixpkgs",
834
-
"rev": "2baa12ff69913392faf0ace833bc54bba297ea95",
776
+
"rev": "ca49c4304acf0973078db0a9d200fd2bae75676d",
835
777
"type": "github"
836
778
},
837
779
"original": {
838
780
"owner": "nixos",
839
-
"ref": "nixos-24.11",
781
+
"ref": "nixos-25.05",
840
782
"repo": "nixpkgs",
841
783
"type": "github"
842
784
}
843
785
},
844
786
"nixpkgs_5": {
845
787
"locked": {
846
-
"lastModified": 1748026106,
847
-
"narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=",
848
-
"owner": "nixos",
849
-
"repo": "nixpkgs",
850
-
"rev": "063f43f2dbdef86376cc29ad646c45c46e93234c",
851
-
"type": "github"
852
-
},
853
-
"original": {
854
-
"owner": "nixos",
855
-
"ref": "nixos-unstable",
856
-
"repo": "nixpkgs",
857
-
"type": "github"
858
-
}
859
-
},
860
-
"nixpkgs_6": {
861
-
"locked": {
862
-
"lastModified": 1725634671,
863
-
"narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
788
+
"lastModified": 1696193975,
789
+
"narHash": "sha256-mnQjUcYgp9Guu3RNVAB2Srr1TqKcPpRXmJf4LJk6KRY=",
864
790
"owner": "NixOS",
865
791
"repo": "nixpkgs",
866
-
"rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
792
+
"rev": "fdd898f8f79e8d2f99ed2ab6b3751811ef683242",
867
793
"type": "github"
868
794
},
869
795
"original": {
···
873
799
"type": "github"
874
800
}
875
801
},
876
-
"nixpkgs_7": {
802
+
"nixpkgs_6": {
877
803
"locked": {
878
-
"lastModified": 1725816686,
879
-
"narHash": "sha256-0Kq2MkQ/sQX1rhWJ/ySBBQlBJBUK8mPMDcuDhhdBkSU=",
804
+
"lastModified": 1696419054,
805
+
"narHash": "sha256-EdR+dIKCfqL3voZUDYwcvgRDOektQB9KbhBVcE0/3Mo=",
880
806
"owner": "nixos",
881
807
"repo": "nixpkgs",
882
-
"rev": "add0443ee587a0c44f22793b8c8649a0dbc3bb00",
808
+
"rev": "7131f3c223a2d799568e4b278380cd9dac2b8579",
883
809
"type": "github"
884
810
},
885
811
"original": {
···
889
815
"type": "github"
890
816
}
891
817
},
892
-
"nixpkgs_8": {
818
+
"nixpkgs_7": {
893
819
"locked": {
894
-
"lastModified": 1719082008,
895
-
"narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=",
820
+
"lastModified": 1689261696,
821
+
"narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=",
896
822
"owner": "NixOS",
897
823
"repo": "nixpkgs",
898
-
"rev": "9693852a2070b398ee123a329e68f0dab5526681",
824
+
"rev": "df1eee2aa65052a18121ed4971081576b25d6b5c",
899
825
"type": "github"
900
826
},
901
827
"original": {
···
905
831
"type": "github"
906
832
}
907
833
},
908
-
"nixpkgs_9": {
834
+
"nixpkgs_8": {
909
835
"locked": {
910
-
"lastModified": 1718428119,
911
-
"narHash": "sha256-WdWDpNaq6u1IPtxtYHHWpl5BmabtpmLnMAx0RdJ/vo8=",
836
+
"lastModified": 1681358109,
837
+
"narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=",
912
838
"owner": "NixOS",
913
839
"repo": "nixpkgs",
914
-
"rev": "e6cea36f83499eb4e9cd184c8a8e823296b50ad5",
840
+
"rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9",
915
841
"type": "github"
916
842
},
917
843
"original": {
···
922
848
}
923
849
},
924
850
"nur": {
925
-
"inputs": {
926
-
"flake-parts": "flake-parts",
927
-
"nixpkgs": "nixpkgs_5",
928
-
"treefmt-nix": "treefmt-nix"
929
-
},
930
851
"locked": {
931
-
"lastModified": 1748119613,
932
-
"narHash": "sha256-BvOMqlTgRbz8ldRcaf7OTKIRsGlOw4AssphiZGLd0fo=",
852
+
"lastModified": 1691214006,
853
+
"narHash": "sha256-kdfBd+Y0DTOOdgSA6h6iIn403xVj4bzLnXqb7+yM6lQ=",
933
854
"owner": "nix-community",
934
855
"repo": "NUR",
935
-
"rev": "48380b491e6415284292516fe919d78207969e30",
856
+
"rev": "963ad2d1bb0a8f59b2c23ab521d4dff2148aad16",
936
857
"type": "github"
937
858
},
938
859
"original": {
···
950
871
]
951
872
},
952
873
"locked": {
953
-
"lastModified": 1725234343,
954
-
"narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=",
874
+
"lastModified": 1696343447,
875
+
"narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=",
955
876
"owner": "hercules-ci",
956
877
"repo": "flake-parts",
957
-
"rev": "567b938d64d4b4112ee253b9274472dc3a346eb6",
878
+
"rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4",
958
879
"type": "github"
959
880
},
960
881
"original": {
···
970
891
]
971
892
},
972
893
"locked": {
973
-
"lastModified": 1738465265,
974
-
"narHash": "sha256-v8nD/2gq8/mILEJqvWgx1q7Fc1purQvV3/WZLQ/t/wc=",
894
+
"lastModified": 1724637654,
895
+
"narHash": "sha256-YXmWxUEG3NDsLn46Ctrgn7YcT/h0fsCAxKcSgIhCSLo=",
975
896
"ref": "main",
976
-
"rev": "115f8af750c0d4b6a8c6f97119b12d7e3eb20c6a",
977
-
"revCount": 1552,
897
+
"rev": "521e360df123a530fc4c99187e3580bd5d086a9d",
898
+
"revCount": 1467,
978
899
"type": "git",
979
900
"url": "ssh://gitea@git.sealight.xyz/aynish/kitaab"
980
901
},
···
986
907
},
987
908
"pre-commit-nix": {
988
909
"inputs": {
989
-
"flake-compat": "flake-compat_4",
910
+
"flake-compat": "flake-compat_3",
911
+
"flake-utils": "flake-utils_5",
990
912
"gitignore": "gitignore",
991
-
"nixpkgs": "nixpkgs_8",
913
+
"nixpkgs": "nixpkgs_7",
992
914
"nixpkgs-stable": "nixpkgs-stable"
993
915
},
994
916
"locked": {
995
-
"lastModified": 1725513492,
996
-
"narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=",
917
+
"lastModified": 1696516544,
918
+
"narHash": "sha256-8rKE8Je6twTNFRTGF63P9mE3lZIq917RAicdc4XJO80=",
997
919
"owner": "cachix",
998
920
"repo": "pre-commit-hooks.nix",
999
-
"rev": "7570de7b9b504cfe92025dd1be797bf546f66528",
921
+
"rev": "66c352d33e0907239e4a69416334f64af2c685cc",
1000
922
"type": "github"
1001
923
},
1002
924
"original": {
···
1005
927
"type": "github"
1006
928
}
1007
929
},
1008
-
"purescript-overlay": {
1009
-
"inputs": {
1010
-
"nixpkgs": [
1011
-
"sg-nvim",
1012
-
"nci",
1013
-
"dream2nix",
1014
-
"nixpkgs"
1015
-
],
1016
-
"slimlock": "slimlock"
1017
-
},
1018
-
"locked": {
1019
-
"lastModified": 1696022621,
1020
-
"narHash": "sha256-eMjFmsj2G1E0Q5XiibUNgFjTiSz0GxIeSSzzVdoN730=",
1021
-
"owner": "thomashoneyman",
1022
-
"repo": "purescript-overlay",
1023
-
"rev": "047c7933abd6da8aa239904422e22d190ce55ead",
1024
-
"type": "github"
1025
-
},
1026
-
"original": {
1027
-
"owner": "thomashoneyman",
1028
-
"repo": "purescript-overlay",
1029
-
"type": "github"
1030
-
}
1031
-
},
1032
-
"pyproject-nix": {
1033
-
"flake": false,
1034
-
"locked": {
1035
-
"lastModified": 1702448246,
1036
-
"narHash": "sha256-hFg5s/hoJFv7tDpiGvEvXP0UfFvFEDgTdyHIjDVHu1I=",
1037
-
"owner": "davhau",
1038
-
"repo": "pyproject.nix",
1039
-
"rev": "5a06a2697b228c04dd2f35659b4b659ca74f7aeb",
1040
-
"type": "github"
1041
-
},
1042
-
"original": {
1043
-
"owner": "davhau",
1044
-
"ref": "dream2nix",
1045
-
"repo": "pyproject.nix",
1046
-
"type": "github"
1047
-
}
1048
-
},
1049
930
"root": {
1050
931
"inputs": {
1051
932
"agenix": "agenix",
1052
933
"basant": "basant",
1053
-
"breezy": "breezy",
1054
934
"darwin": "darwin_2",
1055
935
"deploy-rs": "deploy-rs",
1056
936
"disko": "disko",
···
1060
940
"homebrew-bundle": "homebrew-bundle",
1061
941
"homebrew-cask": "homebrew-cask",
1062
942
"homebrew-core": "homebrew-core",
1063
-
"jovian": "jovian",
1064
943
"nix-homebrew": "nix-homebrew",
1065
944
"nix-matrix-appservices": "nix-matrix-appservices",
1066
945
"nixos-hardware": "nixos-hardware",
···
1072
951
"sourcegraph-src-cli-cask": "sourcegraph-src-cli-cask",
1073
952
"tidalcycles": "tidalcycles",
1074
953
"unstable": "unstable",
1075
-
"vimwikicli": "vimwikicli",
1076
-
"xr-linux": "xr-linux"
954
+
"vimwikicli": "vimwikicli"
1077
955
}
1078
956
},
1079
957
"rust-overlay": {
1080
958
"inputs": {
959
+
"flake-utils": "flake-utils_4",
1081
960
"nixpkgs": [
1082
961
"nixpkgs"
1083
962
]
1084
963
},
1085
964
"locked": {
1086
-
"lastModified": 1748054080,
1087
-
"narHash": "sha256-rwFiLLNCwkj9bqePtH1sMqzs1xmohE0Ojq249piMzF4=",
965
+
"lastModified": 1691201768,
966
+
"narHash": "sha256-h+QJMpawZoK1+8efF6UjQoY1EHZfHteXVa5OYnlqRWA=",
1088
967
"owner": "oxalica",
1089
968
"repo": "rust-overlay",
1090
-
"rev": "2221d8d53c128beb69346fa3ab36da3f19bb1691",
969
+
"rev": "18ee2a71de24273e4ad4503b5604532f0b53f382",
1091
970
"type": "github"
1092
971
},
1093
972
"original": {
···
1099
978
"rust-overlay_2": {
1100
979
"flake": false,
1101
980
"locked": {
1102
-
"lastModified": 1725848835,
1103
-
"narHash": "sha256-u4lCr+tOEWhsFiww5G04U5jUNzaQJi0/ZMIDGiLeT14=",
981
+
"lastModified": 1696558324,
982
+
"narHash": "sha256-TnnP4LGwDB8ZGE7h2n4nA9Faee8xPkMdNcyrzJ57cbw=",
1104
983
"owner": "oxalica",
1105
984
"repo": "rust-overlay",
1106
-
"rev": "2ef910a6276a2f34513d18f2f826a8dea72c3b3f",
985
+
"rev": "fdb37574a04df04aaa8cf7708f94a9309caebe2b",
1107
986
"type": "github"
1108
987
},
1109
988
"original": {
···
1114
993
},
1115
994
"rust-overlay_3": {
1116
995
"inputs": {
1117
-
"nixpkgs": "nixpkgs_9"
996
+
"flake-utils": "flake-utils_6",
997
+
"nixpkgs": "nixpkgs_8"
1118
998
},
1119
999
"locked": {
1120
-
"lastModified": 1725848835,
1121
-
"narHash": "sha256-u4lCr+tOEWhsFiww5G04U5jUNzaQJi0/ZMIDGiLeT14=",
1000
+
"lastModified": 1696558324,
1001
+
"narHash": "sha256-TnnP4LGwDB8ZGE7h2n4nA9Faee8xPkMdNcyrzJ57cbw=",
1122
1002
"owner": "oxalica",
1123
1003
"repo": "rust-overlay",
1124
-
"rev": "2ef910a6276a2f34513d18f2f826a8dea72c3b3f",
1004
+
"rev": "fdb37574a04df04aaa8cf7708f94a9309caebe2b",
1125
1005
"type": "github"
1126
1006
},
1127
1007
"original": {
···
1132
1012
},
1133
1013
"sg-nvim": {
1134
1014
"inputs": {
1135
-
"flake-parts": "flake-parts_2",
1015
+
"flake-parts": "flake-parts",
1136
1016
"nci": "nci",
1137
-
"nixpkgs": "nixpkgs_7",
1017
+
"nixpkgs": "nixpkgs_6",
1138
1018
"pre-commit-nix": "pre-commit-nix",
1139
1019
"rust-overlay": "rust-overlay_3"
1140
1020
},
1141
1021
"locked": {
1142
-
"lastModified": 1737448478,
1143
-
"narHash": "sha256-i5g+pzxB8pAORLbr1wlYWUTsrJJmVj9UwlCg8pU3Suw=",
1022
+
"lastModified": 1716664639,
1023
+
"narHash": "sha256-5wzTW9kJGYq41kXG9JoVAaA5601K26cDrweT2PtpEw8=",
1144
1024
"owner": "sourcegraph",
1145
1025
"repo": "sg.nvim",
1146
-
"rev": "775f22b75a9826eabf69b0094dd1d51d619fe552",
1026
+
"rev": "8bdd4d19da2268072708d5fe18fda9c23e16509d",
1147
1027
"type": "github"
1148
1028
},
1149
1029
"original": {
···
1152
1032
"type": "github"
1153
1033
}
1154
1034
},
1155
-
"slimlock": {
1156
-
"inputs": {
1157
-
"nixpkgs": [
1158
-
"sg-nvim",
1159
-
"nci",
1160
-
"dream2nix",
1161
-
"purescript-overlay",
1162
-
"nixpkgs"
1163
-
]
1164
-
},
1165
-
"locked": {
1166
-
"lastModified": 1688610262,
1167
-
"narHash": "sha256-Wg0ViDotFWGWqKIQzyYCgayeH8s4U1OZcTiWTQYdAp4=",
1168
-
"owner": "thomashoneyman",
1169
-
"repo": "slimlock",
1170
-
"rev": "b5c6cdcaf636ebbebd0a1f32520929394493f1a6",
1171
-
"type": "github"
1172
-
},
1173
-
"original": {
1174
-
"owner": "thomashoneyman",
1175
-
"repo": "slimlock",
1176
-
"type": "github"
1177
-
}
1178
-
},
1179
1035
"sourcegraph-src-cli-cask": {
1180
1036
"flake": false,
1181
1037
"locked": {
1182
-
"lastModified": 1747940755,
1183
-
"narHash": "sha256-rS+LEcZKOoRN3bH+aZIV1Y4AlPR8dWosiRAA8Q1itBs=",
1038
+
"lastModified": 1722629753,
1039
+
"narHash": "sha256-3OwvDSoVzklr3ca1qCXR27Kc8hGjshRRdtVQ8OUXQCc=",
1184
1040
"owner": "sourcegraph",
1185
1041
"repo": "homebrew-src-cli",
1186
-
"rev": "34bb40706f3f9641958db65c5c77a1db51140b3d",
1042
+
"rev": "130bd8ab70961e5c1f890811bfb1f7552a2ee5a9",
1187
1043
"type": "github"
1188
1044
},
1189
1045
"original": {
···
1195
1051
"superdirt-src": {
1196
1052
"flake": false,
1197
1053
"locked": {
1198
-
"lastModified": 1697377840,
1199
-
"narHash": "sha256-9qU9CHYAXbN1IE3xXDqGipuroifVaSVXj3c/cDfwM80=",
1054
+
"lastModified": 1611740180,
1055
+
"narHash": "sha256-GtnqZeMFqFkVhgx2Exu0wY687cHa7mNnVCgjQd6fiIA=",
1200
1056
"owner": "musikinformatik",
1201
1057
"repo": "superdirt",
1202
-
"rev": "c7f32998572984705d340e7c1b9ed9ad998a39b6",
1058
+
"rev": "7abb62e89649daa1232b9cbd6427241868abd30e",
1203
1059
"type": "github"
1204
1060
},
1205
1061
"original": {
1206
1062
"owner": "musikinformatik",
1063
+
"ref": "master",
1207
1064
"repo": "superdirt",
1208
1065
"type": "github"
1209
1066
}
···
1268
1125
"type": "github"
1269
1126
}
1270
1127
},
1128
+
"systems_5": {
1129
+
"locked": {
1130
+
"lastModified": 1681028828,
1131
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
1132
+
"owner": "nix-systems",
1133
+
"repo": "default",
1134
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
1135
+
"type": "github"
1136
+
},
1137
+
"original": {
1138
+
"owner": "nix-systems",
1139
+
"repo": "default",
1140
+
"type": "github"
1141
+
}
1142
+
},
1271
1143
"tidal-src": {
1272
1144
"flake": false,
1273
1145
"locked": {
1274
-
"lastModified": 1712519522,
1275
-
"narHash": "sha256-LbvxQmVxHElidCgvt+w0g1k+QQbNLebK46vtRCgsLeQ=",
1146
+
"lastModified": 1654350756,
1147
+
"narHash": "sha256-tONM5SYYBca0orTLH1EUOilSC1FCluWrFt8AetUx+YQ=",
1276
1148
"owner": "tidalcycles",
1277
1149
"repo": "tidal",
1278
-
"rev": "88f09edf6bef2228d5f530dea872b08a9d803066",
1150
+
"rev": "fda9c1ecb3722698935245e5409ef8ccdfca16c8",
1279
1151
"type": "github"
1280
1152
},
1281
1153
"original": {
1282
1154
"owner": "tidalcycles",
1283
-
"ref": "v1.9.5",
1155
+
"ref": "main",
1284
1156
"repo": "tidal",
1285
1157
"type": "github"
1286
1158
}
···
1293
1165
],
1294
1166
"superdirt-src": "superdirt-src",
1295
1167
"tidal-src": "tidal-src",
1168
+
"utils": "utils_2",
1296
1169
"vim-tidal-src": "vim-tidal-src",
1297
1170
"vowel-src": "vowel-src"
1298
1171
},
1299
1172
"locked": {
1300
-
"lastModified": 1730626669,
1301
-
"narHash": "sha256-nFyZrvTPn9OM9UZmuAwy3e1Ba0ZuYc2FaDCOOhGtqg4=",
1173
+
"lastModified": 1664760044,
1174
+
"narHash": "sha256-e5LGk/tDnphory1mYhADgPnVtShofY2w/3xY09jEE2A=",
1302
1175
"owner": "mitchmindtree",
1303
1176
"repo": "tidalcycles.nix",
1304
-
"rev": "0db0918e7a3d3c30ed7a6e81dc9d4e3832870ac4",
1177
+
"rev": "3f3a820cd43709077d15a24fa6062de7d623a6bf",
1305
1178
"type": "github"
1306
1179
},
1307
1180
"original": {
···
1319
1192
]
1320
1193
},
1321
1194
"locked": {
1322
-
"lastModified": 1725271838,
1323
-
"narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=",
1324
-
"owner": "numtide",
1325
-
"repo": "treefmt-nix",
1326
-
"rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd",
1327
-
"type": "github"
1328
-
},
1329
-
"original": {
1330
-
"owner": "numtide",
1331
-
"repo": "treefmt-nix",
1332
-
"type": "github"
1333
-
}
1334
-
},
1335
-
"treefmt-nix": {
1336
-
"inputs": {
1337
-
"nixpkgs": [
1338
-
"nur",
1339
-
"nixpkgs"
1340
-
]
1341
-
},
1342
-
"locked": {
1343
-
"lastModified": 1733222881,
1344
-
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
1195
+
"lastModified": 1695822946,
1196
+
"narHash": "sha256-IQU3fYo0H+oGlqX5YrgZU3VRhbt2Oqe6KmslQKUO4II=",
1345
1197
"owner": "numtide",
1346
1198
"repo": "treefmt-nix",
1347
-
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
1199
+
"rev": "720bd006d855b08e60664e4683ccddb7a9ff614a",
1348
1200
"type": "github"
1349
1201
},
1350
1202
"original": {
···
1355
1207
},
1356
1208
"unstable": {
1357
1209
"locked": {
1358
-
"lastModified": 1748026106,
1359
-
"narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=",
1210
+
"lastModified": 1747542820,
1211
+
"narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=",
1360
1212
"owner": "nixos",
1361
1213
"repo": "nixpkgs",
1362
-
"rev": "063f43f2dbdef86376cc29ad646c45c46e93234c",
1214
+
"rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043",
1363
1215
"type": "github"
1364
1216
},
1365
1217
"original": {
···
1371
1223
},
1372
1224
"utils": {
1373
1225
"inputs": {
1374
-
"systems": "systems_3"
1226
+
"systems": "systems"
1375
1227
},
1376
1228
"locked": {
1377
1229
"lastModified": 1701680307,
···
1387
1239
"type": "github"
1388
1240
}
1389
1241
},
1242
+
"utils_2": {
1243
+
"locked": {
1244
+
"lastModified": 1653893745,
1245
+
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
1246
+
"owner": "numtide",
1247
+
"repo": "flake-utils",
1248
+
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
1249
+
"type": "github"
1250
+
},
1251
+
"original": {
1252
+
"owner": "numtide",
1253
+
"repo": "flake-utils",
1254
+
"type": "github"
1255
+
}
1256
+
},
1390
1257
"vim-tidal-src": {
1391
1258
"flake": false,
1392
1259
"locked": {
1393
-
"lastModified": 1685703852,
1394
-
"narHash": "sha256-8gyk17YLeKpLpz3LRtxiwbpsIbZka9bb63nK5/9IUoA=",
1260
+
"lastModified": 1664252474,
1261
+
"narHash": "sha256-hleiK2Q7xYndpB+tIbyyXIM2sk4NunUh9DPgMqmf/Wc=",
1395
1262
"owner": "tidalcycles",
1396
1263
"repo": "vim-tidal",
1397
-
"rev": "e440fe5bdfe07f805e21e6872099685d38e8b761",
1264
+
"rev": "b07f5c12986fb837e055d7fcf0acf3b7e248148f",
1398
1265
"type": "github"
1399
1266
},
1400
1267
"original": {
1401
1268
"owner": "tidalcycles",
1269
+
"ref": "master",
1402
1270
"repo": "vim-tidal",
1403
1271
"type": "github"
1404
1272
}
···
1436
1304
},
1437
1305
"original": {
1438
1306
"owner": "supercollider-quarks",
1307
+
"ref": "master",
1439
1308
"repo": "vowel",
1440
-
"type": "github"
1441
-
}
1442
-
},
1443
-
"xr-linux": {
1444
-
"inputs": {
1445
-
"flake-compat": "flake-compat_5",
1446
-
"flake-utils": "flake-utils_4",
1447
-
"nixpkgs": [
1448
-
"unstable"
1449
-
]
1450
-
},
1451
-
"locked": {
1452
-
"lastModified": 1746033220,
1453
-
"narHash": "sha256-l4pISN7GDSL2o0BddkWtdCX4k4BjAaW0xwo5DbhfO8A=",
1454
-
"owner": "shymega",
1455
-
"repo": "XRLinuxDriver",
1456
-
"rev": "c6cd02d547f87a156538c131e09ee4d41eb79325",
1457
-
"type": "github"
1458
-
},
1459
-
"original": {
1460
-
"owner": "shymega",
1461
-
"ref": "shymega/nix-flake-support",
1462
-
"repo": "XRLinuxDriver",
1463
1309
"type": "github"
1464
1310
}
1465
1311
}
+23
-66
flake.nix
+23
-66
flake.nix
···
1
1
{
2
-
description = "Sealight NixOS Config";
2
+
description = "Your new nix config";
3
3
4
4
inputs = {
5
5
# Nixpkgs
6
-
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
6
+
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
7
7
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
8
8
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
9
-
10
-
# ngipkgs.url = "github:Chickensoupwithrice/ngipkgs?ref=aynish/atomic-server-module";
11
-
# ngipkgs-local.url = "path:/home/anish/usr/ngipkgs";
12
9
13
10
# Home manager
14
11
home-manager.url = "github:nix-community/home-manager/release-25.05";
···
37
34
# Matrix
38
35
nix-matrix-appservices.url = "gitlab:coffeetables/nix-matrix-appservices";
39
36
40
-
# Jovian
41
-
jovian = {
42
-
url = "github:jovian-experiments/jovian-nixos";
43
-
inputs.nixpkgs.follows = "unstable";
44
-
};
45
-
# Breezy XR for Jovian
46
-
xr-linux = {
47
-
url = "github:shymega/XRLinuxDriver?ref=shymega/nix-flake-support";
48
-
inputs.nixpkgs.follows = "unstable";
49
-
};
50
-
breezy = {
51
-
url = "github:shymega/breezy-desktop?ref=shymega/add-nix-flake-support";
52
-
inputs.nixpkgs.follows = "unstable";
53
-
};
54
37
# OSX
55
38
darwin = {
56
-
url = "github:LnL7/nix-darwin/master";
39
+
url = "github:nix-darwin/nix-darwin/nix-darwin-25.05";
57
40
inputs.nixpkgs.follows = "nixpkgs";
58
41
};
59
42
nix-homebrew = {
···
119
102
, homebrew-cask
120
103
, sourcegraph-src-cli-cask
121
104
, sg-nvim
122
-
, jovian
123
-
, breezy
124
-
, xr-linux
125
105
, ...
126
106
}@inputs:
127
107
let
···
187
167
# ];
188
168
overlays = [
189
169
agenix.overlays.default
190
-
self.overlays.additions
191
-
self.overlays.modifications
192
170
tidalcycles.overlays.default # needed for nvim which comes pre-installed lol
193
171
];
194
172
});
195
173
196
-
# for deck
197
-
deckPkgsFor = forAllSystems (system: import unstable {
198
-
inherit system;
199
-
config = {
200
-
allowUnfree = true;
201
-
};
202
-
overlays = [
203
-
breezy.overlays.default
204
-
xr-linux.overlays.default
205
-
nur.overlay
206
-
];
207
-
});
208
-
209
174
darwinSystems = [ "aarch64-darwin" "x86_64-darwin" ];
210
175
in
211
176
{
···
275
240
agenix.nixosModules.age
276
241
self.nixosModules.backup
277
242
self.nixosModules.wireguard
278
-
self.nixosModules.wallabag
279
243
nixos-hardware.nixosModules.lenovo-thinkpad-x270
280
244
home-manager.nixosModules.home-manager
281
245
{
···
297
261
agenix.nixosModules.age
298
262
self.nixosModules.backup
299
263
self.nixosModules.wireguard
300
-
basant.nixosModule
301
264
# self.nixosModules.microbin
302
265
disko.nixosModules.disko
303
-
{
304
-
nixpkgs.flake.setNixPath = false;
305
-
nixpkgs.flake.setFlakeRegistry = false;
306
-
}
307
266
];
308
267
};
309
268
···
326
285
];
327
286
};
328
287
288
+
cube = nixpkgs.lib.nixosSystem rec {
289
+
specialArgs = { inherit inputs self; };
290
+
system = "x86_64-linux";
291
+
pkgs = litePkgsFor.${system};
292
+
modules = [
293
+
./hosts/cube
294
+
agenix.nixosModules.age
295
+
self.nixosModules.backup
296
+
self.nixosModules.wireguard
297
+
basant.nixosModule
298
+
];
299
+
};
300
+
329
301
box = nixpkgs.lib.nixosSystem rec {
330
302
specialArgs = { inherit inputs self; };
331
303
system = "x86_64-linux";
···
336
308
self.nixosModules.backup
337
309
self.nixosModules.wireguard
338
310
self.nixosModules.gonic
339
-
self.nixosModules.gpodder2go
340
311
self.nixosModules.wallabag
341
312
self.nixosModules.ulogger-server
342
313
grasp.nixosModule
···
349
320
}
350
321
];
351
322
};
352
-
353
-
deck = unstable.lib.nixosSystem rec {
354
-
specialArgs = { inherit inputs self; };
355
-
system = "x86_64-linux";
356
-
pkgs = deckPkgsFor.${system};
357
-
modules = [
358
-
./hosts/deck
359
-
jovian.nixosModules.default
360
-
self.nixosModules.wireguard
361
-
agenix.nixosModules.age
362
-
self.nixosModules.backup
363
-
home-manager.nixosModules.home-manager
364
-
{
365
-
nix.registry.nixpkgs.flake = unstable;
366
-
home-manager.useGlobalPkgs = true;
367
-
home-manager.useUserPackages = true;
368
-
home-manager.users.anish = import ./home/gui;
369
-
}
370
-
];
371
-
};
372
323
};
373
324
374
325
# Standalone home-manager configuration entrypoint
···
389
340
hostname = "mossnet.lan";
390
341
autoRollback = false;
391
342
magicRollback = false;
392
-
remoteBuild = true;
393
343
profiles.system = {
394
344
user = "root";
395
345
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.box;
···
410
360
profiles.system = {
411
361
user = "root";
412
362
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.helix;
363
+
};
364
+
};
365
+
cube = {
366
+
hostname = "lakhwara.com";
367
+
profiles.system = {
368
+
user = "root";
369
+
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cube;
413
370
};
414
371
};
415
372
};
+2
-1
home/core/default.nix
+2
-1
home/core/default.nix
+1
-1
home/darwin/default.nix
+1
-1
home/darwin/default.nix
···
14
14
home.homeDirectory = "/Users/anishlakhwara";
15
15
home.stateVersion = "22.05";
16
16
17
-
programs.zsh.initExtra = ''
17
+
programs.zsh.initContent = ''
18
18
PATH=/Users/anishlakhwara/.sourcegraph/bin:/Users/anishlakhwara/.sourcegraph/sg.zsh_autocomplete:/Users/anishlakhwara/google-cloud-sdk/bin:/Users/anishlakhwara/google-cloud-sdk/completion.zsh.inc:/Users/anishlakhwara/google-cloud-sdk/path.zsh.inc:/Users/anishlakhwara/.sg:/opt/homebrew/bin:$PATH
19
19
'';
20
20
-1
home/gui/default.nix
-1
home/gui/default.nix
+11
-15
home/profiles/cli/default.nix
+11
-15
home/profiles/cli/default.nix
···
1
1
{ lib, pkgs, config, ... }:
2
2
{
3
3
home.packages = with pkgs; [
4
-
# unstable.claude-code
4
+
#unstable.claude-code
5
5
binutils
6
6
# coreutils
7
7
dnsutils
···
9
9
dosfstools
10
10
# git
11
11
git-machete
12
-
git-spice
13
-
# jujitsu
14
12
asciinema
15
13
bottom
16
14
gptfdisk
···
37
35
iftop
38
36
wget
39
37
curl
40
-
eza
38
+
eza
41
39
bat
42
40
fd
43
-
ncdu
44
-
du-dust
45
-
# dia-cli
41
+
# ncdu
46
42
duf
47
43
trash-cli
48
44
nix-index
···
69
65
taskwarrior-tui
70
66
zk
71
67
diffnav
68
+
jujutsu
69
+
git-spice
72
70
73
71
# llms (needs 24.11)
74
72
aider-chat
···
141
139
enableCompletion = true;
142
140
autosuggestion.enable = false;
143
141
144
-
initExtra = ''
142
+
initContent = ''
143
+
bindkey -v
145
144
autopair-init
146
145
'';
147
146
sessionVariables = {
···
229
228
230
229
# modern cli tools
231
230
ls = "eza --icons";
232
-
l = "esa -l --icons";
231
+
l = "eza -l --icons";
233
232
la = "eza -la --icons";
234
233
tree = "ls --tree --icons";
235
234
cat = "bat";
···
241
240
make-secret = "< /dev/urandom \\tr -dc _A-Za-z0-9 | head -c \${1:-32};echo;";
242
241
243
242
# task warrior
243
+
# TODO: make blocked a context?
244
244
t = "task -BLOCKED -idea -backlog";
245
-
tw = "t rc.context:work";
246
-
# TODO find a reasonable way to manage this from a non-nix managed file in ~/.task/context or something
247
-
# we can do something like task rc.context:$(cat ~/.task/context) to read context
248
-
# and write a little script make-context = cat $@ > ~/.task/context or something
249
245
tt = "taskwarrior-tui -r list";
250
246
ti = "task +idea";
251
247
tb = "task +backlog list";
252
248
ttb = "taskwarrior-tui -r backlog";
253
249
tr = "task newest limit:page";
254
-
twait = "task +wait";
250
+
tw = "task +wait";
255
251
ta = "task add";
256
252
tai = "task add +idea";
257
253
tn = "task-note";
···
288
284
srch = "ns nixpkgs";
289
285
orch = "ns override";
290
286
nrb = "cd /tmp; sudo nixos-rebuild switch --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
291
-
nrd = "cd /tmp; NIXPKGS_ALLOW_UNFREE=1 darwin-rebuild switch --flake /Users/anishlakhwara/usr/helm#Anishs-MacBook-Pro --impure; cd $OLDPWD";
287
+
nrd = "cd /tmp; NIXPKGS_ALLOW_UNFREE=1 sudo darwin-rebuild switch --flake /Users/anishlakhwara/usr/helm#Anishs-MacBook-Pro --impure; cd $OLDPWD";
292
288
nrt = "cd /tmp; sudo nixos-rebuild test --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
293
289
ned = "cd /home/anish/usr/helm; vim; cd $OLDPWD";
294
290
ncd = "cd /home/anish/usr/helm";
home/profiles/desktop/Xresources
home/profiles/desktop/Xresources
+2
-2
home/profiles/desktop/bspwmrc
+2
-2
home/profiles/desktop/bspwmrc
···
6
6
# esac
7
7
8
8
export MONITOR=$(xrandr -q | grep primary | cut -d' ' -f1)
9
-
export MONITORS=($(xrandr -q | grep ' connected' | cut -d' ' -f1))
9
+
export MONITORS=( $(xrandr -q | grep ' connected' | cut -d' ' -f1) )
10
10
MONITOR=${MONITOR:-${MONITORS[0]}}
11
11
12
12
# Only have workspaces for primary monitor
···
26
26
bspc config focused_border_color "#bd93f9"
27
27
bspc config presel_feedback_color "#bd93f9"
28
28
29
-
bspc config split_ratio 0.71
29
+
bspc config split_ratio 0.71
30
30
31
31
# Extra padding for polybar
32
32
bspc config -m primary top_padding 34
+7
-4
home/profiles/desktop/default.nix
+7
-4
home/profiles/desktop/default.nix
···
22
22
paper-icon-theme
23
23
papirus-icon-theme
24
24
libsForQt5.qtstyleplugin-kvantum
25
-
# qt5ct
25
+
qt5ct
26
26
gtk-engine-murrine
27
27
gtk_engines
28
28
maim
···
30
30
inotify-tools
31
31
offpunk
32
32
termpdfpy
33
-
# libsForQt5.kontact
34
-
# thunderbird
33
+
libsForQt5.kontact
34
+
thunderbird
35
35
];
36
36
37
37
# GTK4 color scheme?
···
99
99
".local/bin/mpv-ify".source = ./bin/mpv-ify;
100
100
".local/bin/bspswallow".source = ./bin/bspswallow;
101
101
".config/bspwm/terminals".text = "Kitty";
102
+
".config/eww/eww.yuck".source = ./eww/eww.yuck;
103
+
".config/eww/eww.scss".source = ./eww/eww.scss;
104
+
".config/eww/widgets.yuck".source = ./eww/widgets.yuck;
102
105
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
103
106
};
104
107
···
120
123
121
124
qt = {
122
125
enable = true;
123
-
platformTheme.name = "gtk";
126
+
platformTheme = "gtk";
124
127
style = { name = "qt5ct-style"; };
125
128
};
126
129
home/profiles/desktop/polybar/run.sh
home/profiles/desktop/polybar/run.sh
+1
-1
home/profiles/email/default.nix
+1
-1
home/profiles/email/default.nix
···
175
175
bind editor ^T complete
176
176
177
177
# Press A to archive
178
-
macro index,pager A "<clear-flag><save-message>=/Archive" "mark message as Archived"
178
+
macro index,pager A "<clear-flag>N<save-message>=/Archive" "mark message as Archived"
179
179
# Press C to add contact to Khard address book
180
180
macro index,pager C \
181
181
"<pipe-message>khard add-email<return>" \
+1
-1
home/profiles/firefox/default.nix
+1
-1
home/profiles/firefox/default.nix
···
21
21
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
22
22
# Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
23
23
ublock-origin
24
-
# wallabagger
24
+
wallabagger
25
25
# tree-style-tab
26
26
tridactyl
27
27
promnesia
+4
-1
home/profiles/git/default.nix
+4
-1
home/profiles/git/default.nix
-4
home/profiles/nvim/config/after/syntax/vimwiki.vim
-4
home/profiles/nvim/config/after/syntax/vimwiki.vim
-11
home/profiles/nvim/config/fnl/conf/formatting.fnl
-11
home/profiles/nvim/config/fnl/conf/formatting.fnl
···
1
-
(import-macros {: do-req } :lib/macros)
2
-
3
-
(do-req :conform :setup
4
-
{:formatters_by_ft {:lua ["stylua"]
5
-
:nix ["nixfmt"]
6
-
; :go ["goimports" "gofmt"] ; Go handled in special case
7
-
:terraform ["terraform_fmt"]
8
-
:sh ["shfmt"]
9
-
:bazel ["buildifier"]}
10
-
:format_on_save {:lsp_format "fallback"
11
-
:timeout_ms 500}})
-51
home/profiles/nvim/config/fnl/conf/init.fnl
-51
home/profiles/nvim/config/fnl/conf/init.fnl
···
1
-
(local nvim (require :lib/nvim))
2
-
3
-
(nvim.g :mapleader " ")
4
-
5
-
; (nvim.opt :runtimepath (.. vim.opt.runtimepath "/home/anish/.config/nvim/,"))
6
-
(nvim.opt :tabstop 2)
7
-
(nvim.opt :showmatch true)
8
-
(nvim.opt :shiftwidth 2)
9
-
(nvim.opt :autoindent true)
10
-
(nvim.opt :undofile true)
11
-
(nvim.opt :signcolumn "auto:4")
12
-
(nvim.opt :title true)
13
-
(nvim.opt :number true)
14
-
; (nvim.opt :nocompatible)
15
-
(nvim.opt :relativenumber true)
16
-
(nvim.opt :showtabline 2)
17
-
(nvim.opt :expandtab true)
18
-
(nvim.opt :autowriteall true)
19
-
(nvim.opt :cmdheight 2)
20
-
(nvim.opt :spelllang "en_gb")
21
-
(nvim.opt :ignorecase true)
22
-
(nvim.opt :smartcase true)
23
-
(nvim.opt :incsearch true)
24
-
(nvim.opt :updatetime 300) ; Diagnostics response time
25
-
(nvim.opt :signcolumn "yes")
26
-
(nvim.opt :cursorline true)
27
-
28
-
(nvim.opt :lisp true) ; include - in word to move better in snake-case)
29
-
(nvim.g :sexp_filetypes "clojure,scheme,lisp,janet,fennel,yuck") ; include the lisps I use
30
-
31
-
(nvim.opt :termguicolors)
32
-
(nvim.colorscheme "ayu-mirage")
33
-
34
-
(require :conf.plugins)
35
-
(require :conf.mappings)
36
-
(require :conf.lsp)
37
-
(require :conf.plugins.cmp)
38
-
(require :conf.formatting)
39
-
; (require :conf.kitaab)
40
-
41
-
; Spelling
42
-
(vim.api.nvim_create_autocmd ["BufRead" "BufNewFile"]
43
-
{:pattern ["*.wiki" "*.txt" "*.md" "*.tex"]
44
-
:command "setlocal spell"})
45
-
(vim.api.nvim_create_autocmd ["FileType"]
46
-
{:pattern ["mail"]
47
-
:command "setlocal spell"})
48
-
49
-
; Svelte
50
-
(vim.api.nvim_create_autocmd ["BufNewFile" "BufRead"] {:pattern ["*.svelte"]
51
-
:command "setf svelte"})
-99
home/profiles/nvim/config/fnl/conf/lsp.fnl
-99
home/profiles/nvim/config/fnl/conf/lsp.fnl
···
1
-
(import-macros {: do-req } :lib/macros)
2
-
(local lspkind (require :lspkind))
3
-
(local lspconfig (require :lspconfig))
4
-
; (local lspsaga (require :lspsaga))
5
-
(local cmp (require :cmp))
6
-
(local nvim (require :lib/nvim))
7
-
; (local lspfuzzy (require :lspfuzzy)) ; Not available on Nix
8
-
; (local sg (require :sg))
9
-
; (local lsputil (require :lspconfig/util))
10
-
11
-
;(lspsaga.setup {:border_style "rounded"
12
-
; :code_action_icon ""
13
-
; :code_action_num_shortcut false
14
-
; :ui {:code_action ""}
15
-
; :show_outline {:enable false}))
16
-
;
17
-
;(nvim.opt :winbar nil)
18
-
19
-
(local signs {:Error "๎ช "
20
-
:Warn "๏ฑ "
21
-
:Hint "๏ "
22
-
:Info "๏ "})
23
-
(each [t icon (pairs signs)]
24
-
(let [hl (.. "DiagnosticSign" t)]
25
-
(vim.fn.sign_define hl {:text icon
26
-
:texthl hl
27
-
:numhl hl})))
28
-
29
-
(tset vim.lsp.handlers
30
-
:textDocument/hover
31
-
(vim.lsp.with vim.lsp.handlers.hover
32
-
{:focusable false :border "rounded"}))
33
-
(tset vim.lsp.handlers
34
-
:textDocument/signatureHelp
35
-
(vim.lsp.with vim.lsp.handlers.signature_help
36
-
{:focusable false :border "rounded"}))
37
-
38
-
(local capabilities (let [cmp_nvim_lsp (require :cmp_nvim_lsp)]
39
-
(cmp_nvim_lsp.default_capabilities)))
40
-
41
-
(local formatting-augroup (nvim.augroup :LspFormatting))
42
-
43
-
(fn goimports [wait-ms]
44
-
(let [params (vim.lsp.util.make_range_params)
45
-
result (do
46
-
(tset params :context {:only [:source.organizeImports]})
47
-
(vim.lsp.buf_request_sync 0 :textDocument/codeAction params wait-ms))]
48
-
(each [_ res (pairs (or result {}))]
49
-
(each [_ r (pairs (or res.result {}))]
50
-
(if r.edit
51
-
(vim.lsp.util.apply_workspace_edit r.edit "utf-16")
52
-
(vim.lsp.buf.execute_command r.command))))
53
-
(vim.lsp.buf.format)))
54
-
55
-
(fn on-attach [client bufnr]
56
-
(let [filetype (vim.api.nvim_buf_get_option 0 "filetype")]
57
-
(if (client.supports_method "textDocument/formatting")
58
-
(do (nvim.autocmd "BufWritePre"
59
-
{:group formatting-augroup
60
-
:buffer bufnr
61
-
:callback (fn [_] (if (= filetype "go")
62
-
(goimports 2000)
63
-
(vim.lsp.buf.format {:bufnr bufnr})))})))))
64
-
65
-
(lspconfig.gopls.setup
66
-
{:capabilities capabilities
67
-
:codelens {:generate true :gc_details true}
68
-
:semanticTokens true
69
-
:flags {:debounce_text_changes 200}
70
-
:analyses {:unusedparams true
71
-
:unusedvariables true
72
-
:unusedwrite true
73
-
:nilness true
74
-
:unusedwrite true
75
-
:useany true}
76
-
:completeUnimported true
77
-
:staticcheck true
78
-
:experimentalPostfixCompletions true
79
-
:hints {:constantValues true
80
-
:functionTypeParameters true
81
-
:assignVariablesTypes true
82
-
:compositeLiteralTypes true
83
-
:compositeLiteralFields true
84
-
:parameterNames true
85
-
:rangeVariableTypes true}
86
-
:on_attach on-attach})
87
-
88
-
(local lsps [:nil_ls :terraform_lsp :fennel_ls :tsserver :starbin])
89
-
(each [index lsp (ipairs lsps)]
90
-
((. (. lspconfig lsp) :setup) {}))
91
-
92
-
; null-ls
93
-
(let [null-ls (require :null-ls)]
94
-
(null-ls.setup {:sources [; TODO fix these
95
-
;null-ls.builtins.diagnostics.shellcheck
96
-
null-ls.builtins.diagnostics.commitlint]}))
97
-
;null-ls.builtins.diagnostics.jsonlint]}))
98
-
;(null-ls.builtins.diagnostics.proselint.with {:filetypes ["vimwiki" "mail"]})]}))
99
-
-140
home/profiles/nvim/config/fnl/conf/mappings.fnl
-140
home/profiles/nvim/config/fnl/conf/mappings.fnl
···
1
-
(local nvim (require :lib/nvim))
2
-
(import-macros {: do-req } :lib/macros)
3
-
4
-
(local wk (require :which-key))
5
-
6
-
;; Convenient way to indent stuff in visual mode
7
-
(nvim.keymap [:v] "<" "<gv" {:noremap true})
8
-
(nvim.keymap [:v] ">" ">gv" {:noremap true})
9
-
(nvim.keymap [:n] "<space>" "<NOP>" {:noremap true :silent true})
10
-
;; Convenient way to move stuff in visual mode
11
-
(nvim.keymap [:v] "J" ":m '>+1<CR>gv=gv" {:noremap true})
12
-
(nvim.keymap [:v] "K" ":m '>-2<CR>gv=gv" {:noremap true})
13
-
;; Convientent screen shifting
14
-
(nvim.keymap [:n] "n" "nzzzv" {:noremap true})
15
-
(nvim.keymap [:n] "N" "Nzzzv" {:noremap true})
16
-
(nvim.keymap [:n] "J" "mzJ'z" {:noremap true})
17
-
; Fix Y
18
-
(nvim.keymap [:n] "Y" "y$")
19
-
; Unmap Q
20
-
(nvim.keymap [] "Q" "<Nop>")
21
-
; TODO
22
-
; ESC clears search
23
-
; (nvim.keymap [:n] "<ESC>" "")
24
-
25
-
; FTerm
26
-
(vim.api.nvim_create_user_command "FTermToggle" (fn [_]
27
-
((-> (require :FTerm)
28
-
(. :toggle))))
29
-
{:bang true})
30
-
(nvim.keymap [:t] "<TAB>" "<cmd>:FTermToggle<CR>")
31
-
(nvim.keymap [:n] "<TAB>" "<cmd>:FTermToggle<CR>" {:noremap true})
32
-
33
-
; Buffer Movement
34
-
(nvim.keymap [:n] "gT" ":BufferPrevious<CR>" {:silent true :noremap true})
35
-
(nvim.keymap [:n] "gt" ":BufferNext<CR>" {:silent true :noremap true})
36
-
(nvim.keymap [:n] "gj" ":BufferPick<CR>" {:silent true :noremap true})
37
-
(nvim.keymap [:n] "gb" ":Telescope buffers<CR>" {:silent true :noremap true})
38
-
(nvim.keymap [:n] "gq" ":BufferClose<CR>" {:silent true :noremap true})
39
-
40
-
; Flash
41
-
(vim.api.nvim_create_user_command "Flash" (fn [_] (do-req :flash :jump)) {})
42
-
(vim.api.nvim_create_user_command "FlashTreesitter" (fn [] (do-req :flash :treesitter)) {})
43
-
(nvim.keymap [:n] "f" "<cmd>Flash<CR>")
44
-
(nvim.keymap [:n] "s" "<cmd>FlashTreesitter<CR>")
45
-
46
-
(local
47
-
normal-map-leader
48
-
{"t" [":Neotree toggle<CR>"
49
-
"Toggle neo-tree"]
50
-
"w" ["<cmd>:w<cr>"
51
-
"Write file"]
52
-
"q" ["<cmd>:q<cr>"
53
-
"Quit"]
54
-
"r" [":RainbowParenthesesToggleAll<CR>"
55
-
"Toggle Rainbow Parens"]
56
-
"u" [":UndotreeToggle<CR>"
57
-
"Toggle Undo Tree"]
58
-
; Telescope
59
-
"f" {:name "Files"
60
-
:f ["<cmd>Telescope find_files<cr>"
61
-
"Find Files (in Telescope)"]
62
-
:g ["<cmd>Telescope live_grep<cr>"
63
-
"Find Grep (in Telescope)"]
64
-
:b ["<cmd>Telescope buffers<cr>"
65
-
"Find Buffers"]
66
-
:h ["<cmd>Telescope help_tags<cr>"
67
-
"Find Help"]
68
-
:t ["<cmd>Telescope tags<cr>"
69
-
"Find Tags"]
70
-
:r ["<cmd>Telescope oldfiles<CR>"
71
-
"Recent files"]}
72
-
; Git
73
-
"g" {:name "Git"
74
-
"s" [":G<CR>"
75
-
"Git Status"]
76
-
"f" [":G fetch --all<cr>"
77
-
"Git Fetch"]
78
-
"b" [":GBranches<cr>"
79
-
"Git Branch"]
80
-
"p" [":Git! push<cr>"
81
-
"Git Push"]
82
-
"d" [":GDiff<cr>"
83
-
"Git Diff"]
84
-
"h" [""
85
-
"Commit Hunk under Cursor"]}
86
-
; For handling merges
87
-
; nmap <leader>gl :diffget //3<CR>
88
-
; nmap <leader>gh :diffget //2<CR>
89
-
; nnoremap <leader>gc :G commit -v -q %:p<CR>
90
-
; Buffers
91
-
"b" {:name "Buffer"
92
-
:b ["<cmd>:Telescope buffers<CR>"
93
-
"Buffer List"]
94
-
:q ["<cmd>:BufferClose<CR>"
95
-
"Buffer Quit"]
96
-
:n ["<cmd>:BufferNext<CR>"
97
-
"Buffer Next"]
98
-
:N ["<cmd>:tabp<CR>"
99
-
"Buffer Previous"]
100
-
:p ["<cmd>:tabp<CR>"
101
-
"Buffer Previous"]}
102
-
; Search
103
-
"s" {:name "Search"
104
-
:b ["<cmd>Telescope current_buffer_fuzzy_find<CR>"
105
-
"Search in current buffer"]
106
-
:s ["<cmd>Telescope live_grep<CR>"
107
-
"Search in project"]
108
-
:t ["<cmd>TodoTelescope<CR>"
109
-
"Search TODOs in project"]
110
-
:c ["<cmd>let @/ = \"\"<CR>:echo 'Search highlight cleared'<CR>"
111
-
"Clear search"]
112
-
:g ["<cmd>Telescope live_grep<cr>"
113
-
"Find Grep (in Telescope)"]}
114
-
; Code
115
-
"c" {:name "Code"
116
-
:d [":lua vim.lsp.buf.definition()<CR>"
117
-
"Go to Definition"]
118
-
:i [":lua require('telescope.builtin').lsp_implementation()<CR>"
119
-
"Implementation"]
120
-
:s [":lua vim.lsp.buf.signature_help()<CR>"
121
-
"Signature Help"]
122
-
:r [":Lspsaga rename<CR>"
123
-
"Rename Symbol"]
124
-
:h [":Lspsaga hover_doc<CR>"
125
-
"Hover doc"]
126
-
:o ["<cmd>AerialToggle!<CR>"
127
-
"Outline"]
128
-
:t [":LspDiagnostics 0"
129
-
"Find Errors in Buffer"]}
130
-
; Kitaab
131
-
"z" {:name "Kitaab"
132
-
:n [":ZettelNew<CR>"
133
-
"Zettel New"]}
134
-
"v" {:name "Tabs"
135
-
:v [":vnew<CR>"
136
-
"Vertical Split"]
137
-
:h [":new<CR>"
138
-
"Horizontal Split"]}})
139
-
140
-
(wk.register normal-map-leader {:prefix "<leader>"})
-30
home/profiles/nvim/config/fnl/conf/music.fnl
-30
home/profiles/nvim/config/fnl/conf/music.fnl
···
1
-
(local nvim (require :lib/nvim))
2
-
3
-
(nvim.g :tidal_target "terminal")
4
-
(nvim.g :scnvim_snippet_format "luasnip")
5
-
6
-
; -- supercollider
7
-
; local scnvim = require 'scnvim'
8
-
; local map = scnvim.map
9
-
; local map_expr = scnvim.map_expr
10
-
; scnvim.setup {
11
-
; keymaps = {
12
-
; ['<localleader>e'] = map('editor.send_line', {'i', 'n'}),
13
-
; ['<localleader>s'] = map_expr('CmdPeriod.run', {'i', 'n'}),
14
-
; ['<localleader>t'] = {
15
-
; map('editor.send_block', {'i', 'n'}),
16
-
; map('editor.send_selection', 'x'),
17
-
; },
18
-
; ['<CR>'] = map('postwin.toggle'),
19
-
; ['<M-CR>'] = map('postwin.toggle', 'i'),
20
-
; ['<M-L>'] = map('postwin.clear', {'n', 'i'}),
21
-
; ['<C-k>'] = map('signature.show', {'n', 'i'}),
22
-
; ['<F12>'] = map('sclang.hard_stop', {'n', 'x', 'i'}),
23
-
; ['<leader>st'] = map('sclang.start'),
24
-
; ['<leader>sk'] = map('sclang.recompile'),
25
-
; ['<F1>'] = map_expr('s.boot'),
26
-
; ['<F2>'] = map_expr('s.meter'),
27
-
; }
28
-
; }
29
-
; -- You gotta run :SCNvimGenerateAssets for this first
30
-
; -- require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets())
-35
home/profiles/nvim/config/fnl/conf/plugins/cmp.fnl
-35
home/profiles/nvim/config/fnl/conf/plugins/cmp.fnl
···
1
-
(local cmp (require :cmp))
2
-
3
-
(fn has-words-before []
4
-
(let [(line col) (unpack (vim.api.nvim_win_get_cursor 0))
5
-
cur-line (. (vim.api.nvim_buf_get_lines 0
6
-
(- line 1)
7
-
line
8
-
true
9
-
1))]
10
-
(and (not= col 0)
11
-
(= (: (: cur-line :sub col col) :match "%s")
12
-
nil))))
13
-
14
-
(let [lspkind (require :lspkind)]
15
-
(cmp.setup {:formatting {:format (lspkind.cmp_format {:mode "symbol_text"
16
-
:maxwidth 50})
17
-
:show_labelDetails true}
18
-
:snippet {:expand (fn [args] (vim.snippet.expand args.body))}
19
-
:sources [{:name "buffer"} {:name "nvim_lsp"}
20
-
{:name "look"} {:name "path"}
21
-
{:name "calc"} {:name "spell"}
22
-
{:name "tags"}]
23
-
:mapping {"<C-d>" (cmp.mapping.scroll_docs -4)
24
-
"<C-u>" (cmp.mapping.scroll_docs 4)
25
-
"<C-g>" (cmp.mapping.close)
26
-
"<CR>" (cmp.mapping.confirm {:select true})
27
-
"<Tab>" (cmp.mapping (fn [fallback]
28
-
(if (cmp.visible) (cmp.select_next_item)
29
-
(has-words-before) (cmp.complete)
30
-
(fallback)))
31
-
[:i :s])
32
-
"<S-Tab>" (cmp.mapping (fn [fallback]
33
-
(if (cmp.visible) (cmp.select_prev_item)
34
-
(fallback)))
35
-
[:i :s])}}))
-38
home/profiles/nvim/config/fnl/conf/plugins/kitaab.fnl
-38
home/profiles/nvim/config/fnl/conf/plugins/kitaab.fnl
···
1
-
; Kitaab is why I'm so tied to vim.
2
-
; If only I could find a nice notes editor...
3
-
4
-
(local nvim (require :lib/nvim))
5
-
6
-
(import-macros {: do-req } :lib/macros)
7
-
8
-
(nvim.g :vimwiki_list [{:path "~/kitaab/vimwiki"
9
-
:auto_tags 1
10
-
:auto_diary_index 1
11
-
:auto_generate_links 0
12
-
:nested_syntaxes {:python "python"
13
-
:c++ "cpp"
14
-
:nix "nix"
15
-
:bash "sh"}}])
16
-
(nvim.g :zettel_format "%y%m%d-%H%M")
17
-
18
-
; Custom functions
19
-
(fn update_date []
20
-
(var written false)
21
-
(let [time (os.date "%Y-%m-%d %H:%M")
22
-
message (.. "%update " time)
23
-
lines (vim.api.nvim_buf_get_lines 0 0 4 false)]
24
-
(each [index line (ipairs lines)]
25
-
(if (and (= (length line) 0) (not written))
26
-
(do
27
-
(vim.api.nvim_buf_set_lines 0 (- index 1) index false [message ""])
28
-
(set written true)))
29
-
(if (and (= index 4) (not written))
30
-
(vim.api.nvim_buf_set_lines 0 3 index false [message])))))
31
-
32
-
; Custom function for inserting links through telescope grep_search
33
-
; Visual mode too!
34
-
35
-
(vim.api.nvim_create_autocmd "BufWritePre" {:pattern ["*.wiki"]
36
-
:callback update_date})
37
-
38
-
(do-req :hologram :setup {:auto_display false})
-47
home/profiles/nvim/config/fnl/conf/plugins.fnl
-47
home/profiles/nvim/config/fnl/conf/plugins.fnl
···
1
-
(local nvim (require :lib/nvim))
2
-
(local navic (require :nvim-navic))
3
-
4
-
(import-macros {: do-req } :lib/macros)
5
-
6
-
(let [lualine (require :lualine)]
7
-
(lualine.setup {:options {:theme "ayu"}
8
-
:sections {; :lualine_c [:filename (fn []
9
-
; (let [lspsaga (require :lspsaga.symbol.winbar)]
10
-
; (lspsaga.get_bar))
11
-
:lualine_y [(fn []
12
-
(var msg "No Active LSP")
13
-
(let [buf_ft (vim.api.nvim_buf_get_option 0 "filetype")
14
-
clients (vim.lsp.get_active_clients)]
15
-
(each [_ client (ipairs clients)]
16
-
(let [filetypes (. client :config :filetypes)]
17
-
(if (and filetypes (vim.fn.index filetypes buf_ft)) (set msg client.name))))
18
-
msg))]
19
-
:lualine_x [:filetype]}}))
20
-
21
-
(require :neo-tree)
22
-
(do-req :gitsigns :setup)
23
-
(do-req :marks :setup)
24
-
; (do-req :mini.pairs :setup)
25
-
(do-req :mini.diff :setup)
26
-
(do-req :mini.ai :setup)
27
-
(do-req :mini.surround :setup {:mappings {:add "ys"
28
-
:delete "ds"
29
-
:replace "cs"}})
30
-
(do-req :todo-comments :setup)
31
-
(do-req :ibl :setup {:scope {:exclude {:language ["fennel" "clojure" "janet"]}}})
32
-
33
-
(do-req :nvim-treesitter.configs :setup {:highlight {:enable true}
34
-
:textobjects {:enable true}
35
-
:indent {:enable true}})
36
-
(do-req :treesitter-context :setup {:max_lines 5})
37
-
38
-
(do-req :auto-session :setup {:log_level "info"
39
-
:auto_session_suppress_dirs ["~/"]})
40
-
(nvim.opt :sessionoptions "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions")
41
-
42
-
(do-req :aerial :setup {}) ;{:on_attach (fn [bufnr]
43
-
; (do
44
-
; (vim.keymap.set "n" "{" "<cmd>AerialPrev<CR>" { :buffer bufnr})
45
-
; (vim.keymap.set "n" "}" "<cmd>AerialNext<CR>" { :buffer bufnr}))
46
-
47
-
(do-req :zk :setup)
-8
home/profiles/nvim/config/fnl/lib/macros.fnl
-8
home/profiles/nvim/config/fnl/lib/macros.fnl
-37
home/profiles/nvim/config/fnl/lib/nvim.fnl
-37
home/profiles/nvim/config/fnl/lib/nvim.fnl
···
1
-
(fn autocmd [events opts]
2
-
"Create autocommand"
3
-
(vim.api.nvim_create_autocmd events opts))
4
-
5
-
(fn clear-autocmds [opts]
6
-
"Clear autocommands"
7
-
(vim.api.nvim_clear_autocmds opts))
8
-
9
-
(fn augroup [name ?opts]
10
-
"Create autocommand group"
11
-
(vim.api.nvim_create_augroup name (or ?opts {})))
12
-
13
-
(fn keymap [mode lhs rhs ?opts]
14
-
"Sets a global mapping for the given mode.
15
-
Ex: `(keymap [:n :i] ...)`"
16
-
(let [string-mode (table.concat mode)]
17
-
(vim.api.nvim_set_keymap string-mode lhs rhs (or ?opts {}))))
18
-
19
-
(fn opt [key value]
20
-
"Set a vim option"
21
-
(tset vim.opt key value))
22
-
23
-
(fn g [key value]
24
-
"Set a vim global"
25
-
(tset vim.g key value))
26
-
27
-
(fn colorscheme [name]
28
-
"Set the current colorscheme"
29
-
(vim.cmd (.. "colorscheme " name)))
30
-
31
-
{: autocmd
32
-
: clear-autocmds
33
-
: augroup
34
-
: keymap
35
-
: opt
36
-
: g
37
-
: colorscheme}
-26
home/profiles/nvim/config/init.lua
-26
home/profiles/nvim/config/init.lua
···
1
-
if pcall(require, "hotpot") then
2
-
-- Setup hotpot.nvim
3
-
require("hotpot").setup({
4
-
provide_require_fennel = true,
5
-
-- show fennel compiler results in when editing fennel files
6
-
enable_hotpot_diagnostics = true,
7
-
compiler = {
8
-
-- options passed to fennel.compile for modules, defaults to {}
9
-
modules = {
10
-
-- not default but recommended, align lua lines with fnl source
11
-
-- for more debuggable errors, but less readable lua.
12
-
correlate = true
13
-
},
14
-
macros = {
15
-
-- allow macros to access vim global, needed for nyoom modules
16
-
env = "_COMPILER",
17
-
compilerEnv = _G,
18
-
allowGlobals = true,
19
-
},
20
-
}
21
-
})
22
-
-- Import neovim configuration
23
-
require("conf")
24
-
else
25
-
print("Unable to require hotpot")
26
-
end
+4
-132
home/profiles/nvim/default.nix
+4
-132
home/profiles/nvim/default.nix
···
1
1
{ pkgs, ... }:
2
-
# TODO Need to find a solution to have my own packages?
3
-
# Or at least update to recent versions of the packages I do use in nixpkgs
4
2
{
5
3
home.sessionVariables.EDITOR = "nvim";
6
4
home.shellAliases = {
7
-
vim = "nvim";
8
5
k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD";
9
-
# kitaab zettel
10
-
kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD";
11
-
# kitaab get by tagged
12
-
kt =
13
-
"cd /home/anish/kitaab/vimwiki; eza *_index.wiki | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./{}';cd $OLDPWD";
14
6
};
15
7
16
-
home.file.".config/nvim".source = ./config;
17
-
18
8
programs.neovim = {
19
9
enable = true;
10
+
package = pkgs.unstable.neovim-unwrapped;
20
11
extraPackages = with pkgs; [
21
-
# used to compile tree-sitter grammar
22
-
# python-with-my-packages
23
-
# nodejs
24
-
# clojure-lsp
25
-
# clojure
26
-
# clj-kondo
27
-
terraform-lsp
28
-
nil
29
-
gopls
30
-
gcc
31
-
shellcheck
32
-
shfmt
33
-
proselint
34
-
nixfmt
35
-
# statix
36
-
# nodePackages.typescript
37
-
# nodePackages.typescript-language-server
38
-
# luajitPackages.lua-lsp
39
-
fennel-ls
12
+
# used for Cody
13
+
nodejs
40
14
];
41
15
42
-
plugins = with pkgs.vimPlugins;
43
-
[
44
-
#hotpot
45
-
hotpot-nvim
46
-
nvim-navic
47
-
# ui
48
-
lualine-nvim
49
-
neo-tree-nvim
50
-
fzf-vim
51
-
vim-devicons
52
-
nvim-web-devicons
53
-
telescope-nvim
54
-
plenary-nvim
55
-
FTerm-nvim
56
-
barbar-nvim
57
-
neovim-ayu
58
-
rainbow_parentheses-vim
59
-
auto-session
60
-
which-key-nvim
61
-
aerial-nvim
62
-
todo-comments-nvim
63
-
indent-blankline-nvim
64
-
nvim-parinfer
65
-
66
-
# Tree sitter
67
-
(nvim-treesitter.withPlugins (p: [
68
-
p.nix
69
-
p.clojure
70
-
p.fennel
71
-
p.lua
72
-
p.html
73
-
p.css
74
-
p.regex
75
-
p.supercollider
76
-
p.beancount
77
-
p.markdown_inline
78
-
p.markdown
79
-
p.glsl
80
-
p.yaml
81
-
p.toml
82
-
p.dockerfile
83
-
p.json
84
-
p.go
85
-
p.svelte
86
-
p.javascript
87
-
p.janet-simple
88
-
p.starlark
89
-
]))
90
-
nvim-treesitter-context
91
-
nvim-treesitter-textobjects
92
-
93
-
# TODO
94
-
undotree
95
-
marks-nvim
96
-
97
-
# language
98
-
vim-nix
99
-
emmet-vim
100
-
csv-vim
101
-
direnv-vim
102
-
vim-svelte
103
-
# conjure
104
-
105
-
# kitaab stuff
106
-
vimwiki
107
-
vim-zettel
108
-
hologram-nvim
109
-
zk-nvim
110
-
111
-
# lsp stuff
112
-
nvim-lspconfig
113
-
nvim-cmp
114
-
cmp-nvim-lsp
115
-
cmp-treesitter
116
-
# cmp-conjure
117
-
cmp-buffer
118
-
cmp-path
119
-
cmp-spell
120
-
lspkind-nvim
121
-
conform-nvim
122
-
none-ls-nvim
123
-
mini-nvim
124
-
# nvim-lspfuzzy
125
-
126
-
# git stuff
127
-
vim-fugitive
128
-
gitsigns-nvim
129
-
fzf-checkout-vim
130
-
131
-
# Clojure stuff
132
-
# conjure
133
-
vim-sexp
134
-
vim-sexp-mappings-for-regular-people
135
-
fennel-vim
136
-
137
-
# nvim-luapad
138
-
# scnvim
139
-
flash-nvim
140
-
vim-beancount
141
-
]; # ++ [ pkgs.vimPlugins.vim-tidal ];
142
-
# withPython3 = true;
143
-
# extraPython3Packages = pkgs: with pkgs; [ tasklib six ];
144
-
# vimAlias = true;
16
+
vimAlias = true;
145
17
};
146
18
}
147
19
home/profiles/task/bin/set-backlog.sh
home/profiles/task/bin/set-backlog.sh
home/profiles/task/bin/set-focus.sh
home/profiles/task/bin/set-focus.sh
-5
home/profiles/task/taskrc
-5
home/profiles/task/taskrc
···
82
82
report.every.labels=ID,Active,Deps,P,Project,Tag,Recur,S,Due,Until,Description
83
83
report.every.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description
84
84
85
-
report.poms.filter=(status:pending -idea -backlog -BLOCKED)
86
-
report.poms.labels=UUID,ID,Project,Tag,Description
87
-
report.poms.columns=uuid,id,project,tags,description
88
-
report.poms.sort=start+,urgency+
89
-
90
85
# Urgency
91
86
urgency.user.project.wait.coefficient=-10.0
92
87
urgency.user.project.craft.coefficient=1.9
+1
-1
hosts/box/configuration.nix
+1
-1
hosts/box/configuration.nix
···
91
91
sound.enable = false;
92
92
93
93
programs.gnupg.agent.enable = true;
94
-
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-curses;
94
+
programs.gnupg.agent.pinentryFlavor = "curses";
95
95
programs.gnupg.agent.enableSSHSupport = true;
96
96
97
97
# This value determines the NixOS release with which your system is to be
+5
-7
hosts/box/default.nix
+5
-7
hosts/box/default.nix
···
7
7
../profiles/taskd
8
8
../profiles/shaarli
9
9
../profiles/dns
10
-
# ../profiles/monitoring
10
+
../profiles/monitoring
11
11
../profiles/nfs
12
12
../profiles/gonic
13
-
# ../profiles/headphones # TODO broken on 23.11, see: https://github.com/rembo10/headphones/issues/3320
13
+
../profiles/headphones
14
14
../profiles/radicale
15
-
# ../profiles/seafile # waiting for https://github.com/NixOS/nixpkgs/pull/249523 to be merged
15
+
../profiles/seafile
16
16
../profiles/syncthing
17
17
../profiles/dhyan
18
18
../profiles/calibre
···
22
22
../profiles/grasp
23
23
# ../profiles/archivebox
24
24
# ../profiles/woodpecker-agent
25
-
# ../profiles/jellyfin
25
+
../profiles/jellyfin
26
26
../profiles/ulogger-server
27
-
../profiles/photoprism # Replace with immich
28
-
../profiles/gpodder
29
-
#../profiles/postgres_upgrade_script
27
+
../profiles/photoprism
30
28
];
31
29
32
30
# Backups
+1
-1
hosts/curve/configuration.nix
+1
-1
hosts/curve/configuration.nix
+12
-29
hosts/curve/default.nix
+12
-29
hosts/curve/default.nix
···
1
-
{ self, pkgs, ... }: {
1
+
{ self, pkgs, ... }:
2
+
{
2
3
imports = [
3
4
./configuration.nix
4
5
../users/anish
···
16
17
# ../profiles/mount-mossnet
17
18
];
18
19
19
-
# temporarily allow ssh access for work, to be able to do deploy new services
20
-
services.openssh = {
21
-
enable = true;
22
-
settings.PasswordAuthentication = false;
23
-
settings.PermitRootLogin = "no";
24
-
};
25
-
26
20
# import profiling tools
27
21
programs.systemtap.enable = true;
28
22
29
-
virtualisation.docker.enable = true;
30
-
virtualisation.docker.storageDriver = "btrfs";
31
-
environment.systemPackages = with pkgs; [ docker-compose ];
32
-
33
23
# Speed up boot by removing dependency on network
34
24
systemd = {
35
-
targets.network-online.wantedBy =
36
-
pkgs.lib.mkForce [ ]; # Normally ["multi-user.target"]
37
-
services.NetworkManager-wait-online.wantedBy =
38
-
pkgs.lib.mkForce [ ]; # Normally ["network-online.target"]
25
+
targets.network-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["multi-user.target"]
26
+
services.NetworkManager-wait-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["network-online.target"]
39
27
};
40
28
41
29
programs.gnupg.agent.enable = true;
42
-
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;
30
+
programs.gnupg.agent.pinentryFlavor = "gnome3";
43
31
44
32
fileSystems."/mnt/ftp" = {
45
33
device = "192.168.1.240:/home/ftp";
···
70
58
71
59
# lazy enable of ports necessary for KDE connect which is installed via cli home profile (for some reason?)
72
60
networking.firewall = {
73
-
allowedTCPPorts = [ 22 ]; # allow ssh
74
-
allowedTCPPortRanges = [{
75
-
from = 1714;
76
-
to = 1764;
77
-
}];
78
-
allowedUDPPortRanges = [{
79
-
from = 1714;
80
-
to = 1764;
81
-
}];
61
+
allowedTCPPortRanges = [{ from = 1714; to = 1764; }];
62
+
allowedUDPPortRanges = [{ from = 1714; to = 1764; }];
82
63
};
83
64
84
65
age.secrets.curve-wg.file = "${self}/secrets/curve-wg.age";
···
94
75
mossnet.backup = {
95
76
enable = true;
96
77
name = "curve";
97
-
paths = [ "/home/anish/usr" "/home/anish/.ssh" ];
78
+
paths = [
79
+
"/home/anish/usr"
80
+
"/home/anish/.ssh"
81
+
];
98
82
};
99
83
100
84
# enable adb
···
103
87
#virtualisation.docker.enable = true;
104
88
boot.blacklistedKernelModules = [ "qcserial" ];
105
89
# Used for packer Capsul
106
-
users.users.anish.extraGroups =
107
-
[ "adbusers" "wheel" "plugdev" "libvertd" "docker" ];
90
+
users.users.anish.extraGroups = [ "adbusers" "wheel" "plugdev" "libvertd" ];
108
91
virtualisation.libvirtd.enable = true;
109
92
hardware.keyboard.zsa.enable = true;
110
93
services.udev.extraRules = ''
+16
-12
hosts/curve/hardware-configuration.nix
+16
-12
hosts/curve/hardware-configuration.nix
···
5
5
6
6
{
7
7
imports =
8
-
[ (modulesPath + "/installer/scan/not-detected.nix")
8
+
[
9
+
(modulesPath + "/installer/scan/not-detected.nix")
9
10
];
10
11
11
-
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
12
+
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
12
13
boot.initrd.kernelModules = [ "dm-snapshot" ];
13
14
boot.kernelModules = [ "kvm-intel" ];
14
15
boot.extraModulePackages = [ ];
15
16
17
+
fileSystems."/boot" =
18
+
{
19
+
device = "/dev/disk/by-uuid/2C41-3DAA";
20
+
fsType = "vfat";
21
+
};
22
+
16
23
fileSystems."/" =
17
-
{ device = "/dev/disk/by-uuid/e1268753-4f18-4e6f-8edb-d4724ad8eb4a";
24
+
{
25
+
device = "/dev/disk/by-uuid/a4ae2855-10b9-49f3-adb0-acd82b74eeb9";
18
26
fsType = "btrfs";
19
27
options = [ "subvol=root" ];
20
28
};
21
29
22
30
fileSystems."/home" =
23
-
{ device = "/dev/disk/by-uuid/e1268753-4f18-4e6f-8edb-d4724ad8eb4a";
31
+
{
32
+
device = "/dev/disk/by-uuid/a4ae2855-10b9-49f3-adb0-acd82b74eeb9";
24
33
fsType = "btrfs";
25
34
options = [ "subvol=home" ];
26
35
};
27
36
28
-
fileSystems."/boot" =
29
-
{ device = "/dev/disk/by-uuid/8244-A184";
30
-
fsType = "vfat";
31
-
};
32
-
33
37
swapDevices =
34
-
[ { device = "/dev/disk/by-uuid/e220fea6-cf3b-4687-bfe1-9cf6d3ba57f7"; }
35
-
];
38
+
[{ device = "/dev/disk/by-uuid/23658926-6ffa-42dc-8915-a6479c385e0b"; }];
36
39
37
40
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
38
41
# (the default) this is the recommended approach. When using systemd-networkd it's
···
43
46
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
44
47
45
48
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
46
-
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
49
+
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
50
+
# hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
47
51
}
+4
-3
hosts/darwin/default.nix
+4
-3
hosts/darwin/default.nix
···
44
44
};
45
45
};
46
46
47
+
system.primaryUser = "anishlakhwara";
47
48
# Auto upgrade nix package and the daemon service.
48
-
services.nix-daemon.enable = true;
49
49
nixpkgs.hostPlatform = "aarch64-darwin";
50
50
programs.zsh.enable = true;
51
51
···
55
55
settings.trusted-users = [ "@admin" "anishlakhwara" ];
56
56
57
57
gc = {
58
-
user = "root";
59
58
automatic = true;
60
59
interval = { Weekday = 0; Hour = 2; Minute = 0; };
61
60
options = "--delete-older-than 30d";
···
85
84
siji
86
85
font-awesome
87
86
proggyfonts
88
-
(nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; })
87
+
nerd-fonts.fira-code
88
+
nerd-fonts.droid-sans-mono
89
+
nerd-fonts.iosevka
89
90
];
90
91
91
92
system = {
-120
hosts/deck/configuration.nix
-120
hosts/deck/configuration.nix
···
1
-
# Edit this configuration file to define what should be installed on
2
-
# your system. Help is available in the configuration.nix(5) man page
3
-
# and in the NixOS manual (accessible by running โnixos-helpโ).
4
-
5
-
{ config, pkgs, ... }:
6
-
7
-
{
8
-
imports =
9
-
[ # Include the results of the hardware scan.
10
-
./hardware-configuration.nix
11
-
];
12
-
13
-
# Bootloader.
14
-
boot.loader.systemd-boot.enable = true;
15
-
boot.loader.efi.canTouchEfiVariables = true;
16
-
17
-
networking.hostName = "deck"; # Define your hostname.
18
-
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
19
-
20
-
# Configure network proxy if necessary
21
-
# networking.proxy.default = "http://user:password@proxy:port/";
22
-
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
23
-
24
-
# Enable networking
25
-
networking.networkmanager.enable = true;
26
-
27
-
# Set your time zone.
28
-
# time.timeZone = "America/Los_Angeles";
29
-
30
-
# Select internationalisation properties.
31
-
i18n.defaultLocale = "en_US.UTF-8";
32
-
33
-
# i18n.extraLocaleSettings = {
34
-
# LC_ADDRESS = "en_US.UTF-8";
35
-
# LC_IDENTIFICATION = "en_US.UTF-8";
36
-
# LC_MEASUREMENT = "en_US.UTF-8";
37
-
# LC_MONETARY = "en_US.UTF-8";
38
-
# LC_NAME = "en_US.UTF-8";
39
-
# LC_NUMERIC = "en_US.UTF-8";
40
-
# LC_PAPER = "en_US.UTF-8";
41
-
# LC_TELEPHONE = "en_US.UTF-8";
42
-
# LC_TIME = "en_US.UTF-8";
43
-
# };
44
-
45
-
# Enable the X11 windowing system.
46
-
# services.xserver.enable = true;
47
-
48
-
# Enable the GNOME Desktop Environment.
49
-
# services.xserver.displayManager.gdm.enable = true;
50
-
# services.xserver.desktopManager.gnome.enable = true;
51
-
52
-
# Configure keymap in X11
53
-
# services.xserver.xkb = {
54
-
# layout = "us";
55
-
# variant = "";
56
-
# };
57
-
58
-
59
-
# use the example session manager (no others are packaged yet so this is enabled by default,
60
-
# no need to redefine it in your config for now)
61
-
#media-session.enable = true;
62
-
63
-
# Enable touchpad support (enabled default in most desktopManager).
64
-
# services.xserver.libinput.enable = true;
65
-
66
-
# Define a user account. Don't forget to set a password with โpasswdโ.
67
-
# users.users.anish = {
68
-
# isNormalUser = true;
69
-
# extraGroups = [ "networkmanager" "wheel" ];
70
-
# packages = with pkgs; [
71
-
# # thunderbird
72
-
# ];
73
-
# };
74
-
75
-
# Enable automatic login for the user.
76
-
services.xserver.displayManager.autoLogin.enable = true;
77
-
services.xserver.displayManager.autoLogin.user = "anish";
78
-
79
-
# Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229
80
-
systemd.services."getty@tty1".enable = false;
81
-
systemd.services."autovt@tty1".enable = false;
82
-
83
-
# Install firefox.
84
-
# programs.firefox.enable = true;
85
-
86
-
# List packages installed in system profile. To search, run:
87
-
# $ nix search wget
88
-
environment.systemPackages = with pkgs; [
89
-
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
90
-
# wget
91
-
];
92
-
93
-
# Some programs need SUID wrappers, can be configured further or are
94
-
# started in user sessions.
95
-
# programs.mtr.enable = true;
96
-
# programs.gnupg.agent = {
97
-
# enable = true;
98
-
# enableSSHSupport = true;
99
-
# };
100
-
101
-
# List services that you want to enable:
102
-
103
-
# Enable the OpenSSH daemon.
104
-
# services.openssh.enable = true;
105
-
106
-
# Open ports in the firewall.
107
-
# networking.firewall.allowedTCPPorts = [ ... ];
108
-
# networking.firewall.allowedUDPPorts = [ ... ];
109
-
# Or disable the firewall altogether.
110
-
# networking.firewall.enable = false;
111
-
112
-
# This value determines the NixOS release from which the default
113
-
# settings for stateful data, like file locations and database versions
114
-
# on your system were taken. Itโs perfectly fine and recommended to leave
115
-
# this value at the release version of the first install of this system.
116
-
# Before changing this value read the documentation for this option
117
-
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
118
-
system.stateVersion = "24.11"; # Did you read the comment?
119
-
120
-
}
-54
hosts/deck/default.nix
-54
hosts/deck/default.nix
···
1
-
{ self, pkgs, config, ... }: {
2
-
imports = [
3
-
./configuration.nix
4
-
../users/anish
5
-
../profiles/core
6
-
# ../profiles/bluetooth
7
-
# ../profiles/music
8
-
../profiles/sync/cal
9
-
../profiles/wifi
10
-
../profiles/desktop
11
-
../profiles/mimetypes
12
-
../profiles/syncthing
13
-
../profiles/mossnet-hosts
14
-
# ../profiles/fly-wg
15
-
# ../profiles/mount-mossnet
16
-
];
17
-
18
-
# age.secrets.deck-wg.file = "${self}/secrets/deck-wg.age";
19
-
# age.secrets.deck-wg.owner = "deck";
20
-
# mossnet.wg = {
21
-
# enable = true;
22
-
# ips = [ "10.0.69.6/24" ];
23
-
# privateKeyFile = "/run/agenix/deck-wg";
24
-
# };
25
-
26
-
users.users.anish.extraGroups = [ "adbusers" "wheel" "plugdev" "libvertd" ];
27
-
# boot.plymouth = {
28
-
# enable = true;
29
-
# themePackages = [ pkgs.plymouth-themes ];
30
-
# theme = "motion";
31
-
# };
32
-
33
-
jovian.steam.enable = true;
34
-
jovian.devices.steamdeck.enable = true;
35
-
jovian.steam.user = "anish";
36
-
jovian.steam.autoStart = true;
37
-
jovian.steam.desktopSession = "gnome";
38
-
# jovian.steam.desktopSession = "none+bspwm";
39
-
40
-
# Install XR drivers
41
-
environment.systemPackages = with pkgs; [
42
-
xrlinuxdriver
43
-
stardust-xr-server
44
-
# breezy-gnome
45
-
];
46
-
47
-
services.udev.packages = with pkgs; [ xrlinuxdriver ];
48
-
49
-
services.monado = {
50
-
enable = true;
51
-
defaultRuntime = true;
52
-
};
53
-
54
-
}
-40
hosts/deck/hardware-configuration.nix
-40
hosts/deck/hardware-configuration.nix
···
1
-
# Do not modify this file! It was generated by โnixos-generate-configโ
2
-
# and may be overwritten by future invocations. Please make changes
3
-
# to /etc/nixos/configuration.nix instead.
4
-
{ config, lib, pkgs, modulesPath, ... }:
5
-
6
-
{
7
-
imports =
8
-
[ (modulesPath + "/installer/scan/not-detected.nix")
9
-
];
10
-
11
-
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "sdhci_pci" ];
12
-
boot.initrd.kernelModules = [ ];
13
-
boot.kernelModules = [ "kvm-amd" ];
14
-
boot.extraModulePackages = [ ];
15
-
16
-
fileSystems."/" =
17
-
{ device = "/dev/disk/by-uuid/d432dae0-3512-4891-9582-56d7ecd8524c";
18
-
fsType = "ext4";
19
-
};
20
-
21
-
fileSystems."/boot" =
22
-
{ device = "/dev/disk/by-uuid/5B4C-7406";
23
-
fsType = "vfat";
24
-
options = [ "fmask=0077" "dmask=0077" ];
25
-
};
26
-
27
-
swapDevices =
28
-
[ { device = "/dev/disk/by-uuid/f75a730e-c849-4edd-a17f-52492d4260dc"; }
29
-
];
30
-
31
-
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
32
-
# (the default) this is the recommended approach. When using systemd-networkd it's
33
-
# still possible to use this option, but it's recommended to use it in conjunction
34
-
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
35
-
networking.useDHCP = lib.mkDefault true;
36
-
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
37
-
38
-
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
39
-
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
40
-
}
-337
hosts/development/mirlo/docker-compose.nix
-337
hosts/development/mirlo/docker-compose.nix
···
1
-
# Auto-generated using compose2nix v0.1.6.
2
-
{ pkgs, lib, ... }:
3
-
4
-
{
5
-
# Runtime
6
-
virtualisation.podman = {
7
-
enable = true;
8
-
autoPrune.enable = true;
9
-
dockerCompat = true;
10
-
defaultNetwork.settings = {
11
-
# Required for container networking to be able to use names.
12
-
dns_enabled = true;
13
-
};
14
-
};
15
-
virtualisation.oci-containers.backend = "podman";
16
-
17
-
# Containers
18
-
virtualisation.oci-containers.containers."blackbird-api" = {
19
-
image = "";
20
-
environment = {
21
-
API_DOMAIN = "http://localhost:3000";
22
-
DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public";
23
-
JWT_SECRET = "test1234";
24
-
MEDIA_LOCATION = "./data/media/";
25
-
MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache";
26
-
MEDIA_LOCATION_INCOMING = "/data/media/incoming";
27
-
MINIO_HOST = "minio";
28
-
MINIO_PORT = "9000";
29
-
MINIO_ROOT_PASSWORD = "password";
30
-
MINIO_ROOT_USER = "blackbird";
31
-
NODE_ENV = "development";
32
-
PORT = "3000";
33
-
POSTGRES_LOCAL_MACHINE_PORT = "5434";
34
-
POSTGRES_PASSWORD = "nomads";
35
-
POSTGRES_USER = "nomads";
36
-
REACT_APP_API_DOMAIN = "http://localhost:3000";
37
-
REDIS_HOST = "redis";
38
-
REDIS_PASSWORD = "password";
39
-
REDIS_PORT = "6379";
40
-
REFRESH_TOKEN_SECRET = "test1234";
41
-
STATIC_MEDIA_HOST = "http://localhost:3000";
42
-
STRIPE_KEY = "";
43
-
};
44
-
volumes = [
45
-
"/home/anish/.ssh:/root/.ssh:rw"
46
-
"/home/anish/usr/mirlo:/var/www/api:rw"
47
-
"/home/anish/usr/mirlo/data/media/downloadCache:/data/media/downloadCache:rw"
48
-
"/home/anish/usr/mirlo/data/media/incoming:/data/media/incoming:rw"
49
-
];
50
-
ports = [
51
-
"3000:3000/tcp"
52
-
];
53
-
cmd = [ "/bin/sh" "-c" "yarn && yarn migrate:deploy && yarn dev:api" ];
54
-
dependsOn = [
55
-
"blackbird-minio"
56
-
"blackbird-pgsql"
57
-
"blackbird-redis"
58
-
];
59
-
log-driver = "journald";
60
-
extraOptions = [
61
-
"--network-alias=api"
62
-
"--network=mirlo-api-network"
63
-
"--network=mirlo-redis-network"
64
-
];
65
-
};
66
-
systemd.services."podman-blackbird-api" = {
67
-
serviceConfig = {
68
-
Restart = lib.mkOverride 500 "always";
69
-
};
70
-
after = [
71
-
"podman-network-mirlo-api-network.service"
72
-
"podman-network-mirlo-redis-network.service"
73
-
];
74
-
requires = [
75
-
"podman-network-mirlo-api-network.service"
76
-
"podman-network-mirlo-redis-network.service"
77
-
];
78
-
partOf = [
79
-
"podman-compose-mirlo-root.target"
80
-
];
81
-
unitConfig.UpheldBy = [
82
-
"podman-blackbird-minio.service"
83
-
"podman-blackbird-pgsql.service"
84
-
"podman-blackbird-redis.service"
85
-
];
86
-
wantedBy = [
87
-
"podman-compose-mirlo-root.target"
88
-
];
89
-
};
90
-
virtualisation.oci-containers.containers."blackbird-background" = {
91
-
image = "";
92
-
environment = {
93
-
API_DOMAIN = "http://localhost:3000";
94
-
DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public";
95
-
JWT_SECRET = "test1234";
96
-
MEDIA_LOCATION = "./data/media/";
97
-
MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache";
98
-
MEDIA_LOCATION_INCOMING = "/data/media/incoming";
99
-
MINIO_HOST = "minio";
100
-
MINIO_PORT = "9000";
101
-
MINIO_ROOT_PASSWORD = "password";
102
-
MINIO_ROOT_USER = "blackbird";
103
-
NODE_ENV = "development";
104
-
PORT = "3000";
105
-
POSTGRES_LOCAL_MACHINE_PORT = "5434";
106
-
POSTGRES_PASSWORD = "nomads";
107
-
POSTGRES_USER = "nomads";
108
-
REACT_APP_API_DOMAIN = "http://localhost:3000";
109
-
REDIS_HOST = "redis";
110
-
REDIS_PASSWORD = "password";
111
-
REDIS_PORT = "6379";
112
-
REFRESH_TOKEN_SECRET = "test1234";
113
-
STATIC_MEDIA_HOST = "http://localhost:3000";
114
-
STRIPE_KEY = "";
115
-
};
116
-
volumes = [
117
-
"/home/anish/.ssh:/root/.ssh:rw"
118
-
"/home/anish/usr/mirlo:/var/www/api:rw"
119
-
"/home/anish/usr/mirlo/data/media/processing:/data/media/processing:rw"
120
-
];
121
-
dependsOn = [
122
-
"blackbird-api"
123
-
"blackbird-minio"
124
-
"blackbird-pgsql"
125
-
"blackbird-redis"
126
-
];
127
-
log-driver = "journald";
128
-
extraOptions = [
129
-
"--network-alias=background"
130
-
"--network=mirlo-api-network"
131
-
"--network=mirlo-redis-network"
132
-
];
133
-
};
134
-
systemd.services."podman-blackbird-background" = {
135
-
serviceConfig = {
136
-
Restart = lib.mkOverride 500 "always";
137
-
};
138
-
after = [
139
-
"podman-network-mirlo-api-network.service"
140
-
"podman-network-mirlo-redis-network.service"
141
-
];
142
-
requires = [
143
-
"podman-network-mirlo-api-network.service"
144
-
"podman-network-mirlo-redis-network.service"
145
-
];
146
-
partOf = [
147
-
"podman-compose-mirlo-root.target"
148
-
];
149
-
unitConfig.UpheldBy = [
150
-
"podman-blackbird-api.service"
151
-
"podman-blackbird-minio.service"
152
-
"podman-blackbird-pgsql.service"
153
-
"podman-blackbird-redis.service"
154
-
];
155
-
wantedBy = [
156
-
"podman-compose-mirlo-root.target"
157
-
];
158
-
};
159
-
virtualisation.oci-containers.containers."blackbird-minio" = {
160
-
image = "minio/minio";
161
-
environment = {
162
-
API_DOMAIN = "http://localhost:3000";
163
-
DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public";
164
-
JWT_SECRET = "test1234";
165
-
MEDIA_LOCATION = "./data/media/";
166
-
MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache";
167
-
MEDIA_LOCATION_INCOMING = "/data/media/incoming";
168
-
MINIO_HOST = "minio";
169
-
MINIO_PORT = "9000";
170
-
MINIO_ROOT_PASSWORD = "password";
171
-
MINIO_ROOT_USER = "blackbird";
172
-
PORT = "3000";
173
-
POSTGRES_LOCAL_MACHINE_PORT = "5434";
174
-
POSTGRES_PASSWORD = "nomads";
175
-
POSTGRES_USER = "nomads";
176
-
REACT_APP_API_DOMAIN = "http://localhost:3000";
177
-
REDIS_HOST = "redis";
178
-
REDIS_PASSWORD = "password";
179
-
REDIS_PORT = "6379";
180
-
REFRESH_TOKEN_SECRET = "test1234";
181
-
STATIC_MEDIA_HOST = "http://localhost:3000";
182
-
STRIPE_KEY = "";
183
-
};
184
-
volumes = [
185
-
"/home/anish/usr/mirlo/data/minio_storage:/data:rw"
186
-
];
187
-
ports = [
188
-
"9000:9000/tcp"
189
-
"9001:9001/tcp"
190
-
];
191
-
cmd = [ "server" "--console-address" ":9001" "/data" ];
192
-
log-driver = "journald";
193
-
extraOptions = [
194
-
"--network-alias=minio"
195
-
"--network=mirlo-api-network:alias=minio"
196
-
];
197
-
};
198
-
systemd.services."podman-blackbird-minio" = {
199
-
serviceConfig = {
200
-
Restart = lib.mkOverride 500 "no";
201
-
};
202
-
after = [
203
-
"podman-network-mirlo-api-network.service"
204
-
];
205
-
requires = [
206
-
"podman-network-mirlo-api-network.service"
207
-
];
208
-
partOf = [
209
-
"podman-compose-mirlo-root.target"
210
-
];
211
-
wantedBy = [
212
-
"podman-compose-mirlo-root.target"
213
-
];
214
-
};
215
-
virtualisation.oci-containers.containers."blackbird-pgsql" = {
216
-
image = "postgres:14-alpine";
217
-
environment = {
218
-
API_DOMAIN = "http://localhost:3000";
219
-
DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public";
220
-
JWT_SECRET = "test1234";
221
-
MEDIA_LOCATION = "./data/media/";
222
-
MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache";
223
-
MEDIA_LOCATION_INCOMING = "/data/media/incoming";
224
-
MINIO_HOST = "minio";
225
-
MINIO_PORT = "9000";
226
-
MINIO_ROOT_PASSWORD = "password";
227
-
MINIO_ROOT_USER = "blackbird";
228
-
PORT = "3000";
229
-
POSTGRES_LOCAL_MACHINE_PORT = "5434";
230
-
POSTGRES_PASSWORD = "nomads";
231
-
POSTGRES_USER = "nomads";
232
-
REACT_APP_API_DOMAIN = "http://localhost:3000";
233
-
REDIS_HOST = "redis";
234
-
REDIS_PASSWORD = "password";
235
-
REDIS_PORT = "6379";
236
-
REFRESH_TOKEN_SECRET = "test1234";
237
-
STATIC_MEDIA_HOST = "http://localhost:3000";
238
-
STRIPE_KEY = "";
239
-
};
240
-
volumes = [
241
-
"/home/anish/usr/mirlo/data/pgsql:/var/lib/postgresql/data:rw"
242
-
"/home/anish/usr/mirlo/data/pgsql_backups:/backups:rw"
243
-
];
244
-
ports = [
245
-
"5432:5432/tcp"
246
-
];
247
-
log-driver = "journald";
248
-
extraOptions = [
249
-
"--network-alias=pgsql"
250
-
"--network=mirlo-api-network:alias=pgsql"
251
-
];
252
-
};
253
-
systemd.services."podman-blackbird-pgsql" = {
254
-
serviceConfig = {
255
-
Restart = lib.mkOverride 500 "no";
256
-
};
257
-
after = [
258
-
"podman-network-mirlo-api-network.service"
259
-
];
260
-
requires = [
261
-
"podman-network-mirlo-api-network.service"
262
-
];
263
-
partOf = [
264
-
"podman-compose-mirlo-root.target"
265
-
];
266
-
wantedBy = [
267
-
"podman-compose-mirlo-root.target"
268
-
];
269
-
};
270
-
virtualisation.oci-containers.containers."blackbird-redis" = {
271
-
image = "redis";
272
-
ports = [
273
-
"6379:6379/tcp"
274
-
];
275
-
cmd = [ "redis-server" "--appendonly" "yes" "--requirepass " ];
276
-
log-driver = "journald";
277
-
extraOptions = [
278
-
"--network-alias=redis"
279
-
"--network=mirlo-redis-network"
280
-
];
281
-
};
282
-
systemd.services."podman-blackbird-redis" = {
283
-
serviceConfig = {
284
-
Restart = lib.mkOverride 500 "always";
285
-
};
286
-
after = [
287
-
"podman-network-mirlo-redis-network.service"
288
-
];
289
-
requires = [
290
-
"podman-network-mirlo-redis-network.service"
291
-
];
292
-
partOf = [
293
-
"podman-compose-mirlo-root.target"
294
-
];
295
-
wantedBy = [
296
-
"podman-compose-mirlo-root.target"
297
-
];
298
-
};
299
-
300
-
# Networks
301
-
systemd.services."podman-network-mirlo-api-network" = {
302
-
path = [ pkgs.podman ];
303
-
serviceConfig = {
304
-
Type = "oneshot";
305
-
RemainAfterExit = true;
306
-
ExecStop = "${pkgs.podman}/bin/podman network rm -f mirlo-api-network";
307
-
};
308
-
script = ''
309
-
podman network inspect mirlo-api-network || podman network create mirlo-api-network --opt isolate=true
310
-
'';
311
-
partOf = [ "podman-compose-mirlo-root.target" ];
312
-
wantedBy = [ "podman-compose-mirlo-root.target" ];
313
-
};
314
-
systemd.services."podman-network-mirlo-redis-network" = {
315
-
path = [ pkgs.podman ];
316
-
serviceConfig = {
317
-
Type = "oneshot";
318
-
RemainAfterExit = true;
319
-
ExecStop = "${pkgs.podman}/bin/podman network rm -f mirlo-redis-network";
320
-
};
321
-
script = ''
322
-
podman network inspect mirlo-redis-network || podman network create mirlo-redis-network --opt isolate=true
323
-
'';
324
-
partOf = [ "podman-compose-mirlo-root.target" ];
325
-
wantedBy = [ "podman-compose-mirlo-root.target" ];
326
-
};
327
-
328
-
# Root service
329
-
# When started, this will automatically create all resources and start
330
-
# the containers. When stopped, this will teardown all resources.
331
-
systemd.targets."podman-compose-mirlo-root" = {
332
-
unitConfig = {
333
-
Description = "Root target generated by compose2nix.";
334
-
};
335
-
wantedBy = [ "multi-user.target" ];
336
-
};
337
-
}
+3
-6
hosts/helix/default.nix
+3
-6
hosts/helix/default.nix
···
11
11
# ../profiles/mount-mossnet
12
12
../profiles/freshrss
13
13
../profiles/microbin
14
-
../profiles/site
15
-
16
-
# ../profiles/postgres_upgrade_script
17
14
];
18
15
19
16
# Capsul specific
···
30
27
privateKeyFile = "/run/agenix/helix-wg";
31
28
};
32
29
33
-
services.postgresql.package = pkgs.postgresql_15;
30
+
services.postgresql.package = pkgs.postgresql_11;
34
31
services.postgresqlBackup = {
35
32
# TODO needs working wireguard to box
36
33
enable = false;
37
-
databases = [ "gitea" "freshrss" ]; # "woodpecker"
34
+
databases = [ "gitea" "freshrss" "woodpecker" ];
38
35
location = "/mnt/two/postgres";
39
36
};
40
37
···
44
41
paths = [
45
42
"/var/lib/gitea"
46
43
"/var/lib/freshrss"
47
-
# "/var/lib/woodpecker"
44
+
"/var/lib/woodpecker"
48
45
"/var/lib/microbin"
49
46
];
50
47
+5
hosts/lituus/hardware-configuration.nix
+5
hosts/lituus/hardware-configuration.nix
···
20
20
fsType = "btrfs";
21
21
};
22
22
23
+
fileSystems."/storage" =
24
+
{ device = "/dev/disk/by-uuid/c2181608-cbb0-40ab-b62b-158cdc9b9300";
25
+
fsType = "btrfs";
26
+
};
27
+
23
28
swapDevices = [ ];
24
29
25
30
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+1
-1
hosts/profiles/core/default.nix
+1
-1
hosts/profiles/core/default.nix
+20
-21
hosts/profiles/desktop/default.nix
+20
-21
hosts/profiles/desktop/default.nix
···
62
62
};
63
63
64
64
environment.systemPackages = with pkgs; [
65
-
sublime-music
66
-
# nheko
67
-
signal-desktop
68
-
tuba
69
-
newsflash
70
-
liferea
71
-
gh
72
-
flyctl
65
+
unstable.sublime-music
66
+
unstable.nheko
67
+
unstable.signal-desktop
68
+
unstable.tuba
69
+
unstable.newsflash
70
+
unstable.liferea
71
+
unstable.gh
72
+
unstable.flyctl
73
73
74
74
kooha
75
75
light
···
77
77
feh
78
78
sxiv
79
79
xkblayout-state
80
+
vcv-rack
80
81
zathura
81
82
calibre
82
83
mpv
···
86
87
rofi
87
88
rofimoji
88
89
rofi-calc
90
+
# eww
89
91
obs-studio
90
92
lightdm
91
93
dunst
···
97
99
papirus-icon-theme
98
100
calendar-cli
99
101
wyrd
100
-
# tic-80
102
+
tic-80
101
103
ytfzf
102
104
yt-dlp
103
105
];
104
106
105
-
# xdg.portal = {
107
+
xdg.portal = {
106
108
# Breaks link clicking in nheko
107
109
# Portal doesn't seem to find Firefox as an acceptable app to open links?
108
-
# enable = false;
109
-
# extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
110
-
#xdgOpenUsePortal = false;
111
-
# };
110
+
enable = false;
111
+
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
112
+
xdgOpenUsePortal = false;
113
+
};
112
114
113
115
location.provider = "geoclue2";
114
116
services = {
···
119
121
night = 3700;
120
122
};
121
123
};
122
-
displayManager.defaultSession = "none+bspwm";
123
124
xserver = {
124
-
enable = false;
125
+
enable = true;
125
126
xkb.layout = "us,dvorak";
126
127
desktopManager.wallpaper.mode = "fill";
127
-
desktopManager.gnome.enable = true;
128
128
displayManager = {
129
-
# gdm.enable = true;
130
-
# defaultSession = "none+bspwm";
129
+
defaultSession = "none+bspwm";
131
130
sessionCommands = ''
132
131
${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF
133
132
#define blk #1F2430
···
194
193
EOF
195
194
'';
196
195
lightdm = {
197
-
enable = false;
196
+
enable = true;
198
197
background = "/etc/nixos/users/profiles/desktop/background.jpg";
199
198
greeters.mini = {
200
199
enable = true;
···
222
221
siji
223
222
font-awesome
224
223
proggyfonts
225
-
# (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; })
224
+
(nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; })
226
225
];
227
226
}
-1
hosts/profiles/dns/default.nix
-1
hosts/profiles/dns/default.nix
+1
-1
hosts/profiles/finance/default.nix
+1
-1
hosts/profiles/finance/default.nix
+7
-8
hosts/profiles/freshrss/default.nix
+7
-8
hosts/profiles/freshrss/default.nix
···
17
17
18
18
services.postgresql = {
19
19
enable = true; # Ensure postgresql is enabled
20
-
# authentication = ''
21
-
# local freshrss all ident map=freshrss-users
22
-
# '';
23
-
# identMap = # Map the freshrss user to postgresql
24
-
# ''
25
-
# freshrss-users freshrss freshrss
26
-
# freshrss-users postgres freshrss
27
-
# '';
20
+
authentication = ''
21
+
local freshrss all ident map=freshrss-users
22
+
'';
23
+
identMap = # Map the freshrss user to postgresql
24
+
''
25
+
freshrss-users freshrss freshrss
26
+
'';
28
27
ensureDatabases = [ "freshrss" ];
29
28
ensureUsers = [{
30
29
name = "freshrss";
+10
-25
hosts/profiles/gitea/default.nix
+10
-25
hosts/profiles/gitea/default.nix
···
4
4
age.secrets.gitea-dbpass.file = "${self}/secrets/gitea-dbpass.age";
5
5
age.secrets.gitea-dbpass.owner = "gitea";
6
6
7
-
services.forgejo = {
7
+
services.gitea = {
8
8
enable = true;
9
-
user = "gitea";
10
-
group = "gitea";
11
-
stateDir = "/var/lib/gitea";
9
+
package = pkgs.forgejo;
10
+
appName = "Sealight Git Forge";
12
11
database = {
13
12
type = "postgres";
14
-
user = "gitea";
15
-
name = "gitea";
16
13
passwordFile = "/run/agenix/gitea-dbpass";
17
14
};
18
15
settings = {
19
-
DEFAULT.APP_NAME = "Sealight Git Forge";
20
16
server = {
21
17
DOMAIN = "git.sealight.xyz";
22
18
ROOT_URL = "https://git.sealight.xyz";
···
28
24
repository = {
29
25
DEFAULT_BRANCH = "main";
30
26
};
31
-
service.DISABLE_REGISTRATION = true;
32
27
"markup.restructuredtext" = {
33
28
ENABLED = true;
34
29
FILE_EXTENSIONS = ".rst";
···
48
43
};
49
44
};
50
45
51
-
users.users.gitea = {
52
-
home = "/var/lib/gitea";
53
-
useDefaultShell = true;
54
-
group = "gitea";
55
-
isSystemUser = true;
56
-
};
57
-
58
-
users.groups.gitea = {};
59
-
60
46
environment.systemPackages = [ pkgs.pandoc ];
61
47
services.postgresql = {
62
48
enable = true; # Ensure postgresql is enabled
63
-
# authentication = ''
64
-
# local gitea all ident map=gitea-users
65
-
# '';
66
-
# identMap = # Map the gitea user to postgresql
67
-
# ''
68
-
# gitea-users gitea gitea
69
-
# gitea-users postgres gitea
70
-
# '';
49
+
authentication = ''
50
+
local gitea all ident map=gitea-users
51
+
'';
52
+
identMap = # Map the gitea user to postgresql
53
+
''
54
+
gitea-users gitea gitea
55
+
'';
71
56
ensureDatabases = [ "gitea" ];
72
57
ensureUsers = [{
73
58
name = "gitea";
+1
-10
hosts/profiles/gonic/default.nix
+1
-10
hosts/profiles/gonic/default.nix
···
5
5
music-path /mnt/two/music/
6
6
podcast-path /data/podcasts
7
7
cache-path /data/cache
8
-
playlists-path /data/playlists
9
8
'';
10
-
mossnet.gonic.user = "gonic";
9
+
mossnet.gonic.user = "headphones";
11
10
mossnet.gonic.group = "audio";
12
11
networking.firewall.allowedTCPPorts = [ 4747 ];
13
-
14
-
users.users.gonic = {
15
-
# uid = config.ids.uids.headphones;
16
-
# isSystemUser = true;
17
-
group = "audio";
18
-
# home = "/var/lib/headphones";
19
-
createHome = true;
20
-
};
21
12
}
+4
hosts/profiles/gonic/module-gonic.nix
+4
hosts/profiles/gonic/module-gonic.nix
···
68
68
Group = cfg.group;
69
69
DevicePolicy = "closed";
70
70
NoNewPrivileges = " yes";
71
+
PrivateTmp = "yes";
72
+
PrivateUsers = "yes";
71
73
ProtectControlGroups = "yes";
72
74
ProtectKernelModules = "yes";
73
75
ProtectKernelTunables = "yes";
74
76
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
77
+
RestrictNamespaces = "yes";
78
+
RestrictRealtime = "yes";
75
79
SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap";
76
80
ReadWritePaths = dataFolder;
77
81
StateDirectory = baseNameOf dataFolder;
-16
hosts/profiles/gpodder/default.nix
-16
hosts/profiles/gpodder/default.nix
···
1
-
{
2
-
services.gpodder.enable = true;
3
-
networking.firewall.allowedTCPPorts = [ 3005 ];
4
-
services.nginx.virtualHosts."pod.mossnet.lan" = {
5
-
extraConfig = "client_max_body_size 20M;";
6
-
7
-
locations."/" = {
8
-
extraConfig = ''
9
-
proxy_pass http://localhost:3005/;
10
-
proxy_set_header X-Forwarded-Proto $scheme;
11
-
proxy_set_header X-Real-IP $remote_addr;
12
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
13
-
'';
14
-
};
15
-
};
16
-
}
-1
hosts/profiles/headphones/default.nix
-1
hosts/profiles/headphones/default.nix
+1
-1
hosts/profiles/matrix/mautrix-services.nix
+1
-1
hosts/profiles/matrix/mautrix-services.nix
+2
-2
hosts/profiles/microbin/default.nix
+2
-2
hosts/profiles/microbin/default.nix
···
1
1
{ config, lib, pkgs, ... }:
2
2
{
3
3
services.microbin.enable = true;
4
-
services.microbin.settings.PUBLIC_PATH = "bin.sealight.xyz";
5
-
services.microbin.settings.MICROBIN_PORT = 4949;
4
+
services.microbin.hostname = "bin.sealight.xyz";
5
+
services.microbin.port = 4949;
6
6
networking.firewall.allowedTCPPorts = [ 4949 ];
7
7
services.nginx.virtualHosts."bin.sealight.xyz" = {
8
8
enableACME = true;
-1
hosts/profiles/mossnet-hosts/default.nix
-1
hosts/profiles/mossnet-hosts/default.nix
+2
-2
hosts/profiles/music/default.nix
+2
-2
hosts/profiles/music/default.nix
···
16
16
orca-c
17
17
supercollider
18
18
dirt
19
-
# sunvox
19
+
sunvox
20
20
vcv-rack
21
21
lmms
22
22
bespokesynth
···
38
38
alsa.enable = true;
39
39
alsa.support32Bit = false;
40
40
pulse.enable = true;
41
-
jack.enable = true;
41
+
jack.enable = true;
42
42
# Deprecated as of 23.05
43
43
# config = {
44
44
# pipewire."context.properties"."default.clock.rate" = "48000";
+4
-3
hosts/profiles/postgres_upgrade_script/default.nix
+4
-3
hosts/profiles/postgres_upgrade_script/default.nix
···
6
6
# TODO it's perhaps advisable to stop all services that depend on postgresql
7
7
systemctl stop postgresql
8
8
9
+
# TODO replace `<new version>` with the psqlSchema here
9
10
# The schema can be found by running:
10
-
# nix eval --raw nixpkgs#postgresql_15.psqlSchema
11
-
export NEWDATA="/var/lib/postgresql/15"
11
+
# nix-instantiate '<nixpkgs>' --eval -A postgresql_14.psqlSchema
12
+
export NEWDATA="/var/lib/postgresql/<new version>"
12
13
13
14
# TODO specify the postgresql package you'd like to upgrade to
14
-
export NEWBIN="${pkgs.postgresql_15}/bin"
15
+
export NEWBIN="${pkgs.postgresql_14}/bin"
15
16
16
17
export OLDDATA="${config.services.postgresql.dataDir}"
17
18
export OLDBIN="${config.services.postgresql.package}/bin"
+1
-1
hosts/profiles/rss-bridge/default.nix
+1
-1
hosts/profiles/rss-bridge/default.nix
···
3
3
services.rss-bridge = {
4
4
enable = true;
5
5
virtualHost = "bridge.sealight.xyz";
6
-
config.system.enabled_bridges = [ "Facebook" "Bandcamp" "Twitter" "Telegram" "Instagram" "Reddit" ];
6
+
whitelist = [ "Facebook" "Bandcamp" "Twitter" "Telegram" "Instagram" "Reddit" ];
7
7
};
8
8
9
9
services.nginx.virtualHosts."bridge.sealight.xyz".forceSSL = true;
hosts/profiles/sync/music/get-music.sh
hosts/profiles/sync/music/get-music.sh
+2
-2
hosts/profiles/sync/website/default.nix
+2
-2
hosts/profiles/sync/website/default.nix
···
6
6
path = [
7
7
pkgs.git
8
8
pkgs.coreutils
9
-
pkgs.nixVersions.latest
9
+
pkgs.nixUnstable
10
10
pkgs.openssh
11
11
pkgs.deploy
12
12
];
···
18
18
git add flake.lock
19
19
git diff-index --quiet HEAD || git commit -m 'updating website' # if nothing, don't exit 1
20
20
git push
21
-
deploy .#helix
21
+
deploy .#cube
22
22
exit 0
23
23
'';
24
24
serviceConfig = {
+1
-1
hosts/profiles/ulogger-server/default.nix
+1
-1
hosts/profiles/ulogger-server/default.nix
+67
-14
hosts/profiles/wallabag/default.nix
+67
-14
hosts/profiles/wallabag/default.nix
···
1
1
{ self, pkgs, config, lib, ... }:
2
2
3
3
{
4
-
age.secrets.wallabag-password.file = "${self}/secrets/wallabag-password.age";
5
-
age.secrets.wallabag-secret.file = "${self}/secrets/wallabag-secret.age";
6
-
age.secrets.wallabag-password.owner = "wallabag";
7
-
age.secrets.wallabag-secret.owner = "wallabag";
4
+
# age.secrets.wallabag-password.file = "${self}/secrets/wallabag-password.age";
5
+
# age.secrets.wallabag-secret.file = "${self}/secrets/wallabag-secret.age";
6
+
# age.secrets.wallabag-password.owner = "wallabag";
7
+
# age.secrets.wallabag-secret.owner = "wallabag";
8
8
services.postgresql = {
9
9
enable = true;
10
10
package = pkgs.postgresql_15;
···
18
18
}
19
19
];
20
20
authentication = ''
21
-
local wallabag all peer
21
+
local wallabag all md5
22
22
'';
23
23
};
24
24
25
25
services.wallabag = {
26
26
enable = true;
27
-
domain = "read.mossnet.lan";
28
-
virtualHost.enable = true;
29
-
package = pkgs.my-wallabag;
30
-
# Systemd now defaults to /var/lib?
31
-
# dataDir = "/var/lib/wallabag";
32
-
parameters = {
33
-
"env(SECRET_FILE)" = config.age.secrets.wallabag-secret.path;
34
-
secret = "%env(file:resolve:SECRET_FILE)%";
35
-
};
27
+
hostName = "read.mossnet.lan";
28
+
package = pkgs.wallabag;
29
+
conf = ''
30
+
# This file is a "template" of what your parameters.yml file should look like
31
+
parameters:
32
+
database_driver: pdo_pgsql
33
+
database_host: localhost
34
+
database_port: ~
35
+
database_name: wallabag
36
+
database_user: wallabag
37
+
database_password: wallabag
38
+
# For SQLite, database_path should be "%kernel.project_dir%/data/db/wallabag.sqlite"
39
+
database_path: ~
40
+
database_table_prefix: wallabag_
41
+
database_socket: null
42
+
# with PostgreSQL and SQLite, you must set "utf8"
43
+
database_charset: utf8
44
+
45
+
domain_name: http://read.mossnet.lan/
46
+
server_name: "mossnet wallabag instance"
47
+
48
+
mailer_dsn: null://
49
+
locale: en
50
+
51
+
# A secret key that's used to generate certain security-related tokens
52
+
secret: SAFGOECRIlfal89oe6u0(*^dsaaih961
53
+
54
+
# two factor stuff
55
+
twofactor_auth: false
56
+
twofactor_sender: no-reply@wallabag.org
57
+
58
+
# fosuser stuff
59
+
fosuser_registration: false
60
+
fosuser_confirmation: true
61
+
62
+
# how long the access token should live in seconds for the API
63
+
fos_oauth_server_access_token_lifetime: 3600
64
+
# how long the refresh token should life in seconds for the API
65
+
fos_oauth_server_refresh_token_lifetime: 1209600
66
+
67
+
from_email: ops@sealight.xyz
68
+
69
+
rss_limit: 50
70
+
71
+
# RabbitMQ processing
72
+
rabbitmq_host: localhost
73
+
rabbitmq_port: 5672
74
+
rabbitmq_user: guest
75
+
rabbitmq_password: guest
76
+
rabbitmq_prefetch_count: 10
77
+
78
+
# Redis processing
79
+
redis_scheme: tcp
80
+
redis_host: localhost
81
+
redis_port: 6379
82
+
redis_path: null
83
+
redis_password: null
84
+
85
+
# sentry logging
86
+
sentry_dsn: ~
87
+
'';
36
88
};
89
+
# networking.firewall.allowedTCPPorts = [ 8080 ];
37
90
}
+5
-10
hosts/profiles/wireguard-server/default.nix
+5
-10
hosts/profiles/wireguard-server/default.nix
···
36
36
publicKey = "gcdq86hhEUlqF2chqYB/F8pALyAMNFvwLycxBoHuoDs=";
37
37
allowedIPs = [ "10.0.69.5/32" ];
38
38
}
39
-
{
40
-
# hyperplane
41
-
publicKey = "v+EUuM60yZLvBmdCG9GxfFAtSjS1VvbUWcyNb8emjDg=";
42
-
allowedIPs = [ "10.0.69.6/32" ];
43
-
}
44
-
{
45
-
# work
46
-
publicKey = "/gv66s8DfppCCjaEN/jlc8z95IhEWPgDumykqKEl0QU=";
47
-
allowedIPs = [ "10.0.69.7/32" ];
48
-
}
39
+
# {
40
+
# # hyperplane
41
+
# publicKey = "";
42
+
# allowedIPs = [ "10.0.69.6/32" ];
43
+
# }
49
44
];
50
45
};
51
46
}
+3
-6
hosts/users/anish/default.nix
+3
-6
hosts/users/anish/default.nix
···
4
4
programs.zsh.enable = true;
5
5
users.users.anish = {
6
6
description = "Personal user for Anish";
7
-
hashedPassword =
8
-
"$y$j9T$y3DPt/dWaPE.gRazQqw1w0$1RMH5sl/Nu8kW3ZMywYCPRniHD/jF5qRh0VKrdJ.bV2";
7
+
hashedPassword = "$y$j9T$y3DPt/dWaPE.gRazQqw1w0$1RMH5sl/Nu8kW3ZMywYCPRniHD/jF5qRh0VKrdJ.bV2";
9
8
shell = pkgs.zsh;
10
9
isNormalUser = true;
11
10
extraGroups = [ "wheel" "audio" "networkmanager" "video" ];
12
11
openssh.authorizedKeys.keys = [
13
12
# Curve
14
13
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve"
14
+
# Line
15
+
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDtU2GMYjXj6RGO1+mwM4TDGOo0qrKLTL4Di8+QgDX0p5vUEsnE1PS9wnuqCmSu75U8g0XIAMtvtdYyGk1N+Bx01erAZpT8DLYtIXFCyaiN28PVu5T1D0T+TQ7xgIH1qenXZR2DOQdf6kpvKEfm7+7bWhCo0N/KFMpmReubyzHDQcq/1qQasxTL+YALQFOjwKqsOTBXbHwZ103AEAcQX4ftBFEOfVli4/1aKIK4dNSZYB7J9Htq707YnsEqo9RLAMh0aOTTYgTx9AoSUDeqGuh/AGkcB7NcS7EEtI6d5YUGylwZh/gF6hqE0jl8kn2m5jMKXL3CRohZvjifue8x/GIjpu5WRabUuhBEbrfTQQaC7taHnt5rvYCGzKZx09TexUzhuz2CL480DRoxSG+P+lCNm1dIg/EZrnGEzXCSr36PlOqS5t5gm8tPkzCmZf2wU15A3ZIYUPmnYLqsn4WmIV7rKmdqt2ctWELUXow3PPiZXBucP9P3xpsYEfF1SB2SGNc= u0_a139@localhost"
15
16
# Box
16
17
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKN8/SH55DBiwVoSnTU8k2Pen+wmovL9QaMyehxGEsJJv/8fzwsswGalD4C/4O51LOvdu4UKkZW5hG02uVSK+58p3UV3pOPyoqsu/aDeIsWsqmTeTzUrBIWOlNzcDKnohLz2oGC5YO+wyTJ9Iteq6aGJDjErsW7sG3h5lXCs551EmJNNGhtBQaaoytMNnWqSdlVjDNCijurH7WUpp40U/RjEp532l4rX6eIIj3jBKEFbhZkFSSjqbj4xM4SyFt+Jmigb1RMjsQjmpfY1vDtM84RcYfpTUte/T5w2dkD5H6kccmWnwKSJpm9wXfx4E7lR9APdUGnau2U1+XxiD3ytGl anish@box"
17
-
# Nix-on-droid line
18
-
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJOiXBPVvZAp1fY0a0Tupxj0Ml6MoA51lvqt/jAQq249 nix-on-droid@localhost"
19
-
# Work
20
-
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/vvh0i6+uAN0GWlK6ZfyTlc/AW54xe2CroUDsDSoGnFKeIUiSsWexobODlVakNhqwCKfsvUh6g+RdA8ZVcamATcYqxysP4X5fRksmAzRm5281O7ZBDHMB2BdcfHSTgiz7JvMRIQYWDlU8Ck6IL4wlN0b2GMUj9t/GeG37us8280rxpRNoIY7M27AJEZ7XNQhctBIVujxctVBgIMYmZiTwziU7ywJv4rNT5OAWvjRXSo1rkxdvx3VESv4y/mp8m7dEupZpIjIFsLs52+UG5LtadulUqtTWg05sCw8LEcmRhflgZSAvjw60RrKFCuWxc8+/Pmaw+zExeBMenqi0NzuTc3S3k2wCKVIZDh/0tlXzIwZ6WRqxDevUtEKfvbEFMXd8akhTfYs0dyszcFRevBxOBPbcKku+FK/HkdPLmEANvxYty3cv+Eipkz3c8JPJPvXNTXrjepXMm0LUKodO3c15hGogCOxUO38kykkyYnn+MxxHparoMfEr2+oHNpQoS5wA1G43ppqjVoRDgnhleu6ixwRkLZzphY3cnOd5jL9Ie5xIGbFWH1qSlQRdHBkHjuf85z7+QK8nFYAhmG1K3Vt3GNtF8LN1tYQkfwBJ/vsroMNzGPoq4PjVbqb80Eq+96cP89XKfU2/xw1g+p2lJDm/zC1WCjXVzf8NRwC7gqPavQ== anishlakhwara@anishs-mbp.lan"
21
18
];
22
19
};
23
20
}
install-encrypted.sh
install-encrypted.sh
+2
-2
install-yubikey.sh
+2
-2
install-yubikey.sh
···
19
19
20
20
# Yubikey Setup
21
21
SLOT=2
22
-
# ykpersonalize -"$SLOT" -ochal-resp -ochal-hmac
22
+
ykpersonalize -"$SLOT" -ochal-resp -ochal-hmac
23
23
SALT_LENGTH=16
24
24
salt="$(dd if=/dev/random bs=1 count=$SALT_LENGTH 2>/dev/null | rbtohex)"
25
25
k_user=PASSWORDCHANGEMEPLAEASES
···
147
147
sound.enable = true;
148
148
hardware.pulseaudio.enable = true;
149
149
150
-
services.libinput.enable = true;
150
+
services.xserver.libinput.enable = true;
151
151
152
152
# Hmmm maybe somewhere else?
153
153
users.users.anish = {
+1
-2
modules/nixos/default.nix
+1
-2
modules/nixos/default.nix
-120
modules/nixos/gpodder2go.nix
-120
modules/nixos/gpodder2go.nix
···
1
-
{ self, config, lib, pkgs, ... }:
2
-
3
-
with lib;
4
-
5
-
let
6
-
cfg = config.services.gpodder;
7
-
in
8
-
{
9
-
options = {
10
-
11
-
services.gpodder = {
12
-
enable = mkEnableOption "A gpodder instance";
13
-
14
-
user = mkOption {
15
-
type = types.str;
16
-
default = "gpodder";
17
-
description = "User account under which gpodder runs.";
18
-
};
19
-
20
-
group = mkOption {
21
-
type = types.str;
22
-
default = "gpodder";
23
-
description = "Group account under which gpodder runs.";
24
-
};
25
-
26
-
hostname = mkOption {
27
-
type = types.str;
28
-
description = "Hostname of your gpodder service";
29
-
};
30
-
31
-
dataFolder = mkOption {
32
-
type = types.str;
33
-
default = "/var/lib/gpodder";
34
-
description = "State director";
35
-
};
36
-
37
-
VERIFIER_SECRET_KEY = mkOption {
38
-
type = types.str;
39
-
default = "satnheiycglsrcgaecrlufg";
40
-
description = "Verifer Secret";
41
-
};
42
-
43
-
};
44
-
};
45
-
46
-
config = mkIf cfg.enable {
47
-
systemd.services.gpodder = {
48
-
description = "gpodder2go A gpodder instance";
49
-
after = [ "remote-fs.target" "network.target" ];
50
-
wantedBy = [ "multi-user.target" ];
51
-
serviceConfig = {
52
-
ExecStart = "${pkgs.gpodder2go}/bin/gpodder2go serve";
53
-
Environment = [
54
-
"VERIFIER_SECRET_KEY=${cfg.VERIFIER_SECRET_KEY}"
55
-
];
56
-
WorkingDirectory = cfg.dataFolder;
57
-
TimeoutStopSec = " 20 ";
58
-
KillMode = " process ";
59
-
RestartSec = " 10 ";
60
-
User = cfg.user;
61
-
Group = cfg.group;
62
-
DevicePolicy = " closed ";
63
-
NoNewPrivileges = " yes ";
64
-
PrivateTmp = " yes ";
65
-
PrivateUsers = " yes ";
66
-
ProtectControlGroups = " yes ";
67
-
ProtectKernelModules = " yes ";
68
-
ProtectKernelTunables = " yes ";
69
-
RestrictAddressFamilies = "
70
-
AF_UNIX
71
-
AF_INET
72
-
AF_INET6 ";
73
-
RestrictNamespaces = " yes ";
74
-
RestrictRealtime = " yes ";
75
-
SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap";
76
-
ReadWritePaths = cfg.dataFolder;
77
-
StateDirectory = baseNameOf cfg.dataFolder;
78
-
};
79
-
};
80
-
81
-
users.users = optionalAttrs (cfg.user == "gpodder") ({
82
-
gpodder = {
83
-
description = "gpodder service user";
84
-
name = cfg.user;
85
-
group = cfg.group;
86
-
isSystemUser = true;
87
-
};
88
-
});
89
-
90
-
users.groups = optionalAttrs (cfg.group == "gpodder") ({
91
-
gpodder = { };
92
-
});
93
-
94
-
# systemd.services.gpodder-install = {
95
-
# description = "gpodder install service";
96
-
# wantedBy = [ "multi-user.target" ];
97
-
# before = [ "gpodder.service" ];
98
-
# path = with pkgs; [ gpodder2go ];
99
-
100
-
# serviceConfig = {
101
-
# User = cfg.user;
102
-
# Type = "oneshot";
103
-
# CacheDirectory = "gpodder";
104
-
# # Stores sessions.
105
-
# CacheDirectoryMode = "700";
106
-
# ConfigurationDirectory = "gpodder";
107
-
# LogsDirectory = "gpodder";
108
-
# StateDirectory = "gpodder";
109
-
# };
110
-
111
-
# script = ''
112
-
# if [ ! -f "${cfg.dataFolder}/installed" ]; then
113
-
# ${pkgs.gpodder2go}/bin/gpodder2go init
114
-
# touch "${cfg.dataFolder}/installed"
115
-
# fi
116
-
# '';
117
-
# };
118
-
};
119
-
}
120
-
+212
-198
modules/nixos/wallabag.nix
+212
-198
modules/nixos/wallabag.nix
···
1
-
{ config, lib, pkgs, ... }:
1
+
{ config, options, lib, pkgs, ... }:
2
+
3
+
with lib;
2
4
let
3
-
# Based on https://github.com/wallabag/wallabag/blob/2.6.6/app/config/parameters.yml.dist
4
-
settings = {
5
-
database_driver = "${cfg.database_type}";
6
-
database_host = null;
7
-
database_port = 5432;
8
-
database_name = "wallabag";
9
-
database_user = "wallabag";
10
-
database_password = null;
11
-
database_path = null;
12
-
database_table_prefix = "wallabag_";
13
-
database_socket = "/run/postgresql";
14
-
database_charset = "utf8";
5
+
cfg = config.services.wallabag;
15
6
16
-
domain_name = "http://${cfg.domain}";
17
-
server_name = "Wallabag";
7
+
poolName = "wallabag";
18
8
19
-
# Needs an explicit command since Symfony version used by Wallabag does not yet support the `native` transport
20
-
# and the `sendmail` transport does not respect `sendmail_path` configured in `php.ini`.
21
-
mailer_dsn = "sendmail://default?command=/run/wrappers/bin/sendmail%%20-t%%20-i";
9
+
configFile = pkgs.writeTextFile {
10
+
name = "wallabag-config";
11
+
text = cfg.conf;
12
+
destination = "/app/config/parameters.yml";
13
+
};
22
14
23
-
locale = "en";
15
+
appDir = pkgs.buildEnv {
16
+
name = "wallabag-app-dir";
17
+
ignoreCollisions = true;
18
+
checkCollisionContents = false;
19
+
paths = [ configFile "${cfg.package}" ];
20
+
pathsToLink = [ "/app" "/src" "/translations" ];
21
+
};
24
22
25
-
# A secret key that's used to generate certain security-related tokens.
26
-
# "env(SECRET_FILE)" = "/run/secrets/wallabag";
27
-
# secret = "%env(file:resolve:SECRET_FILE)%";
23
+
# See there for available commands:
24
+
# https://doc.wallabag.org/en/admin/console_commands.html
25
+
# A user can be made admin with the fos:user:promote --super <user> command
26
+
console = pkgs.writeShellScriptBin "wallabag-console" ''
27
+
export WALLABAG_DATA="${cfg.dataDir}"
28
+
cd "${cfg.dataDir}"
29
+
${pkgs.php}/bin/php ${pkgs.wallabag}/bin/console --env=prod $@
30
+
'';
28
31
29
-
# two factor stuff
30
-
twofactor_auth = false;
31
-
twofactor_sender = "";
32
+
in
33
+
{
32
34
33
-
# fosuser stuff
34
-
fosuser_registration = false;
35
-
fosuser_confirmation = false;
35
+
options = {
36
36
37
-
# how long the access token should live in seconds for the API
38
-
fos_oauth_server_access_token_lifetime = 3600;
39
-
# how long the refresh token should life in seconds for the API
40
-
fos_oauth_server_refresh_token_lifetime = 1209600;
37
+
services.wallabag = {
38
+
enable = mkEnableOption "wallabag";
41
39
42
-
from_email = "wallabag@read.mossnet.lan";
40
+
user = mkOption {
41
+
type = types.str;
42
+
default = "nginx";
43
+
description = ''
44
+
User account under which both the update daemon and the web-application run.
45
+
'';
46
+
};
43
47
44
-
# RabbitMQ processing
45
-
redis_scheme = "unix";
46
-
redis_host = ""; # Ignored for unix scheme
47
-
redis_port = 0; # Ignored for unix scheme
48
-
redis_path = config.services.redis.servers.wallabag.unixSocket;
49
-
redis_password = null;
48
+
dataDir = mkOption {
49
+
type = types.path;
50
+
default = "/var/lib/wallabag";
51
+
description = ''
52
+
Data directory.
53
+
'';
54
+
};
50
55
51
-
# Redis processing
52
-
rabbitmq_host = "";
53
-
rabbitmq_port = 0;
54
-
rabbitmq_user = "";
55
-
rabbitmq_password = "";
56
-
rabbitmq_prefetch_count = 0;
56
+
package = mkOption {
57
+
type = types.package;
58
+
default = pkgs.wallabag;
59
+
description = ''
60
+
Wallabag package to use.
61
+
'';
62
+
};
57
63
58
-
# sentry logging
59
-
sentry_dsn = null;
60
-
} // cfg.parameters;
64
+
hostName = mkOption {
65
+
type = types.str;
66
+
description = ''
67
+
Name of the nginx virtualhost to use and setup.
68
+
'';
69
+
};
61
70
62
-
php = cfg.php.package.withExtensions ({ enabled, all }: enabled ++ (with all; [
63
-
imagick
64
-
tidy
65
-
]));
66
-
67
-
commonServiceConfig = {
68
-
CacheDirectory = "wallabag";
69
-
# Stores sessions.
70
-
CacheDirectoryMode = "700";
71
-
ConfigurationDirectory = "wallabag";
72
-
LogsDirectory = "wallabag";
73
-
StateDirectory = "wallabag";
74
-
# Stores site-credentials-secret-key.txt.
75
-
StateDirectoryMode = "700";
76
-
};
77
-
78
-
cfg = config.services.wallabag;
79
-
in {
80
-
options.services.wallabag = with lib; {
81
-
enable = mkEnableOption (mdDoc "Wallabag read-it-later service");
82
-
83
-
package = mkOption {
84
-
type = types.package;
85
-
default = pkgs.wallabag;
86
-
};
87
-
88
-
php.package = mkOption {
89
-
type = types.package;
90
-
default = pkgs.php;
91
-
};
92
-
93
-
parameters = mkOption {
94
-
type = types.attrsOf types.str;
95
-
default = {};
96
-
description = mdDoc "Parameters to override from the default. See <https://doc.wallabag.org/en/admin/parameters.html> for values.";
97
-
};
71
+
poolConfig = mkOption {
72
+
type = types.lines;
73
+
default = ''
74
+
pm = dynamic
75
+
pm.max_children = 75
76
+
pm.start_servers = 1
77
+
pm.min_spare_servers = 1
78
+
pm.max_spare_servers = 20
79
+
pm.max_requests = 500
80
+
catch_workers_output = 1
81
+
'';
82
+
description = ''
83
+
Options for wallabag's PHP pool. See the documentation on <literal>php-fpm.conf</literal> for details on configuration directives.
84
+
'';
85
+
};
98
86
99
-
database_type = mkOption {
100
-
type = types.enum [
101
-
"pdo_sqlite3"
102
-
"pdo_pgsql"
103
-
];
104
-
default = if config.services.postgresql.enable
105
-
then "pdo_pgsql"
106
-
else "pdo_sqlite3";
107
-
defaultText = ''
108
-
if config.services.postgresql.enable
109
-
then "pdo_pgsql"
110
-
else "pdo_sqlite3"
111
-
'';
112
-
description = mdDoc ''
113
-
The database engine name. Can be pdo_sqlite3 or pdo_pgsql.
114
-
'';
87
+
conf = mkOption {
88
+
type = types.str;
89
+
description = ''
90
+
Contents of the wallabag configuration file (parameters.yml)
91
+
'';
92
+
};
115
93
};
94
+
};
116
95
117
-
domain = mkOption {
118
-
type = types.str;
119
-
description = "Bare domain name for Wallabag";
120
-
};
121
96
122
-
virtualHost.enable = mkEnableOption (mdDoc "Define nginx virtualhost for Wallabag");
123
-
};
97
+
config = mkIf cfg.enable {
124
98
125
-
config = lib.mkIf cfg.enable {
126
-
environment.etc."wallabag/parameters.yml" = {
127
-
source = pkgs.writeTextFile {
128
-
name = "wallabag-config";
129
-
text = builtins.toJSON {
130
-
parameters = settings;
131
-
};
99
+
services.phpfpm.pools."${poolName}" = {
100
+
user = "${cfg.user}";
101
+
group = "nginx";
102
+
phpPackage = pkgs.php;
103
+
phpEnv = {
104
+
WALLABAG_DATA = cfg.dataDir;
105
+
PATH = lib.makeBinPath [pkgs.php];
106
+
};
107
+
settings = {
108
+
"listen.owner" = "nginx";
109
+
"listen.group" = "nginx";
110
+
"listen.mode" = "0600";
111
+
"user" = "${cfg.user}";
112
+
"group" = "nginx";
113
+
"pm" = "dynamic";
114
+
"pm.max_children" = "75";
115
+
"pm.min_spare_servers" = "5";
116
+
"pm.max_spare_servers" = "20";
117
+
"pm.max_requests" = "10";
118
+
"catch_workers_output" = "1";
119
+
"php_admin_value[error_log]" = "stderr";
120
+
"php_admin_flag[log_errors]" = true;
132
121
};
133
122
};
123
+
services.phpfpm.phpOptions = ''
124
+
max_execution_time = 120
125
+
'';
134
126
135
-
services.nginx = lib.mkIf cfg.virtualHost.enable {
136
-
enable = true;
127
+
services.nginx.enable = mkDefault true;
128
+
environment.systemPackages = [ console ];
137
129
138
-
virtualHosts = {
139
-
"${cfg.domain}" = {
140
-
root = "${pkgs.wallabag}/web";
130
+
# services.nginx.virtualHosts."${cfg.hostName}" = {
131
+
# forceSSL = false;
132
+
# enableACME = false;
133
+
# extraConfig = ''
134
+
# error_log /var/log/nginx/wallabag_error.log;
135
+
# access_log /var/log/nginx/wallabag_access.log;
136
+
# '';
141
137
142
-
extraConfig = ''
143
-
add_header X-Frame-Options SAMEORIGIN;
144
-
add_header X-Content-Type-Options nosniff;
145
-
add_header X-XSS-Protection "1; mode=block";
146
-
'';
138
+
# root = "${cfg.package}/web";
139
+
# locations."/" = {
140
+
# priority = 10;
141
+
# tryFiles = "$uri /app.php$is_args$args";
142
+
# };
143
+
# locations."/assets".root = "${cfg.dataDir}/web";
144
+
# locations."~ ^/app\\.php(/|$)" = {
145
+
# priority = 100;
146
+
# fastcgiParams = {
147
+
# SCRIPT_FILENAME = "$realpath_root$fastcgi_script_name";
148
+
# DOCUMENT_ROOT = "$realpath_root";
149
+
# };
150
+
# extraConfig = ''
151
+
# fastcgi_pass unix:${config.services.phpfpm.pools."${poolName}".socket};
152
+
# include ${config.services.nginx.package}/conf/fastcgi_params;
153
+
# include ${config.services.nginx.package}/conf/fastcgi.conf;
154
+
# internal;
155
+
# '';
156
+
# };
157
+
# locations."~ \\.php$" = {
158
+
# priority = 1000;
159
+
# return = "404";
160
+
# };
161
+
# };
147
162
148
-
locations."/" = {
149
-
extraConfig = ''
150
-
try_files $uri /app.php$is_args$args;
151
-
'';
152
-
};
153
163
154
-
locations."/assets".root = "${pkgs.wallabag}/app/web";
164
+
services.nginx.virtualHosts."${cfg.hostName}" = {
165
+
enableACME = false;
166
+
forceSSL = false;
167
+
root = "${cfg.package}/web";
155
168
156
-
locations."~ ^/app\\.php(/|$)" = {
157
-
extraConfig = ''
158
-
fastcgi_pass unix:${config.services.phpfpm.pools.wallabag.socket};
159
-
include ${config.services.nginx.package}/conf/fastcgi.conf;
160
-
fastcgi_param PATH_INFO $fastcgi_path_info;
161
-
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
162
-
fastcgi_param SCRIPT_FILENAME ${pkgs.wallabag}/web/$fastcgi_script_name;
163
-
fastcgi_param DOCUMENT_ROOT ${pkgs.wallabag}/web;
164
-
fastcgi_read_timeout 120;
165
-
internal;
166
-
'';
167
-
};
169
+
extraConfig = ''
170
+
add_header X-Frame-Options SAMEORIGIN;
171
+
add_header X-Content-Type-Options nosniff;
172
+
add_header X-XSS-Protection "1; mode=block";
173
+
'';
168
174
169
-
locations."~ /(?!app)\\.php$" = {
170
-
extraConfig = ''
171
-
return 404;
172
-
'';
173
-
};
174
-
};
175
+
locations."/" = {
176
+
tryFiles = "$uri /app.php$is_args$args";
175
177
};
176
-
};
177
178
178
-
services.phpfpm.pools.wallabag = {
179
-
user = config.users.users.wallabag.name;
180
-
phpPackage = php;
181
-
settings = {
182
-
"catch_workers_output" = true;
179
+
locations."/assets".root = "${cfg.dataDir}/web";
183
180
184
-
"listen.owner" = config.services.nginx.user;
185
-
"listen.group" = "root";
186
-
"pm" = "dynamic";
187
-
"pm.max_children" = 5;
188
-
"pm.start_servers" = 2;
189
-
"pm.min_spare_servers" = 1;
190
-
"pm.max_spare_servers" = 3;
191
-
"php_admin_value[error_log]" = "/var/log/wallabag/error.log";
192
-
"php_admin_value[access_log]" = "/var/log/wallabag/access.log";
193
-
"php_admin_flag[log_errors]" = true;
181
+
locations."~ ^/app\\.php(/|$)" = {
182
+
fastcgiParams = {
183
+
SCRIPT_FILENAME = "$realpath_root$fastcgi_script_name";
184
+
DOCUMENT_ROOT = "$realpath_root";
185
+
};
186
+
extraConfig = ''
187
+
fastcgi_pass unix:${config.services.phpfpm.pools."${poolName}".socket};
188
+
include ${config.services.nginx.package}/conf/fastcgi_params;
189
+
include ${config.services.nginx.package}/conf/fastcgi.conf;
190
+
internal;
191
+
'';
192
+
# extraConfig = ''
193
+
# fastcgi_pass unix:${config.services.phpfpm.pools."${poolName}".socket};
194
+
# fastcgi_split_path_info ^(.+\.php)(/.*)$;
195
+
# include ${pkgs.nginx}/conf/fastcgi_params;
196
+
# fastcgi_param SCRIPT_FILENAME ${cfg.package}/web/$fastcgi_script_name;
197
+
# fastcgi_param DOCUMENT_ROOT ${cfg.package}/web;
198
+
# fastcgi_read_timeout 120;
199
+
# internal;
200
+
# '';
194
201
};
195
-
phpOptions = ''
196
-
; Set up $_ENV superglobal.
197
-
; http://php.net/request-order
198
-
variables_order = "EGPCS"
199
-
# Wallabag will crash on start-up.
200
-
# https://github.com/wallabag/wallabag/issues/6042
201
-
# error_reporting = E_ALL & ~E_USER_DEPRECATED & ~E_DEPRECATED
202
-
'';
203
-
settings = {
204
-
# Accept settings from the systemd service.
205
-
clear_env = false;
202
+
203
+
locations."~ /(?!app)\\.php$" = {
204
+
extraConfig = ''
205
+
return 404;
206
+
'';
206
207
};
207
208
};
208
209
209
-
users.users.wallabag = {
210
-
isSystemUser = true;
211
-
group = "wallabag";
212
-
};
213
-
users.groups.wallabag = {};
214
-
services.redis.servers.wallabag = {
215
-
enable = true;
216
-
user = "wallabag";
217
-
};
218
-
services.rabbitmq.enable = false;
219
-
220
-
systemd.services.phpfpm-wallabag.serviceConfig = commonServiceConfig;
221
-
222
210
systemd.services.wallabag-install = {
223
211
description = "Wallabag install service";
224
212
wantedBy = [ "multi-user.target" ];
225
213
before = [ "phpfpm-wallabag.service" ];
226
-
after = [ "postgresql.service" ];
214
+
after = [ "mysql.service" "postgresql.service" ];
227
215
path = with pkgs; [ coreutils php phpPackages.composer ];
228
216
229
217
serviceConfig = {
230
-
User = "wallabag";
218
+
User = cfg.user;
231
219
Type = "oneshot";
232
-
} // commonServiceConfig;
220
+
RemainAfterExit = "yes";
221
+
PermissionsStartOnly = true;
222
+
};
223
+
224
+
preStart = ''
225
+
mkdir -p "${cfg.dataDir}"
226
+
chown ${cfg.user}:nginx "${cfg.dataDir}"
227
+
'';
233
228
234
229
script = ''
235
-
if [ ! -f "$STATE_DIRECTORY/installed" ]; then
236
-
php ${pkgs.wallabag}/bin/console --env=prod wallabag:install
237
-
touch "$STATE_DIRECTORY/installed"
238
-
else
239
-
php ${pkgs.wallabag}/bin/console --env=prod doctrine:migrations:migrate --no-interaction
240
-
fi
241
-
php ${pkgs.wallabag}/bin/console --env=prod cache:clear
242
-
'';
230
+
echo "Setting up wallabag files in ${cfg.dataDir} ..."
231
+
cd "${cfg.dataDir}"
232
+
233
+
rm -rf var/cache/*
234
+
rm -f app src translations
235
+
ln -sf ${appDir}/app app
236
+
ln -sf ${appDir}/src src
237
+
ln -sf ${appDir}/translations translations
238
+
ln -sf ${cfg.package}/composer.{json,lock} .
239
+
240
+
export WALLABAG_DATA="${cfg.dataDir}"
241
+
if [ ! -f installed ]; then
242
+
echo "Install file not found, installing ..."
243
+
php ${cfg.package}/bin/console --env=prod doctrine:database:create --if-not-exists --no-interaction
244
+
php ${cfg.package}/bin/console --env=prod doctrine:migrations:migrate --no-interaction
245
+
# Until https://github.com/wallabag/wallabag/issues/3662 is fixed
246
+
# yes no | php ${cfg.package}/bin/console --env=prod wallabag:install
247
+
touch installed
248
+
else
249
+
php ${cfg.package}/bin/console --env=prod doctrine:migrations:migrate --no-interaction
250
+
fi
251
+
php ${cfg.package}/bin/console --env=prod cache:clear
252
+
'';
243
253
};
254
+
};
255
+
256
+
meta = with stdenv.lib; {
257
+
maintainers = with maintainers; [ nadrieril ];
244
258
};
245
259
}
+3
-15
mount-crypted.sh
+3
-15
mount-crypted.sh
···
1
1
#!/usr/bin/env bash
2
-
3
-
# nix-shell https://github.com/sgillespie/nixos-yubikey-luks/archive/master.tar.gz
4
-
5
-
rbtohex() {
6
-
( od -An -vtx1 | tr -d ' \n' )
7
-
}
8
-
9
-
hextorb() {
10
-
( tr '[:lower:]' '[:upper:]' | sed -e 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI'| xargs printf )
11
-
}
12
-
13
2
key_length=512
14
-
iterations=1000000
15
-
salt="$(head -n 1 /mnt/crypt-storage/default)"
3
+
iterations="$(head -n 2 /boot/crypted-storage/default)"
4
+
salt="$(head -n 1 /boot/crypted-storage/default)"
16
5
chal="$(echo -n $salt | openssl dgst -binary -sha512 | rbtohex)"
17
6
resp="$(ykchalresp -2 -x $chal 2>/dev/null)"
18
-
user_key=
19
-
read -r user_key
7
+
user_key="$(read -s)"
20
8
luks_key="$(echo -n $user_key | pbkdf2-sha512 $(($key_length / 8)) $iterations $resp | rbtohex)"
21
9
echo -n $luks_key | hextorb | sudo cryptsetup luksOpen /dev/sda2 crypted --key-file=-
-9
overlays/default.nix
-9
overlays/default.nix
···
14
14
buildInputs = prevAttrs.propagatedBuildInputs ++ [ final.python3.pkgs.aiosqlite ]; # We're using sqlite and upstream doesn't package this dependency
15
15
});
16
16
17
-
wallabag = prev.wallabag.overrideAttrs (attrs: {
18
-
patches = builtins.filter (patch: builtins.baseNameOf patch != "wallabag-data.patch") attrs.patches ++ [
19
-
# Out of the box, Wallabag wants to write to various subdirectories of the project directory.
20
-
# Letโs replace references to such paths with designated systemd locations
21
-
# so that the project source can remain immutable.
22
-
../pkgs/wallabag-data.patch
23
-
];
24
-
});
25
-
26
17
# Need to do server and agent too, maybe
27
18
# woodpecker-cli-next =
28
19
# let
+1
-6
pkgs/default.nix
+1
-6
pkgs/default.nix
···
5
5
plymouth-themes = pkgs.callPackage ./plymouth.nix { };
6
6
tic-80 = pkgs.callPackage ./tic-80.nix { };
7
7
fennel-ls = pkgs.callPackage ./fennel-ls.nix { };
8
-
# kobopatch = pkgs.callPackage ./kobopatch.nix { };
8
+
kobopatch = pkgs.callPackage ./kobopatch.nix { };
9
9
my-mautrix-discord = pkgs.callPackage ./mautrix-discord.nix { }; # Handled by matrix-appservices input
10
10
ulogger-server = pkgs.callPackage ./ulogger.nix { };
11
-
# Wallabag is now an overlay
12
-
# TODO: we still use the patch from this folder though
13
-
my-wallabag = pkgs.callPackage ./wallabag.nix { };
14
-
mautrix-slack = pkgs.callPackage ./mautrix-slack.nix { };
15
-
gpodder2go = pkgs.callPackage ./gpodder2go.nix { };
16
11
}
-14
pkgs/gpodder2go.nix
-14
pkgs/gpodder2go.nix
···
1
-
{ pkgs, ... }:
2
-
3
-
pkgs.buildGoModule rec {
4
-
name = "gpodder2go";
5
-
src = pkgs.fetchFromGitHub {
6
-
owner = "oxtyped";
7
-
repo = "gpodder2go";
8
-
rev = "v0.1.2";
9
-
hash = "sha256-RAt0rd4DZwI7b7IEFd1o4s4ivADzgzBzBaeGVL8OmYo";
10
-
};
11
-
12
-
vendorHash = "sha256-mbSgY5WjIAesT27uRgaiRF3N06yuUntjTp6kjUMh6Bw";
13
-
doCheck = false;
14
-
}
+3
-3
pkgs/kobopatch.nix
+3
-3
pkgs/kobopatch.nix
···
1
1
{ lib, buildGoModule, fetchFromGitHub }:
2
2
3
-
buildGoModule {
3
+
buildGoModule rec {
4
4
name = "kobopatch";
5
5
version = "0.15.0";
6
6
7
-
vendorHash = "sha256-1i6srhyig4x8mywyc2l8wzzm1afvb7wxmjsr84c447sb1xss6p7x";
7
+
vendorSha256 = "1i6srhyig4x8mywyc2l8wzzm1afvb7wxmjsr84c447sb1xss6p7x";
8
8
9
9
src = fetchFromGitHub {
10
10
owner = "geek1011";
11
11
repo = "kobopatch";
12
12
rev = "653070c67c83ec61884854efc4f8a3132d82a2e5";
13
-
hash = "sha256-09hr3zh0w0f78cx40d2yydqv0mmjdh4iwdgia7sikraphvha85nn";
13
+
sha256 = "09hr3zh0w0f78cx40d2yydqv0mmjdh4iwdgia7sikraphvha85nn";
14
14
};
15
15
16
16
meta = with lib; {
+1
-1
pkgs/koboutils.nix
+1
-1
pkgs/koboutils.nix
-29
pkgs/mautrix-slack.nix
-29
pkgs/mautrix-slack.nix
···
1
-
{ lib, buildGoModule, fetchFromGitHub, olm }:
2
-
3
-
buildGoModule rec {
4
-
pname = "mautrix-discord";
5
-
version = "unstable-2022-11-04";
6
-
7
-
src = fetchFromGitHub {
8
-
owner = "mautrix";
9
-
repo = "slack";
10
-
rev = "4530ff397d08d93b673cd71da4c2a75d969ca0df";
11
-
hash = "";
12
-
};
13
-
14
-
buildInputs = [ olm ];
15
-
16
-
vendorHash = "sha256-yday2mSnPwuhXWkCG4XY7qoBl3DXHcSvzBoZbjgYz/c=";
17
-
18
-
ldflags = [ "-s" "-w" ]; # https://github.com/NixOS/nixpkgs/issues/177698
19
-
20
-
doCheck = false; # No tests available
21
-
22
-
meta = with lib; {
23
-
homepage = "https://go.mau.fi/mautrix-slack";
24
-
description = "Matrix to Slack hybrid puppeting/relaybot bridge";
25
-
license = licenses.agpl3Plus;
26
-
maintainers = with maintainers; [ ];
27
-
};
28
-
}
29
-
+2
-2
pkgs/tic-80.nix
+2
-2
pkgs/tic-80.nix
-55
pkgs/wallabag-data.patch
-55
pkgs/wallabag-data.patch
···
1
-
diff --git a/app/AppKernel.php b/app/AppKernel.php
2
-
index 61b734e06..0902c20fc 100644
3
-
--- a/app/AppKernel.php
4
-
+++ b/app/AppKernel.php
5
-
@@ -64,12 +64,12 @@ class AppKernel extends Kernel
6
-
7
-
public function getCacheDir()
8
-
{
9
-
- return dirname(__DIR__) . '/var/cache/' . $this->getEnvironment();
10
-
+ return getenv('CACHE_DIRECTORY') . '/' . $this->getEnvironment();
11
-
}
12
-
13
-
public function getLogDir()
14
-
{
15
-
- return dirname(__DIR__) . '/var/logs';
16
-
+ return getenv('LOGS_DIRECTORY');
17
-
}
18
-
19
-
public function registerContainerConfiguration(LoaderInterface $loader)
20
-
diff --git a/app/config/config.yml b/app/config/config.yml
21
-
index 7f0a4ca6c..77b5175c8 100644
22
-
--- a/app/config/config.yml
23
-
+++ b/app/config/config.yml
24
-
@@ -1,5 +1,7 @@
25
-
imports:
26
-
- - { resource: parameters.yml }
27
-
+ # Unfortunately, we cannot use %env(string:CONFIGURATION_DIRECTORY)%. Hardcoding the path for simplicity.
28
-
+ # https://symfony.com/doc/current/service_container/import.html#importing-configuration-with-imports
29
-
+ - { resource: '/etc/wallabag/parameters.yml' }
30
-
- { resource: security.yml }
31
-
- { resource: services.yml }
32
-
- { resource: wallabag.yml }
33
-
@@ -28,7 +30,7 @@ framework:
34
-
session:
35
-
# handler_id set to null will use default session handler from php.ini
36
-
handler_id: session.handler.native_file
37
-
- save_path: "%kernel.project_dir%/var/sessions/%kernel.environment%"
38
-
+ save_path: "%env(string:CACHE_DIRECTORY)%/sessions/%kernel.environment%"
39
-
cookie_secure: auto
40
-
fragments: ~
41
-
http_method_override: true
42
-
diff --git a/app/config/wallabag.yml b/app/config/wallabag.yml
43
-
index bd57d6377..8e1cd0970 100644
44
-
--- a/app/config/wallabag.yml
45
-
+++ b/app/config/wallabag.yml
46
-
@@ -35,7 +35,7 @@ wallabag_core:
47
-
fetching_error_message: |
48
-
wallabag can't retrieve contents for this article. Please <a href="https://doc.wallabag.org/en/user/errors_during_fetching.html#how-can-i-help-to-fix-that">troubleshoot this issue</a>.
49
-
api_limit_mass_actions: 10
50
-
- encryption_key_path: "%kernel.project_dir%/data/site-credentials-secret-key.txt"
51
-
+ encryption_key_path: "%env(string:STATE_DIRECTORY)%/site-credentials-secret-key.txt"
52
-
default_internal_settings:
53
-
-
54
-
name: share_public
55
-
-57
pkgs/wallabag.nix
-57
pkgs/wallabag.nix
···
1
-
{ lib
2
-
, stdenv
3
-
, fetchurl
4
-
}:
5
-
6
-
# Point the environment variable $WALLABAG_DATA to a data directory
7
-
# that contains the folder `app` which must be a clone of
8
-
# wallabag's configuration files with your customized `parameters.yml`.
9
-
# In practice you need to copy `${pkgs.wallabag}/app` and the
10
-
# customizzed `parameters.yml` to $WALLABAG_DATA.
11
-
# These need to be updated every package upgrade.
12
-
#
13
-
# After a package upgrade, empty the `var/cache` folder or unexpected
14
-
# error will occur.
15
-
16
-
let
17
-
pname = "wallabag";
18
-
version = "2.6.9";
19
-
in
20
-
stdenv.mkDerivation {
21
-
inherit pname version;
22
-
23
-
# Release tarball includes vendored files
24
-
src = fetchurl {
25
-
url = "https://github.com/wallabag/wallabag/releases/download/${version}/wallabag-${version}.tar.gz";
26
-
hash = "sha256-V4s5/y9fFAmZ+WnUxU03UyRivEihD1ZUKQOOq4TLEKw=";
27
-
};
28
-
29
-
patches = [
30
-
./wallabag-data.patch # exposes $WALLABAG_DATA
31
-
];
32
-
33
-
dontBuild = true;
34
-
35
-
installPhase = ''
36
-
runHook preInstall
37
-
38
-
mkdir $out
39
-
cp -R * $out/
40
-
41
-
runHook postInstall
42
-
'';
43
-
44
-
meta = with lib; {
45
-
description = "wallabag is a self hostable application for saving web pages";
46
-
longDescription = ''
47
-
wallabag is a self-hostable PHP application allowing you to not
48
-
miss any content anymore. Click, save and read it when you can.
49
-
It extracts content so that you can read it when you have time.
50
-
'';
51
-
license = licenses.mit;
52
-
homepage = "http://wallabag.org";
53
-
changelog = "https://github.com/wallabag/wallabag/releases/tag/${version}";
54
-
maintainers = with maintainers; [ schneefux ];
55
-
platforms = platforms.all;
56
-
};
57
-
}
+1
-9
shell.nix
+1
-9
shell.nix
···
5
5
default = pkgs.mkShell {
6
6
# Enable experimental features without having to specify the argument
7
7
NIX_CONFIG = "experimental-features = nix-command flakes";
8
-
nativeBuildInputs = with pkgs; [
9
-
nix
10
-
home-manager
11
-
git
12
-
agenix
13
-
deploy-rs
14
-
dnscontrol
15
-
git-bug
16
-
];
8
+
nativeBuildInputs = with pkgs; [ nix home-manager git agenix deploy-rs dnscontrol ];
17
9
};
18
10
}