From 4c9df418065f39677ad4648500d78d71d2e4c1e6 Mon Sep 17 00:00:00 2001 From: Don Harper Date: Tue, 17 Sep 2024 16:35:56 -0500 Subject: [PATCH] add nixos-anywhere support --- nixos-anywhere/configuration-vm.nix | 50 ++++++++++++++++++++++++++ nixos-anywhere/configuration.nix | 54 ++++++++++++++++++++++++++++ nixos-anywhere/disk-config-vm.nix | 56 +++++++++++++++++++++++++++++ nixos-anywhere/disk-config.nix | 56 +++++++++++++++++++++++++++++ nixos-anywhere/flake.lock | 48 +++++++++++++++++++++++++ nixos-anywhere/flake.nix | 23 ++++++++++++ 6 files changed, 287 insertions(+) create mode 100644 nixos-anywhere/configuration-vm.nix create mode 100644 nixos-anywhere/configuration.nix create mode 100644 nixos-anywhere/disk-config-vm.nix create mode 100644 nixos-anywhere/disk-config.nix create mode 100644 nixos-anywhere/flake.lock create mode 100644 nixos-anywhere/flake.nix diff --git a/nixos-anywhere/configuration-vm.nix b/nixos-anywhere/configuration-vm.nix new file mode 100644 index 0000000..b917130 --- /dev/null +++ b/nixos-anywhere/configuration-vm.nix @@ -0,0 +1,50 @@ +{ modulesPath, config, lib, pkgs, ... }: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + (modulesPath + "/profiles/qemu-guest.nix") + ./disk-config-vm.nix + ]; + boot = { + kernelPackages = pkgs.linuxPackages_latest; + kernelParams = [ "consoleblank=60" ]; + loader = { + timeout = 10; + /* systemd-boot = { + enable = true; + }; */ + grub = { + device = "nodev"; + efiSupport = true; + efiInstallAsRemovable = true; + forceInstall = true; + }; + efi = { + #canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; + }; + }; + plymouth = { + enable = true; + theme = "breeze"; + }; + kernel = { + sysctl = { "vm.swappiness" = 10;}; + }; + }; + services.openssh.enable = true; + + environment.systemPackages = map lib.lowPrio [ + pkgs.curl + pkgs.git + pkgs.git-crypt + ]; + + users.users.root = { + initialPassword = "d4u5c3k"; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINd8AdVbQQ/Fmw+b9mI8EMYqIoRkwmSwAOtmlte3incL don@loki" + ]; + }; + + system.stateVersion = "23.11"; +} diff --git a/nixos-anywhere/configuration.nix b/nixos-anywhere/configuration.nix new file mode 100644 index 0000000..c8d652e --- /dev/null +++ b/nixos-anywhere/configuration.nix @@ -0,0 +1,54 @@ +{ modulesPath, config, lib, pkgs, ... }: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + (modulesPath + "/profiles/qemu-guest.nix") + ./disk-config.nix + ]; + boot = { + kernelPackages = pkgs.linuxPackages_latest; + kernelParams = [ "consoleblank=60" ]; + loader = { + timeout = 10; + /* systemd-boot = { + enable = true; + }; */ + grub = { + device = "nodev"; + efiSupport = true; + efiInstallAsRemovable = true; + forceInstall = true; + }; + efi = { + #canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; + }; + }; + plymouth = { + enable = true; + theme = "breeze"; + }; + kernel = { + sysctl = { "vm.swappiness" = 10;}; + }; + }; + services.openssh.enable = true; + + environment.systemPackages = map lib.lowPrio [ + pkgs.curl + pkgs.git + pkgs.git-crypt + ]; + + users.users.root = { + initialPassword = "d4u5c3k"; + openssh.authorizedKeys.keys = [ + "ssh-dss AAAAB3NzaC1kc3MAAACBAL/6Wxt6Rr9agFaw41WYMU6IoF3X1bpdrFSUJg+CgaIXEnHFZJgNhcGfoGMp9H1ikOy/yN5GDqsEuiDYlWu3Dild0Q8k1cDMiL4m/xUwLDgFByPBYZ2FlAikogFXm5cMLneD7jP82FZKa8YpTzmk78iGNCcCYdrZL+AWgfrKZJ0DAAAAFQC//npxf4/Pq/lKBZED/RLyYKm0qwAAAIEAr5q/6h03QE7cxE71VbpQlEQkDSBmOOxrvoDCKPAT4H9gZGW8PAuJ2MWl3VF1qWcq2BBLzJsPkbVC0BsjyohV2EJsQuf/EUixb6gldUSWL5wOlGBW1pzlMiJ+cTPYqXDS0bcwkrMWtBbUxKZt0dl+LV6q6FpT8QWvqY6dGkAccKwAAACAKDKIyHf7as7R0F0uwd++PW40+pesv48NQIOZOi7KpBeSyHvXFKFEv/thr1QWJaaLAm4PMRBoNq6tC11oRez5p5nSDmJO3HnZirALnmnBWZYPDkKGSONMF4jC0nAmQl3r0u3OwiwJO9MJjTOjy6G7U1j3T0Z3bOdPG1WUHiWAkYE= don@harper" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINd8AdVbQQ/Fmw+b9mI8EMYqIoRkwmSwAOtmlte3incL don@loki" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB/Rdi63nQcI3GTKxYniXoWibv08D/qoMUewHwqZb4VvSh2RWBVepjWBoehpqrDxr5oGLUP/tBv65KOACP7sRBJ8Bf8wiJTNxFOrJi9qYPta719hP1PVjZZ+PklgZcblO0kaPUVEwhVPvW89uNsL8u2niLQ+m5wt6SMp1LVjXLp4dvpzTj7nbVNkEa8Y55os3S+JuNjDlKT135+LRcn7yF1GUZJ2A6nAKJ+S7NPlJPaWfEUBISic5msn2ZPPyoOQvYZyfIwysdON2a6wBv8SFrHFT3CA+gkwJITcpVk+FB1Cnb476swYYbLSOzHmJmo/LG8Jpw6aZDbvYvocJn6qS8r6iFVHKfvyI9/EsHoEKYndJ4yJWfYijMTX3sm24/fxAVeo9/JHQFQf1JbYPm5QFDWZsSOYCYrQfkBr3NRFNxHT7BnbpD5SH73fiXWr3kWHJchl65kCl6Bp4w5JB4T0fef7V4YhJMh/gs0E1LuRmLP9hgNUCLg/v/1T0DRVaTuSNIJCgS96gWfwYeT8q09035P3G+Xa+Ppa7HS8GTSHQiv4BVMcBphcwexsE50WM9a0sYqLcseua5E68nVwU0s7DY6h/UmgcL3y/4mFCMkGeMffXPfjkz22l7GUOst4PhQkjFFqKt9goqWdw79pXG2HvvY4j4p/92E+NGLTbQCYuj duck@duckland.org 2020-21" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCyDBNnaE5SWxVm0Sfum6n+q8Y8+AixsMV3qZNTbMITpAH9M4xvmVmtRLi9en+Nl6HDZG60yB/2woE5IdqmoYVF1Dtdl+E0UNepSlWdfkoqoxzt3xszzEL+aEmmC+nDUWGkE7YpHDX9KI49gJ8LNdQbc9LxLzZ0S93cTJH3D8GKD5ztE2523SAnO7hf3pU5wlSTDRXvyAEii/9MS1NARRXMWWLRRWxiECXGJs3KQm/QdN/M6mpz3KwpbNvUwJTs9G4sYLecL0LHepox3c8c7BAxjcxKgycnzWnFwfPLW/VwQ/n5N/AYaaN0oY31uFBg5dpTOJudxMWujewrtCnAYtYpU1R8b0FU18n677xF+Efsbgq+27A/nveMctg+3/TSVJbKsHyi18UMPc6V8ZmGkMJ7jcYU3F/VpzIrRoWpeMd9OgSQDi/q/DdblGf9PcdHll6mudeDkFWt95PIgLWoUFlWmfe7X+7BGHvtllIw2fUIpiAeKBG8NK1e25oKk4sKs9k= don@loki" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDC8G4NyTDMaIpzZLfBdsBLyL0DRB1BblrbXu2U6VENMslKe6BuJZ0JJgdpcaLTdNLjDklRuTGhbezf9CoCZffIszPXU6uHPSEmb/3y/J3wN4tJKlK2rgENMFMjy8VxOES17b+OcfluliWtxrkHylvnO0UJSFq9gfPXbgMZMhnemTnvMCICmmTd5OeJ+dOhlFW3b7QoaE5Eb98Z/2+DarSBCi0V4ESdufnpVa3NofCerZ56TumN9Lsl2X1qZKHearjRQ3XDObPJ6yaaoQ8pmJs2Tm1FVZJ8UMZL8/I5RtlWK1s/+fgwGIasGWvqKBLTZte5IY95/9FtCcloHYpTRmQnfoIly9ShetA6wsierhMu36G/GmD4813neo62Qh0wZq87/CwNjBW8A6E+J8R+oXBsdjaVT4SNqJZgpuuRit9Jp75Mb3Vmh/wnuD+AtLH7Kmu2kYA+xMvNYvLGEeObb6+HiUheCJhGxW+YRBh9COuxp6+77sitIZovROMimkdJimZ/grWCPSfz0PYbNfuWmu6udmAQOarZ7lhX2b0y/T3I+LP3yoxfAwTFyjjyxJuPRF2grDDEug9pG3EnJLUDAuXh5hSrf1TVg12KQ346+/gllJyQ92HW+0KW/jQV5PsGy6O4ySYSRRaSBkAzjxfDzByzSYDyqhAaINyVwRfKWscIxw== don@dragon" + ]; + }; + + system.stateVersion = "24.05"; +} diff --git a/nixos-anywhere/disk-config-vm.nix b/nixos-anywhere/disk-config-vm.nix new file mode 100644 index 0000000..88e17e5 --- /dev/null +++ b/nixos-anywhere/disk-config-vm.nix @@ -0,0 +1,56 @@ +# Example to create a bios compatible gpt partition +{ lib, ... }: +{ + disko.devices = { + disk.disk1 = { + device = lib.mkDefault "/dev/vda"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot = { + name = "boot"; + size = "1M"; + type = "EF02"; + }; + esp = { + name = "ESP"; + size = "500M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + root = { + name = "root"; + size = "100%"; + content = { + type = "lvm_pv"; + vg = "pool"; + }; + }; + }; + }; + }; + lvm_vg = { + pool = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%FREE"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ + "defaults" + ]; + }; + }; + }; + }; + }; + }; +} diff --git a/nixos-anywhere/disk-config.nix b/nixos-anywhere/disk-config.nix new file mode 100644 index 0000000..75ae234 --- /dev/null +++ b/nixos-anywhere/disk-config.nix @@ -0,0 +1,56 @@ +# Example to create a bios compatible gpt partition +{ lib, ... }: +{ + disko.devices = { + disk.disk1 = { + device = lib.mkDefault "/dev/sda"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot = { + name = "boot"; + size = "1M"; + type = "EF02"; + }; + esp = { + name = "ESP"; + size = "500M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + root = { + name = "root"; + size = "100%"; + content = { + type = "lvm_pv"; + vg = "pool"; + }; + }; + }; + }; + }; + lvm_vg = { + pool = { + type = "lvm_vg"; + lvs = { + root = { + size = "100%FREE"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ + "defaults" + ]; + }; + }; + }; + }; + }; + }; +} diff --git a/nixos-anywhere/flake.lock b/nixos-anywhere/flake.lock new file mode 100644 index 0000000..b6adc33 --- /dev/null +++ b/nixos-anywhere/flake.lock @@ -0,0 +1,48 @@ +{ + "nodes": { + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1726396892, + "narHash": "sha256-KRGuT5nGRAOT3heigRWg41tbYpTpapGhsWc+XjnIx0w=", + "owner": "nix-community", + "repo": "disko", + "rev": "51e3a7e51279fedfb6669a00d21dc5936c78a6ce", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1726436956, + "narHash": "sha256-a3rP7uafX/qBFX0y4CGS8vvTPvxsLl9eZQ85DkIn3DI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "039b72d0c738c934e2e36d7fc5520d1b425287a6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "disko": "disko", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nixos-anywhere/flake.nix b/nixos-anywhere/flake.nix new file mode 100644 index 0000000..aebd87d --- /dev/null +++ b/nixos-anywhere/flake.nix @@ -0,0 +1,23 @@ +{ + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + inputs.disko.url = "github:nix-community/disko"; + inputs.disko.inputs.nixpkgs.follows = "nixpkgs"; + + outputs = { nixpkgs, disko, ... }: + { + nixosConfigurations.smaug = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + disko.nixosModules.disko + ./configuration.nix + ]; + }; + nixosConfigurations.vm = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + disko.nixosModules.disko + ./configuration-vm.nix + ]; + }; + }; +}