From 82f5854f202469d9eabdef89da2919b9deed6732 Mon Sep 17 00:00:00 2001 From: Greg Burd Date: Thu, 28 Sep 2023 11:28:32 -0400 Subject: [PATCH] use disko --- NOTES | 31 ++++++++------ nixos/floki/default.nix | 32 +-------------- nixos/floki/disks.nix | 79 +++++++++++++++++++++++------------- nixos/floki/secrets.yaml | 5 ++- shells/code-format/.envrc | 1 + shells/code-format/flake.nix | 32 +++++++++++++++ shells/gpu/.envrc | 1 + shells/gpu/flake.nix | 29 +++++++++++++ shells/network/.envrc | 2 + shells/network/flake.lock | 61 ++++++++++++++++++++++++++++ shells/network/flake.nix | 36 ++++++++++++++++ 11 files changed, 237 insertions(+), 72 deletions(-) create mode 100644 shells/code-format/.envrc create mode 100644 shells/code-format/flake.nix create mode 100644 shells/gpu/.envrc create mode 100644 shells/gpu/flake.nix create mode 100644 shells/network/.envrc create mode 100644 shells/network/flake.lock create mode 100644 shells/network/flake.nix diff --git a/NOTES b/NOTES index 96ce12b..bb0218e 100644 --- a/NOTES +++ b/NOTES @@ -21,34 +21,40 @@ * swap (see: https://discourse.nixos.org/t/how-do-i-set-up-a-swap-file/8323/7) * udevadm trigger -nh os switch --ask - - INSTALL: export device=/dev/nvme0n1 export hostname=floki wipefs/shread/scrub ${device} +sgdisk --zap-all ${device} printf "label: gpt\n,550M,U\n,,L\n" | sfdisk ${device} mkfs.fat -L ESP -F 32 ${device} cryptsetup --verify-passphrase -v luksFormat --label "${hostname}_crypt" "${device}p2" cryptsetup open "${device}p2" "${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/nix btrfs subvolume create /mnt/persist btrfs subvolume create /mnt/swap 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} -mount -o compress=zstd,noatime,subvol=nix /dev/mapper/"${hostname}_crypt" /mnt/nix -mount -o compress=zstd,subvol=persist /dev/mapper/"${hostname}_crypt" /mnt/persist -mount -o compress=zstd,noatime,subvol=logs /dev/mapper/"${hostname}_crypt" /mnt/var/logs -mount -o noatime,subvol=swap /dev/mapper/"${hostname}_crypt" /mnt/swap +mount -t btrfs -o compress=zstd,noatime,subvol=nix /dev/disk/by-label/"${hostname}" /mnt/nix +mount -t btrfs -o compress=zstd,subvol=persist /dev/disk/by-label/"${hostname}" /mnt/persist +mount -t btrfs -o compress=zstd,noatime,subvol=logs /dev/disk/by-label/"${hostname}" /mnt/var/logs +mount -t btrfs -o noatime,subvol=swap /dev/disk/by-label/"${hostname}" /mnt/swap 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 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 echo test | gpg --clearsign 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 reboot home-manager switch --flake .#username@hostname @@ -90,9 +96,10 @@ home-manager switch --flake .#username@hostname sudo nixos-rebuild switch --flake .#my-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://hoverbear.org/blog/declarative-gnome-configuration-in-nixos/ diff --git a/nixos/floki/default.nix b/nixos/floki/default.nix index 0977687..25ca2de 100644 --- a/nixos/floki/default.nix +++ b/nixos/floki/default.nix @@ -5,45 +5,19 @@ #inputs.nixos-hardware.nixosModules.common-gpu-nvidia inputs.nixos-hardware.nixosModules.common-pc inputs.nixos-hardware.nixosModules.common-pc-ssd - #(import ./disks.nix { }) + (import ./disks.nix { }) ../_mixins/hardware/systemd-boot.nix ../_mixins/filesystems/encrypted-root.nix ../_mixins/filesystems/btrfs.nix ../_mixins/services/bluetooth.nix ../_mixins/services/pipewire.nix - # ../_mixins/services/zerotier.nix ../_mixins/virt # ../_mixins/global # ../_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 = { initrd = { availableKernelModules = [ @@ -57,11 +31,9 @@ "usb_storage" "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" kernelPackages = pkgs.linuxPackages_latest; }; diff --git a/nixos/floki/disks.nix b/nixos/floki/disks.nix index 48517fc..4e4598e 100644 --- a/nixos/floki/disks.nix +++ b/nixos/floki/disks.nix @@ -1,44 +1,67 @@ { disks ? [ "/dev/nvme0n1" ], ... }: let - defaultXfsOpts = [ "defaults" "relatime" "nodiratime" ]; + hostname = config.networking.hostName; in { disko.devices = { disk = { - nvme0 = { + nvme = { type = "disk"; - device = builtins.elemAt disks 0; + device = "/dev/nvme0n1"; content = { - type = "table"; - format = "gpt"; - partitions = [{ - name = "ESP"; - start = "0%"; - end = "550MiB"; - bootable = true; - flags = [ "esp" ]; - fs-type = "fat32"; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - }; - } - { - name = "root"; - start = "550MiB"; - end = "100%"; + type = "gpt"; + partitions = { + ESP = { + size = "512M"; + type = "EF00"; content = { type = "filesystem"; - # Overwirte the existing filesystem - extraArgs = [ "-f" ]; - format = "xfs"; - mountpoint = "/"; - mountOptions = defaultXfsOpts; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "defaults" ]; }; - }]; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + 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" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + 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" ]; + }; + }; + }; + }; + }; + }; }; }; }; }; } + diff --git a/nixos/floki/secrets.yaml b/nixos/floki/secrets.yaml index 65cf6b1..efba814 100644 --- a/nixos/floki/secrets.yaml +++ b/nixos/floki/secrets.yaml @@ -1,3 +1,4 @@ +luks-password: ENC[AES256_GCM,data:zzIgzaCosmaoZBsR,iv:tBe0F2M4pAOwOBHoSX6B3rDFR3tDOdFBt0xJMgNfq1s=,tag:z7LLcYnoMNkZx6YeX7ABJQ==,type:str] ssh-private-keys: rsa: ENC[AES256_GCM,data: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,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] @@ -16,8 +17,8 @@ sops: QnRtSGhPY1NHSVJaTUZNa1BMdDFxbTQKR8QvpUYTMLMxR5fNJvmM4HrtV0tEPiED XewKB/EfH3jaLupB9P+CSUJ69Sfn9RBpdgrwOjt5QI3PkU+JFCS2Wg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-09-22T14:39:58Z" - mac: ENC[AES256_GCM,data:qDh6cJBkf5sHy1RTq0jUYEFNRuwqu294EGb4+typvI8RbVxPHuAeHG6kMg43KFmpSdocDwMRa2JAY8/SV4JfiSlX3T5c6BTMg98YFtanCa062ML2I7Kjh0i5yHxVsAGls+Ch3Vr9h/Kqv+jM2KALq1Nhf6hls4jgSrX7kh0H0dk=,iv:gI6MvJiAj4qQdQf2aDgnKQhbNimeX+mcI05VClCiuT4=,tag:pRBbMOgDOT4slUrXOjhNrg==,type:str] + lastmodified: "2023-09-28T15:27:56Z" + mac: ENC[AES256_GCM,data:9KVa8M3vJtTNKvozRBnjt18dXwOYOp3X7uXbL+sbI+PDnw1rc6IAOhqOEVgLEwKbt2MULUfyZkgvlUpQ1QoQcuqFTrhBkflP7hUqUHTwFS2PE4BtilJenzTqcFUvuwZsswfm9zB3a0y2zufaXwNPHukOIhqnSDS2PItEFAjpX7c=,iv:zTxhJbYTiKI70QXvyWZ6VZyzbYrZ3rzvdW1bBGpcJkQ=,tag:d7bNkWurNnBT9DyTv6TrXQ==,type:str] pgp: - created_at: "2023-09-22T14:39:09Z" enc: |- diff --git a/shells/code-format/.envrc b/shells/code-format/.envrc new file mode 100644 index 0000000..a5dbbcb --- /dev/null +++ b/shells/code-format/.envrc @@ -0,0 +1 @@ +use flake . diff --git a/shells/code-format/flake.nix b/shells/code-format/flake.nix new file mode 100644 index 0000000..58094e5 --- /dev/null +++ b/shells/code-format/flake.nix @@ -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 + ]; + }; + }); +} diff --git a/shells/gpu/.envrc b/shells/gpu/.envrc new file mode 100644 index 0000000..a5dbbcb --- /dev/null +++ b/shells/gpu/.envrc @@ -0,0 +1 @@ +use flake . diff --git a/shells/gpu/flake.nix b/shells/gpu/flake.nix new file mode 100644 index 0000000..9583f16 --- /dev/null +++ b/shells/gpu/flake.nix @@ -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 + ]; + }; + }); +} diff --git a/shells/network/.envrc b/shells/network/.envrc new file mode 100644 index 0000000..4953a6f --- /dev/null +++ b/shells/network/.envrc @@ -0,0 +1,2 @@ +export NIXPKGS_ALLOW_UNFREE=1 +use flake --impure . diff --git a/shells/network/flake.lock b/shells/network/flake.lock new file mode 100644 index 0000000..949f540 --- /dev/null +++ b/shells/network/flake.lock @@ -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 +} diff --git a/shells/network/flake.nix b/shells/network/flake.nix new file mode 100644 index 0000000..140086c --- /dev/null +++ b/shells/network/flake.nix @@ -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 + ]; + }; + }); +}