From cdbd9f7f83099a48bfa59a886b6e51790d898a24 Mon Sep 17 00:00:00 2001 From: ene Date: Sat, 4 Feb 2023 21:37:52 +0100 Subject: Flake: Changed the configuration to a flake Nix flakes make a lot of things very easy. --- configuration.nix | 21 -------------- flake.lock | 27 ++++++++++++++++++ flake.nix | 21 ++++++++++++++ hardware-configuration.nix | 35 ------------------------ hosts/vhack.eu/configuration.nix | 25 +++++++++++++++++ hosts/vhack.eu/networking.nix | 49 +++++++++++++++++++++++++++++++++ networking.nix | 49 --------------------------------- packages.nix | 9 ------ system/fileSystemLayouts.nix | 45 ++++++++++++++++++++++++++++++ system/hardware.nix | 9 ++++++ system/packages.nix | 9 ++++++ system/users.nix | 59 ++++++++++++++++++++++++++++++++++++++++ users.nix | 59 ---------------------------------------- 13 files changed, 244 insertions(+), 173 deletions(-) delete mode 100644 configuration.nix create mode 100644 flake.lock create mode 100644 flake.nix delete mode 100644 hardware-configuration.nix create mode 100644 hosts/vhack.eu/configuration.nix create mode 100644 hosts/vhack.eu/networking.nix delete mode 100644 networking.nix delete mode 100644 packages.nix create mode 100644 system/fileSystemLayouts.nix create mode 100644 system/hardware.nix create mode 100644 system/packages.nix create mode 100644 system/users.nix delete mode 100644 users.nix diff --git a/configuration.nix b/configuration.nix deleted file mode 100644 index 8fc047a..0000000 --- a/configuration.nix +++ /dev/null @@ -1,21 +0,0 @@ -{pkgs, ...}: { - imports = [ - ./hardware-configuration.nix - ./packages.nix - ./networking.nix # network configuration that just works - ./users.nix - - ./services/minecraft.nix - ./services/rust-motd.nix - ./services/opensshd.nix - ]; - - boot.cleanTmpDir = true; - zramSwap.enable = true; - networking.hostName = "server1"; - networking.domain = "vhack.eu"; - - system.stateVersion = "22.11"; -} -# vim: ts=2 - diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..8af459c --- /dev/null +++ b/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1675512093, + "narHash": "sha256-u1CY4feK14B57E6T+0Bhkuoj8dpBxCPrWO+SP87UVP8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8e8240194eda25b61449f29bb5131e02b28a5486", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a6d95b6 --- /dev/null +++ b/flake.nix @@ -0,0 +1,21 @@ +# vim: ts=2 +{ + description = "Nixos server config"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11-small"; + }; + + outputs = { + self, + nixpkgs, + ... + } @ attrs: { + nixosConfigurations."vhack.eu" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = attrs; + modules = [./hosts/vhack.eu/configuration.nix]; + }; + }; +} + diff --git a/hardware-configuration.nix b/hardware-configuration.nix deleted file mode 100644 index d960da6..0000000 --- a/hardware-configuration.nix +++ /dev/null @@ -1,35 +0,0 @@ -{modulesPath, ...}: { - imports = [ - (modulesPath + "/profiles/qemu-guest.nix") - (modulesPath + "/profiles/headless.nix") - ]; - boot.loader.grub.device = "/dev/vda"; - boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"]; - boot.initrd.kernelModules = ["nvme" "btrfs"]; - fileSystems = { - "/" = { - device = "tmpfs"; - fsType = "tmpfs"; - options = ["defaults" "size=2G" "mode=755"]; - }; - "/nix" = { - device = "/dev/vda3"; - fsType = "btrfs"; - options = ["subvol=nix" "compress-force=zstd"]; - }; - "/srv" = { - device = "/dev/vda3"; - fsType = "btrfs"; - options = ["subvol=storage" "compress-force=zstd"]; - }; - "/boot" = { - device = "/dev/vda3"; - options = ["subvol=boot" "compress-force=zstd"]; - }; - - "/etc/nixos" = { - device = "/srv/nix-config"; - options = ["bind"]; - }; - }; -} diff --git a/hosts/vhack.eu/configuration.nix b/hosts/vhack.eu/configuration.nix new file mode 100644 index 0000000..a58e58d --- /dev/null +++ b/hosts/vhack.eu/configuration.nix @@ -0,0 +1,25 @@ +{pkgs, ...}: { + imports = [ + ./networking.nix # network configuration that just works + + ../../system/hardware.nix + ../../system/fileSystemLayouts.nix + ../../system/packages.nix + ../../system/users.nix + + ../../services/minecraft.nix + ../../services/rust-motd.nix + ../../services/opensshd.nix + ]; + + boot.cleanTmpDir = true; + zramSwap.enable = true; + networking.hostName = "server1"; + networking.domain = "vhack.eu"; + + system.fileSystemLayouts.mainDisk = "/dev/vda3"; + + system.stateVersion = "22.11"; +} +# vim: ts=2 + diff --git a/hosts/vhack.eu/networking.nix b/hosts/vhack.eu/networking.nix new file mode 100644 index 0000000..26d6719 --- /dev/null +++ b/hosts/vhack.eu/networking.nix @@ -0,0 +1,49 @@ +{lib, ...}: { + # This file was populated at runtime with the networking + # details gathered from the active system. + networking = { + nameservers = [ + "8.8.8.8" + ]; + defaultGateway = "89.58.56.1"; + defaultGateway6 = "fe80::1"; + dhcpcd.enable = false; + usePredictableInterfaceNames = lib.mkForce false; + interfaces = { + eth0 = { + ipv4.addresses = [ + { + address = "89.58.58.33"; + prefixLength = 22; + } + ]; + ipv6.addresses = [ + { + address = "2a03:4000:6a:3f3:6422:6dff:fe82:939b"; + prefixLength = 64; + } + { + address = "fe80::6422:6dff:fe82:939b"; + prefixLength = 64; + } + ]; + ipv4.routes = [ + { + address = "89.58.56.1"; + prefixLength = 32; + } + ]; + ipv6.routes = [ + { + address = "fe80::1"; + prefixLength = 128; + } + ]; + }; + }; + }; + services.udev.extraRules = '' + ATTR{address}=="66:22:6d:82:93:9b", NAME="eth0" + + ''; +} diff --git a/networking.nix b/networking.nix deleted file mode 100644 index 26d6719..0000000 --- a/networking.nix +++ /dev/null @@ -1,49 +0,0 @@ -{lib, ...}: { - # This file was populated at runtime with the networking - # details gathered from the active system. - networking = { - nameservers = [ - "8.8.8.8" - ]; - defaultGateway = "89.58.56.1"; - defaultGateway6 = "fe80::1"; - dhcpcd.enable = false; - usePredictableInterfaceNames = lib.mkForce false; - interfaces = { - eth0 = { - ipv4.addresses = [ - { - address = "89.58.58.33"; - prefixLength = 22; - } - ]; - ipv6.addresses = [ - { - address = "2a03:4000:6a:3f3:6422:6dff:fe82:939b"; - prefixLength = 64; - } - { - address = "fe80::6422:6dff:fe82:939b"; - prefixLength = 64; - } - ]; - ipv4.routes = [ - { - address = "89.58.56.1"; - prefixLength = 32; - } - ]; - ipv6.routes = [ - { - address = "fe80::1"; - prefixLength = 128; - } - ]; - }; - }; - }; - services.udev.extraRules = '' - ATTR{address}=="66:22:6d:82:93:9b", NAME="eth0" - - ''; -} diff --git a/packages.nix b/packages.nix deleted file mode 100644 index 4d33c6e..0000000 --- a/packages.nix +++ /dev/null @@ -1,9 +0,0 @@ -{pkgs, ...}: { - environment.systemPackages = with pkgs; [ - jre_minimal - git - zsh - neovim - btrfs-progs - ]; -} diff --git a/system/fileSystemLayouts.nix b/system/fileSystemLayouts.nix new file mode 100644 index 0000000..9d03a05 --- /dev/null +++ b/system/fileSystemLayouts.nix @@ -0,0 +1,45 @@ +{ + modulesPath, + config, + lib, + ... +}: +with lib; let + cfg = config.system.fileSystemLayouts; +in { + options.system.fileSystemLayouts = { + mainDisk = mkOption { + type = lib.types.path; + example = literalExpression "/dev/disk/by-uuid/0442cb6d-f13a-4635-b487-fa76189774c5"; + description = lib.mdDoc "Path to the main disk"; + }; + }; + config = { + fileSystems = { + "/" = { + device = "tmpfs"; + fsType = "tmpfs"; + options = ["defaults" "size=2G" "mode=755"]; + }; + "/nix" = { + device = cfg.mainDisk; + fsType = "btrfs"; + options = ["subvol=nix" "compress-force=zstd"]; + }; + "/srv" = { + device = cfg.mainDisk; + fsType = "btrfs"; + options = ["subvol=storage" "compress-force=zstd"]; + }; + "/boot" = { + device = cfg.mainDisk; + options = ["subvol=boot" "compress-force=zstd"]; + }; + + "/etc/nixos" = { + device = "/srv/nix-config"; + options = ["bind"]; + }; + }; + }; +} diff --git a/system/hardware.nix b/system/hardware.nix new file mode 100644 index 0000000..c4c7dc9 --- /dev/null +++ b/system/hardware.nix @@ -0,0 +1,9 @@ +{modulesPath, ...}: { + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + (modulesPath + "/profiles/headless.nix") + ]; + boot.loader.grub.device = "/dev/vda"; + boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"]; + boot.initrd.kernelModules = ["nvme" "btrfs"]; +} diff --git a/system/packages.nix b/system/packages.nix new file mode 100644 index 0000000..4d33c6e --- /dev/null +++ b/system/packages.nix @@ -0,0 +1,9 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [ + jre_minimal + git + zsh + neovim + btrfs-progs + ]; +} diff --git a/system/users.nix b/system/users.nix new file mode 100644 index 0000000..34e1648 --- /dev/null +++ b/system/users.nix @@ -0,0 +1,59 @@ +{pkgs, ...}: { + users.mutableUsers = false; + users.defaultUserShell = pkgs.zsh; + + users.users = { + root = { + #uid = 0; + #initialHashedPassword = null; # to lock root + # Backup, if something happens. TODO remove this later + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG63gxw8JePmrC8Fni0pLV4TnPBhCPmSV9FYEdva+6s7 sils" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGBFuTNNn71Rhfnop2cdz3r/RhWWlCePnSBOhTBbu2ME soispha" + ]; + }; + + sils = { + name = "sils"; + isNormalUser = true; + home = "/srv/home/sils"; + initialHashedPassword = "$y$jFT$KpFnahVCE9JbE.5P3us8o.$ZzSxCusWqe3sL7b6DLgOXNNUf114tiiptM6T8lDxtKC"; # TODO CHANGE + uid = 1000; + extraGroups = [ + "wheel" + ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG63gxw8JePmrC8Fni0pLV4TnPBhCPmSV9FYEdva+6s7 sils" + ]; + }; + + soispha = { + name = "soispha"; + isNormalUser = true; + home = "/srv/home/soispha"; + initialHashedPassword = "$y$jFT$3.8XmUyukZvpExMUxDZkI.$IVrJgm8ysNDF/0vDD2kF6w73ozXgr1LMVRNN4Bq7pv1"; + uid = 1001; + extraGroups = [ + "wheel" + ]; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGBFuTNNn71Rhfnop2cdz3r/RhWWlCePnSBOhTBbu2ME soispha" + ]; + }; + + nightingale = { + name = "nightingale"; + isNormalUser = true; + home = "/srv/home/nightingale"; + initialHashedPassword = null; # TODO CHANGE + uid = 1002; + extraGroups = [ + "wheel" + ]; + openssh.authorizedKeys.keys = [ + ]; + }; + }; +} +# vim: ts=2 + diff --git a/users.nix b/users.nix deleted file mode 100644 index 34e1648..0000000 --- a/users.nix +++ /dev/null @@ -1,59 +0,0 @@ -{pkgs, ...}: { - users.mutableUsers = false; - users.defaultUserShell = pkgs.zsh; - - users.users = { - root = { - #uid = 0; - #initialHashedPassword = null; # to lock root - # Backup, if something happens. TODO remove this later - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG63gxw8JePmrC8Fni0pLV4TnPBhCPmSV9FYEdva+6s7 sils" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGBFuTNNn71Rhfnop2cdz3r/RhWWlCePnSBOhTBbu2ME soispha" - ]; - }; - - sils = { - name = "sils"; - isNormalUser = true; - home = "/srv/home/sils"; - initialHashedPassword = "$y$jFT$KpFnahVCE9JbE.5P3us8o.$ZzSxCusWqe3sL7b6DLgOXNNUf114tiiptM6T8lDxtKC"; # TODO CHANGE - uid = 1000; - extraGroups = [ - "wheel" - ]; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG63gxw8JePmrC8Fni0pLV4TnPBhCPmSV9FYEdva+6s7 sils" - ]; - }; - - soispha = { - name = "soispha"; - isNormalUser = true; - home = "/srv/home/soispha"; - initialHashedPassword = "$y$jFT$3.8XmUyukZvpExMUxDZkI.$IVrJgm8ysNDF/0vDD2kF6w73ozXgr1LMVRNN4Bq7pv1"; - uid = 1001; - extraGroups = [ - "wheel" - ]; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGBFuTNNn71Rhfnop2cdz3r/RhWWlCePnSBOhTBbu2ME soispha" - ]; - }; - - nightingale = { - name = "nightingale"; - isNormalUser = true; - home = "/srv/home/nightingale"; - initialHashedPassword = null; # TODO CHANGE - uid = 1002; - extraGroups = [ - "wheel" - ]; - openssh.authorizedKeys.keys = [ - ]; - }; - }; -} -# vim: ts=2 - -- cgit 1.4.1