This commit is contained in:
2025-11-29 06:30:15 +01:00
parent 16bdea6a9b
commit 291d2e0c60
7 changed files with 128 additions and 56 deletions

View File

@@ -5,6 +5,7 @@
# https://github.com/nixos/nixpkgs
nixpkgs-test.url = "github:NixOS/nixpkgs/refs/pull/379645/merge"; # for testing
nixpkgs-edge.url = "https://nixos.org/channels/nixos-unstable/nixexprs.tar.xz"; # len("edge") == 4
# nixpkgs-2511.url = "https://nixos.org/channels/nixos-25.11/nixexprs.tar.xz";
nixpkgs-2505.url = "https://nixos.org/channels/nixos-25.05/nixexprs.tar.xz";
nixpkgs-2411.url = "https://nixos.org/channels/nixos-24.11/nixexprs.tar.xz"; # for old docs
nixpkgs-2405.url = "https://nixos.org/channels/nixos-24.05/nixexprs.tar.xz"; # for old docs
@@ -25,6 +26,8 @@
# https://github.com/nix-community/home-manager
home-manager-edge.url = "github:nix-community/home-manager/master";
home-manager-edge.inputs.nixpkgs.follows = "nixpkgs-edge";
# home-manager-2511.url = "github:nix-community/home-manager/release-25.11";
# home-manager-2511.inputs.nixpkgs.follows = "nixpkgs-2511";
home-manager-2505.url = "github:nix-community/home-manager/release-25.05";
home-manager-2505.inputs.nixpkgs.follows = "nixpkgs-2505";
home-manager-2411.url = "github:nix-community/home-manager/release-24.11";
@@ -77,6 +80,8 @@
# https://github.com/Mic92/sops-nix
sops-nix-edge.url = "github:Mic92/sops-nix";
sops-nix-edge.inputs.nixpkgs.follows = "nixpkgs-edge";
# sops-nix-2511.url = "github:Mic92/sops-nix";
# sops-nix-2511.inputs.nixpkgs.follows = "nixpkgs-2511";
sops-nix-2505.url = "github:Mic92/sops-nix";
sops-nix-2505.inputs.nixpkgs.follows = "nixpkgs-2505";
sops-nix-2411.url = "github:Mic92/sops-nix";
@@ -139,9 +144,16 @@
home-manager = inputs'.home-manager-edge;
sops-nix = inputs'.sops-nix-edge;
};
input-views.inputs-2511 = input-views.inputs-edge;
# input-views.inputs-2511 = inputs' // {
# nixpkgs = inputs'.nixpkgs-2511;
# unstable = inputs'.nixpkgs-edge;
# home-manager = inputs'.home-manager-2511;
# sops-nix = inputs'.sops-nix-2511;
# };
input-views.inputs-2505 = inputs' // {
nixpkgs = inputs'.nixpkgs-2505;
unstable = inputs'.nixpkgs-edge;
unstable = inputs'.nixpkgs-2511;
home-manager = inputs'.home-manager-2505;
sops-nix = inputs'.sops-nix-2505;
};
@@ -255,11 +267,12 @@
}];
extraSpecialArgs = { inherit inputs; };
};
forEach = xs: f: map f xs;
pipe = builtins.foldl' (x: f: f x);
attrsToList = a: builtins.attrValues (builtins.mapAttrs (name: value: { inherit name value; }) a);
in
pipe ["edge" "2505" "2411"] [
(map (release: {
pipe (
forEach ["edge" "2505" "2411"] (release: {
# TODO: static - fhs
# TODO: pvv - nfs home
# TODO: nix-portable - heid
@@ -270,24 +283,20 @@
"pbsds-comfy-${release}" = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views."inputs-${release}" [ ./users/pbsds/home/profiles/comfy ];
"pbsds-desktop-${release}" = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views."inputs-${release}" [ ./users/pbsds/home/profiles/desktop ];
"pbsds-desktop-gnome-${release}" = mkHome "pbsds" "/home/pbsds" "x86_64-linux" input-views."inputs-${release}" [ ./users/pbsds/home/profiles/desktop/gnome ];
}))
(map attrsToList)
builtins.concatLists
builtins.listToAttrs
]
// pipe (builtins.attrNames self.nixosConfigurations) [
(map (machine: {
})
++ forEach (builtins.attrNames self.nixosConfigurations) (machine: {
"pbsds@${machine}" = rec {
config = self.nixosConfigurations.${machine}.config.home-manager.users.pbsds;
inherit (config.home) activationPackage;
};
}))
})
) [
(map attrsToList)
builtins.concatLists
builtins.listToAttrs
]
// {
"pederbs@pvv" = mkHome "pederbs" "/home/pvv/d/pederbs" "x86_64-linux" input-views.inputs-2505 [ ./users/pbsds/home/profiles/minimal ];
"pederbs@login.pvv.ntnu.no" = mkHome "pederbs" "/home/pvv/d/pederbs" "x86_64-linux" input-views.inputs-2505 [ ./users/pbsds/home/profiles/minimal ];
};
# TODO: use this to pull changes to repo

View File

@@ -94,7 +94,7 @@ let
bolle = mk "pbsds.net" "x86_64-linux" input-views.inputs-edge "25.05" [ ts2 au tse ];
eple = mk "pbsds.net" "x86_64-linux" input-views.inputs-2505 "25.05" [ ts1 au tse dns64 ];
garp = mk "pbsds.net" "x86_64-linux" input-views.inputs-2505 "25.05" [ ts1 au ];
# hasselknippe= mk "pbsds.net" "aarch64-linux" input-views.inputs-2405 "24.05" [ ts1 hw.pine64-pinebook-pro ];
# hasselknippe= mk "pbsds.net" "aarch64-linux" input-views.inputs-2505 "24.05" [ ts1 ];
# alsaug gomperud smattkuken skrytebiffen skalkesnerken kelfrid balleby bingus skjrlaltatjlstad
# bergjlot snortheimsmoen ditlefsen skrukkerud podebusk zmaragd makrell alfnes blix urke pytte uddu imdorf rosenqvist

View File

@@ -1,27 +1,44 @@
{ config, pkgs, lib, ... }:
{ inputs, config, pkgs, lib, ... }:
/*
https://wiki.pine64.org/wiki/Pinebook_Pro
https://wiki.pine64.org/wiki/Pinebook_Pro_Software_Releases
https://wiki.nixos.org/wiki/NixOS_on_ARM/PINE64_Pinebook_Pro
https://github.com/NixOS/nixos-hardware/blob/master/pine64/pinebook-pro/README.md
# tow-boot
https://tow-boot.org/devices/pine64-pinebookPro.html
https://github.com/Tow-Boot/Tow-Boot/releases
# nixos aarch64 sd-images
https://wiki.nixos.org/wiki/NixOS_on_ARM/Installation#SD_card_images_(SBCs_and_similar_platforms)
https://wiki.nixos.org/wiki/NixOS_on_ARM
https://wiki.nixos.org/wiki/NixOS_on_ARM/Initial_Configuration
*/
{
# Bootloader
#boot.loader.systemd-boot.enable = true;
#boot.loader.efi.canTouchEfiVariables = true;
services.xserver.displayManager.autoLogin.enable = true;
services.xserver.displayManager.autoLogin.user = "pbsds";
# tmp: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
imports = [
#./hardware-configuration.nix
../../../profiles/auto-upgrade.nix
../../../profiles/upgrade-diff.nix
#../../../profiles/sshd
#../../../profiles/no-suspend.nix
inputs.nixos-hardware.nixosModules.pine64-pinebook-pro
# ../../../profiles/nix-ld.nix
../../../profiles/sshd
# ../../../profiles/earlyoom.nix
# ../../../profiles/no-suspend.nix
# ../../../profiles/oci/podman.nix
# ../../../profiles/oci/docker.nix
../../../users/pbsds
#../../../profiles/mounts/freon-nfs.nix
#../../../profiles/mounts/reidun-nfs.nix
#../../../profiles/mounts/meconium-nfs.nix
#../../../profiles/mounts/fridge-nfs.nix
../../../profiles/shell.nix
@@ -29,11 +46,16 @@
../../../profiles/desktop/gnome # configures gdm
../../../profiles/desktop/sound/pipewire.nix
#../../../profiles/desktop/steam.nix
#../../../profiles/desktop/lutris.nix
#../../../profiles/desktop/flatpak.nix
# ../../../profiles/desktop/steam.nix
# ../../../profiles/desktop/retroarch.nix
# ../../../profiles/desktop/flatpak.nix
# ../../../profiles/desktop/waydroid.nix
/* ../../../profiles/known-hosts */
../../../profiles/known-hosts
];
environment.systemPackages = [
pkgs.pinebookpro-keyboard-updater
];
networking.firewall.allowedTCPPorts = [ 57621 ]; # spotify local discovery

View File

@@ -57,27 +57,41 @@ pull-dconf:
-gum confirm "git checkout --path?" --default=no \
&& git checkout --patch ./users/pbsds/home/profiles/desktop/gnome/
# todo: support system-manager
# todo: support home-manager?
build hostname="" *_:
nixos-rebuild-ng build --accept-flake-config --show-trace --flake .#"{{hostname}}" "${@:2}"
# todo: support system-manager?
# todo: support nix-darwin?
# todo: support nixbsd?
# todo: support nixng?
build $hostname="" *_:
#!/usr/bin/env -S bash -euo pipefail
if [[ "${hostname::1}" = "-" ]]; then
echo >&2 "WARNING(just): 'hostname' starts with '-', moving it to nix args..."
set -- "" "$@"; hostname=""
fi
set -x; nixos-rebuild-ng build --accept-flake-config --show-trace --flake .#"$hostname" "${@:2}"
build-vm hostname=`just _a_host` *_:
nixos-rebuild-ng build-vm --accept-flake-config --show-trace --flake .#"{{hostname}}" "${@:2}"
#!/usr/bin/env -S bash -euo pipefail
if [[ "${hostname::1}" = "-" ]]; then
echo >&2 "WARNING(just): 'hostname' starts with '-', moving it to nix args..."
set -- "" "$@"; hostname=""
fi
set -x; nixos-rebuild-ng build-vm --accept-flake-config --show-trace --flake .#"$hostname" "${@:2}"
build-vm-and-run $hostname=`just _a_host` *_:
@# TODO: setup ports?
@# TODO: attach serial instead of gui?
@# TODO: headless and ssh?
@just build-vm "$hostname" "${@:2}"
./result/bin/run-"$hostname"-vm
#!/usr/bin/env -S bash -euo pipefail
[[ -n "$hostname" ]]
# TODO: setup ports?
# TODO: attach serial instead of gui?
# TODO: headless and ssh?
just build-vm "$hostname" "${@:2}"
set -x; ./result/bin/run-"$hostname"-vm
# compares new closure against /run/current-system
build-diff $hostname="" *_:
#!/usr/bin/env -S bash -euo pipefail
current_system="/run/current-system"
new_system="$(just build "$hostname" "${@:2}")"
echo; set -x
echo >&2; set -x
# nvd diff "$current_system" "$new_system" # python based, slow
dix "$current_system" "$new_system" # rust based, fast, nixos-unstable only
@@ -89,27 +103,42 @@ build-closure-size $hostname="" *_:
nix path-info --recursive --size --closure-size "$new_system" | sort -nk3 | numfmt --field=2,3 --to iec
test *_:
sudo nixos-rebuild-ng test --accept-flake-config --show-trace --flake . "$@"
#!/usr/bin/env -S bash -euo pipefail
if [[ $# -gt 0 && "${1:-}" = "" ]]; then
echo >&2 "WARNING(just): first arg is empty, popping it off..."; shift
elif [[ $# -gt 0 && "${1::1}" != "-" ]]; then
echo >&2 "WARNING(just): first arg does not start with "-", is it a hostname?"
fi
set -x; sudo nixos-rebuild-ng test --accept-flake-config --show-trace --flake . "$@"
switch *_:
sudo nixos-rebuild-ng switch --accept-flake-config --show-trace --flake . "$@"
#!/usr/bin/env -S bash -euo pipefail
if [[ $# -gt 0 && "${1:-}" = "" ]]; then
echo >&2 "WARNING(just): first arg is empty, popping it off..."; shift
elif [[ $# -gt 0 && "${1::1}" != "-" ]]; then
echo >&2 "WARNING(just): first arg does not start with "-", is it a hostname?"
fi
set -x; sudo nixos-rebuild-ng switch --accept-flake-config --show-trace --flake . "$@"
boot *_:
#!/usr/bin/env -S bash -euo pipefail
if [[ $# -ge 1 ]]; then
if [[ "${1:-}" = "" ]]; then
echo >&2 "WARNING: first arg was empty, popping it off..."
shift
elif [[ "${1::1}" != "-" ]]; then
echo >&2 "WARNING: first arg did not start with a "-", is it a hostname?"
fi
if [[ $# -gt 0 && "${1:-}" = "" ]]; then
echo >&2 "WARNING(just): first arg is empty, popping it off..."; shift
elif [[ $# -gt 0 && "${1::1}" != "-" ]]; then
echo >&2 "WARNING(just): first arg does not start with "-", is it a hostname?"
fi
set -x; sudo nixos-rebuild-ng boot --accept-flake-config --show-trace --flake . "$@"
boot-and-reboot *_:
#!/usr/bin/env -S bash -euo pipefail
if [[ $# -gt 0 && "${1:-}" = "" ]]; then
echo >&2 "WARNING(just): first arg is empty, popping it off..."; shift
elif [[ $# -gt 0 && "${1::1}" != "-" ]]; then
echo >&2 "WARNING(just): first arg does not start with "-", is it a hostname?"
fi
set -x
sudo nixos-rebuild-ng boot --accept-flake-config --show-trace --flake . "$@"
boot-and-reboot *_:
sudo nixos-rebuild-ng boot --accept-flake-config --show-trace --flake . "$@"
sudo reboot
sudo reboot # TODO: can i somehow ensure that the sudo hasn't timed out by this time?
# TODO: nixos-rebuild-ng
push $hostname=`just _a_host` cmd=`gum choose test switch boot --header "Select mode..."`:
@@ -140,7 +169,7 @@ home-why-depends $attrpath:
.#nixosConfigurations."${hostname}".config.home-manager.users."${username}".home.activationPackage \
.#nixosConfigurations."${hostname}".pkgs."$attrpath"
home-eval attrpath="home.activationPackage" *_:
home-eval $attrpath="home.activationPackage" *_:
#!/usr/bin/env -S bash -euo pipefail
hostname="$(hostname)"
username="$(whoami)"
@@ -164,7 +193,7 @@ home-build-diff *_: home-build
#!/usr/bin/env -S bash -euo pipefail
current_home="${XDG_STATE_HOME:-"$HOME/.local/state"}/home-manager/gcroots/current-home"
new_home="$(just home-build --print-out-paths "${@:1}")"
set -x
echo >&2; set -x
# nvd diff "$current_home" "$new_home" # python based, slow
dix "$current_home" "$new_home" # rust based, fast, nixos-unstable only

View File

@@ -1,4 +1,16 @@
{ lib, pkgs, ... }:
/*
how to prune?
docker ps -aq | xargs --no-run-if-empty docker stop ; \
docker system prune -af ; \
docker image prune -af ; \
docker volume prune -af ; \
docker system prune -af --volumes ; \
docker system df
*/
{
virtualisation.docker.enable = true;
virtualisation.oci-containers.backend = lib.mkDefault "docker";

View File

@@ -33,7 +33,7 @@
# ./home/profiles/headless
# ./home/profiles/comfy
# ./home/profiles/desktop (gnome)
home-manager.users.pbsds = lib.mkMerge [
home-manager.users.pbsds.imports = [
(
if config.services.xserver.desktopManager.gnome.enable then
./home/profiles/desktop/gnome

View File

@@ -86,7 +86,7 @@
];
xdg.configFile."ptpython/config.py" = {
source = ./files/ptpython-config.py;
source = ../../files/ptpython-config.py;
force = true;
};