diff --git a/en/nixos-install-oneclick.md b/en/nixos-install-oneclick.md index 90afbaca..e479ee69 100644 --- a/en/nixos-install-oneclick.md +++ b/en/nixos-install-oneclick.md @@ -4,4 +4,16 @@ order: 3 # Install NixOS directly from a remote flake -[ ] To write +>[!WARNING] To Write +> This tutorial has not been written yet. What you see below are just rough notes. + +Boot from a NixOS install live CD, and then: + +```sh +sudo nix \ + --extra-experimental-features 'flakes nix-command' \ + run github:nix-community/disko#disko-install -- \ + --flake "github:nixos-asia/website/disko-install?dir=global/nixos-install-oneclick#oneclick" \ + --write-efi-boot-entries \ + --disk main /dev/sda +``` diff --git a/global/nixos-install-oneclick/disk-config.nix b/global/nixos-install-oneclick/disk-config.nix new file mode 100644 index 00000000..c4404bf1 --- /dev/null +++ b/global/nixos-install-oneclick/disk-config.nix @@ -0,0 +1,37 @@ +{ + disko.devices = { + disk = { + main = { + # When using disko-install, we will overwrite this value from the commandline + device = "/dev/disk/by-id/some-disk-id"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + MBR = { + type = "EF02"; # for grub MBR + size = "1M"; + }; + ESP = { + type = "EF00"; + size = "500M"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/global/nixos-install-oneclick/flake.lock b/global/nixos-install-oneclick/flake.lock new file mode 100644 index 00000000..e9ae253a --- /dev/null +++ b/global/nixos-install-oneclick/flake.lock @@ -0,0 +1,48 @@ +{ + "nodes": { + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1711261295, + "narHash": "sha256-5DUNQl9BSmLxgGLbF05G7hi/UTk9DyZq8AuEszhQA7Q=", + "owner": "nix-community", + "repo": "disko", + "rev": "5d2d3e421ade554b19b4dbb0d11a04023378a330", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1711124224, + "narHash": "sha256-l0zlN/3CiodvWDtfBOVxeTwYSRz93muVbXWSpaMjXxM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "56528ee42526794d413d6f244648aaee4a7b56c0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "disko": "disko", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/global/nixos-install-oneclick/flake.nix b/global/nixos-install-oneclick/flake.nix new file mode 100644 index 00000000..82e2d857 --- /dev/null +++ b/global/nixos-install-oneclick/flake.nix @@ -0,0 +1,32 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11"; + disko.url = "github:nix-community/disko"; + disko.inputs.nixpkgs.follows = "nixpkgs"; + }; + outputs = { self, nixpkgs, disko, ... }: { + nixosConfigurations.oneclick = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./disk-config.nix + disko.nixosModules.disko + ({ pkgs, ... }: { + environment.systemPackages = [ pkgs.htop ]; + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + networking.hostName = "oneclick"; + services.openssh.enable = true; + + # Add your key here + users.users.root.openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHQRxPoqlThDrkR58pKnJgmeWPY9/wleReRbZ2MOZRyd" + ]; + + system.stateVersion = "23.11"; + }) + ]; + }; + }; +}