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
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    legit = {
      url = "github:pocka/legit";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    # Dogfooding my own project
    nixathena = {
      url = "git+https://forgejo.mit.edu/SIPB/nixathena.git";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
  outputs =
    inputs@{ self, nixpkgs, ... }:
    let
      system = "x86_64-linux";
      pkgs = import nixpkgs { inherit system; };
    in
    {
      nixosConfigurations = {
        # Very creative names, I know, I ran out of name ideas sorry
        Framework-13 = nixpkgs.lib.nixosSystem {
          modules = [
            ./configuration.nix
            ./laptop.nix
            ./Framework-13
            inputs.nixathena.nixosModules.default
          ];
        };
        ThinkPad-X1-Yoga-Gen-6 = nixpkgs.lib.nixosSystem {
          modules = [
            ./configuration.nix
            ./laptop.nix
            ./ThinkPad-X1-Yoga-Gen-6
          ];
        };
        Unnamed-Server = nixpkgs.lib.nixosSystem {
          modules = [
            "${nixpkgs}/nixos/modules/profiles/docker-container.nix"
            ./configuration.nix
            ./Unnamed-Server
            inputs.legit.nixosModules.default
          ];
        };
      };
      packages.${system}.default = pkgs.dockerTools.buildLayeredImage {
        name = "forgejo.mit.edu/xy/nixos-config";
        tag = "latest";
        # Yeah just chuck the whole toplevel in there
        contents = [ self.nixosConfigurations.Unnamed-Server.config.system.build.toplevel ];
        # This runs nixos/modules/system/boot/stage-2-init.sh
        config.Entrypoint = [ "/init" ];
        # The toplevel has an /etc symlink so nuke it to get a writable /etc
        extraCommands = ''
          rm -f etc
          mkdir etc
        '';
      };
      # I love autoformatters
      formatter.${system} = pkgs.nixfmt-tree;
    };
}