-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.sh
executable file
·51 lines (40 loc) · 1.01 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env bash
# Description: A way to declaratively manage nix-env installed packages on a non NixOS system
# Author: arch-err
# Dependencies:
# - yq
# - nix-env
# - bash
# - sed
# - grep
#
ONLY_INSTALL=true
export NIXPKGS_ALLOW_UNFREE=1
PKGS=$(yq ".packages.[][].package" packages.yaml | sed 's/- //g')
DIFFERENT_INSTALLED_NAMES=$(yq ".packages.[][].installedName" packages.yaml | sed 's/null//g')
INSTALLED_PKGS=$(nix-env -q | sed "s/-[0-9.]\+$//")
# echo $INSTALLED_PKGS
# echo $PKGS
# echo $DIFFERENT_INSTALLED_NAMES
for PKG in $PKGS
do
R=$(yq ".packages.[][] | select(.package == \"$PKG\") | .installedName" packages.yaml)
if ! echo $R | grep -q null;
then
INSTALLED_PKGS=$(echo $INSTALLED_PKGS | sed "s/$R/$PKG/")
fi
done
for PKG in $INSTALLED_PKGS
do
if ! echo $PKGS | grep -q "$PKG"; then
# echo nix-env --uninstall $PKG
nix-env --uninstall $PKG
fi
done
for PKG in $PKGS
do
if $ONLY_INSTALL && echo $INSTALLED_PKGS | grep -q "$PKG"; then
continue
fi
nix-env -iA nixpkgs.$PKG
done