I have upgraded my four (4) main phones to android 15, and installed magisk, lsposed framework, and BCR, to ensure my normal required functionality is present.
I have upgraded my four (4) main phones to android 15, and installed magisk, lsposed framework, and BCR, to ensure my normal required functionality is present.
Drove past a bright-orange Lamborghini parked at the side of Canal Street this morning. It had a Kuwaiti registration plate.
Perhaps Fawaz and Billy are back for Unfinished Business #3.
Was there a cardboard CalMac Ferry moored in the canal? If so, I'd say defo.
Boot machine with Nixos installer usb. Close installer, open terminal, open firefox at
https://github.com/vimjoyer/impermanent-setup
Become su by running sudo su
add tree
to the shell with
nix-shell -p tree
use lsblk
to determine disk to install to.
In this case identifies sda
Download the disko configuration
curl https://raw.githubusercontent.com/vimjoyer/impermanent-setup/main/final/disko.nix -o /tmp/disko.nix
replace "/dev/vda"
with "/dev/sda"
Partition the drives using disko.nix flake
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko /tmp/disko.nix --arg device '"/dev/sda"'
Use lsblk
to check partitions. We should have these sub volumes mounted at /mnt
- check with tree /mnt
tree /tmp
/mnt
├──boot
├──nix
└──persist
/tmp
├──disko.nix
Generate with sudo nixos-generate-config --no-filesystems --root /mnt
/mnt
├──boot
├──etc
│ └──nixos
│ ├──configuration.nix
│ └──hardware-configuration.nix
├──nix
└──persist
/tmp
├──disko.nix
Move disko.nix into the config files directory with mv /tmp/disko.nix /mnt/etc/nixos/
/mnt
├──boot
├──etc
│ └──nixos
│ ├──configuration.nix
│ ├──disko.nix
│ └──hardware-configuration.nix
├──nix
└──persist
Initialise flake using
nix --extra-experimental-features "nix-command flakes" flake init --template github:vimjoyer/impermanent-setup
# flake.nix
{
description = "Nixos config flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
# impermanence = {
# url = "github:nix-community/impermanence";
# };
# home-manager = {
# url = "github:nix-community/home-manager";
# inputs.nixpkgs.follows = "nixpkgs";
# };
};
outputs = {nixpkgs, ...} @ inputs:
{
nixosConfigurations.default = nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs;};
modules = [
inputs.disko.nixosModules.default
(import ./disko.nix { device = "/dev/vda"; })
./configuration.nix
# inputs.home-manager.nixosModules.default
# inputs.impermanence.nixosModules.impermanence
];
};
};
}
Move the flake.nix to the configuration directory with mv flake.nix /mnt/etc/nixos/
/mnt
├──boot
├──etc
│ └──nixos
│ ├──configuration.nix
│ ├──disko.nix
│ ├──flake.nix
│ └──hardware-configuration.nix
├──nix
└──persist
Edit nano /mnt/etc/nixos/flake.nix
to replace (import ./disko.nix { device = "/dev/vda"; })
with (import ./disko.nix { device = "/dev/sda"; })
to provide the correct disk target
Edit nano /mnt/etc/nixos/configuration.nix
comment out the service.xserver
declarations, to remove a window manager
# services.xserver.enable = true;
# services.xserver.displayManager.gdm.enable = true;
# services.xserver.desktopManager.gnome.enable = true;
add a user declaration
users.users.computer_user = {
isNormalUser = true;
initialPassword = "password";
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
};
add btrfs volume management
boot.initrd.postDeviceCommands = lib.mkAfter ''
mkdir /btrfs_tmp
mount /dev/root_vg/root /btrfs_tmp
if [[ -e /btrfs_tmp/root ]]; then
mkdir -p /btrfs_tmp/old_roots
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
fi
delete_subvolume_recursively() {
IFS=$'\n'
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
delete_subvolume_recursively "$i"
done
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
cp -r /mnt/etc/nixos /mnt/persist
cp -r /mnt/etc/nixos /mnt/etc/persist
/mnt
├──boot
├──etc
│ ├──nixos
│ │ ├──configuration.nix
│ │ ├──disko.nix
│ │ ├──flake.nix
│ │ └──hardware-configuration.nix
│ └──persist
│ ├──configuration.nix
│ ├──disko.nix
│ ├──flake.nix
│ └──hardware-configuration.nix
├──nix
└──persist
└──nixos
├──configuration.nix
├──disko.nix
├──flake.nix
└──hardware-configuration.nix
nixos-install --root /mnt --flake /mnt/etc/nixos#default
You will be requested to provide a root password, and confirm it. If that is successful then
reboot
Edit the flake.nix
to uncomment the impermanence settings
{
description = "Nixos config flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
impermanence = {
url = "github:nix-community/impermanence";
};
.
.
.
.
.
./configuration.nix
# inputs.home-manager.nixosModules.default
inputs.impermanence.nixosModules.impermanence
];
Edit the configuration.nix
to add the necessary impermanence settings
fileSystems."/persist".neededForBoot = true;
environment.persistence."/persist/system" = {
hideMounts = true;
directories = [
"/etc/nixos"
"/var/log"
# "/var/lib/bluetooth"
"/var/lib/nixos"
"/var/lib/systemd/coredump"
# "/etc/NetworkManager/system-connections"
{ directory = "/var/lib/colord"; user = "colord"; group = "colord"; mode = "u=rwx,g=rx,o="; }
];
files = [
"/etc/machine-id"
{ file = "/var/keys/secret_file"; parentDirectory = { mode = "u=rwx,g=,o="; }; }
];
};
sudo nixos-rebuild boot --flake /persist/nixos#default
sudo reboot
sudo mkdir -p /etc/
sudo cp -r /persist/nixos /etc
sudo reboot
check with tree /persist
Daughter came home with a consent form for a birthday party. They're not going anywhere, the parents just want my consent to act in a health emergency.
I've told my daughter I don't approve of this friendship. Nothing good can come from parents like that.
What if you don't sign it do they just let her, for example, choke to death or something?
Sounds to me like they just want permission to go in with any weak excuse.
It needs to be returned by January 28th. If it isn't returned, she won't be able to attend.
A health emergency isn't really the time for staging a play, but it's nice they're asking for an opinion.
Car auxiliary belt has gone. Fortunately went just outside the garage that MOTs my motorbike. Unfortunately they're booked solid for the next ten days.
Bus wanker I must become.
Had some pillows delivered yesterday. Box has a big “fragile” warning on it.
I hope they were wrapped in a blanket of bubble wrap as well. It would be the perfect 'under the arches' house kit then. Assuming you could get in the box.
Broke my duck in the snooker league tonight, winning 3-1. My opponent was playing off a handicap of -7, so was very good, but obviously meant I had a decent headstart.
Played on a match table with really tight pockets, so was pretty pleased. Tactical play, putting the high value colours safe and picking off points where I could; he was getting very frustrated and struggled to make any decent breaks with 28 being his highest. My best was only 18, but I was making sure of potting a colour with each red to take advantage of the headstart.
Trying to pot a colour after each red is inspired tactics.
Did you win a snooker game last night Mince? If not, pipe the fuck down.
It is indeed. The alternative is to pot a colour and try to get position on the next red which is where a lot of misses come from. When playing a better player, it makes more sense to bank the points and play a safety rather than miss the pot and leave them on an easy red which allows them to make a sizeable break.
By following this tactic, I was making him frustrated and he started missing pots he expected to get.