mirror of
https://github.com/gburd/nix-config.git
synced 2024-10-05 04:56:57 +00:00
use disko
This commit is contained in:
parent
0f73f50309
commit
82f5854f20
11 changed files with 237 additions and 72 deletions
31
NOTES
31
NOTES
|
@ -21,34 +21,40 @@
|
||||||
* swap (see: https://discourse.nixos.org/t/how-do-i-set-up-a-swap-file/8323/7)
|
* swap (see: https://discourse.nixos.org/t/how-do-i-set-up-a-swap-file/8323/7)
|
||||||
* udevadm trigger
|
* udevadm trigger
|
||||||
|
|
||||||
nh os switch --ask
|
|
||||||
|
|
||||||
|
|
||||||
INSTALL:
|
INSTALL:
|
||||||
export device=/dev/nvme0n1
|
export device=/dev/nvme0n1
|
||||||
export hostname=floki
|
export hostname=floki
|
||||||
wipefs/shread/scrub ${device}
|
wipefs/shread/scrub ${device}
|
||||||
|
sgdisk --zap-all ${device}
|
||||||
printf "label: gpt\n,550M,U\n,,L\n" | sfdisk ${device}
|
printf "label: gpt\n,550M,U\n,,L\n" | sfdisk ${device}
|
||||||
mkfs.fat -L ESP -F 32 ${device}
|
mkfs.fat -L ESP -F 32 ${device}
|
||||||
cryptsetup --verify-passphrase -v luksFormat --label "${hostname}_crypt" "${device}p2"
|
cryptsetup --verify-passphrase -v luksFormat --label "${hostname}_crypt" "${device}p2"
|
||||||
cryptsetup open "${device}p2" "${hostname}_crypt"
|
cryptsetup open "${device}p2" "${hostname}_crypt"
|
||||||
mkfs.btrfs -L ${hostname} /dev/mapper/"${hostname}_crypt"
|
mkfs.btrfs -L ${hostname} /dev/mapper/"${hostname}_crypt"
|
||||||
mount -t btrfs -o subvol=/ /dev/disk/by-label/${hostname} /mnt
|
mount -t btrfs -o subvol=root /dev/disk/by-label/${hostname} /mnt
|
||||||
btrfs subvolume create /mnt/root
|
btrfs subvolume create /mnt/root
|
||||||
btrfs subvolume create /mnt/nix
|
btrfs subvolume create /mnt/nix
|
||||||
btrfs subvolume create /mnt/persist
|
btrfs subvolume create /mnt/persist
|
||||||
btrfs subvolume create /mnt/swap
|
btrfs subvolume create /mnt/swap
|
||||||
btrfs subvolume create /mnt/logs
|
btrfs subvolume create /mnt/logs
|
||||||
|
|
||||||
mount -o compress=zstd,subvol=root /dev/mapper/"${hostname}_crypt" /mnt
|
mount -t btrfs -o compress=zstd,subvol=root /dev/disk/by-label/"${hostname}" /mnt
|
||||||
mkdir /mnt/{nix,persist,swap,var/logs}
|
mkdir /mnt/{nix,persist,swap,var/logs}
|
||||||
mount -o compress=zstd,noatime,subvol=nix /dev/mapper/"${hostname}_crypt" /mnt/nix
|
mount -t btrfs -o compress=zstd,noatime,subvol=nix /dev/disk/by-label/"${hostname}" /mnt/nix
|
||||||
mount -o compress=zstd,subvol=persist /dev/mapper/"${hostname}_crypt" /mnt/persist
|
mount -t btrfs -o compress=zstd,subvol=persist /dev/disk/by-label/"${hostname}" /mnt/persist
|
||||||
mount -o compress=zstd,noatime,subvol=logs /dev/mapper/"${hostname}_crypt" /mnt/var/logs
|
mount -t btrfs -o compress=zstd,noatime,subvol=logs /dev/disk/by-label/"${hostname}" /mnt/var/logs
|
||||||
mount -o noatime,subvol=swap /dev/mapper/"${hostname}_crypt" /mnt/swap
|
mount -t btrfs -o noatime,subvol=swap /dev/disk/by-label/"${hostname}" /mnt/swap
|
||||||
|
|
||||||
mkdir /mnt/boot
|
mkdir /mnt/boot
|
||||||
mount /dev/sda1 /mnt/boot
|
mount /dev/nvme0n1p1 /mnt/boot
|
||||||
|
|
||||||
|
mount -t proc /proc /mnt/proc
|
||||||
|
mount -t sysfs /sys /mnt/sys
|
||||||
|
mount --bind /dev /mnt/dev
|
||||||
|
mount --bind /dev/pts /mnt/dev/pts
|
||||||
|
|
||||||
|
or
|
||||||
|
for i in proc sys dev; do mount -o bind $i /mnt/$i; done
|
||||||
|
|
||||||
nixos-generate-config --root /mnt
|
nixos-generate-config --root /mnt
|
||||||
nano /mnt/etc/nixos/configuration.nix # manually add mount options or cp from USB
|
nano /mnt/etc/nixos/configuration.nix # manually add mount options or cp from USB
|
||||||
|
@ -82,7 +88,7 @@ export GPG_TTY=$(tty)
|
||||||
gpg-connect-agent reloadagent /bye
|
gpg-connect-agent reloadagent /bye
|
||||||
echo test | gpg --clearsign
|
echo test | gpg --clearsign
|
||||||
gpg --list-keys
|
gpg --list-keys
|
||||||
EDITOR=vi sops --config .sops.yaml hosts/common/secrets.yaml
|
EDITOR=vi sops --config .sops.yaml nixos/common/secrets.yaml
|
||||||
sudo nixos-install --flake .#hostname
|
sudo nixos-install --flake .#hostname
|
||||||
reboot
|
reboot
|
||||||
home-manager switch --flake .#username@hostname
|
home-manager switch --flake .#username@hostname
|
||||||
|
@ -90,9 +96,10 @@ home-manager switch --flake .#username@hostname
|
||||||
|
|
||||||
sudo nixos-rebuild switch --flake .#my-hostname
|
sudo nixos-rebuild switch --flake .#my-hostname
|
||||||
clear; sudo nixos-rebuild dry-activate --flake .#${hostname}
|
clear; sudo nixos-rebuild dry-activate --flake .#${hostname}
|
||||||
|
sudo nix run github:nix-community/disko -- --mode disko /tmp/disko-config.nix --arg disks '[ "/dev/nvme0n1" ]'
|
||||||
|
|
||||||
-------
|
-------
|
||||||
services.pcscd.enable = true;
|
services.pcscd.enable = true;
|
||||||
|
|
||||||
https://mt-caret.github.io/blog/posts/2020-06-29-optin-state.html
|
https://mt-caret.github.io/blog/posts/2020-06-29-optin-state.html
|
||||||
https://hoverbear.org/blog/declarative-gnome-configuration-in-nixos/
|
https://hoverbear.org/blog/declarative-gnome-configuration-in-nixos/
|
||||||
|
|
|
@ -5,45 +5,19 @@
|
||||||
#inputs.nixos-hardware.nixosModules.common-gpu-nvidia
|
#inputs.nixos-hardware.nixosModules.common-gpu-nvidia
|
||||||
inputs.nixos-hardware.nixosModules.common-pc
|
inputs.nixos-hardware.nixosModules.common-pc
|
||||||
inputs.nixos-hardware.nixosModules.common-pc-ssd
|
inputs.nixos-hardware.nixosModules.common-pc-ssd
|
||||||
#(import ./disks.nix { })
|
(import ./disks.nix { })
|
||||||
|
|
||||||
../_mixins/hardware/systemd-boot.nix
|
../_mixins/hardware/systemd-boot.nix
|
||||||
../_mixins/filesystems/encrypted-root.nix
|
../_mixins/filesystems/encrypted-root.nix
|
||||||
../_mixins/filesystems/btrfs.nix
|
../_mixins/filesystems/btrfs.nix
|
||||||
../_mixins/services/bluetooth.nix
|
../_mixins/services/bluetooth.nix
|
||||||
../_mixins/services/pipewire.nix
|
../_mixins/services/pipewire.nix
|
||||||
# ../_mixins/services/zerotier.nix
|
|
||||||
../_mixins/virt
|
../_mixins/virt
|
||||||
|
|
||||||
# ../_mixins/global
|
# ../_mixins/global
|
||||||
# ../_mixins/users/gburd
|
# ../_mixins/users/gburd
|
||||||
];
|
];
|
||||||
|
|
||||||
fileSystems."/swap" =
|
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/bf75af76-49b0-41fa-a4e5-9a52a6a0a667";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=swap" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" =
|
|
||||||
{
|
|
||||||
device = "/dev/disk/by-uuid/3D04-3716";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
# fileSystems = {
|
|
||||||
# "/boot" = {
|
|
||||||
# device = "/dev/disk/by-label/ESP";
|
|
||||||
# fsType = "vfat";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
swapDevices = [{
|
|
||||||
device = "/swap/swapfile";
|
|
||||||
size = 8196;
|
|
||||||
}];
|
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = [
|
availableKernelModules = [
|
||||||
|
@ -57,8 +31,6 @@
|
||||||
"usb_storage"
|
"usb_storage"
|
||||||
"xhci_pci"
|
"xhci_pci"
|
||||||
];
|
];
|
||||||
|
|
||||||
luks.devices."enc".device = "/dev/disk/by-uuid/470152b6-16cc-4dcf-b1e9-c684c1589e33";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
kernelModules = [ "kvm-intel" ]; # TODO: "nvidia"
|
kernelModules = [ "kvm-intel" ]; # TODO: "nvidia"
|
||||||
|
|
|
@ -1,44 +1,67 @@
|
||||||
{ disks ? [ "/dev/nvme0n1" ], ... }:
|
{ disks ? [ "/dev/nvme0n1" ], ... }:
|
||||||
let
|
let
|
||||||
defaultXfsOpts = [ "defaults" "relatime" "nodiratime" ];
|
hostname = config.networking.hostName;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
disko.devices = {
|
disko.devices = {
|
||||||
disk = {
|
disk = {
|
||||||
nvme0 = {
|
nvme = {
|
||||||
type = "disk";
|
type = "disk";
|
||||||
device = builtins.elemAt disks 0;
|
device = "/dev/nvme0n1";
|
||||||
content = {
|
content = {
|
||||||
type = "table";
|
type = "gpt";
|
||||||
format = "gpt";
|
partitions = {
|
||||||
partitions = [{
|
ESP = {
|
||||||
name = "ESP";
|
size = "512M";
|
||||||
start = "0%";
|
type = "EF00";
|
||||||
end = "550MiB";
|
|
||||||
bootable = true;
|
|
||||||
flags = [ "esp" ];
|
|
||||||
fs-type = "fat32";
|
|
||||||
content = {
|
content = {
|
||||||
type = "filesystem";
|
type = "filesystem";
|
||||||
format = "vfat";
|
format = "vfat";
|
||||||
mountpoint = "/boot";
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [ "defaults" ];
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
{
|
luks = {
|
||||||
name = "root";
|
size = "100%";
|
||||||
start = "550MiB";
|
|
||||||
end = "100%";
|
|
||||||
content = {
|
content = {
|
||||||
type = "filesystem";
|
type = "luks";
|
||||||
# Overwirte the existing filesystem
|
name = "${hostname}_crypt";
|
||||||
|
extraOpenArgs = [ "--allow-discards" ];
|
||||||
|
# This file contains the key for interactive login which must be
|
||||||
|
# the secret without a trailing newline.
|
||||||
|
passwordFile = config.sops.secrets.luks-password.path;
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
extraArgs = [ "-f" ];
|
extraArgs = [ "-f" ];
|
||||||
format = "xfs";
|
subvolumes = {
|
||||||
|
"/root" = {
|
||||||
mountpoint = "/";
|
mountpoint = "/";
|
||||||
mountOptions = defaultXfsOpts;
|
mountOptions = [ "compress=zstd" ];
|
||||||
|
};
|
||||||
|
"/home" = {
|
||||||
|
mountpoint = "/home";
|
||||||
|
mountOptions = [ "compress=zstd" ];
|
||||||
|
};
|
||||||
|
"/nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
mountOptions = [ "compress=zstd" "noatime" ];
|
||||||
|
};
|
||||||
|
"/persist" = {
|
||||||
|
mountpoint = "/persist";
|
||||||
|
mountOptions = [ "compress=zstd" ];
|
||||||
|
};
|
||||||
|
"/var/logs" = {
|
||||||
|
mountpoint = "/var/logs";
|
||||||
|
mountOptions = [ "compress=zstd" "noatime" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
luks-password: ENC[AES256_GCM,data:zzIgzaCosmaoZBsR,iv:tBe0F2M4pAOwOBHoSX6B3rDFR3tDOdFBt0xJMgNfq1s=,tag:z7LLcYnoMNkZx6YeX7ABJQ==,type:str]
|
||||||
ssh-private-keys:
|
ssh-private-keys:
|
||||||
rsa: ENC[AES256_GCM,data:R4trQNVB68nfRraWZozZgwD4fQGf+m/1RrEDJ93PctsS30vKsxhgdrjyy245LalY9bQ3tdIgdqkTKFZJv1qj0hBPLV/dynuO7yxUfcc6czDCGhNqtiHU8R+DQ4maWARZ2z2t1kYHDzB4MA+a+fEvXfSUMlAlugk01LkHBxl3ZbKOIqO6SVt1W92GCjMQwuIRgcE+o4H3ixPu38HcIwUNimL50O7XbROW+H+GjzlnAEXBD35H5+kbiE2Cjkcl/WidtPH03JrcxrElOP4UgBhpHLbXrjoGdDIhRf3OexDPKhgusEA1Cm7f+6dd67uEXT1y0Z/ECZD+B4ygzBEl9IB62QNeJQmAGNkMnUu6312BnnffLqfKbMZRehv0p+/avT3eYf3sB/P//IPAWVK8MhI/9JZwGi8s/gYCGNnxwNmVE6SaOI+zy9UUmnOsSRZuuT9FmdYEcR5+ig8gwKZxWj54ck52o9dAu2Lja3vsjl76WoVBnyuH+bu/0pHVQ10/cZ/uRm4IRNzFM2ejG5+YnsKVM7iwUWKH01KZuN3WZh7dmY23C1pHzk1HEtackZuOxyeulgNzDG10fHr8vPWYEUY7t9Dcr9PY0K6Uio1AXY9+Of2StAddHd8f2uCjYfRXI50PT6l8QKaAFQUabBADHQ1WmPu3l7zZiv2tP2VdOwSWOTP93x8DpB6+xuUVsElwInb1MAVthr5NBq6K1+shS05HJAXnq9VLTqjfDZ8ugAOnxJ+1ruCMIc7no2AagB5ogUnuaMyTeIAHzB+5Iv50GUKgv8ZSo3wSxZIo1xs7xKLfxGA3PnQOCMlCUmJoDqZ+DtaU3dnqkKDi3nKUULd3DMGkOCS+MYdeBfzD04DFYNqS+ZtslsgzX7gZEH1Zz2KQE6xAyqZMKFG6K3EepYwdZb6SaLFly6BZ1MB0tdjIsUI9pKbbLgqUaKbh8GtD/Vr6A1warC1TT+42Y8wcv2Cbq0R8tXH2XLzZIZs9lfkRjveAeWRd/bqNbOS7pwjLO8OISCLXJwEOCIv4drqYU+jKZP+8aZvgbXXrxGneLt8Y8//nQ4QWQWKjAq2c/Xory0JBAm92e7E+dSYdf5Msq0WyA3Q1kHPAr01/NqNTmXXAfcRpiBioqTq2nQ88wNrNjgGl7L3Mpop77QnRXrASVA+9j9x2H7shj0LvSMT+Fz4cZtQgG8PKI0WHsSyePVeMd3EB5uKGJyg7pXy+5VbFYdllS7cgUmHI5m85NViIFhT+ghKtvZ96zLaJcBMEJsGw2jnZf/S+iwCYUisuE0oXrAbHDVJWeo2m/6qwOlfWU2jFIOf+kBDZBqIXkQJFwk0E8tHrogkNzOhVhMHEy3cPobfrFyyfqc7Yt4CEyVy3UXcAT5HmxBr3LwPBlrvcEQqCE/BYlRg6TelhMogXUXG/UK3f7jBmOQZHdkEZKVEFh4W+HtAXvd6ttSoKuTgaHwJFXrLAoyWxJ+Jc1d+tHESGsLimNgzqKUjaWLWVvHbD1zvFf008V7kCET7e9C1JMWbJ5+/mGwO+9igQIUn6aJUc+zrB4ytmX8ufgPc1ObTHCdRVyFEJGHyVqBIMboQm0Jl9OTo/8iU/J6PALqzgq46OvWVeYT865EV/DAmNtw6gtWw4GYpOF6a+CTpj0bmjJXLiQRAzYx3iQVSucrLvbL3jhCgPY8s6SzZyz+5yrMKLKNVgSF7l3ao7aeXKzPYxdMXYKGATe0tCnF/R8FxiIfKEVKb2VYY4K4vUKEx1ser158ChzQSLyke6j7jUA7VEFRdE/4DgScc2Q0sJ5H3qcvaYijD5eoWQFKEGyzLy1DyCb1GiEcE2NqKesNF1VZy324N1oL6+lvs3zBH5dovw6dXprL+L0F9+LoHCK/scZkIFoLlHSVUkanHJtZapuFFY5ZT78HlJl0qaDTiEB+4div86slNBe8kObKp1X6CgwSOePumSEmwGEsPMIZbr3wS8PeaF/bpsSjgg7brFf9X6EinpjklD5MHox2aHqCYxcfRcaF05pn7XCSkFDzoIQI5gsVKDh4IKO4W9AAUWivKUJUM7Uhux+KP85280UJ+87DyatF1ZKHPR057SFnIuamqS3Blhpzom2c5DnrI94W5dTe1VEqPu/eWn5XFUNovIHqh+2ihEisdN8xiC+Mx21xPx9I5fFeb7aXD62vszjUuCN7z5yjc6v40vXAQeqnlGCIlb8Rn8+0+0EVk6zfbUUEu6HMsre/vC5i+QyFBa66ULwOJY1jLbuwhfvgxsw02xQdJYcnLV52Oi07tUgTfc5SwW4fVAZTk1ATQ6o4XqsphSQ7DIaNWA9z5THQ3bKW/w5hybsvw6ttH2m8GcVHp3RWxVYbrL43gH9dqwUb4Y80YDYq0Ei9BvXNTtlphFKo7Wf2bnIPBoXX0mMAJKDynRA8NdrF94ORV1cqcY5WZPN3u+jSNdJSNr8OGSEyos9Gd3S7OYN8ZNTFq8PuE63nzBEXWA/xMK1IxNkroWgkMgdVlyMnNiXYEZG7matbDPa1X9tTshOR627DibWlmJTChSXxKZQGCJlWptAajhpSOlGiZet1Q8uQson2GL+6LeGNvr122eASXu/D2+1GwWEz+qWc31Qp7HHUG4TODdQbBzVtRaSRHdwmrml3ZENEgRAv+ZDYGgAYPqkria+/7iT3hznlFLgAAzkhkojKw448FrXHtvoewlnExOiDBIQ7wnfdmxAhgUXI250DCXTU1IWL5vKaNuEIkVBbuyRKwPvKOXP5vm2jm2T5X4aH8DMaAfPz/UT/8fK4fvwgfJH5zCsrSWAXxIYN1jrbej7lJNMSOqRFPMwHwVPCvW6/Eo1Xh+ns79bZqLW78JOZK9NsrSeURgtpLC6W33hkXqQekdRwq6r2IcrCtW7AZ+IBCtww6lKBNCE/2YSL4n0BMKwh8PvyB3v9qLwgtJJw0h4M2JSbp4g76vKHEMD924aoyKb96wrtkNuCYkokZpLjqNZrfzSShXlW72iuYFAaewbsyJBWJ0JKLUrWWWyJB9xgOZ6FbNN6MWbHp0gGWAueKlsdVVlSp+mN37ECvXMHYU1YVk35GYcbSQwkMRp81HLzbLx6J8w04BPtc7225/pd+EgsTkuNMmobr8uLeJmrmC6PlvmRgGrfoB2mwJbN56eusT0Twco4ZXp62LDvi2Vl6ONWOkT21EtzDjR1AUGdzCSlPLVJzGJ55SlNG/gIA7PXTIcD1uJgeDPYlp3Vk8SaN4gf6YaNCi+15oct0JFHEg7QjKOSP7hs0hFrg6DpTlxea1tqsGrJ1oH6mIj3j8FKtbW2XymY/Vub9ZLe2UUaOGT0ZRf8yHeE2ynSsidTb4aog1pn+PAl5fYIfW/D1BTUyYvcaNBkdtSnyRYBoDCJ655ItmEB/pWzCLNj+lfOqRFBivnLXjOKaZEmKx565eyjyTyGR9RIe/bx0eK574sF063qhcLYeCe8g/bTSEBnufTtb6+ocD29zelRF1z2D0LyLSj5ofLoYWrFx3xhgc6R4eyz1pBkjLkMMgkhwtJiQdCLWIeCnqnW2atikg6o0hsTkT13yxoFXBbDFx9/hlpUkOezAhY76e3kSjgqisWMVdaWaLzqkH0SkuQFTacOFyM5GJYRHjh2SREm+OZxmjsqijg0cfwcYp3BitJDLdbnKOcPdn68QdmILCS+zE/IYJWTqBee25NV75JEXV/G6yh2uqIGwLI3qj+F2e0anyg1HzAVZTAuEe1bBkIRb6y2KwGst7bk5dPKensO6ITlossTpkl6OzRMbht2ZbX/o9zvee1ffiyFrRyiL15UaVN0QHTIa6GIPOuPeDPYHym8cCroc/HEZNnitCBj+vH0Zqqx8bCX6QyELLiUo10Qx1IasrU/mWv3sy4DSpajzGtaz3+gfql3drismb1p+D2sVE7aaHf0F7TwF3HQCLkc7wDKhLq5MyKaySxmA9Cy0HiqwfGK8rvovJtSuBqbfjxLisft5tcQMx9yZ+5WmuDy/vtzUI5IYP9Ts6w4Jkav0G+RCsOyRGNlSH3Y6kBPDYfCJwYmDp7OQw73fq5X3G6gqgXp+AjcWFokwHtt9rmgiTzl/vfqe5/aZABR6mV73dMzKhVFaYo9cx3VDnhfZLKea2GwHjZyH5cy8GpICu2MeLYBdO6AnzHigV0P9O7+v1JrcKPCugEAy7DgYw/h+NHtjA9tQQ34rRkb9uQKt/y4ewSQRrhdlokvQAWctWo76EcLpJTA9MbkfIWta9bG055ghSg8h+p1PlNgz39MJH0DLUcJTbbF4DNYOWobC/DsgJ45Z1l1IRQp8tm8WuaP6XoXE4QbjnwbuE652ES2t8SFRjueWfhw2znjGOjFSkzsS2tU0os10n1Fz8ikbmqIQjYXJGTQK5p1xzRJx84XeK1nTVe2V2nAPiDLCt3xxgAzwWBbatpmPvSJMNoTA8xNtfcDRuK/DnVCNy0kTJE+wZJQGYC5KA+dJlg+Q60je1XoGSapqF,iv:bf2OZYHiC9Voo+EYgVWcjkOT4KgQ9wKFbnIbcCcbXxo=,tag:z5K4RKcxggCp6ZjM6mkuwQ==,type:str]
|
rsa: ENC[AES256_GCM,data:R4trQNVB68nfRraWZozZgwD4fQGf+m/1RrEDJ93PctsS30vKsxhgdrjyy245LalY9bQ3tdIgdqkTKFZJv1qj0hBPLV/dynuO7yxUfcc6czDCGhNqtiHU8R+DQ4maWARZ2z2t1kYHDzB4MA+a+fEvXfSUMlAlugk01LkHBxl3ZbKOIqO6SVt1W92GCjMQwuIRgcE+o4H3ixPu38HcIwUNimL50O7XbROW+H+GjzlnAEXBD35H5+kbiE2Cjkcl/WidtPH03JrcxrElOP4UgBhpHLbXrjoGdDIhRf3OexDPKhgusEA1Cm7f+6dd67uEXT1y0Z/ECZD+B4ygzBEl9IB62QNeJQmAGNkMnUu6312BnnffLqfKbMZRehv0p+/avT3eYf3sB/P//IPAWVK8MhI/9JZwGi8s/gYCGNnxwNmVE6SaOI+zy9UUmnOsSRZuuT9FmdYEcR5+ig8gwKZxWj54ck52o9dAu2Lja3vsjl76WoVBnyuH+bu/0pHVQ10/cZ/uRm4IRNzFM2ejG5+YnsKVM7iwUWKH01KZuN3WZh7dmY23C1pHzk1HEtackZuOxyeulgNzDG10fHr8vPWYEUY7t9Dcr9PY0K6Uio1AXY9+Of2StAddHd8f2uCjYfRXI50PT6l8QKaAFQUabBADHQ1WmPu3l7zZiv2tP2VdOwSWOTP93x8DpB6+xuUVsElwInb1MAVthr5NBq6K1+shS05HJAXnq9VLTqjfDZ8ugAOnxJ+1ruCMIc7no2AagB5ogUnuaMyTeIAHzB+5Iv50GUKgv8ZSo3wSxZIo1xs7xKLfxGA3PnQOCMlCUmJoDqZ+DtaU3dnqkKDi3nKUULd3DMGkOCS+MYdeBfzD04DFYNqS+ZtslsgzX7gZEH1Zz2KQE6xAyqZMKFG6K3EepYwdZb6SaLFly6BZ1MB0tdjIsUI9pKbbLgqUaKbh8GtD/Vr6A1warC1TT+42Y8wcv2Cbq0R8tXH2XLzZIZs9lfkRjveAeWRd/bqNbOS7pwjLO8OISCLXJwEOCIv4drqYU+jKZP+8aZvgbXXrxGneLt8Y8//nQ4QWQWKjAq2c/Xory0JBAm92e7E+dSYdf5Msq0WyA3Q1kHPAr01/NqNTmXXAfcRpiBioqTq2nQ88wNrNjgGl7L3Mpop77QnRXrASVA+9j9x2H7shj0LvSMT+Fz4cZtQgG8PKI0WHsSyePVeMd3EB5uKGJyg7pXy+5VbFYdllS7cgUmHI5m85NViIFhT+ghKtvZ96zLaJcBMEJsGw2jnZf/S+iwCYUisuE0oXrAbHDVJWeo2m/6qwOlfWU2jFIOf+kBDZBqIXkQJFwk0E8tHrogkNzOhVhMHEy3cPobfrFyyfqc7Yt4CEyVy3UXcAT5HmxBr3LwPBlrvcEQqCE/BYlRg6TelhMogXUXG/UK3f7jBmOQZHdkEZKVEFh4W+HtAXvd6ttSoKuTgaHwJFXrLAoyWxJ+Jc1d+tHESGsLimNgzqKUjaWLWVvHbD1zvFf008V7kCET7e9C1JMWbJ5+/mGwO+9igQIUn6aJUc+zrB4ytmX8ufgPc1ObTHCdRVyFEJGHyVqBIMboQm0Jl9OTo/8iU/J6PALqzgq46OvWVeYT865EV/DAmNtw6gtWw4GYpOF6a+CTpj0bmjJXLiQRAzYx3iQVSucrLvbL3jhCgPY8s6SzZyz+5yrMKLKNVgSF7l3ao7aeXKzPYxdMXYKGATe0tCnF/R8FxiIfKEVKb2VYY4K4vUKEx1ser158ChzQSLyke6j7jUA7VEFRdE/4DgScc2Q0sJ5H3qcvaYijD5eoWQFKEGyzLy1DyCb1GiEcE2NqKesNF1VZy324N1oL6+lvs3zBH5dovw6dXprL+L0F9+LoHCK/scZkIFoLlHSVUkanHJtZapuFFY5ZT78HlJl0qaDTiEB+4div86slNBe8kObKp1X6CgwSOePumSEmwGEsPMIZbr3wS8PeaF/bpsSjgg7brFf9X6EinpjklD5MHox2aHqCYxcfRcaF05pn7XCSkFDzoIQI5gsVKDh4IKO4W9AAUWivKUJUM7Uhux+KP85280UJ+87DyatF1ZKHPR057SFnIuamqS3Blhpzom2c5DnrI94W5dTe1VEqPu/eWn5XFUNovIHqh+2ihEisdN8xiC+Mx21xPx9I5fFeb7aXD62vszjUuCN7z5yjc6v40vXAQeqnlGCIlb8Rn8+0+0EVk6zfbUUEu6HMsre/vC5i+QyFBa66ULwOJY1jLbuwhfvgxsw02xQdJYcnLV52Oi07tUgTfc5SwW4fVAZTk1ATQ6o4XqsphSQ7DIaNWA9z5THQ3bKW/w5hybsvw6ttH2m8GcVHp3RWxVYbrL43gH9dqwUb4Y80YDYq0Ei9BvXNTtlphFKo7Wf2bnIPBoXX0mMAJKDynRA8NdrF94ORV1cqcY5WZPN3u+jSNdJSNr8OGSEyos9Gd3S7OYN8ZNTFq8PuE63nzBEXWA/xMK1IxNkroWgkMgdVlyMnNiXYEZG7matbDPa1X9tTshOR627DibWlmJTChSXxKZQGCJlWptAajhpSOlGiZet1Q8uQson2GL+6LeGNvr122eASXu/D2+1GwWEz+qWc31Qp7HHUG4TODdQbBzVtRaSRHdwmrml3ZENEgRAv+ZDYGgAYPqkria+/7iT3hznlFLgAAzkhkojKw448FrXHtvoewlnExOiDBIQ7wnfdmxAhgUXI250DCXTU1IWL5vKaNuEIkVBbuyRKwPvKOXP5vm2jm2T5X4aH8DMaAfPz/UT/8fK4fvwgfJH5zCsrSWAXxIYN1jrbej7lJNMSOqRFPMwHwVPCvW6/Eo1Xh+ns79bZqLW78JOZK9NsrSeURgtpLC6W33hkXqQekdRwq6r2IcrCtW7AZ+IBCtww6lKBNCE/2YSL4n0BMKwh8PvyB3v9qLwgtJJw0h4M2JSbp4g76vKHEMD924aoyKb96wrtkNuCYkokZpLjqNZrfzSShXlW72iuYFAaewbsyJBWJ0JKLUrWWWyJB9xgOZ6FbNN6MWbHp0gGWAueKlsdVVlSp+mN37ECvXMHYU1YVk35GYcbSQwkMRp81HLzbLx6J8w04BPtc7225/pd+EgsTkuNMmobr8uLeJmrmC6PlvmRgGrfoB2mwJbN56eusT0Twco4ZXp62LDvi2Vl6ONWOkT21EtzDjR1AUGdzCSlPLVJzGJ55SlNG/gIA7PXTIcD1uJgeDPYlp3Vk8SaN4gf6YaNCi+15oct0JFHEg7QjKOSP7hs0hFrg6DpTlxea1tqsGrJ1oH6mIj3j8FKtbW2XymY/Vub9ZLe2UUaOGT0ZRf8yHeE2ynSsidTb4aog1pn+PAl5fYIfW/D1BTUyYvcaNBkdtSnyRYBoDCJ655ItmEB/pWzCLNj+lfOqRFBivnLXjOKaZEmKx565eyjyTyGR9RIe/bx0eK574sF063qhcLYeCe8g/bTSEBnufTtb6+ocD29zelRF1z2D0LyLSj5ofLoYWrFx3xhgc6R4eyz1pBkjLkMMgkhwtJiQdCLWIeCnqnW2atikg6o0hsTkT13yxoFXBbDFx9/hlpUkOezAhY76e3kSjgqisWMVdaWaLzqkH0SkuQFTacOFyM5GJYRHjh2SREm+OZxmjsqijg0cfwcYp3BitJDLdbnKOcPdn68QdmILCS+zE/IYJWTqBee25NV75JEXV/G6yh2uqIGwLI3qj+F2e0anyg1HzAVZTAuEe1bBkIRb6y2KwGst7bk5dPKensO6ITlossTpkl6OzRMbht2ZbX/o9zvee1ffiyFrRyiL15UaVN0QHTIa6GIPOuPeDPYHym8cCroc/HEZNnitCBj+vH0Zqqx8bCX6QyELLiUo10Qx1IasrU/mWv3sy4DSpajzGtaz3+gfql3drismb1p+D2sVE7aaHf0F7TwF3HQCLkc7wDKhLq5MyKaySxmA9Cy0HiqwfGK8rvovJtSuBqbfjxLisft5tcQMx9yZ+5WmuDy/vtzUI5IYP9Ts6w4Jkav0G+RCsOyRGNlSH3Y6kBPDYfCJwYmDp7OQw73fq5X3G6gqgXp+AjcWFokwHtt9rmgiTzl/vfqe5/aZABR6mV73dMzKhVFaYo9cx3VDnhfZLKea2GwHjZyH5cy8GpICu2MeLYBdO6AnzHigV0P9O7+v1JrcKPCugEAy7DgYw/h+NHtjA9tQQ34rRkb9uQKt/y4ewSQRrhdlokvQAWctWo76EcLpJTA9MbkfIWta9bG055ghSg8h+p1PlNgz39MJH0DLUcJTbbF4DNYOWobC/DsgJ45Z1l1IRQp8tm8WuaP6XoXE4QbjnwbuE652ES2t8SFRjueWfhw2znjGOjFSkzsS2tU0os10n1Fz8ikbmqIQjYXJGTQK5p1xzRJx84XeK1nTVe2V2nAPiDLCt3xxgAzwWBbatpmPvSJMNoTA8xNtfcDRuK/DnVCNy0kTJE+wZJQGYC5KA+dJlg+Q60je1XoGSapqF,iv:bf2OZYHiC9Voo+EYgVWcjkOT4KgQ9wKFbnIbcCcbXxo=,tag:z5K4RKcxggCp6ZjM6mkuwQ==,type:str]
|
||||||
ed25519: ENC[AES256_GCM,data:9GpcXcHSZJR95nTVJPA/vLQGX2VC6Mc+ioXWXjoEi7DsFiGz88x/tCjusGBR5e8WoX5uxZn3XhDeIL0d6JwSVfN5g9ncvImRk5A9/pXPgBWLKwIcdHmfboy4D+jwooIF5kqLdZbPMB6DU547W6+vZJNy/E60ngnWKsaK6sNKSC5kA8fNzBCdwRQH2JjCeeU2FGcsvyYAbk4n8exvRvksVhGY07lBaxxRBNB4m2qN19NvIBMjItpJ4g2/YgErQE3ZXXKv54JISkHZtOW/m22td79M0KTRgdhQuVLcYrV/HyhmZJ8slUfvkCMn+FvU20SpxwpFKPqS3Otcu+A1M2K/054eRN7nDmd6aSxJNpKOIGKvHsonLxkeSCLjzYwR8nbxerQrriENdrUjbiBLnWjJNgkA22sLb8nvVF31Cr9eK5ZVen+HFLzyJnNhRjGRf+sOaRsZCHGvbIKK/JXvP5rNqNIKofRT9+YyvpD+z7SRsZt/5qLoB3a3L6EIppOkfKY000yQGs1IKhT5oYW8IIMj,iv:KwRV4Igc+XWRXqLcjXMpmnHc8Qe8JHrXetQ1XUTpAsM=,tag:DwlhfesNwq8gTh0fiObiQA==,type:str]
|
ed25519: ENC[AES256_GCM,data:9GpcXcHSZJR95nTVJPA/vLQGX2VC6Mc+ioXWXjoEi7DsFiGz88x/tCjusGBR5e8WoX5uxZn3XhDeIL0d6JwSVfN5g9ncvImRk5A9/pXPgBWLKwIcdHmfboy4D+jwooIF5kqLdZbPMB6DU547W6+vZJNy/E60ngnWKsaK6sNKSC5kA8fNzBCdwRQH2JjCeeU2FGcsvyYAbk4n8exvRvksVhGY07lBaxxRBNB4m2qN19NvIBMjItpJ4g2/YgErQE3ZXXKv54JISkHZtOW/m22td79M0KTRgdhQuVLcYrV/HyhmZJ8slUfvkCMn+FvU20SpxwpFKPqS3Otcu+A1M2K/054eRN7nDmd6aSxJNpKOIGKvHsonLxkeSCLjzYwR8nbxerQrriENdrUjbiBLnWjJNgkA22sLb8nvVF31Cr9eK5ZVen+HFLzyJnNhRjGRf+sOaRsZCHGvbIKK/JXvP5rNqNIKofRT9+YyvpD+z7SRsZt/5qLoB3a3L6EIppOkfKY000yQGs1IKhT5oYW8IIMj,iv:KwRV4Igc+XWRXqLcjXMpmnHc8Qe8JHrXetQ1XUTpAsM=,tag:DwlhfesNwq8gTh0fiObiQA==,type:str]
|
||||||
|
@ -16,8 +17,8 @@ sops:
|
||||||
QnRtSGhPY1NHSVJaTUZNa1BMdDFxbTQKR8QvpUYTMLMxR5fNJvmM4HrtV0tEPiED
|
QnRtSGhPY1NHSVJaTUZNa1BMdDFxbTQKR8QvpUYTMLMxR5fNJvmM4HrtV0tEPiED
|
||||||
XewKB/EfH3jaLupB9P+CSUJ69Sfn9RBpdgrwOjt5QI3PkU+JFCS2Wg==
|
XewKB/EfH3jaLupB9P+CSUJ69Sfn9RBpdgrwOjt5QI3PkU+JFCS2Wg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2023-09-22T14:39:58Z"
|
lastmodified: "2023-09-28T15:27:56Z"
|
||||||
mac: ENC[AES256_GCM,data:qDh6cJBkf5sHy1RTq0jUYEFNRuwqu294EGb4+typvI8RbVxPHuAeHG6kMg43KFmpSdocDwMRa2JAY8/SV4JfiSlX3T5c6BTMg98YFtanCa062ML2I7Kjh0i5yHxVsAGls+Ch3Vr9h/Kqv+jM2KALq1Nhf6hls4jgSrX7kh0H0dk=,iv:gI6MvJiAj4qQdQf2aDgnKQhbNimeX+mcI05VClCiuT4=,tag:pRBbMOgDOT4slUrXOjhNrg==,type:str]
|
mac: ENC[AES256_GCM,data:9KVa8M3vJtTNKvozRBnjt18dXwOYOp3X7uXbL+sbI+PDnw1rc6IAOhqOEVgLEwKbt2MULUfyZkgvlUpQ1QoQcuqFTrhBkflP7hUqUHTwFS2PE4BtilJenzTqcFUvuwZsswfm9zB3a0y2zufaXwNPHukOIhqnSDS2PItEFAjpX7c=,iv:zTxhJbYTiKI70QXvyWZ6VZyzbYrZ3rzvdW1bBGpcJkQ=,tag:d7bNkWurNnBT9DyTv6TrXQ==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2023-09-22T14:39:09Z"
|
- created_at: "2023-09-22T14:39:09Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
|
|
1
shells/code-format/.envrc
Normal file
1
shells/code-format/.envrc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
use flake .
|
32
shells/code-format/flake.nix
Normal file
32
shells/code-format/flake.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
description = "Nix shell for code-format tools";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/release-23.05";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ self
|
||||||
|
, nixpkgs
|
||||||
|
, flake-utils
|
||||||
|
}:
|
||||||
|
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
packages = with pkgs; [
|
||||||
|
black # Code format Python
|
||||||
|
chroma # Code syntax highlighter
|
||||||
|
mdp # Terminal Markdown presenter
|
||||||
|
nodePackages.prettier # Code format
|
||||||
|
rustfmt # Code format Rust
|
||||||
|
shellcheck # Code lint Shell
|
||||||
|
shfmt # Code format Shell
|
||||||
|
];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
1
shells/gpu/.envrc
Normal file
1
shells/gpu/.envrc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
use flake .
|
29
shells/gpu/flake.nix
Normal file
29
shells/gpu/flake.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
description = "Nix shell for GPU tools";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/release-23.05";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ self
|
||||||
|
, nixpkgs
|
||||||
|
, flake-utils
|
||||||
|
}:
|
||||||
|
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
packages = with pkgs; [
|
||||||
|
clinfo # Terminal OpenCL info
|
||||||
|
libva-utils # Terminal VAAPI info
|
||||||
|
python310Packages.gpustat # Terminal GPU info
|
||||||
|
vdpauinfo # Terminal VDPAU info
|
||||||
|
];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
2
shells/network/.envrc
Normal file
2
shells/network/.envrc
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
export NIXPKGS_ALLOW_UNFREE=1
|
||||||
|
use flake --impure .
|
61
shells/network/flake.lock
Normal file
61
shells/network/flake.lock
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1687709756,
|
||||||
|
"narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1688868408,
|
||||||
|
"narHash": "sha256-RR9N5XTAxSBhK8MCvLq9uxfdkd7etC//seVXldy0k48=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "510d721ce097150ae3b80f84b04b13b039186571",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "release-23.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
36
shells/network/flake.nix
Normal file
36
shells/network/flake.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
description = "Nix shell for network tools";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/release-23.05";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ self
|
||||||
|
, nixpkgs
|
||||||
|
, flake-utils
|
||||||
|
}:
|
||||||
|
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
packages = with pkgs; [
|
||||||
|
bmon # Modern Unix `iftop`
|
||||||
|
curlie # Terminal HTTP client
|
||||||
|
dogdns # Modern Unix `dig`
|
||||||
|
fast-cli # Terminal fast.com speedtest
|
||||||
|
httpie # Terminal HTTP client
|
||||||
|
iperf3 # Terminal network benchmarking
|
||||||
|
mtr # Modern Unix `traceroute`
|
||||||
|
netdiscover # Modern Unix `arp`
|
||||||
|
nethogs # Modern Unix `iftop`
|
||||||
|
ookla-speedtest # Terminal speedtest
|
||||||
|
wavemon # Terminal WiFi monitor
|
||||||
|
];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
Loading…
Reference in a new issue