diff --git a/flake.nix b/flake.nix index 394cea7..b1a7195 100644 --- a/flake.nix +++ b/flake.nix @@ -20,7 +20,13 @@ systems = [ "x86_64-linux" ]; - flake = { }; + flake = with nixpkgs.lib; { + nixosConfigurations = { + two = nixosSystem { + modules = [ ./hosts/vm/two ]; + }; + }; + }; perSystem = { config, pkgs, ... }: { treefmt = { diff --git a/hardware.nix b/hardware.nix new file mode 100644 index 0000000..07077a0 --- /dev/null +++ b/hardware.nix @@ -0,0 +1,58 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "tmpfs"; + fsType = "tmpfs"; + }; + + fileSystems."/iso" = + { device = "/dev/disk/by-uuid/1980-01-01-00-00-00-00"; + fsType = "iso9660"; + }; + + fileSystems."/nix/.ro-store" = + { device = "/iso/nix-store.squashfs"; + fsType = "squashfs"; + options = [ "loop" ]; + }; + + fileSystems."/nix/.rw-store" = + { device = "tmpfs"; + fsType = "tmpfs"; + }; + + fileSystems."/nix/store" = + { device = "overlay"; + fsType = "overlay"; + }; + + fileSystems."/mnt" = + { device = "/dev/disk/by-uuid/78bbf8a3-b4d6-4f1b-824e-4a9132aae372"; + fsType = "ext4"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.ens18.useDHCP = lib.mkDefault true; + # networking.interfaces.ens19.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/hosts/vm/two/default.nix b/hosts/vm/two/default.nix new file mode 100644 index 0000000..b1332cd --- /dev/null +++ b/hosts/vm/two/default.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + imports = [ + ./hardware-configuration.nix + ./networking.nix + + ../../../modules/crans + ]; +} diff --git a/hosts/vm/two/hardware-configuration.nix b/hosts/vm/two/hardware-configuration.nix new file mode 100644 index 0000000..07077a0 --- /dev/null +++ b/hosts/vm/two/hardware-configuration.nix @@ -0,0 +1,58 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "tmpfs"; + fsType = "tmpfs"; + }; + + fileSystems."/iso" = + { device = "/dev/disk/by-uuid/1980-01-01-00-00-00-00"; + fsType = "iso9660"; + }; + + fileSystems."/nix/.ro-store" = + { device = "/iso/nix-store.squashfs"; + fsType = "squashfs"; + options = [ "loop" ]; + }; + + fileSystems."/nix/.rw-store" = + { device = "tmpfs"; + fsType = "tmpfs"; + }; + + fileSystems."/nix/store" = + { device = "overlay"; + fsType = "overlay"; + }; + + fileSystems."/mnt" = + { device = "/dev/disk/by-uuid/78bbf8a3-b4d6-4f1b-824e-4a9132aae372"; + fsType = "ext4"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.ens18.useDHCP = lib.mkDefault true; + # networking.interfaces.ens19.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/hosts/vm/two/hardware.nix b/hosts/vm/two/hardware.nix new file mode 100644 index 0000000..8234bec --- /dev/null +++ b/hosts/vm/two/hardware.nix @@ -0,0 +1,32 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/78bbf8a3-b4d6-4f1b-824e-4a9132aae372"; + fsType = "ext4"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.ens18.useDHCP = lib.mkDefault true; + # networking.interfaces.ens19.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/hosts/vm/two/networking.nix b/hosts/vm/two/networking.nix new file mode 100644 index 0000000..cf1a09e --- /dev/null +++ b/hosts/vm/two/networking.nix @@ -0,0 +1,53 @@ +{ ... }: + +{ + networking = { + interfaces = { + ens18 = { + + ipv4 = { + addresses = [{ + address = "172.16.10.135"; + prefixLength = 24; + }]; + }; + + ipv6 = { + addresses = [{ + address = "fd00::10:0:ff:fe01:3510"; + prefixLength = 64; + }]; + }; + + }; + + ens19 = { + + ipv4 = { + addresses = [{ + address = "172.16.3.135"; + prefixLength = 24; + }]; + routes = [{ + address = "0.0.0.0"; + via = "172.16.3.99"; + prefixLength = 0; + }]; + }; + + ipv6 = { + addresses = [{ + address = "2a0c:700:3::ff:fe01:3503"; + prefixLength = 64; + }]; + routes = [{ + address = "::"; + via = "2a0c:700:3::ff:fe00:9903"; + prefixLength = 0; + }]; + }; + + }; + }; + }; +} diff --git a/modules/crans/default.nix b/modules/crans/default.nix new file mode 100644 index 0000000..df8300e --- /dev/null +++ b/modules/crans/default.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + imports = [ + ./locale.nix + ./networking.nix + ./ntp.nix + ]; +} diff --git a/modules/crans/home.nix b/modules/crans/home.nix new file mode 100644 index 0000000..9839960 --- /dev/null +++ b/modules/crans/home.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: + +{ + fileSystems.home_nounou = { + mountPoint = "/home_nounou"; + device = "172.16.10.1:/pool/home"; + fsType = "nfs"; + options = [ "rw" "nosuid" ]; + }; + + environment.systemPackages = with pkgs; [ + nfs-utils + ]; +} diff --git a/modules/crans/locale.nix b/modules/crans/locale.nix new file mode 100644 index 0000000..ed9aee5 --- /dev/null +++ b/modules/crans/locale.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + i18n.defaultLocale = "en_US.UTF-8"; + console.keyMap = "fr"; + time.timeZone = "Europe/Paris"; +} diff --git a/modules/crans/networking.nix b/modules/crans/networking.nix new file mode 100644 index 0000000..eceb2aa --- /dev/null +++ b/modules/crans/networking.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + # Les interfaces ne sont pas déclarées ici : elles sont propres à chaque VM. + networking = { + useDHCP = false; + firewall.enable = false; + nameservers = [ "172.16.10.128" ]; + }; +} diff --git a/modules/crans/ntp.nix b/modules/crans/ntp.nix new file mode 100644 index 0000000..6ddc783 --- /dev/null +++ b/modules/crans/ntp.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + services.timesyncd = { + enable = true; + servers = [ "ntp.adm.crans.org" ]; + }; +}