nixos-config

My NixOS configuration files

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
{
  inputs = {
    # This is pointing to an unstable release.
    # If you prefer a stable release instead, you can this to the latest number shown here: https://nixos.org/download
    # i.e. nixos-24.11
    # Use `nix flake update` to update the flake to the latest revision of the chosen release channel.
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

    # For building an image for XVM
    # https://lantian.pub/en/article/modify-computer/nixos-low-ram-vps.lantian/
    # https://unnamed.website/posts/nixvm/
    disko.url = "github:nix-community/disko/latest";
    disko.inputs.nixpkgs.follows = "nixpkgs";

    # https://crystalwobsite.gay/posts/2025-02-09-deploying_nixos
    # https://lantian.pub/en/article/modify-website/nixos-initial-config-flake-deploy.lantian/#batch-deployment-with-deploy-rs
    deploy-rs.url = "github:serokell/deploy-rs";
    deploy-rs.inputs.nixpkgs.follows = "nixpkgs";
  };
  outputs =
    inputs@{ self, nixpkgs, ... }:
    let
      system = "x86_64-linux";
      pkgs = nixpkgs.legacyPackages.${system};
      # Use the deploy-rs binaries from nixpkgs but lib from the flake
      deployPkgs = import nixpkgs {
        inherit system;
        overlays = [
          inputs.deploy-rs.overlay
          (self: super: {
            deploy-rs = {
              inherit (pkgs) deploy-rs;
              lib = super.deploy-rs.lib;
            };
          })
        ];
      };
    in
    {
      nixosConfigurations = {
        # Very creative name, I know
        ThinkPad-X1-Yoga-Gen-6 = nixpkgs.lib.nixosSystem {
          modules = [
            ./configuration.nix
            ./ThinkPad-X1-Yoga-Gen-6
          ];
        };
        # I ran out of name ideas sorry
        Unnamed-Server = nixpkgs.lib.nixosSystem {
          modules = [
            ./configuration.nix
            ./Unnamed-Server
            inputs.disko.nixosModules.disko
          ];
        };
      };
      deploy.nodes.Unnamed-Server = {
        hostname = "unnamed.website";
        profiles.system = {
          user = "root";
          interactiveSudo = true;
          path = deployPkgs.deploy-rs.lib.activate.nixos self.nixosConfigurations.Unnamed-Server;
          # Download everything on the local system, then copy it over
          # Otherwise my tiny tiny server sometimes runs out of RAM while downloading
          fastConnection = true;
        };
      };
      packages.${system} = {
        image = self.nixosConfigurations.Unnamed-Server.config.system.build.diskoImages;
      };
      # I love autoformatters
      formatter.${system} = pkgs.nixfmt-tree;
    };
}