Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: install flags #10

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@
# Variables
DOCKER_IMAGE = ubuntu:latest
CONTAINER_NAME = dotfiles-test
WORKDIR = /root/.dotfiles
DEPLOY_ON_CONTAINER_SCRIPT = "\
apt-get update && \
rm -rf /root/.bashrc /root/.profile && \
yes | bash install.sh && \
source /root/.bashrc && \
bash test.sh \
WORKDIR = /home/ciuser/.dotfiles
DEPLOY_ON_CONTAINER_SCRIPT="\
apt-get update && \
apt-get install adduser sudo -y && \
useradd -m -s /bin/bash ciuser && \
passwd -d ciuser && \
usermod -aG sudo ciuser && \
sudo su - ciuser -c ' \
rm -rf /home/ciuser/.bashrc /home/ciuser/.profile && \
cd /home/ciuser/.dotfiles && \
yes | bash install.sh && \
bash test.sh \
' \
"
COMPILE_RESULT_SCRIPT = RESULT=$$? && \
if [ $$RESULT -eq 0 ]; then \
Expand Down
58 changes: 29 additions & 29 deletions declarative.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,45 +11,45 @@

# Packages
PACKAGES=(
bash_completion
bat
btop
cbonsai
clipse
fzf
# bash_completion
# bat
# btop
# cbonsai
# clipse
# fzf
# kitty
lazygit
neofetch
neovim
# nix
nodejs
npm
nvm
obsidian
fira_code
pipes
tmux
vim
yazi
zoxide
zsh
# lazygit
# neofetch
# neovim
nix
# nodejs
# npm
# nvm
# obsidian
# fira_code
# pipes
# tmux
# vim
# yazi
# zoxide
# zsh
)
# Scripts
SCRIPTS=(
daily_note
git_fzf
killport
# daily_note
# git_fzf
# killport
on
)

# Configs
CONFIGS=(
bash_aliases
bash_history
fzf_bash_history
fzf_catppuccin_theme
screensaver
zoxide
# bash_history
# fzf_bash_history
# fzf_catppuccin_theme
# screensaver
# zoxide
)

# Join the array into a space-separated string
Expand Down
8 changes: 4 additions & 4 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ if ask "Do you want to install them?"; then
should_install build-essential
should_install curl
should_install git
use_tzdata
use_flatpak
use_brew
use_stow
# use_tzdata
# use_flatpak
# use_brew
# use_stow
fi
print "\n"

Expand Down
177 changes: 177 additions & 0 deletions nix.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
#!/bin/sh

# This script installs the Nix package manager on your system by
# downloading a binary distribution and running its installer script
# (which in turn creates and populates /nix).

{ # Prevent execution if this script was only partially downloaded
oops() {
echo "$0:" "$@" >&2
exit 1
}

umask 0022

tmpDir="$(mktemp -d -t nix-binary-tarball-unpack.XXXXXXXXXX ||
oops "Can't create temporary directory for downloading the Nix binary tarball")"
cleanup() {
rm -rf "$tmpDir"
}
trap cleanup EXIT INT QUIT TERM

require_util() {
command -v "$1" >/dev/null 2>&1 ||
oops "you do not have '$1' installed, which I need to $2"
}

case "$(uname -s).$(uname -m)" in
Linux.x86_64)
hash=f66ee75b9107bac599de6b7516a3f8e0f808c30d6fe56693d4972152d6fc5dc3
path=i9fy0pvnm9p78wv779jml81g8pn901y5/nix-2.25.3-x86_64-linux.tar.xz
system=x86_64-linux
;;
Linux.i?86)
hash=892c42f51bf180eb4f034f856fd4b5d7cd72555ebf9aeaff99c5af460bf65a8e
path=ig5zbxdwjnkil72gm5an9fj4nam6rmk2/nix-2.25.3-i686-linux.tar.xz
system=i686-linux
;;
Linux.aarch64)
hash=407978c9eeb850e7c1370b6d7784814b65e50af4b82677a479d38dead8151f49
path=6yshvjjfaaxiqr5026vs7b0y2w7shnm1/nix-2.25.3-aarch64-linux.tar.xz
system=aarch64-linux
;;
Linux.armv6l)
hash=1e82ac4437b753d6f5e44e7926e3cf3eb24c2e751c21224db237fe167f09cf70
path=v56sdm0ic3crw2yi3wz7d9b5f482i03k/nix-2.25.3-armv6l-linux.tar.xz
system=armv6l-linux
;;
Linux.armv7l)
hash=80c658c4ab81c768f3e504f6efb6ba2debc6f29bf22efdf4d15393da8637cdab
path=9rj2a7yclqlkqyrcpqn6wgwc567g6c8j/nix-2.25.3-armv7l-linux.tar.xz
system=armv7l-linux
;;
Linux.riscv64)
hash=5c049986d600e58f76cbac81aa7d60503f33d665be0477fbba7e2774dd913d7a
path=ja0j1v67jp9i8jfr2fg29zgkawiclpz4/nix-2.25.3-riscv64-linux.tar.xz
system=riscv64-linux
;;
Darwin.x86_64)
hash=5d41ad5203724a56bea5a1b61f436a22839d82126680ec00e78c27765d99b252
path=g3ydmarap98zfj4j286dgrwzpc8agllf/nix-2.25.3-x86_64-darwin.tar.xz
system=x86_64-darwin
;;
Darwin.arm64 | Darwin.aarch64)
hash=9d3b7eadd1c9b71ae43c3244e88fc3dd89ba59f1c78ee6c7d22800c562b7e66e
path=fg8haq4wkgm320cffnib91f6lv2i28g6/nix-2.25.3-aarch64-darwin.tar.xz
system=aarch64-darwin
;;
*) oops "sorry, there is no binary distribution of Nix for your platform" ;;
esac

# Use this command-line option to fetch the tarballs using nar-serve or Cachix
if [ "${1:-}" = "--tarball-url-prefix" ]; then
if [ -z "${2:-}" ]; then
oops "missing argument for --tarball-url-prefix"
fi
url=${2}/${path}
shift 2
else
url=https://releases.nixos.org/nix/nix-2.25.3/nix-2.25.3-$system.tar.xz
fi

tarball=$tmpDir/nix-2.25.3-$system.tar.xz

require_util tar "unpack the binary tarball"
if [ "$(uname -s)" != "Darwin" ]; then
require_util xz "unpack the binary tarball"
fi

if command -v curl >/dev/null 2>&1; then
fetch() { curl --fail -L "$1" -o "$2"; }
elif command -v wget >/dev/null 2>&1; then
fetch() { wget "$1" -O "$2"; }
else
oops "you don't have wget or curl installed, which I need to download the binary tarball"
fi

echo "downloading Nix 2.25.3 binary tarball for $system from '$url' to '$tmpDir'..."
fetch "$url" "$tarball" || oops "failed to download '$url'"

if command -v sha256sum >/dev/null 2>&1; then
hash2="$(sha256sum -b "$tarball" | cut -c1-64)"
elif command -v shasum >/dev/null 2>&1; then
hash2="$(shasum -a 256 -b "$tarball" | cut -c1-64)"
elif command -v openssl >/dev/null 2>&1; then
hash2="$(openssl dgst -r -sha256 "$tarball" | cut -c1-64)"
else
oops "cannot verify the SHA-256 hash of '$url'; you need one of 'shasum', 'sha256sum', or 'openssl'"
fi

if [ "$hash" != "$hash2" ]; then
oops "SHA-256 hash mismatch in '$url'; expected $hash, got $hash2"
fi

unpack=$tmpDir/unpack
mkdir -p "$unpack"
tar -xJf "$tarball" -C "$unpack" || oops "failed to unpack '$url'"

script=$(echo "$unpack"/*/install)

[ -e "$script" ] || oops "installation script is missing from the binary tarball!"
export INVOKED_FROM_INSTALL_IN=1
"$script" "$@"

} # End of wrapping

# 0: Indicates the script or shell is running as the superuser (root).
# Non-zero: A regular user ID (e.g., 1000 for the first user on most Linux systems).
is_root() {
if [ "$EUID" -eq 0 ]; then
return 0
else
return 1
fi
}

_SERIOUS_BUSINESS="${RED}%s:${ESC} "
password_confirm() {
local do_something_consequential="$1"
if ui_confirm "Can I $do_something_consequential?"; then
# shellcheck disable=SC2059
sudo -kv --prompt="$(printf "${_SERIOUS_BUSINESS}" "Enter your password to $do_something_consequential")"
else
return 1
fi
}

__sudo() {
local expl="$1"
local cmd="$2"
shift
header "sudo execution"

echo "I am executing:"
echo ""
printf " $ sudo %s\\n" "$cmd"
echo ""
echo "$expl"
echo ""

return 0
}

_sudo() {
local expl="$1"
shift
if ! headless || is_root; then
__sudo "$expl" "$*" >&2
fi

if is_root; then
env "$@"
else
sudo "$@"
fi
}

sh <(curl -L https://nixos.org/nix/install) --no-daemon --yes --no-channel-add
17 changes: 10 additions & 7 deletions shell/pkgs/nix.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
#!/usr/bin/env bash

. "./shell/src/install_with_temp_custom_script.sh"
. "./shell/src/install_with_sh.sh"
. "./shell/src/run_elevated_clause.sh"

install_nix() {
# Check if nix is installed
if command -v nix >/dev/null 2>&1; then
if nix --version >/dev/null 2>&1; then
print "Nix already installed" "$_YELLOW"
else
install_with_temp_custom_script "https://nixos.org/nix/install"
# TODO: set up nix channels like
# nix-channel --add https://channels.nixos.org/nixos-24.05 nixpkgs
# nix-channel --update
# install_with_temp_custom_script "https://nixos.org/nix/install" "curl" \
# "-L" \
# "sh" \
# "--no-daemon --yes --no-channel-add"
install_with_sh "sh" "curl" "-L" "https://nixos.org/nix/install" "--no-daemon --yes --no-channel-add"
# . /home/ciuser/.nix-profile/etc/profile.d/nix.sh
fi
}

# Install nix
# install_nix
# TODO: fix nix install
install_nix
21 changes: 21 additions & 0 deletions shell/src/install_with_sh.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/usr/bin/env bash

# Install a package with a custom script via a networking tool
# $1: URI to download the custom script
# $2: Networking tool to use (default: curl)
# $3: Flags to pass to the tool (default for curl: -L)
# $4: Shell to run the script (default: sh)
# $5: Shell flags to pass to the shell (default: none)
# Works like this: "$tool" "$flags" "$uri" "$tmpFile"
install_with_sh() {
shell="${1:-sh}"
tool="${2:-curl}"
flags="${3:--L}"
uri="$4"
shellFlags="${5:-}"

# sh <(curl -L https://nixos.org/nix/install) --no-daemon --yes --no-channel-add
echo "$shell <($tool $flags $uri) $shellFlags"
# shellcheck disable=SC2086
$shell <($tool $flags $uri) $shellFlags
}
2 changes: 0 additions & 2 deletions shell/src/install_with_temp_custom_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,9 @@ install_with_temp_custom_script() {
tmpFile=$(mktemp)

# Send the script to the temporary file
print "$tool $flags $uri $tmpFile"
"$tool" "$flags" "$uri" >"$tmpFile"

# Execute the script stored in the temporary file
print "$tool $flags $uri $tmpFile"
"$shell" "$tmpFile" "$shellFlags"

# Clean up the temporary file
Expand Down
6 changes: 3 additions & 3 deletions shell/test/nix_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Test if nix is installed
nix_test() {

if ! nix --help >/dev/null 2>&1; then
if ! nix --version >/dev/null 2>&1; then
print "Nix is not installed." "$_RED"
exit 1
else
Expand All @@ -14,5 +14,5 @@ nix_test() {
}

# Run the test
# nix_test
print "TODO: fix nix install script" "$_RED"
nix_test
# print "TODO: fix nix install script" "$_RED"
Loading