various
This commit is contained in:
parent
0f6a49366e
commit
024ea1168a
23 changed files with 485 additions and 101 deletions
|
@ -1,12 +0,0 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib) types;
|
||||
in {
|
||||
options = {
|
||||
users.mainUser = lib.mkOption {
|
||||
type = types.passwdEntry types.str;
|
||||
description = ''
|
||||
The main user.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -13,5 +13,5 @@
|
|||
'';
|
||||
};
|
||||
|
||||
config.pubkeys = import (self + /pubkeys.nix);
|
||||
config.pubkeys = lib.mkForce (import (self + /pubkeys.nix));
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue