Compare commits
	
		
			33 Commits
		
	
	
		
			openwebui
			...
			gitea-robo
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						a040ef59a8
	
				 | 
					
					
						|||
| 
						
						
							
						
						c8bf3b7c01
	
				 | 
					
					
						|||
| 
						
						
							
						
						069da36895
	
				 | 
					
					
						|||
| 
						
						
							
						
						83f83a91b7
	
				 | 
					
					
						|||
| 
						
						
							
						
						6372a4111e
	
				 | 
					
					
						|||
| 
						
						
							
						
						bdfb7384c2
	
				 | 
					
					
						|||
| 
						
						
							
						
						ace351c0a7
	
				 | 
					
					
						|||
| 
						
						
							
						
						cd5c2c0e01
	
				 | 
					
					
						|||
| 
						
						
							
						
						2be9eb16fe
	
				 | 
					
					
						|||
| 
						
						
							
						
						64bd33a213
	
				 | 
					
					
						|||
| 
						
						
							
						
						7b5e114944
	
				 | 
					
					
						|||
| 
						
						
							
						
						ee8965e18c
	
				 | 
					
					
						|||
| 
						
						
							
						
						7125fd2478
	
				 | 
					
					
						|||
| 
						
						
							
						
						0c1762619a
	
				 | 
					
					
						|||
| 
						
						
							
						
						84d1ae13c0
	
				 | 
					
					
						|||
| 
						
						
							
						
						a3c88b7869
	
				 | 
					
					
						|||
| 
						
						
							
						
						4aa994e7a3
	
				 | 
					
					
						|||
| 
						
						
							
						
						fc64139739
	
				 | 
					
					
						|||
| 
						
						
							
						
						75b0c00212
	
				 | 
					
					
						|||
| 94d73b34ad | |||
| bf50d6478b | |||
| 
						
						
							
						
						e9dc0d85a0
	
				 | 
					
					
						|||
| a009b05977 | |||
| 8a8f5659fb | |||
| 13c921c47b | |||
| 
						
						
							
						
						819fcef4c2
	
				 | 
					
					
						|||
| 
						
						
							
						
						102a6f9011
	
				 | 
					
					
						|||
| 
						
						
							
						
						86e68f496e
	
				 | 
					
					
						|||
| 
						
						
							
						
						394ff94033
	
				 | 
					
					
						|||
| 
						
						
							
						
						6cb7f576a5
	
				 | 
					
					
						|||
| 
						
						
							
						
						edb448f7a0
	
				 | 
					
					
						|||
| 
						
						
							
						
						4507ffe2ab
	
				 | 
					
					
						|||
| 882a8f2e88 | 
@@ -10,6 +10,8 @@
 | 
			
		||||
 | 
			
		||||
    ./services/acme.nix
 | 
			
		||||
    ./services/auto-upgrade.nix
 | 
			
		||||
    ./services/dbus.nix
 | 
			
		||||
    ./services/fwupd.nix
 | 
			
		||||
    ./services/irqbalance.nix
 | 
			
		||||
    ./services/logrotate.nix
 | 
			
		||||
    ./services/nginx.nix
 | 
			
		||||
@@ -17,9 +19,12 @@
 | 
			
		||||
    ./services/postfix.nix
 | 
			
		||||
    ./services/smartd.nix
 | 
			
		||||
    ./services/thermald.nix
 | 
			
		||||
    ./services/userborn.nix
 | 
			
		||||
    ./services/userdbd.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  boot.tmp.cleanOnBoot = lib.mkDefault true;
 | 
			
		||||
  boot.kernelPackages = lib.mkDefault pkgs.linuxPackages_latest;
 | 
			
		||||
 | 
			
		||||
  time.timeZone = "Europe/Oslo";
 | 
			
		||||
 | 
			
		||||
@@ -47,6 +52,8 @@
 | 
			
		||||
 | 
			
		||||
  programs.zsh.enable = true;
 | 
			
		||||
 | 
			
		||||
  security.lockKernelModules = true;
 | 
			
		||||
  security.protectKernelImage = true;
 | 
			
		||||
  security.sudo.execWheelOnly = true;
 | 
			
		||||
  security.sudo.extraConfig = ''
 | 
			
		||||
    Defaults lecture = never
 | 
			
		||||
 
 | 
			
		||||
@@ -5,10 +5,10 @@
 | 
			
		||||
      automatic = true;
 | 
			
		||||
      options = "--delete-older-than 2d";
 | 
			
		||||
    };
 | 
			
		||||
    optimise.automatic = true;
 | 
			
		||||
 | 
			
		||||
    settings = {
 | 
			
		||||
      allow-dirty = true;
 | 
			
		||||
      auto-optimise-store = true;
 | 
			
		||||
      builders-use-substitutes = true;
 | 
			
		||||
      experimental-features = [ "nix-command" "flakes" ];
 | 
			
		||||
      log-lines = 50;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
{
 | 
			
		||||
  system.autoUpgrade = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    flake = "git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git?ref=24.11";
 | 
			
		||||
    flake = "git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git";
 | 
			
		||||
    flags = [
 | 
			
		||||
      # --update-input is deprecated since nix 2.22, and removed in lix 2.90
 | 
			
		||||
      # https://git.lix.systems/lix-project/lix/issues/400
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								base/services/dbus.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								base/services/dbus.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  services.dbus = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    implementation = "broker";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								base/services/fwupd.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								base/services/fwupd.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  services.fwupd.enable = true;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								base/services/userborn.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								base/services/userborn.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  services.userborn.enable = true;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										4
									
								
								base/services/userdbd.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								base/services/userdbd.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  services.userdbd.enable = true;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										99
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										99
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							@@ -7,11 +7,11 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1733168902,
 | 
			
		||||
        "narHash": "sha256-8dupm9GfK+BowGdQd7EHK5V61nneLfr9xR6sc5vtDi0=",
 | 
			
		||||
        "lastModified": 1741786315,
 | 
			
		||||
        "narHash": "sha256-VT65AE2syHVj6v/DGB496bqBnu1PXrrzwlw07/Zpllc=",
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "repo": "disko",
 | 
			
		||||
        "rev": "785c1e02c7e465375df971949b8dcbde9ec362e5",
 | 
			
		||||
        "rev": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@@ -20,6 +20,26 @@
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "gergle": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1736621371,
 | 
			
		||||
        "narHash": "sha256-45UIQSQA7R5iU4YWvilo7mQbhY1Liql9bHBvYa3qRI0=",
 | 
			
		||||
        "ref": "refs/heads/main",
 | 
			
		||||
        "rev": "3729796c1213fe76e568ac28f1df8de4e596950b",
 | 
			
		||||
        "revCount": 20,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Grzegorz/gergle.git"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Grzegorz/gergle.git"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "greg-ng": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
@@ -28,17 +48,17 @@
 | 
			
		||||
        "rust-overlay": "rust-overlay"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1730249639,
 | 
			
		||||
        "narHash": "sha256-G3URSlqCcb+GIvGyki+HHrDM5ZanX/dP9BtppD/SdfI=",
 | 
			
		||||
        "lastModified": 1736545379,
 | 
			
		||||
        "narHash": "sha256-PeTTmGumdOX3rd6OKI7QMCrZovCDkrckZbcHr+znxWA=",
 | 
			
		||||
        "ref": "refs/heads/main",
 | 
			
		||||
        "rev": "80e0447bcb79adad4f459ada5610f3eae987b4e3",
 | 
			
		||||
        "revCount": 34,
 | 
			
		||||
        "rev": "74f5316121776db2769385927ec0d0c2cc2b23e4",
 | 
			
		||||
        "revCount": 42,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Projects/greg-ng.git"
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Grzegorz/greg-ng.git"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Projects/greg-ng.git"
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Grzegorz/greg-ng.git"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "grzegorz-clients": {
 | 
			
		||||
@@ -48,17 +68,17 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1726861934,
 | 
			
		||||
        "narHash": "sha256-lOzPDwktd+pwszUTbpUdQg6iCzInS11fHLfkjmnvJrM=",
 | 
			
		||||
        "lastModified": 1736178795,
 | 
			
		||||
        "narHash": "sha256-mPdi8cgvIDYcgG3FRG7A4BOIMu2Jef96TPMnV00uXlM=",
 | 
			
		||||
        "ref": "refs/heads/master",
 | 
			
		||||
        "rev": "546d921ec46735dbf876e36f4af8df1064d09432",
 | 
			
		||||
        "revCount": 78,
 | 
			
		||||
        "rev": "fde738910de1fd8293535a6382c2f0c2749dd7c1",
 | 
			
		||||
        "revCount": 79,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Projects/grzegorz-clients.git"
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Grzegorz/grzegorz-clients.git"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Projects/grzegorz-clients.git"
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Grzegorz/grzegorz-clients.git"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "matrix-next": {
 | 
			
		||||
@@ -68,16 +88,16 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1727410897,
 | 
			
		||||
        "narHash": "sha256-tWsyxvf421ieWUJYgjV7m1eTdr2ZkO3vId7vmtvfFpQ=",
 | 
			
		||||
        "lastModified": 1735857245,
 | 
			
		||||
        "narHash": "sha256-AKLLPrgXTxgzll3DqVUMa4QlPlRN3QceutgFBmEf8Nk=",
 | 
			
		||||
        "owner": "dali99",
 | 
			
		||||
        "repo": "nixos-matrix-modules",
 | 
			
		||||
        "rev": "ff787d410cba17882cd7b6e2e22cc88d4064193c",
 | 
			
		||||
        "rev": "da9dc0479ffe22362793c87dc089035facf6ec4d",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "dali99",
 | 
			
		||||
        "ref": "v0.6.1",
 | 
			
		||||
        "ref": "0.7.0",
 | 
			
		||||
        "repo": "nixos-matrix-modules",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
@@ -90,11 +110,11 @@
 | 
			
		||||
        "rev": "1b4087bd3322a2e2ba84271c8fcc013e6b641a58",
 | 
			
		||||
        "revCount": 2,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Drift/minecraft-data.git"
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Projects/minecraft-kartverket.git"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Drift/minecraft-data.git"
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Projects/minecraft-kartverket.git"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nix-gitea-themes": {
 | 
			
		||||
@@ -104,11 +124,11 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1714416973,
 | 
			
		||||
        "narHash": "sha256-aZUcvXjdETUC6wVQpWDVjLUzwpDAEca8yR0ITDeK39o=",
 | 
			
		||||
        "lastModified": 1736531400,
 | 
			
		||||
        "narHash": "sha256-+X/HVI1AwoPcud28wI35XRrc1kDgkYdDUGABJBAkxDI=",
 | 
			
		||||
        "ref": "refs/heads/main",
 | 
			
		||||
        "rev": "2b23c0ba8aae68d3cb6789f0f6e4891cef26cc6d",
 | 
			
		||||
        "revCount": 6,
 | 
			
		||||
        "rev": "e4dafd06b3d7e9e6e07617766e9c3743134571b7",
 | 
			
		||||
        "revCount": 7,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/oysteikt/nix-gitea-themes.git"
 | 
			
		||||
      },
 | 
			
		||||
@@ -119,11 +139,11 @@
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1733466147,
 | 
			
		||||
        "narHash": "sha256-1QAch5UZXGDc8Kh3PvdIKfVNeebjZFWiIKn8lAr1ZBM=",
 | 
			
		||||
        "lastModified": 1741969460,
 | 
			
		||||
        "narHash": "sha256-SCNxTTBfMJV7XuTcLUfdAd6cgCGsazzi+DoPrceQrZ0=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "66dddf2c2aae34272f117ea95a06efe376edbe27",
 | 
			
		||||
        "rev": "68612419aa6c9fd5b178b81e6fabbdf46d300ea4",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@@ -135,11 +155,11 @@
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs-unstable": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1733603762,
 | 
			
		||||
        "narHash": "sha256-E+cuaL8s1oHCumWD/Zkw0gkLOOQcz848pVyLfvqWDVw=",
 | 
			
		||||
        "lastModified": 1741960758,
 | 
			
		||||
        "narHash": "sha256-pSGMbfkxF7TSeco54W+B1q+g22YCVp1qXHgtrdgtyR4=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "b1dd465e8139748a8e26037fdd4c5ffe79457cbd",
 | 
			
		||||
        "rev": "845dc1e9cbc2e48640b8968af58b4a19db67aa8f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
@@ -176,11 +196,11 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1725212759,
 | 
			
		||||
        "narHash": "sha256-yZBsefIarFUEhFRj+rCGMp9Zvag3MCafqV/JfGVRVwc=",
 | 
			
		||||
        "ref": "refs/heads/master",
 | 
			
		||||
        "rev": "e7b66b4bc6a89bab74bac45b87e9434f5165355f",
 | 
			
		||||
        "revCount": 473,
 | 
			
		||||
        "lastModified": 1741738148,
 | 
			
		||||
        "narHash": "sha256-cJo6nbcJEOjkazkZ194NDnlsZe0W0wpxeUh2/886uC8=",
 | 
			
		||||
        "ref": "refs/heads/main",
 | 
			
		||||
        "rev": "c1802e7cf27c7cf8b4890354c982a4eef5b11593",
 | 
			
		||||
        "revCount": 486,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.pvv.ntnu.no/Projects/nettsiden.git"
 | 
			
		||||
      },
 | 
			
		||||
@@ -192,6 +212,7 @@
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "disko": "disko",
 | 
			
		||||
        "gergle": "gergle",
 | 
			
		||||
        "greg-ng": "greg-ng",
 | 
			
		||||
        "grzegorz-clients": "grzegorz-clients",
 | 
			
		||||
        "matrix-next": "matrix-next",
 | 
			
		||||
@@ -232,11 +253,11 @@
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1733128155,
 | 
			
		||||
        "narHash": "sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc=",
 | 
			
		||||
        "lastModified": 1741861888,
 | 
			
		||||
        "narHash": "sha256-ynOgXAyToeE1UdLNfrUn/hL7MN0OpIS2BtNdLjpjPf0=",
 | 
			
		||||
        "owner": "Mic92",
 | 
			
		||||
        "repo": "sops-nix",
 | 
			
		||||
        "rev": "c6134b6fff6bda95a1ac872a2a9d5f32e3c37856",
 | 
			
		||||
        "rev": "d016ce0365b87d848a57c12ffcfdc71da7a2b55f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								flake.nix
									
									
									
									
									
								
							@@ -17,18 +17,20 @@
 | 
			
		||||
    pvv-calendar-bot.url = "git+https://git.pvv.ntnu.no/Projects/calendar-bot.git";
 | 
			
		||||
    pvv-calendar-bot.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
 | 
			
		||||
    matrix-next.url = "github:dali99/nixos-matrix-modules/v0.6.1";
 | 
			
		||||
    matrix-next.url = "github:dali99/nixos-matrix-modules/0.7.0";
 | 
			
		||||
    matrix-next.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
 | 
			
		||||
    nix-gitea-themes.url = "git+https://git.pvv.ntnu.no/oysteikt/nix-gitea-themes.git";
 | 
			
		||||
    nix-gitea-themes.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
 | 
			
		||||
    greg-ng.url = "git+https://git.pvv.ntnu.no/Projects/greg-ng.git";
 | 
			
		||||
    greg-ng.url = "git+https://git.pvv.ntnu.no/Grzegorz/greg-ng.git";
 | 
			
		||||
    greg-ng.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    grzegorz-clients.url = "git+https://git.pvv.ntnu.no/Projects/grzegorz-clients.git";
 | 
			
		||||
    gergle.url = "git+https://git.pvv.ntnu.no/Grzegorz/gergle.git";
 | 
			
		||||
    gergle.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    grzegorz-clients.url = "git+https://git.pvv.ntnu.no/Grzegorz/grzegorz-clients.git";
 | 
			
		||||
    grzegorz-clients.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
 | 
			
		||||
    minecraft-data.url = "git+https://git.pvv.ntnu.no/Drift/minecraft-data.git";
 | 
			
		||||
    minecraft-data.url = "git+https://git.pvv.ntnu.no/Projects/minecraft-kartverket.git";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs = { self, nixpkgs, nixpkgs-unstable, sops-nix, disko, ... }@inputs:
 | 
			
		||||
@@ -103,6 +105,7 @@
 | 
			
		||||
        modules = [
 | 
			
		||||
          inputs.nix-gitea-themes.nixosModules.default
 | 
			
		||||
          inputs.pvv-nettsiden.nixosModules.default
 | 
			
		||||
          self.nixosModules.robots-txt
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
      bob = stableNixosConfig "bob" {
 | 
			
		||||
@@ -124,19 +127,23 @@
 | 
			
		||||
      brzeczyszczykiewicz = stableNixosConfig "brzeczyszczykiewicz" {
 | 
			
		||||
        modules = [
 | 
			
		||||
          inputs.grzegorz-clients.nixosModules.grzegorz-webui
 | 
			
		||||
          inputs.gergle.nixosModules.default
 | 
			
		||||
          inputs.greg-ng.nixosModules.default
 | 
			
		||||
        ];
 | 
			
		||||
        overlays = [
 | 
			
		||||
          inputs.greg-ng.overlays.default
 | 
			
		||||
          inputs.gergle.overlays.default
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
      georg = stableNixosConfig "georg" {
 | 
			
		||||
        modules = [
 | 
			
		||||
          inputs.grzegorz-clients.nixosModules.grzegorz-webui
 | 
			
		||||
          inputs.gergle.nixosModules.default
 | 
			
		||||
          inputs.greg-ng.nixosModules.default
 | 
			
		||||
        ];
 | 
			
		||||
        overlays = [
 | 
			
		||||
          inputs.greg-ng.overlays.default
 | 
			
		||||
          inputs.gergle.overlays.default
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
@@ -144,6 +151,7 @@
 | 
			
		||||
    nixosModules = {
 | 
			
		||||
      snakeoil-certs = ./modules/snakeoil-certs.nix;
 | 
			
		||||
      snappymail = ./modules/snappymail.nix;
 | 
			
		||||
      robots-txt = ./modules/robots-txt.nix;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    devShells = forAllSystems (system: {
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,8 @@ in {
 | 
			
		||||
 | 
			
		||||
  services.bluemap = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.callPackage ./package.nix { };
 | 
			
		||||
    
 | 
			
		||||
    eula = true;
 | 
			
		||||
    onCalendar = "*-*-* 05:45:00"; # a little over an hour after auto-upgrade
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,6 @@ let
 | 
			
		||||
    "webapp.conf" = webappConfig;
 | 
			
		||||
    "webserver.conf" = webserverConfig;
 | 
			
		||||
    "packs" = cfg.resourcepacks;
 | 
			
		||||
    "addons" = cfg.resourcepacks; # TODO
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  renderConfigFolder = name: value: pkgs.linkFarm "bluemap-${name}-config" {
 | 
			
		||||
@@ -38,13 +37,13 @@ let
 | 
			
		||||
    "webapp.conf" = format.generate "webapp.conf" (cfg.webappSettings // { "update-settings-file" = false; });
 | 
			
		||||
    "webserver.conf" = webserverConfig;
 | 
			
		||||
    "packs" = value.resourcepacks;
 | 
			
		||||
    "addons" = cfg.resourcepacks; # TODO
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  inherit (lib) mkOption;
 | 
			
		||||
in {
 | 
			
		||||
  options.services.bluemap = {
 | 
			
		||||
    enable = lib.mkEnableOption "bluemap";
 | 
			
		||||
    package = lib.mkPackageOption pkgs "bluemap" { };
 | 
			
		||||
 | 
			
		||||
    eula = mkOption {
 | 
			
		||||
      type = lib.types.bool;
 | 
			
		||||
@@ -159,7 +158,7 @@ in {
 | 
			
		||||
            type = lib.types.path;
 | 
			
		||||
            default = cfg.resourcepacks;
 | 
			
		||||
            defaultText = lib.literalExpression "config.services.bluemap.resourcepacks";
 | 
			
		||||
            description = "A set of resourcepacks/mods to extract models from loaded in alphabetical order";
 | 
			
		||||
            description = "A set of resourcepacks/mods/bluemap-addons to extract models from loaded in alphabetical order";
 | 
			
		||||
          };
 | 
			
		||||
          settings = mkOption {
 | 
			
		||||
            type = (lib.types.submodule {
 | 
			
		||||
@@ -310,9 +309,18 @@ in {
 | 
			
		||||
        Group = "nginx";
 | 
			
		||||
        UMask = "026";
 | 
			
		||||
      };
 | 
			
		||||
      script = lib.strings.concatStringsSep "\n" ((lib.attrsets.mapAttrsToList
 | 
			
		||||
        (name: value: "${lib.getExe pkgs.bluemap} -c ${renderConfigFolder name value} -r")
 | 
			
		||||
        cfg.maps) ++ [ "${lib.getExe pkgs.bluemap} -c ${webappConfigFolder} -gs" ]);
 | 
			
		||||
      script = ''
 | 
			
		||||
        # If web folder doesnt exist generate it
 | 
			
		||||
        test -f "${cfg.webRoot}" || ${lib.getExe cfg.package} -c ${webappConfigFolder} -gs
 | 
			
		||||
 | 
			
		||||
        # Render each minecraft map
 | 
			
		||||
        ${lib.strings.concatStringsSep "\n" (lib.attrsets.mapAttrsToList
 | 
			
		||||
          (name: value: "${lib.getExe cfg.package} -c ${renderConfigFolder name value} -r")
 | 
			
		||||
          cfg.maps)}
 | 
			
		||||
 | 
			
		||||
        # Generate updated webapp
 | 
			
		||||
        ${lib.getExe cfg.package} -c ${webappConfigFolder} -gs
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    systemd.timers."render-bluemap-maps" = lib.mkIf cfg.enableRender {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								hosts/bekkalokk/services/bluemap/package.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								hosts/bekkalokk/services/bluemap/package.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
{ lib, stdenvNoCC, fetchurl, makeWrapper, jre }:
 | 
			
		||||
 | 
			
		||||
stdenvNoCC.mkDerivation rec {
 | 
			
		||||
  pname = "bluemap";
 | 
			
		||||
  version = "5.7";
 | 
			
		||||
 | 
			
		||||
  src = fetchurl {
 | 
			
		||||
    url = "https://github.com/BlueMap-Minecraft/BlueMap/releases/download/v${version}/BlueMap-${version}-cli.jar";
 | 
			
		||||
    hash = "sha256-8udZYJgrr4bi2mjRYrASd8JwUoUVZW1tZpOLRgafAIw=";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  dontUnpack = true;
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ makeWrapper ];
 | 
			
		||||
 | 
			
		||||
  installPhase = ''
 | 
			
		||||
    runHook preInstall
 | 
			
		||||
    makeWrapper ${jre}/bin/java $out/bin/bluemap --add-flags "-jar $src"
 | 
			
		||||
    runHook postInstall
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  meta = {
 | 
			
		||||
    description = "3D minecraft map renderer";
 | 
			
		||||
    homepage = "https://bluemap.bluecolored.de/";
 | 
			
		||||
    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
 | 
			
		||||
    license = lib.licenses.mit;
 | 
			
		||||
    maintainers = with lib.maintainers; [ dandellion h7x4 ];
 | 
			
		||||
    mainProgram = "bluemap";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										52
									
								
								hosts/bekkalokk/services/gitea/customization.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								hosts/bekkalokk/services/gitea/customization.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
{ config, pkgs, lib, fp, ... }:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.services.gitea;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  services.gitea-themes.monokai = pkgs.gitea-theme-monokai;
 | 
			
		||||
 | 
			
		||||
  systemd.services.gitea-customization = lib.mkIf cfg.enable {
 | 
			
		||||
    description = "Install extra customization in gitea's CUSTOM_DIR";
 | 
			
		||||
    wantedBy = [ "gitea.service" ];
 | 
			
		||||
    requiredBy = [ "gitea.service" ];
 | 
			
		||||
 | 
			
		||||
    serviceConfig =  {
 | 
			
		||||
      Type = "oneshot";
 | 
			
		||||
      User = cfg.user;
 | 
			
		||||
      Group = cfg.group;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    script = let
 | 
			
		||||
      logo-svg = fp /assets/logo_blue_regular.svg;
 | 
			
		||||
      logo-png = fp /assets/logo_blue_regular.png;
 | 
			
		||||
      extraLinks = pkgs.writeText "gitea-extra-links.tmpl" ''
 | 
			
		||||
        <a class="item" href="https://www.pvv.ntnu.no/">PVV</a>
 | 
			
		||||
        <a class="item" href="https://wiki.pvv.ntnu.no/">Wiki</a>
 | 
			
		||||
        <a class="item" href="https://git.pvv.ntnu.no/Drift/-/projects/4">Tokyo Drift Issues</a>
 | 
			
		||||
      '';
 | 
			
		||||
 | 
			
		||||
      project-labels = (pkgs.formats.yaml { }).generate "gitea-project-labels.yaml" {
 | 
			
		||||
        labels = lib.importJSON ./labels/projects.json;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      customTemplates = pkgs.runCommandLocal "gitea-templates" {
 | 
			
		||||
        nativeBuildInputs = with pkgs; [
 | 
			
		||||
          coreutils
 | 
			
		||||
          gnused
 | 
			
		||||
        ];
 | 
			
		||||
      } ''
 | 
			
		||||
        # Bigger icons
 | 
			
		||||
        install -Dm444 "${cfg.package.src}/templates/repo/icon.tmpl" "$out/repo/icon.tmpl"
 | 
			
		||||
        sed -i -e 's/24/48/g' "$out/repo/icon.tmpl"
 | 
			
		||||
      '';
 | 
			
		||||
    in ''
 | 
			
		||||
      install -Dm444 ${logo-svg} ${cfg.customDir}/public/assets/img/logo.svg
 | 
			
		||||
      install -Dm444 ${logo-png} ${cfg.customDir}/public/assets/img/logo.png
 | 
			
		||||
      install -Dm444 ${./loading.apng} ${cfg.customDir}/public/assets/img/loading.png
 | 
			
		||||
      install -Dm444 ${extraLinks} ${cfg.customDir}/templates/custom/extra_links.tmpl
 | 
			
		||||
      install -Dm444 ${project-labels} ${cfg.customDir}/options/label/project-labels.yaml
 | 
			
		||||
 | 
			
		||||
      "${lib.getExe pkgs.rsync}" -a "${customTemplates}/" ${cfg.customDir}/templates/
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +1,11 @@
 | 
			
		||||
{ config, values, fp, pkgs, lib, ... }:
 | 
			
		||||
{ config, values, lib, unstablePkgs, ... }:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.services.gitea;
 | 
			
		||||
  domain = "git.pvv.ntnu.no";
 | 
			
		||||
  sshPort  = 2222;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./customization.nix
 | 
			
		||||
    ./gpg.nix
 | 
			
		||||
    ./import-users
 | 
			
		||||
    ./web-secret-provider
 | 
			
		||||
@@ -25,6 +26,8 @@ in {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    appName = "PVV Git";
 | 
			
		||||
 | 
			
		||||
    package = unstablePkgs.gitea;
 | 
			
		||||
 | 
			
		||||
    database = {
 | 
			
		||||
      type = "postgres";
 | 
			
		||||
      host = "postgres.pvv.ntnu.no";
 | 
			
		||||
@@ -130,6 +133,11 @@ in {
 | 
			
		||||
      };
 | 
			
		||||
      "ui.meta".DESCRIPTION = "Bokstavelig talt programvareverkstedet";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dump = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      type = "tar.gz";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = [ cfg.package ];
 | 
			
		||||
@@ -155,36 +163,108 @@ in {
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  networking.firewall.allowedTCPPorts = [ sshPort ];
 | 
			
		||||
  environment.robots-txt."gitea" = {
 | 
			
		||||
    virtualHost = domain;
 | 
			
		||||
    rules = [
 | 
			
		||||
      {
 | 
			
		||||
        pre_comment = ''
 | 
			
		||||
          Gitea internals
 | 
			
		||||
 | 
			
		||||
  # Extra customization
 | 
			
		||||
 | 
			
		||||
  services.gitea-themes.monokai = pkgs.gitea-theme-monokai;
 | 
			
		||||
 | 
			
		||||
  systemd.services.install-gitea-customization = {
 | 
			
		||||
    description = "Install extra customization in gitea's CUSTOM_DIR";
 | 
			
		||||
    wantedBy = [ "gitea.service" ];
 | 
			
		||||
    requiredBy = [ "gitea.service" ];
 | 
			
		||||
 | 
			
		||||
    serviceConfig =  {
 | 
			
		||||
      Type = "oneshot";
 | 
			
		||||
      User = cfg.user;
 | 
			
		||||
      Group = cfg.group;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    script = let
 | 
			
		||||
      logo-svg = fp /assets/logo_blue_regular.svg;
 | 
			
		||||
      logo-png = fp /assets/logo_blue_regular.png;
 | 
			
		||||
      extraLinks = pkgs.writeText "gitea-extra-links.tmpl" ''
 | 
			
		||||
        <a class="item" href="https://www.pvv.ntnu.no/">PVV</a>
 | 
			
		||||
        <a class="item" href="https://wiki.pvv.ntnu.no/">Wiki</a>
 | 
			
		||||
        <a class="item" href="https://git.pvv.ntnu.no/Drift/-/projects/4">Tokyo Drift Issues</a>
 | 
			
		||||
          See these for more information:
 | 
			
		||||
          - https://gitea.com/robots.txt
 | 
			
		||||
          - https://codeberg.org/robots.txt
 | 
			
		||||
        '';
 | 
			
		||||
    in ''
 | 
			
		||||
      install -Dm444 ${logo-svg} ${cfg.customDir}/public/assets/img/logo.svg
 | 
			
		||||
      install -Dm444 ${logo-png} ${cfg.customDir}/public/assets/img/logo.png
 | 
			
		||||
      install -Dm444 ${./loading.apng} ${cfg.customDir}/public/assets/img/loading.png
 | 
			
		||||
      install -Dm444 ${extraLinks} ${cfg.customDir}/templates/custom/extra_links.tmpl
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
        User-agent = "*";
 | 
			
		||||
        Disallow = [
 | 
			
		||||
          "/api/*"
 | 
			
		||||
          "/avatars"
 | 
			
		||||
          "/*/*/src/commit/*"
 | 
			
		||||
          "/*/*/commit/*"
 | 
			
		||||
          "/*/*/*/refs/*"
 | 
			
		||||
          "/*/*/*/star"
 | 
			
		||||
          "/*/*/*/watch"
 | 
			
		||||
          "/*/*/labels"
 | 
			
		||||
          "/*/*/activity/*"
 | 
			
		||||
          "/vendor/*"
 | 
			
		||||
          "/swagger.*.json"
 | 
			
		||||
          "/repo/create"
 | 
			
		||||
          "/repo/migrate"
 | 
			
		||||
          "/org/create"
 | 
			
		||||
          "/*/*/fork"
 | 
			
		||||
          "/*/*/watchers"
 | 
			
		||||
          "/*/*/stargazers"
 | 
			
		||||
          "/*/*/forks"
 | 
			
		||||
          "*/.git/"
 | 
			
		||||
          "/*.git"
 | 
			
		||||
          "/*.atom"
 | 
			
		||||
          "/*.rss"
 | 
			
		||||
        ];
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        pre_comment = "Language Spam";
 | 
			
		||||
        Disallow = "/*?lang=";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        pre_comment = ''
 | 
			
		||||
          AI bots
 | 
			
		||||
 | 
			
		||||
          Sourced from:
 | 
			
		||||
          - https://www.vg.no/robots.txt
 | 
			
		||||
          - https://codeberg.org/robots.txt
 | 
			
		||||
        '';
 | 
			
		||||
        User-agent = [
 | 
			
		||||
          "AI2Bot"
 | 
			
		||||
          "Ai2Bot-Dolma"
 | 
			
		||||
          "Amazonbot"
 | 
			
		||||
          "Applebot-Extended"
 | 
			
		||||
          "Bytespider"
 | 
			
		||||
          "CCBot"
 | 
			
		||||
          "ChatGPT-User"
 | 
			
		||||
          "Claude-Web"
 | 
			
		||||
          "ClaudeBot"
 | 
			
		||||
          "Crawlspace"
 | 
			
		||||
          "Diffbot"
 | 
			
		||||
          "FacebookBot"
 | 
			
		||||
          "FriendlyCrawler"
 | 
			
		||||
          "GPTBot"
 | 
			
		||||
          "Google-Extended"
 | 
			
		||||
          "ICC-Crawler"
 | 
			
		||||
          "ImagesiftBot"
 | 
			
		||||
          "Kangaroo Bot"
 | 
			
		||||
          "Meta-ExternalAgent"
 | 
			
		||||
          "OAI-SearchBot"
 | 
			
		||||
          "Omgili"
 | 
			
		||||
          "Omgilibot"
 | 
			
		||||
          "PanguBot"
 | 
			
		||||
          "PerplexityBot"
 | 
			
		||||
          "PetalBot"
 | 
			
		||||
          "Scrapy"
 | 
			
		||||
          "SemrushBot-OCOB"
 | 
			
		||||
          "Sidetrade indexer bot"
 | 
			
		||||
          "Timpibot"
 | 
			
		||||
          "VelenPublicWebCrawler"
 | 
			
		||||
          "Webzio-Extended"
 | 
			
		||||
          "YouBot"
 | 
			
		||||
          "anthropic-ai"
 | 
			
		||||
          "cohere-ai"
 | 
			
		||||
          "cohere-training-data-crawler"
 | 
			
		||||
          "facebookexternalhit"
 | 
			
		||||
          "iaskspider/2.0"
 | 
			
		||||
          "img2dataset"
 | 
			
		||||
          "meta-externalagent"
 | 
			
		||||
          "omgili"
 | 
			
		||||
          "omgilibot"
 | 
			
		||||
        ];
 | 
			
		||||
        Disallow = "/";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        Crawl-delay = "2";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        Sitemap = "https://${domain}/sitemap.xml";
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  networking.firewall.allowedTCPPorts = [ sshPort ];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -177,6 +177,7 @@ def ensure_gitea_user_is_part_of_team(
 | 
			
		||||
# List of teams that all users should be part of by default
 | 
			
		||||
COMMON_USER_TEAMS = [
 | 
			
		||||
    ("Projects", "Members"),
 | 
			
		||||
    ("Grzegorz", "Members"),
 | 
			
		||||
    ("Kurs", "Members"),
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										116
									
								
								hosts/bekkalokk/services/gitea/labels/projects.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								hosts/bekkalokk/services/gitea/labels/projects.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
[
 | 
			
		||||
  {
 | 
			
		||||
    "name": "art",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#006b75",
 | 
			
		||||
    "description": "Requires some creativity"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "big",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#754bc4",
 | 
			
		||||
    "description": "This is gonna take a while"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "blocked",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#850021",
 | 
			
		||||
    "description": "This issue/PR depends on one or more other issues/PRs"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "bug",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#f05048",
 | 
			
		||||
    "description": "Something brokey"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ci-cd",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#d1ff78",
 | 
			
		||||
    "description": "Continuous integrals and continuous derivation"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "crash report",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#ed1111",
 | 
			
		||||
    "description": "Report an oopsie"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "disputed",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#5319e7",
 | 
			
		||||
    "description": "Kranglefanter"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "documentation",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#fbca04",
 | 
			
		||||
    "description": "Documentation changes required"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "duplicate",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#cccccc",
 | 
			
		||||
    "description": "This issue or pull request already exists"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "feature request",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#0052cc",
 | 
			
		||||
    "description": ""
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "good first issue",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#009800",
 | 
			
		||||
    "description": "Get your hands dirty with a new project here"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "me gusta",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#30ff36",
 | 
			
		||||
    "description": "( ͡° ͜ʖ ͡°)"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "packaging",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#bf642b",
 | 
			
		||||
    "description": ""
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "question",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#cc317c",
 | 
			
		||||
    "description": ""
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "security",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#ed1111",
 | 
			
		||||
    "description": "Skommel"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "techdebt spring cleaning",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#8c6217",
 | 
			
		||||
    "description": "The code is smelly 👃"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "testing",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#52b373",
 | 
			
		||||
    "description": "Poke it and see if it explodes"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "ui/ux",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#f28852",
 | 
			
		||||
    "description": "User complaints about ergonomics and economics and whatever"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    "name": "wontfix",
 | 
			
		||||
    "exclusive": false,
 | 
			
		||||
    "color": "#ffffff",
 | 
			
		||||
    "description": "Nei, vil ikke"
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
@@ -3,6 +3,7 @@ let
 | 
			
		||||
  organizations = [
 | 
			
		||||
    "Drift"
 | 
			
		||||
    "Projects"
 | 
			
		||||
    "Grzegorz"
 | 
			
		||||
    "Kurs"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -48,6 +48,9 @@
 | 
			
		||||
 | 
			
		||||
  users.users.turnserver.extraGroups = [ "acme" ];
 | 
			
		||||
 | 
			
		||||
  # It needs this to be allowed to access the files with the acme group
 | 
			
		||||
  systemd.services.coturn.serviceConfig.PrivateUsers = lib.mkForce false;
 | 
			
		||||
 | 
			
		||||
  systemd.services."acme-${config.services.coturn.realm}".serviceConfig = {
 | 
			
		||||
    AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
 | 
			
		||||
  };
 | 
			
		||||
@@ -66,7 +69,7 @@
 | 
			
		||||
 | 
			
		||||
    listening-ips = [
 | 
			
		||||
      values.services.turn.ipv4
 | 
			
		||||
      # values.services.turn.ipv6
 | 
			
		||||
      values.services.turn.ipv6
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    tls-listening-port = 443;
 | 
			
		||||
 
 | 
			
		||||
@@ -15,8 +15,8 @@ let
 | 
			
		||||
        enable = true;
 | 
			
		||||
        name = "git-runner-${name}"; url = "https://git.pvv.ntnu.no";
 | 
			
		||||
        labels = [
 | 
			
		||||
          "debian-latest:docker://node:18-bullseye"
 | 
			
		||||
          "ubuntu-latest:docker://node:18-bullseye"
 | 
			
		||||
          "debian-latest:docker://node:current-bookworm"
 | 
			
		||||
          "ubuntu-latest:docker://node:current-bookworm"
 | 
			
		||||
        ];
 | 
			
		||||
        tokenFile = config.sops.secrets."gitea/runners/${name}".path;
 | 
			
		||||
      };
 | 
			
		||||
 
 | 
			
		||||
@@ -2,4 +2,10 @@
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  nix.settings.trusted-users = [ "@nix-builder-users" ];
 | 
			
		||||
  nix.daemonCPUSchedPolicy = "batch";
 | 
			
		||||
 | 
			
		||||
  boot.binfmt.emulatedSystems = [
 | 
			
		||||
    "aarch64-linux"
 | 
			
		||||
    "armv7l-linux"
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,8 @@
 | 
			
		||||
let
 | 
			
		||||
  grg = config.services.greg-ng;
 | 
			
		||||
  grgw = config.services.grzegorz-webui;
 | 
			
		||||
 | 
			
		||||
  machine = config.networking.hostName;
 | 
			
		||||
in {
 | 
			
		||||
  services.greg-ng = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
@@ -16,17 +18,56 @@ in {
 | 
			
		||||
    listenAddr = "localhost";
 | 
			
		||||
    listenPort = 42069;
 | 
			
		||||
    listenWebsocketPort = 42042;
 | 
			
		||||
    hostName = "${config.networking.fqdn}";
 | 
			
		||||
    apiBase = "http://${grg.settings.host}:${toString grg.settings.port}/api";
 | 
			
		||||
    hostName = "${machine}-old.pvv.ntnu.no";
 | 
			
		||||
    apiBase = "https://${machine}-backend.pvv.ntnu.no/api";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services.gergle = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    virtualHost = config.networking.fqdn;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services.nginx.enable = true;
 | 
			
		||||
  services.nginx.virtualHosts."${config.networking.fqdn}" = {
 | 
			
		||||
  services.nginx.virtualHosts = {
 | 
			
		||||
    ${config.networking.fqdn} = {
 | 
			
		||||
      forceSSL = true;
 | 
			
		||||
      enableACME = true;
 | 
			
		||||
      kTLS = true;
 | 
			
		||||
      serverAliases = [
 | 
			
		||||
      "${config.networking.hostName}.pvv.org"
 | 
			
		||||
        "${machine}.pvv.org"
 | 
			
		||||
      ];
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        allow 129.241.210.128/25;
 | 
			
		||||
        allow 2001:700:300:1900::/64;
 | 
			
		||||
        deny all;
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    "${machine}-backend.pvv.ntnu.no" = {
 | 
			
		||||
      forceSSL = true;
 | 
			
		||||
      enableACME = true;
 | 
			
		||||
      kTLS = true;
 | 
			
		||||
      serverAliases = [
 | 
			
		||||
        "${machine}-backend.pvv.org"
 | 
			
		||||
      ];
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        allow 129.241.210.128/25;
 | 
			
		||||
        allow 2001:700:300:1900::/64;
 | 
			
		||||
        deny all;
 | 
			
		||||
      '';
 | 
			
		||||
 | 
			
		||||
      locations."/" = {
 | 
			
		||||
        proxyPass = "http://${grg.settings.host}:${toString grg.settings.port}";
 | 
			
		||||
        proxyWebsockets = true;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    "${machine}-old.pvv.ntnu.no" = {
 | 
			
		||||
      forceSSL = true;
 | 
			
		||||
      enableACME = true;
 | 
			
		||||
      kTLS = true;
 | 
			
		||||
      serverAliases = [
 | 
			
		||||
        "${machine}-old.pvv.org"
 | 
			
		||||
      ];
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        allow 129.241.210.128/25;
 | 
			
		||||
@@ -49,5 +90,6 @@ in {
 | 
			
		||||
        proxyPass = "http://${grg.settings.host}:${toString grg.settings.port}";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										116
									
								
								modules/robots-txt.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								modules/robots-txt.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,116 @@
 | 
			
		||||
{ config, pkgs, lib, ... }:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.environment.robots-txt;
 | 
			
		||||
 | 
			
		||||
  robots-txt-format = {
 | 
			
		||||
    type = let
 | 
			
		||||
      coercedStrToNonEmptyListOfStr = lib.types.coercedTo lib.types.str lib.singleton (lib.types.nonEmptyListOf lib.types.str);
 | 
			
		||||
    in lib.types.listOf (lib.types.submodule {
 | 
			
		||||
      freeformType = lib.types.attrsOf coercedStrToNonEmptyListOfStr;
 | 
			
		||||
      options = {
 | 
			
		||||
        pre_comment = lib.mkOption {
 | 
			
		||||
          description = "Comment to add before the rule";
 | 
			
		||||
          type = lib.types.lines;
 | 
			
		||||
          default = "";
 | 
			
		||||
        };
 | 
			
		||||
        post_comment = lib.mkOption {
 | 
			
		||||
          description = "Comment to add after the rule";
 | 
			
		||||
          type = lib.types.lines;
 | 
			
		||||
          default = "";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    generate = name: value: let
 | 
			
		||||
      makeComment = comment: lib.pipe comment [
 | 
			
		||||
        (lib.splitString "\n")
 | 
			
		||||
        (lib.map (line: if line == "" then "#" else "# ${line}"))
 | 
			
		||||
        (lib.concatStringsSep "\n")
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      ruleToString = rule: let
 | 
			
		||||
        user_agent = rule.User-agent or [];
 | 
			
		||||
        pre_comment = rule.pre_comment;
 | 
			
		||||
        post_comment = rule.post_comment;
 | 
			
		||||
        rest = builtins.removeAttrs rule [ "User-agent" "pre_comment" "post_comment" ];
 | 
			
		||||
      in lib.concatStringsSep "\n" (lib.filter (x: x != null) [
 | 
			
		||||
        (if (pre_comment != "") then makeComment pre_comment else null)
 | 
			
		||||
        (let
 | 
			
		||||
          user-agents = lib.concatMapStringsSep "\n" (value: "User-agent: ${value}") user_agent;
 | 
			
		||||
        in
 | 
			
		||||
          if user_agent == [] then null else user-agents
 | 
			
		||||
        )
 | 
			
		||||
        (lib.pipe rest [
 | 
			
		||||
          (lib.mapAttrsToList (ruleName: map (value: "${ruleName}: ${value}")))
 | 
			
		||||
          lib.concatLists
 | 
			
		||||
          (lib.concatStringsSep "\n")
 | 
			
		||||
        ])
 | 
			
		||||
        (if (post_comment != "") then makeComment post_comment else null)
 | 
			
		||||
      ]);
 | 
			
		||||
 | 
			
		||||
      content = lib.concatMapStringsSep "\n\n" ruleToString value;
 | 
			
		||||
    in pkgs.writeText name content;
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  options.environment.robots-txt = lib.mkOption {
 | 
			
		||||
    default = { };
 | 
			
		||||
    description = ''
 | 
			
		||||
      Different instances of robots.txt to use with web services.
 | 
			
		||||
    '';
 | 
			
		||||
    type = lib.types.attrsOf (lib.types.submodule ({ name, ... }: {
 | 
			
		||||
      options = {
 | 
			
		||||
        enable = lib.mkEnableOption "this instance of robots.txt" // {
 | 
			
		||||
          default = true;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        path = lib.mkOption {
 | 
			
		||||
          description = "The resulting path of the dir containing the robots.txt file";
 | 
			
		||||
          type = lib.types.path;
 | 
			
		||||
          readOnly = true;
 | 
			
		||||
          default = "/etc/robots-txt/${name}";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        rules = lib.mkOption {
 | 
			
		||||
          description = "Rules to include in robots.txt";
 | 
			
		||||
          default = [ ];
 | 
			
		||||
          example = [
 | 
			
		||||
            { User-agent = "Googlebot"; Disallow = "/no-googlebot"; }
 | 
			
		||||
            { User-agent = "Bingbot"; Disallow = [ "/no-bingbot" "/no-bingbot2" ]; }
 | 
			
		||||
          ];
 | 
			
		||||
          type = robots-txt-format.type;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        virtualHost = lib.mkOption {
 | 
			
		||||
          description = "An nginx virtual host to add the robots.txt to";
 | 
			
		||||
          type = lib.types.nullOr lib.types.str;
 | 
			
		||||
          default = null;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    }));
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    environment.etc = lib.mapAttrs' (name: value: {
 | 
			
		||||
      name = "robots-txt/${name}/robots.txt";
 | 
			
		||||
      value.source = robots-txt-format.generate name value.rules;
 | 
			
		||||
    }) cfg;
 | 
			
		||||
 | 
			
		||||
    services.nginx.virtualHosts = lib.pipe cfg [
 | 
			
		||||
      (lib.filterAttrs (_: value: value.virtualHost != null))
 | 
			
		||||
      (lib.mapAttrs' (name: value: {
 | 
			
		||||
        name = value.virtualHost;
 | 
			
		||||
        value = {
 | 
			
		||||
          locations = {
 | 
			
		||||
            "= /robots.txt" = {
 | 
			
		||||
              extraConfig = ''
 | 
			
		||||
                add_header Content-Type text/plain;
 | 
			
		||||
              '';
 | 
			
		||||
              root = cfg.${name}.path;
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      }))
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
gitea:
 | 
			
		||||
    runners:
 | 
			
		||||
        alpha: ENC[AES256_GCM,data:aAFv+/ygC7oxGT3qnoEf+AZL3Nk1yOq3HupL9l0j8P913GefPKqlBt/mbuRVug==,iv:usXElENwbOHxUdoqHScK7PjeZavXUwoxpQWEMjxU2u4=,tag:E8OzZ9pmxIru7Glgh7v0lg==,type:str]
 | 
			
		||||
        beta: ENC[AES256_GCM,data:riRSBDzX9DAxKl2UCds1ANddl3ij+byAgigOafJ5RjWl8cNVlowK21klBiKTxw==,iv:clijEUKX9o52p5A94eEW0f8qGGhFpy/LFe+uQG/iQLg=,tag:PchXbsZMnW//O7brEAEeWw==,type:str]
 | 
			
		||||
        epsilon: ENC[AES256_GCM,data:lUt8uaqh9eC1IdIUfiw3dzxcDErSWaiT9lzg4ONf/QZeXj7Do7Es0GXBFd41Hw==,iv:hPm5Lez5ISHIlw1+i4z/oBsh4H5ZXPVYnXXSGq1eal0=,tag:/KcmPw30622tN9ruMUwfUw==,type:str]
 | 
			
		||||
        alpha: ENC[AES256_GCM,data:Hnq2guka4oERPIFCv1/ggrLjaePA7907VHXMStDQ7ll3hntTioT76qGOUJgfIw==,iv:wDPYuuL6VAWJakrz6asVRrzwRxqw0JDRes13MgJIT6E=,tag:ogFUeUirHVkCLN63nctxOw==,type:str]
 | 
			
		||||
        beta: ENC[AES256_GCM,data:HmdjBvW8eO5MkzXf7KEzSNQAptF/RKN8Bh03Ru7Ru/Ky+eJJtk91aqSSIjFa+Q==,iv:Hz9HE3U6CFfZFcPmYMd6wSzZkSvszt92L2gV+pUlMis=,tag:LG3NfsS7B1EdRFvnP3XESQ==,type:str]
 | 
			
		||||
        epsilon: ENC[AES256_GCM,data:wfGxwWwDzb6AJaFnxe/93WNZGtuTpCkLci/Cc5MTCTKJz6XlNuy3m/1Xsnw0hA==,iv:I6Zl+4BBAUTXym2qUlFfdnoLTHShu+VyxPMjRlFzMis=,tag:jjTyZs1Nzqlhjd8rAldxDw==,type:str]
 | 
			
		||||
sops:
 | 
			
		||||
    kms: []
 | 
			
		||||
    gcp_kms: []
 | 
			
		||||
@@ -63,8 +63,8 @@ sops:
 | 
			
		||||
            aU4xWjVYYlNvSmYxajVGdzk5dTQ4WG8Klq12bSegsW29xp4qteuCB5Tzis6EhVCk
 | 
			
		||||
            53jqtYe5UG9MjFVQYiSi2jJz5/dxfqSINMZ/Y/EB5LxbwgbFws8Yuw==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
    lastmodified: "2024-12-09T21:17:40Z"
 | 
			
		||||
    mac: ENC[AES256_GCM,data:HensJbPU1Kx9aQNUhdtFkX/6qdxj7yby6GeSruOT+HYEtoq0py/zvMtdCqmfjc4AOptYlXdgK7w30P976dG1esjlYwF07qtVvAbUqvExkksuV4zp81VKHMXUOAyiQK79kLe3rx6cvEdUDbOjZOsxN02eRrcanN+7rJS6f7vNN88=,iv:PlePCik6JcOtVBQhhOj9khhp2LwwfXBwAGpzu4ywhTA=,tag:Clz+xX1Cffs8Zpv2LdsGVA==,type:str]
 | 
			
		||||
    lastmodified: "2024-12-12T12:20:19Z"
 | 
			
		||||
    mac: ENC[AES256_GCM,data:D9/NAd/zrF6pHFdZjTUqI+u4WiwJqt0w5Y+SYCS1o/dAXJE/ajHzse/vCSGXZIjP0yqe+S/NyTvhf+stw2B4dk6Njtabjd+PhG0hR4L0X07FtFqzB3u5pLHCb0bH9QLG5zWcyMkwNiNTCvhRUZzbcqLEGqqJ7ZjZAEUfYSR+Jls=,iv:5xPfODPxtQjgbl8delUHsmhD0TI2gHjrxpHV+qiFE00=,tag:HHLo5G8jhy/sKB3R+sKmwQ==,type:str]
 | 
			
		||||
    pgp:
 | 
			
		||||
        - created_at: "2024-12-09T21:17:27Z"
 | 
			
		||||
          enc: |-
 | 
			
		||||
@@ -87,4 +87,4 @@ sops:
 | 
			
		||||
            -----END PGP MESSAGE-----
 | 
			
		||||
          fp: F7D37890228A907440E1FD4846B9228E814A2AAC
 | 
			
		||||
    unencrypted_suffix: _unencrypted
 | 
			
		||||
    version: 3.8.1
 | 
			
		||||
    version: 3.9.2
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								shell.nix
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								shell.nix
									
									
									
									
									
								
							@@ -11,14 +11,14 @@ pkgs.mkShellNoCC {
 | 
			
		||||
    editorconfig-checker
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  shellHook = ''
 | 
			
		||||
    export OS_AUTH_URL=https://api.stack.it.ntnu.no:5000
 | 
			
		||||
    export OS_PROJECT_ID=b78432a088954cdc850976db13cfd61c
 | 
			
		||||
    export OS_PROJECT_NAME="STUDORG_Programvareverkstedet"
 | 
			
		||||
    export OS_USER_DOMAIN_NAME="NTNU"
 | 
			
		||||
    export OS_PROJECT_DOMAIN_ID="d3f99bcdaf974685ad0c74c2e5d259db"
 | 
			
		||||
    export OS_REGION_NAME="NTNU-IT"
 | 
			
		||||
    export OS_INTERFACE=public
 | 
			
		||||
    export OS_IDENTITY_API_VERSION=3
 | 
			
		||||
  '';
 | 
			
		||||
  env = {
 | 
			
		||||
    OS_AUTH_URL = "https://api.stack.it.ntnu.no:5000";
 | 
			
		||||
    OS_PROJECT_ID = "b78432a088954cdc850976db13cfd61c";
 | 
			
		||||
    OS_PROJECT_NAME = "STUDORG_Programvareverkstedet";
 | 
			
		||||
    OS_USER_DOMAIN_NAME = "NTNU";
 | 
			
		||||
    OS_PROJECT_DOMAIN_ID = "d3f99bcdaf974685ad0c74c2e5d259db";
 | 
			
		||||
    OS_REGION_NAME = "NTNU-IT";
 | 
			
		||||
    OS_INTERFACE = "public";
 | 
			
		||||
    OS_IDENTITY_API_VERSION = "3";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user