Continue moving personal packages from overlays
Continue moving out of the overlay model for everything and into running sutff directly out of the packages. This should give a cleaner separation of the things that I don't need to maintain separately
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
{ writeShellApplication, unzip, ... }:
|
||||
|
||||
writeShellApplication {
|
||||
name = "aacs";
|
||||
runtimeInputs = [ unzip ];
|
||||
text = ''
|
||||
[ ! -d "''${HOME}/.config/aacs" ] && mkdir -p "''${HOME}/.config/aacs"
|
||||
cd "''${HOME}/.config/aacs"
|
||||
[ -f KEYDB.cfg.zip ] && rm -f KEYDB.cfg.zip
|
||||
curl -L -o KEYDB.cfg.zip "http://fvonline-db.bplaced.net/fv_download.php?lang=eng"
|
||||
unzip KEYDB.cfg.zip
|
||||
mv keydb.cfg KEYDB.config
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{ writeShellApplication, openssl, ... }:
|
||||
|
||||
writeShellApplication {
|
||||
name = "create_ssl";
|
||||
runtimeInputs = [ openssl ];
|
||||
text = ''
|
||||
set -e -o pipefail
|
||||
name="''${1}"
|
||||
root_key="''${2}"
|
||||
|
||||
function usage {
|
||||
echo "USAGE: create_ssl <cert name> <root path>"
|
||||
}
|
||||
|
||||
if [ -z "''${name}" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "''${root_key}" ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create the certificate key
|
||||
openssl ecparam -out "''${name}.key" -name prime256v1 -genkey
|
||||
# Create the CSR
|
||||
openssl req -name -sha256 -key "''${name}.key" -out "''${name}.csr"
|
||||
# Sign it
|
||||
openssl x509 -req -in "''${name}.csr" -CA "''${root_key}.crt" -CAkey "''${root_key}.key" -CAcreateserial -out "''${name}.crt" -days 3650 -sha256
|
||||
'';
|
||||
}
|
||||
@@ -8,6 +8,12 @@ in
|
||||
#default = iso;
|
||||
#iso = top.self.nixosConfigurations.iso.config.system.build.isoImage;
|
||||
#iso-beta = self.nixosConfigurations.iso-beta.config.system.build.isoImage;
|
||||
aacs = c ./aacs.nix { };
|
||||
create_ssl = c ./create_ssl.nix { };
|
||||
inject-darwin = c ./inject-darwin.nix { };
|
||||
inject = c ./inject.nix { };
|
||||
hms = c ./hms { };
|
||||
setup-ssh = c ./setup-ssh { };
|
||||
upgrade-pg-cluster = c ./upgrade-pg-cluster.nix { };
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
writeShellApplication,
|
||||
coreutils,
|
||||
curl,
|
||||
gnutar,
|
||||
nix,
|
||||
...
|
||||
}:
|
||||
writeShellApplication {
|
||||
name = "inject-darwin";
|
||||
runtimeInputs = [
|
||||
coreutils
|
||||
curl
|
||||
gnutar
|
||||
nix
|
||||
];
|
||||
text = ''
|
||||
dir="$(mktemp -d)"
|
||||
cd "''${dir}"
|
||||
|
||||
# Install nix-darwin
|
||||
nix-build https://github.com/LnL7/nix-darwin/archive/master.tar.gz -A installer
|
||||
./result/bin/darwin-installer
|
||||
|
||||
# Get my configuration
|
||||
mkdir -p ~/.config/darwin
|
||||
cd ~/.config/darwin
|
||||
curl -O -L https://github.com/greg-hellings/nixos-config/archive/refs/heads/main.tar.gz
|
||||
tar xvzf main.tar.gz --strip-components 1
|
||||
|
||||
# Build NixOS for this system
|
||||
pushd "''${dir}"
|
||||
nix build "~/.config/darwin#darwinConfigurations.$(hostname -s).system"
|
||||
./result/sw/bin/darwin-rebuild switch --flake ~/.config/darwin
|
||||
popd
|
||||
rm -r "''${dir}"
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
{ writeShellApplication, git, ... }:
|
||||
|
||||
writeShellApplication {
|
||||
name = "inject-nixos-config";
|
||||
runtimeInputs = [ git ];
|
||||
text = ''
|
||||
hostname="''${1}"
|
||||
if [ -n "''${hostname}"]; then
|
||||
echo "You must provide a hostname";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
mv /etc/nixos /etc/nixos.bk
|
||||
cd /etc
|
||||
git clone http://github.com/greg-hellings/nixos-config nixos
|
||||
mkdir -p "/etc/nixos/hosts/''${hostname}"
|
||||
|
||||
# Prepares everything for the flake usage
|
||||
#cp /etc/nixos.bk/configuration.nix "/etc/nixos/hosts/''${hostname}/default.nix"
|
||||
cat << EOF > "/etc/nixos/hosts/''${hostname}/default.nix"
|
||||
{ pkgs, config, ... }:
|
||||
|
||||
{
|
||||
imports = [ ./hardware-configuration.nix ];
|
||||
|
||||
boot.loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
networking.hostName = "''${hostname}";
|
||||
greg = {
|
||||
home = true;
|
||||
tailscale.enable = true;
|
||||
};
|
||||
}
|
||||
EOF
|
||||
cp /etc/nixos.bk/hardware-configuration.nix "/etc/nixos/hosts/''${hostname}/hardware-configuration.nix"
|
||||
|
||||
# Prepare home-manager portion for setup
|
||||
mkdir -p "/etc/nixos/home/hosts/''${hostname}"
|
||||
cat << EOF > "/etc/nixos/home/hosts/''${hostname}/default.nix"
|
||||
{ pkgs, config, ... }:
|
||||
|
||||
{
|
||||
}
|
||||
EOF
|
||||
|
||||
# Prepares it for injecting the use case into the flake usage
|
||||
cp /etc/nixos.bk/hardware-configuration.nix /etc/nixos
|
||||
chown -R greg nixos
|
||||
|
||||
echo "Now you should be able to just run `nixos-rebuild switch` to enable the flake functionality"
|
||||
echo "After that and adding the entry to the flake, run `nixos-rebuild boot --flake '.#''${hostname}'` and reboot"
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{ writeShellApplication, gh, ... }:
|
||||
|
||||
writeShellApplication {
|
||||
name = "setup-ssh";
|
||||
runtimeInputs = [ gh ];
|
||||
text = builtins.readFile ./setup-ssh.sh;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
# vim: set ft=bash:
|
||||
file="${HOME}/.ssh/id_ed25519"
|
||||
if [ ! -f "${file}" ]; then
|
||||
echo "Generating a new key"
|
||||
ssh-keygen -t ed25519 -f "${file}" -N ''
|
||||
cat "${file}.pub" >> /etc/nixos/home/ssh/authorized_keys
|
||||
|
||||
echo "Authing key to GitHub - may fail"
|
||||
gh auth refresh -h github.com -s admin:public_key
|
||||
gh ssh-key add -t "${HOSTNAME}-auto" "${file}" || true
|
||||
fi
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
writeShellApplication,
|
||||
postgresql_15,
|
||||
postgresql_16,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
newPostgres = postgresql_16;
|
||||
oldPostgres = postgresql_15;
|
||||
in
|
||||
writeShellApplication {
|
||||
name = "upgrade-pg-cluster";
|
||||
# Only the new one should be in scope, because that is the
|
||||
# one that we will be referencing directly with the sudo command
|
||||
# down farther.
|
||||
runtimeInputs = [ newPostgres ];
|
||||
text = ''
|
||||
systemctl stop postgresql
|
||||
|
||||
export NEWDATA="/var/lib/postgresql/${newPostgres.psqlSchema}"
|
||||
export NEWBIN="${newPostgres}/bin"
|
||||
|
||||
export OLDDATA="/var/lib/postgresql/${oldPostgres.psqlSchema}"
|
||||
export OLDBIN="${oldPostgres}/bin"
|
||||
|
||||
install -d -m 0700 -o postgres -g postgres "$NEWDATA"
|
||||
cd "$NEWDATA"
|
||||
sudo -u postgres "$NEWBIN/initdb" -D "$NEWDATA"
|
||||
|
||||
sudo -u postgres "$NEWBIN/pg_upgrade" \
|
||||
--old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \
|
||||
--old-bindir "$OLDBIN" --new-bindir "$NEWBIN" \
|
||||
"$@"
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user