commit 4fe3976a1652ded78bbddec5f52461b0d0bacdd8 Author: Victor Ișan Date: Fri Dec 19 16:33:40 2025 +0100 initial commit diff --git a/disko/btrfs-legacy.nix b/disko/btrfs-legacy.nix new file mode 100644 index 0000000..a8f58e6 --- /dev/null +++ b/disko/btrfs-legacy.nix @@ -0,0 +1,30 @@ +{ device }: + +{ + disk.main = { + type = "disk"; + inherit device; + + content = { + type = "msdos"; + partitions = { + root = { + size = "100%"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "@root" = { mountpoint = "/"; }; + "@nix" = { mountpoint = "/nix"; }; + "@var" = { mountpoint = "/var"; }; + "@docker" = { mountpoint = "/var/lib/docker"; }; + "@home" = { mountpoint = "/home"; }; + "@snapshots" = { mountpoint = "/.snapshots"; }; + }; + }; + }; + }; + }; + }; +} + diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..12bce91 --- /dev/null +++ b/flake.nix @@ -0,0 +1,36 @@ +{ + description = "NixOS server fleet"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + disko.url = "github:nix-community/disko"; + }; + + outputs = { self, nixpkgs }: + let + system = "x86_64-linux"; + release = "25.11"; + mainDisk = "/dev/sda"; + myUser = "victor"; + in { + nixosConfigurations = { + isengard = nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { inherit release mainDisk myUser; }; + modules = [ + inputs.disko.nixosModules.disko + + ./hosts/isengard.nix + ./modules/base.nix + ./modules/docker.nix + + ({ ... }: { + disko.devices = import ./disko/btrfs-legacy.nix { + device = mainDisk; + }; + }) + ]; + }; + }; + }; +} diff --git a/hosts/isengard.nix b/hosts/isengard.nix new file mode 100644 index 0000000..dc56afb --- /dev/null +++ b/hosts/isengard.nix @@ -0,0 +1,25 @@ +{ config, pkgs, myUser, release, ... }: + +{ + networking.hostName = "isengard"; + + time.timeZone = "Europe/Bucharest"; + + users.users.myUser = { + isNormalUser = true; + extraGroups = [ "wheel" "docker" ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOiNyGO4RAxSdxvn2ZIBZ2Ze4iVVMrBNmu/V9JO70PoT victor@battleship" + ]; + }; + + networking.useDHCP = true; + + services.openssh = { + enable = true; + settings.PasswordAuthentication = false; + }; + + system.stateVersion = release; +} + diff --git a/modules/base.nix b/modules/base.nix new file mode 100644 index 0000000..5710d9c --- /dev/null +++ b/modules/base.nix @@ -0,0 +1,20 @@ +{ config, pkgs, mainDisk, ... }: + +{ + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + auto-optimise-store = true; + }; + + boot.loader.grub = { + enable = true; + device = mainDisk; + }; + + environment.systemPackages = with pkgs; [ + git + curl + htop + tmux + ]; +} diff --git a/modules/docker.nix b/modules/docker.nix new file mode 100644 index 0000000..5bb209a --- /dev/null +++ b/modules/docker.nix @@ -0,0 +1,10 @@ +{ config, myUser, ... }: + +{ + virtualization.docker.rootless = { + enable = true; + setSocketVariable = true; + storageDriver = "btrfs"; + users.users.myUser.extraGroups = [ "docker" ]; + } +}