1
0
Fork 0
This commit is contained in:
Lukas Wurzinger 2025-01-04 23:51:35 +01:00
parent 0f6a49366e
commit 024ea1168a
No known key found for this signature in database
23 changed files with 485 additions and 101 deletions

View file

@ -1,12 +0,0 @@
{lib, ...}: let
inherit (lib) types;
in {
options = {
users.mainUser = lib.mkOption {
type = types.passwdEntry types.str;
description = ''
The main user.
'';
};
};
}

View file

@ -13,5 +13,5 @@
'';
};
config.pubkeys = import (self + /pubkeys.nix);
config.pubkeys = lib.mkForce (import (self + /pubkeys.nix));
}

View file

@ -1,104 +0,0 @@
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
progname=$0
warn() {
local line
for line in "$@"; do
echo "$progname: $line" 1>&2
done
}
error() {
warn "$@"
exit 1
}
args=$(getopt --options f:o:t:v --longoptions=flake:,on:,to:,verbose --name "$progname" -- "$@")
eval set -- "$args"
host=localhost
flags=(
--refresh
--use-remote-sudo
--no-write-lock-file
)
verbose=false
while true; do
case $1 in
(-f | --flake)
flake=$2
shift 2
;;
(-o | --on)
flags+=(--build-host "$2")
shift 2
;;
(-t | --to)
host=$2
flags+=(--target-host "$host")
shift 2
;;
(-v | --verbose)
flags+=(--verbose)
verbose=true
shift
;;
(--)
shift
break
;;
esac
done
if [[ ! -v flake ]]; then
flake=git+https://forgejo@tea.wrz.one/lukas/puter.git#$(ssh -- "$host" hostname)
fi
flags+=(--flake "$flake")
if (( $# == 0 )); then
error 'a subcommand is required'
fi
run() {
cmd=(nixos-rebuild "${flags[@]}" "$@")
if "$verbose"; then
warn "running ${cmd[*]}"
fi
"${cmd[@]}"
}
sub=$1
case $sub in
(s | switch)
shift
if (( $# > 0 )); then
error 'too many arguments'
fi
run switch
;;
(b | boot)
shift
if (( $# > 0 )); then
error 'too many arguments'
fi
run boot
;;
(*)
error 'invalid subcommand'
;;
esac

View file

@ -1,13 +1,9 @@
{pkgs, ...}: let
puter = pkgs.writeShellApplication {
name = "puter";
runtimeInputs = [
pkgs.nixos-rebuild
];
text = builtins.readFile ./puter.bash;
};
in {
{
pkgs,
self,
...
}: {
environment.systemPackages = [
puter
self.packages.${pkgs.system}.puter
];
}

View file

@ -1,33 +0,0 @@
{
config,
lib,
...
}: {
options.users = let
inherit (lib) types;
in {
normalUsers = lib.mkOption {
type = types.listOf (types.passwdEntry types.str);
description = ''
List of normal users.
'';
};
systemUsers = lib.mkOption {
type = types.listOf (types.passwdEntry types.str);
description = ''
List of system users.
'';
};
};
config.users = let
filterUsers = pred: (lib.pipe config.users.users [
(lib.filterAttrs (_: pred))
builtins.attrNames
]);
in {
normalUsers = filterUsers (user: user.isNormalUser);
systemUsers = filterUsers (user: user.isSystemUser);
};
}