forked from Drift/pvv-nixos-config
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			replace-kn
			...
			actions
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 96affe4b0b | 
| @@ -1,13 +0,0 @@ | ||||
| name: "Eval nix flake" | ||||
| on: | ||||
|   pull_request: | ||||
|   push: | ||||
| jobs: | ||||
|   evals: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - run: apt-get update && apt-get -y install sudo | ||||
|     - uses: https://github.com/cachix/install-nix-action@v23 | ||||
|     - run: echo -e "show-trace = true\nmax-jobs = auto\ntrusted-users = root\nexperimental-features = nix-command flakes\nbuild-users-group =" > /etc/nix/nix.conf | ||||
|     - run: nix flake check | ||||
							
								
								
									
										28
									
								
								.gitea/workflows/test.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.gitea/workflows/test.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| name: "Test" | ||||
| on: | ||||
|   pull_request: | ||||
|   push: | ||||
| jobs: | ||||
|   evals: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - run: apt-get update && apt-get -y install sudo | ||||
|     - uses: https://github.com/cachix/install-nix-action@v23 | ||||
|     - run: echo -e "show-trace = true\nmax-jobs = auto\ntrusted-users = root\nexperimental-features = nix-command flakes\nbuild-users-group =" > /etc/nix/nix.conf | ||||
|     - run: nix flake check | ||||
|   builds: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v3 | ||||
|     - run: apt-get update && apt-get -y install sudo | ||||
|     - run: su node | ||||
|     - run: whoami | ||||
|     - uses: https://github.com/cachix/install-nix-action@v23 | ||||
|     - run: echo -e "show-trace = true\nmax-jobs = auto\ntrusted-users = root\nexperimental-features = nix-command flakes\nbuild-users-group =" > /etc/nix/nix.conf | ||||
|     - run: nix build --keep-going .#nixosConfigurations.bekkalokk.config.system.build.toplevel || exit 0 | ||||
|     # - run: nix build --keep-going .#nixosConfigurations.bicep.config.system.build.toplevel || exit 0 | ||||
|     # - run: nix build --keep-going .#nixosConfigurations.brzeczyszczykiewicz.config.system.build.toplevel || exit 0 | ||||
|     # - run: nix build --keep-going .#nixosConfigurations.georg.config.system.build.toplevel || exit 0 | ||||
|     # - run: nix build --keep-going .#nixosConfigurations.ildkule.config.system.build.toplevel || exit 0 | ||||
|     # - run: nix build --keep-going .#nixosConfigurations.shark.config.system.build.toplevel || exit 0 | ||||
| @@ -26,7 +26,7 @@ Det er sikkert lurt å lage en PR først om du ikke er vandt til nix enda. | ||||
| Innen 24h skal alle systemene hente ned den nye konfigurasjonen og deploye den. | ||||
|  | ||||
| Du kan tvinge en maskin til å oppdatere seg før dette ved å kjøre: | ||||
| `nixos-rebuild switch --update-input nixpkgs --update-input nixpkgs-unstable --no-write-lock-file --refresh --flake git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git --upgrade` | ||||
| `nixos-rebuild switch --update-input nixpkgs --update-input unstable --no-write-lock-file --refresh --flake git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git --upgrade` | ||||
|  | ||||
| som root på maskinen. | ||||
|  | ||||
|   | ||||
							
								
								
									
										5
									
								
								base.nix
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								base.nix
									
									
									
									
									
								
							| @@ -32,7 +32,7 @@ | ||||
|     flake = "git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git"; | ||||
|     flags = [ | ||||
|       "--update-input" "nixpkgs" | ||||
|       "--update-input" "nixpkgs-unstable" | ||||
|       "--update-input" "unstable" | ||||
|       "--no-write-lock-file" | ||||
|     ]; | ||||
|   }; | ||||
| @@ -71,9 +71,6 @@ | ||||
|  | ||||
|   users.groups."drift".name = "drift"; | ||||
|  | ||||
|   # Trusted users on the nix builder machines | ||||
|   users.groups."nix-builder-users".name = "nix-builder-users"; | ||||
|  | ||||
|   services.openssh = { | ||||
|     enable = true; | ||||
|     extraConfig = '' | ||||
|   | ||||
							
								
								
									
										87
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										87
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							| @@ -1,29 +1,9 @@ | ||||
| { | ||||
|   "nodes": { | ||||
|     "disko": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": [ | ||||
|           "nixpkgs" | ||||
|         ] | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1699099781, | ||||
|         "narHash": "sha256-2WAs839yL6xmIPBLNVwbft46BDh0/RAjq1bAKNRqeR4=", | ||||
|         "owner": "nix-community", | ||||
|         "repo": "disko", | ||||
|         "rev": "548962c50b8afad7b8c820c1d6e21dc8394d6e65", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nix-community", | ||||
|         "repo": "disko", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "grzegorz": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": [ | ||||
|           "nixpkgs-unstable" | ||||
|           "unstable" | ||||
|         ] | ||||
|       }, | ||||
|       "locked": { | ||||
| @@ -65,11 +45,11 @@ | ||||
|         "nixpkgs-lib": "nixpkgs-lib" | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1697936579, | ||||
|         "narHash": "sha256-nMyepKnwoHMzu2OpXvG2ZhU081TV9ENmWCo0vWxs6AI=", | ||||
|         "lastModified": 1697420972, | ||||
|         "narHash": "sha256-eFDasOzXAN8VswUntNBBwvKFyVKFvmwRNNVTDfGdB3M=", | ||||
|         "owner": "dali99", | ||||
|         "repo": "nixos-matrix-modules", | ||||
|         "rev": "e09814657187c8ed1a5fe1646df6d8da1eb2dee9", | ||||
|         "rev": "1e370b96223b94d52006249a60033caaea605c65", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
| @@ -80,17 +60,18 @@ | ||||
|     }, | ||||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 1699110214, | ||||
|         "narHash": "sha256-L2TU4RgtiqF69W8Gacg2jEkEYJrW+Kp0Mp4plwQh5b8=", | ||||
|         "lastModified": 1697706247, | ||||
|         "narHash": "sha256-nWLggeUxn/l8JrcQr9f+RfnCXp8cn0BN568PjMJh9ko=", | ||||
|         "owner": "NixOS", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "78f3a4ae19f0e99d5323dd2e3853916b8ee4afee", | ||||
|         "rev": "4ee5b576ac2861a818950aea99f609d7a6fc02a3", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "id": "nixpkgs", | ||||
|         "owner": "NixOS", | ||||
|         "ref": "nixos-23.05-small", | ||||
|         "type": "indirect" | ||||
|         "repo": "nixpkgs", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "nixpkgs-lib": { | ||||
| @@ -110,11 +91,11 @@ | ||||
|     }, | ||||
|     "nixpkgs-stable": { | ||||
|       "locked": { | ||||
|         "lastModified": 1699110214, | ||||
|         "narHash": "sha256-L2TU4RgtiqF69W8Gacg2jEkEYJrW+Kp0Mp4plwQh5b8=", | ||||
|         "lastModified": 1697332183, | ||||
|         "narHash": "sha256-ACYvYsgLETfEI2xM1jjp8ZLVNGGC0onoCGe+69VJGGE=", | ||||
|         "owner": "NixOS", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "78f3a4ae19f0e99d5323dd2e3853916b8ee4afee", | ||||
|         "rev": "0e1cff585c1a85aeab059d3109f66134a8f76935", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
| @@ -124,21 +105,6 @@ | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "nixpkgs-unstable": { | ||||
|       "locked": { | ||||
|         "lastModified": 1699128932, | ||||
|         "narHash": "sha256-4Hn/fpR/FRucpXQqMI0OSgxiu2ImowmR0dThAycPt/4=", | ||||
|         "owner": "NixOS", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "0d2d729bf7091df906a78b69f90620f933ea963f", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "id": "nixpkgs", | ||||
|         "ref": "nixos-unstable-small", | ||||
|         "type": "indirect" | ||||
|       } | ||||
|     }, | ||||
|     "pvv-calendar-bot": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": [ | ||||
| @@ -161,14 +127,13 @@ | ||||
|     }, | ||||
|     "root": { | ||||
|       "inputs": { | ||||
|         "disko": "disko", | ||||
|         "grzegorz": "grzegorz", | ||||
|         "grzegorz-clients": "grzegorz-clients", | ||||
|         "matrix-next": "matrix-next", | ||||
|         "nixpkgs": "nixpkgs", | ||||
|         "nixpkgs-unstable": "nixpkgs-unstable", | ||||
|         "pvv-calendar-bot": "pvv-calendar-bot", | ||||
|         "sops-nix": "sops-nix" | ||||
|         "sops-nix": "sops-nix", | ||||
|         "unstable": "unstable" | ||||
|       } | ||||
|     }, | ||||
|     "sops-nix": { | ||||
| @@ -179,11 +144,11 @@ | ||||
|         "nixpkgs-stable": "nixpkgs-stable" | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1699153251, | ||||
|         "narHash": "sha256-CGx98mbAy9svKTa1dzlrVmkJwgGSXpAQUdMh7U0szts=", | ||||
|         "lastModified": 1697339241, | ||||
|         "narHash": "sha256-ITsFtEtRbCBeEH9XrES1dxZBkE1fyNNUfIyQjQ2AYQs=", | ||||
|         "owner": "Mic92", | ||||
|         "repo": "sops-nix", | ||||
|         "rev": "5bc2cde6e53241e7df0e8f5df5872223983efa72", | ||||
|         "rev": "51186b8012068c417dac7c31fb12861726577898", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
| @@ -191,6 +156,22 @@ | ||||
|         "repo": "sops-nix", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "unstable": { | ||||
|       "locked": { | ||||
|         "lastModified": 1697713104, | ||||
|         "narHash": "sha256-DN7YOyKMCpAVeZ44N42LrujtTkoerkS9+kTufQiuntY=", | ||||
|         "owner": "NixOS", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "6be2c349a30fcb489a3153dd331e9df387ab6449", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "NixOS", | ||||
|         "ref": "nixos-unstable-small", | ||||
|         "repo": "nixpkgs", | ||||
|         "type": "github" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "root": "root", | ||||
|   | ||||
							
								
								
									
										30
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								flake.nix
									
									
									
									
									
								
							| @@ -2,27 +2,24 @@ | ||||
|   description = "PVV System flake"; | ||||
|  | ||||
|   inputs = { | ||||
|     nixpkgs.url = "nixpkgs/nixos-23.05-small"; | ||||
|     nixpkgs-unstable.url = "nixpkgs/nixos-unstable-small"; | ||||
|     nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05-small"; | ||||
|     unstable.url = "github:NixOS/nixpkgs/nixos-unstable-small"; | ||||
|  | ||||
|     sops-nix.url = "github:Mic92/sops-nix"; | ||||
|     sops-nix.inputs.nixpkgs.follows = "nixpkgs"; | ||||
|  | ||||
|     disko.url = "github:nix-community/disko"; | ||||
|     disko.inputs.nixpkgs.follows = "nixpkgs"; | ||||
|  | ||||
|     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"; | ||||
|  | ||||
|     grzegorz.url = "github:Programvareverkstedet/grzegorz"; | ||||
|     grzegorz.inputs.nixpkgs.follows = "nixpkgs-unstable"; | ||||
|     grzegorz.inputs.nixpkgs.follows = "unstable"; | ||||
|     grzegorz-clients.url = "github:Programvareverkstedet/grzegorz-clients"; | ||||
|     grzegorz-clients.inputs.nixpkgs.follows = "nixpkgs"; | ||||
|   }; | ||||
|  | ||||
|   outputs = { self, nixpkgs, nixpkgs-unstable, sops-nix, disko, ... }@inputs: | ||||
|   outputs = { self, nixpkgs, matrix-next, pvv-calendar-bot, unstable, sops-nix, ... }@inputs: | ||||
|   let | ||||
|     nixlib = nixpkgs.lib; | ||||
|     systems = [ | ||||
| @@ -45,7 +42,7 @@ | ||||
|         rec { | ||||
|           system = "x86_64-linux"; | ||||
|           specialArgs = { | ||||
|             inherit nixpkgs-unstable inputs; | ||||
|             inherit unstable inputs; | ||||
|             values = import ./values.nix; | ||||
|           }; | ||||
|  | ||||
| @@ -60,7 +57,7 @@ | ||||
|               (final: prev: { | ||||
|                 mx-puppet-discord = prev.mx-puppet-discord.override { nodejs_14 = final.nodejs_18; }; | ||||
|               }) | ||||
|               inputs.pvv-calendar-bot.overlays.${system}.default | ||||
|               pvv-calendar-bot.overlays.${system}.default | ||||
|             ]; | ||||
|           }; | ||||
|         } | ||||
| @@ -68,27 +65,18 @@ | ||||
|       ); | ||||
|  | ||||
|       stableNixosConfig = nixosConfig nixpkgs; | ||||
|       unstableNixosConfig = nixosConfig nixpkgs-unstable; | ||||
|       unstableNixosConfig = nixosConfig unstable; | ||||
|     in { | ||||
|       bicep = stableNixosConfig "bicep" { | ||||
|         modules = [ | ||||
|           ./hosts/bicep/configuration.nix | ||||
|           sops-nix.nixosModules.sops | ||||
|  | ||||
|           inputs.matrix-next.nixosModules.default | ||||
|           inputs.pvv-calendar-bot.nixosModules.default | ||||
|           matrix-next.nixosModules.default | ||||
|           pvv-calendar-bot.nixosModules.default | ||||
|         ]; | ||||
|       }; | ||||
|       bekkalokk = stableNixosConfig "bekkalokk" { }; | ||||
|       bob = stableNixosConfig "bob" { | ||||
|         modules = [ | ||||
|           ./hosts/bob/configuration.nix | ||||
|           sops-nix.nixosModules.sops | ||||
|  | ||||
|           disko.nixosModules.disko | ||||
|           { disko.devices.disk.disk1.device = "/dev/vda"; } | ||||
|         ]; | ||||
|       }; | ||||
|       ildkule = stableNixosConfig "ildkule" { }; | ||||
|       #ildkule-unstable = unstableNixosConfig "ildkule" { }; | ||||
|       shark = stableNixosConfig "shark" { }; | ||||
|   | ||||
| @@ -10,9 +10,8 @@ | ||||
|  | ||||
|     # TODO: set up authentication for the following: | ||||
|     # ./services/website.nix | ||||
|     ./services/nginx | ||||
|     ./services/nginx.nix | ||||
|     ./services/gitea/default.nix | ||||
|     ./services/webmail | ||||
|     # ./services/mediawiki.nix | ||||
|   ]; | ||||
|  | ||||
|   | ||||
| @@ -1,9 +1,5 @@ | ||||
| { pkgs, config, ... }: | ||||
| { | ||||
|   imports = [ | ||||
|     ./ingress.nix | ||||
|   ]; | ||||
| 
 | ||||
|   security.acme = { | ||||
|     acceptTerms = true; | ||||
|     defaults.email = "drift@pvv.ntnu.no"; | ||||
| @@ -1,55 +0,0 @@ | ||||
| { config, lib, ... }: | ||||
| { | ||||
|   services.nginx.virtualHosts = { | ||||
|     "www2.pvv.ntnu.no" = { | ||||
|       serverAliases = [ "www2.pvv.org" "pvv.ntnu.no" "pvv.org" ]; | ||||
|       addSSL = true; | ||||
|       enableACME = true; | ||||
|  | ||||
|       locations = { | ||||
|         # Proxy home directories | ||||
|         "/~" = { | ||||
|           extraConfig = '' | ||||
|             proxy_redirect off; | ||||
|             proxy_pass https://tom.pvv.ntnu.no; | ||||
|             proxy_set_header Host $host; | ||||
|             proxy_set_header X-Real-IP $remote_addr; | ||||
|             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|             proxy_set_header X-Forwarded-Proto $scheme; | ||||
|           ''; | ||||
|         }; | ||||
|  | ||||
|         # Redirect old wiki entries | ||||
|         "/disk".return = "301 https://www.pvv.ntnu.no/pvv/Diskkjøp"; | ||||
|         "/dok/boker.php".return = "301 https://www.pvv.ntnu.no/pvv/Bokhyllen"; | ||||
|         "/styret/lover/".return = "301 https://www.pvv.ntnu.no/pvv/Lover"; | ||||
|         "/styret/".return = "301 https://www.pvv.ntnu.no/pvv/Styret"; | ||||
|         "/info/".return = "301 https://www.pvv.ntnu.no/pvv/"; | ||||
|         "/info/maskinpark/".return = "301 https://www.pvv.ntnu.no/pvv/Maskiner"; | ||||
|         "/medlemssider/meldinn.php".return = "301 https://www.pvv.ntnu.no/pvv/Medlemskontingent"; | ||||
|         "/diverse/medlems-sider.php".return = "301 https://www.pvv.ntnu.no/pvv/Medlemssider"; | ||||
|         "/cert/".return = "301 https://www.pvv.ntnu.no/pvv/CERT"; | ||||
|         "/drift".return = "301 https://www.pvv.ntnu.no/pvv/Drift"; | ||||
|         "/diverse/abuse.php".return = "301 https://www.pvv.ntnu.no/pvv/CERT/Abuse"; | ||||
|         "/nerds/".return = "301 https://www.pvv.ntnu.no/pvv/Nerdepizza"; | ||||
|  | ||||
|         # TODO: Redirect webmail | ||||
|         "/webmail".return = "301 https://webmail.pvv.ntnu.no/squirrelmail"; | ||||
|  | ||||
|         # Redirect everything else to the main website | ||||
|         "/".return = "301 https://www.pvv.ntnu.no$request_uri"; | ||||
|  | ||||
|         # Proxy the matrix well-known files | ||||
|         # Host has be set before proxy_pass | ||||
|         # The header must be set so nginx on the other side routes it to the right place | ||||
|         "/.well-known/matrix/" = { | ||||
|           extraConfig = '' | ||||
|             proxy_set_header Host matrix.pvv.ntnu.no; | ||||
|             proxy_pass https://matrix.pvv.ntnu.no/.well-known/matrix/; | ||||
|           ''; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  | ||||
| @@ -1,15 +0,0 @@ | ||||
| { config, values, pkgs, lib, ... }: | ||||
| { | ||||
|   imports = [ | ||||
|     ./roundcube.nix | ||||
|   ]; | ||||
|  | ||||
|   services.nginx.virtualHosts."webmail2.pvv.ntnu.no" = { | ||||
|     forceSSL = true; | ||||
|     enableACME = true; | ||||
|     #locations."/" = lib.mkForce { }; | ||||
|     locations."= /" = { | ||||
|       return = "301 https://www.pvv.ntnu.no/mail/"; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
| @@ -1,74 +0,0 @@ | ||||
| { config, pkgs, lib, ... }: | ||||
|  | ||||
| with lib; | ||||
| let | ||||
|   cfg = config.services.roundcube; | ||||
|   domain = "webmail2.pvv.ntnu.no"; | ||||
| in  | ||||
| { | ||||
|   services.roundcube = { | ||||
|     enable = true; | ||||
|  | ||||
|     package = pkgs.roundcube.withPlugins (plugins: with plugins; [ | ||||
|       persistent_login | ||||
|       thunderbird_labels | ||||
|       contextmenu | ||||
|       custom_from | ||||
|     ]); | ||||
|  | ||||
|     dicts = with pkgs.aspellDicts; [ en en-science en-computers nb nn fr de it ]; | ||||
|     maxAttachmentSize = 20; | ||||
|     hostName = "roundcubeplaceholder.example.com"; | ||||
|  | ||||
|     extraConfig = '' | ||||
|       $config['enable_installer'] = false; | ||||
|       $config['default_host'] = "ssl://imap.pvv.ntnu.no"; | ||||
|       $config['default_port'] = 993; | ||||
|       $config['smtp_server'] = "ssl://smtp.pvv.ntnu.no"; | ||||
|       $config['smtp_port'] = 465; | ||||
|       $config['mail_domain'] = "pvv.ntnu.no"; | ||||
|       $config['smtp_user'] = "%u"; | ||||
|       $config['support_url'] = ""; | ||||
|     ''; | ||||
|   }; | ||||
|  | ||||
|   services.nginx.virtualHosts."roundcubeplaceholder.example.com" = lib.mkForce { }; | ||||
|  | ||||
|   services.nginx.virtualHosts.${domain} = { | ||||
|     locations."/roundcube" = { | ||||
|       tryFiles = "$uri $uri/ =404"; | ||||
|       index = "index.php"; | ||||
|       root = pkgs.runCommandLocal "roundcube-dir" { } '' | ||||
|         mkdir -p $out | ||||
|         ln -s ${cfg.package} $out/roundcube | ||||
|       ''; | ||||
|       extraConfig = '' | ||||
|         location ~ ^/roundcube/(${builtins.concatStringsSep "|" [ | ||||
|         # https://wiki.archlinux.org/title/Roundcube | ||||
|         "README" | ||||
|         "INSTALL" | ||||
|         "LICENSE" | ||||
|         "CHANGELOG" | ||||
|         "UPGRADING" | ||||
|         "bin" | ||||
|         "SQL" | ||||
|         ".+\\.md" | ||||
|         "\\." | ||||
|         "config" | ||||
|         "temp" | ||||
|         "logs" | ||||
|         ]})/? { | ||||
|           deny all; | ||||
|         } | ||||
|  | ||||
|         location ~ ^/roundcube/(.+\.php)(/?.*)$ { | ||||
|           fastcgi_split_path_info ^/roundcube(/.+\.php)(/.+)$; | ||||
|           include ${config.services.nginx.package}/conf/fastcgi_params; | ||||
|           include ${config.services.nginx.package}/conf/fastcgi.conf; | ||||
|           fastcgi_index index.php; | ||||
|           fastcgi_pass unix:${config.services.phpfpm.pools.roundcube.socket}; | ||||
|         } | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
| @@ -1,17 +0,0 @@ | ||||
| { lib, buildPythonPackage, fetchFromGitHub }: | ||||
|  | ||||
| buildPythonPackage rec { | ||||
|   pname = "matrix-synapse-smtp-auth"; | ||||
|   version = "0.1.0"; | ||||
|  | ||||
|   src = ./.; | ||||
|  | ||||
|   doCheck = false; | ||||
|  | ||||
|   meta = with lib; { | ||||
|     description = "An SMTP auth provider for Synapse"; | ||||
|     homepage = "pvv.ntnu.no"; | ||||
|     license = licenses.agpl3Only; | ||||
|     maintainers = with maintainers; [ dandellion ]; | ||||
|   }; | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| from setuptools import setup | ||||
|  | ||||
| setup( | ||||
|     name="matrix-synapse-smtp-auth", | ||||
|     version="0.1.0", | ||||
|     py_modules=['smtp_auth_provider'], | ||||
|     author="Daniel Løvbrøtte Olsen", | ||||
|     author_email="danio@pvv.ntnu.no", | ||||
|     description="An SMTP auth provider for Synapse", | ||||
|     license="AGPL-3.0-only" | ||||
| ) | ||||
| @@ -1,45 +0,0 @@ | ||||
| from typing import Awaitable, Callable, Optional, Tuple | ||||
|  | ||||
| from smtplib import SMTP_SSL as SMTP | ||||
|  | ||||
| import synapse | ||||
| from synapse import module_api | ||||
|  | ||||
|  | ||||
| class SMTPAuthProvider: | ||||
|     def __init__(self, config: dict, api: module_api): | ||||
|         self.api = api | ||||
|  | ||||
|         self.config = config | ||||
|  | ||||
|         api.register_password_auth_provider_callbacks( | ||||
|             auth_checkers={ | ||||
|                 ("m.login.password", ("password",)): self.check_pass, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|     async def check_pass( | ||||
|         self, | ||||
|         username: str, | ||||
|         login_type: str, | ||||
|         login_dict: "synapse.module_api.JsonDict", | ||||
|     ): | ||||
|         if login_type != "m.login.password": | ||||
|             return None | ||||
|  | ||||
|         result = False | ||||
|         with SMTP(self.config["smtp_host"]) as smtp: | ||||
|             password = login_dict.get("password") | ||||
|             try: | ||||
|                 smtp.login(username, password) | ||||
|                 result = True | ||||
|             except: | ||||
|                 return None | ||||
|  | ||||
|         if result == True: | ||||
|             userid = self.api.get_qualified_user_id(username) | ||||
|             if not self.api.check_user_exists(userid): | ||||
|                 self.api.register_user(username) | ||||
|             return (userid, None) | ||||
|         else: | ||||
|             return None | ||||
| @@ -22,18 +22,9 @@ in { | ||||
|     group = config.users.users.matrix-synapse.group; | ||||
|   }; | ||||
|  | ||||
|   sops.secrets."matrix/sliding-sync/env" = { | ||||
|     sopsFile = ../../../../secrets/bicep/matrix.yaml; | ||||
|     key = "sliding-sync/env"; | ||||
|   }; | ||||
|  | ||||
|   services.matrix-synapse-next = { | ||||
|     enable = true; | ||||
|  | ||||
|     plugins = [ | ||||
|       (pkgs.python3Packages.callPackage ./smtp-authenticator { }) | ||||
|     ]; | ||||
|  | ||||
|     dataDir = "/data/synapse"; | ||||
|  | ||||
|     workers.federationSenders = 2; | ||||
| @@ -43,8 +34,6 @@ in { | ||||
|     workers.eventPersisters = 2; | ||||
|     workers.useUserDirectoryWorker = true; | ||||
|  | ||||
|     enableSlidingSync = true; | ||||
|  | ||||
|     enableNginx = true; | ||||
|  | ||||
|     settings = { | ||||
| @@ -92,15 +81,7 @@ in { | ||||
|       enable_registration = false; | ||||
|       registration_shared_secret_path = config.sops.secrets."matrix/synapse/user_registration".path; | ||||
|  | ||||
|       password_config.enabled = true; | ||||
|  | ||||
|       modules = [ | ||||
|         { module = "smtp_auth_provider.SMTPAuthProvider"; | ||||
|           config = { | ||||
|             smtp_host = "smtp.pvv.ntnu.no"; | ||||
|           }; | ||||
|         } | ||||
|       ]; | ||||
|       password_config.enabled = lib.mkForce false; | ||||
|  | ||||
|       trusted_key_servers = [ | ||||
|         { server_name = "matrix.org"; } | ||||
| @@ -211,24 +192,9 @@ in { | ||||
|     }; | ||||
|   }; | ||||
|  | ||||
|   services.matrix-synapse.sliding-sync.environmentFile = config.sops.secrets."matrix/sliding-sync/env".path; | ||||
|  | ||||
|  | ||||
|   services.redis.servers."".enable = true; | ||||
|    | ||||
|   services.nginx.virtualHosts."matrix.pvv.ntnu.no" = lib.mkMerge [ | ||||
|   ({ | ||||
|     locations."/.well-known/matrix/server" = { | ||||
|       return = '' | ||||
|         200 '{"m.server": "matrix.pvv.ntnu.no:443"}' | ||||
|       ''; | ||||
|       extraConfig = '' | ||||
|         default_type application/json; | ||||
|         add_header Access-Control-Allow-Origin *; | ||||
|       ''; | ||||
|     }; | ||||
|   }) | ||||
|   ({ | ||||
|   services.nginx.virtualHosts."matrix.pvv.ntnu.no" = lib.mkMerge [({ | ||||
|     locations = let | ||||
|       connectionInfo = w: matrix-lib.workerConnectionResource "metrics" w; | ||||
|       socketAddress = w: let c = connectionInfo w; in "${c.host}:${toString (c.port)}"; | ||||
|   | ||||
| @@ -1,46 +0,0 @@ | ||||
| { config, pkgs, values, ... }: | ||||
| { | ||||
|   imports = [ | ||||
|       # Include the results of the hardware scan. | ||||
|       ./hardware-configuration.nix | ||||
|       ../../base.nix | ||||
|       ../../misc/metrics-exporters.nix | ||||
|       ./disks.nix | ||||
|  | ||||
|       ../../misc/builder.nix | ||||
|     ]; | ||||
|  | ||||
|   sops.defaultSopsFile = ../../secrets/bob/bob.yaml; | ||||
|   sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; | ||||
|   sops.age.keyFile = "/var/lib/sops-nix/key.txt"; | ||||
|   sops.age.generateKey = true; | ||||
|  | ||||
|   boot.loader.grub = { | ||||
|     enable = true; | ||||
|     efiSupport = true; | ||||
|     efiInstallAsRemovable = true; | ||||
|   }; | ||||
|  | ||||
|   networking.hostName = "bob"; # Define your hostname. | ||||
|  | ||||
|   systemd.network.networks."30-all" = values.defaultNetworkConfig // { | ||||
|     matchConfig.Name = "en*"; | ||||
|     DHCP = "yes"; | ||||
|     gateway = [ ]; | ||||
|   }; | ||||
|  | ||||
|   # List packages installed in system profile | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|   ]; | ||||
|  | ||||
|   # List services that you want to enable: | ||||
|  | ||||
|   # This value determines the NixOS release from which the default | ||||
|   # settings for stateful data, like file locations and database versions | ||||
|   # on your system were taken. It‘s perfectly fine and recommended to leave | ||||
|   # this value at the release version of the first install of this system. | ||||
|   # Before changing this value read the documentation for this option | ||||
|   # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). | ||||
|   system.stateVersion = "23.05"; # Did you read the comment? | ||||
|  | ||||
| } | ||||
| @@ -1,39 +0,0 @@ | ||||
| # Example to create a bios compatible gpt partition | ||||
| { lib, ... }: | ||||
| { | ||||
|   disko.devices = { | ||||
|     disk.disk1 = { | ||||
|       device = lib.mkDefault "/dev/sda"; | ||||
|       type = "disk"; | ||||
|       content = { | ||||
|         type = "gpt"; | ||||
|         partitions = { | ||||
|           boot = { | ||||
|             name = "boot"; | ||||
|             size = "1M"; | ||||
|             type = "EF02"; | ||||
|           }; | ||||
|           esp = { | ||||
|             name = "ESP"; | ||||
|             size = "500M"; | ||||
|             type = "EF00"; | ||||
|             content = { | ||||
|               type = "filesystem"; | ||||
|               format = "vfat"; | ||||
|               mountpoint = "/boot"; | ||||
|             }; | ||||
|           }; | ||||
|           root = { | ||||
|             name = "root"; | ||||
|             size = "100%"; | ||||
|             content = { | ||||
|               type = "filesystem"; | ||||
|               format = "ext4"; | ||||
|               mountpoint = "/"; | ||||
|             }; | ||||
|           }; | ||||
|         }; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
| @@ -1,24 +0,0 @@ | ||||
| # 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_blk" ]; | ||||
|   boot.initrd.kernelModules = [ ]; | ||||
|   boot.kernelModules = [ ]; | ||||
|   boot.extraModulePackages = [ ]; | ||||
|  | ||||
|   # 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.<interface>.useDHCP`. | ||||
|   networking.useDHCP = lib.mkDefault true; | ||||
|   # networking.interfaces.ens3.useDHCP = lib.mkDefault true; | ||||
|  | ||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||||
| } | ||||
| @@ -6,7 +6,7 @@ | ||||
|       ../../base.nix | ||||
|       ../../misc/metrics-exporters.nix | ||||
|  | ||||
|       ./services/grzegorz.nix | ||||
|       ../../modules/grzegorz.nix | ||||
|     ]; | ||||
|  | ||||
|   boot.loader.systemd-boot.enable = true; | ||||
|   | ||||
| @@ -1,11 +0,0 @@ | ||||
| { config, ... }: | ||||
| { | ||||
|   imports = [ ../../../modules/grzegorz.nix ]; | ||||
|  | ||||
|   services.nginx.virtualHosts."${config.networking.fqdn}" = { | ||||
|     serverAliases = [ | ||||
|       "bokhylle.pvv.ntnu.no" | ||||
|       "bokhylle.pvv.org" | ||||
|     ]; | ||||
|   }; | ||||
| } | ||||
| @@ -1,4 +1,4 @@ | ||||
| { config, ... }: let | ||||
| { config, unstable, ... }: let | ||||
|   cfg = config.services.prometheus; | ||||
| in { | ||||
|   sops.secrets."config/mysqld_exporter" = { }; | ||||
|   | ||||
| @@ -1,5 +0,0 @@ | ||||
| { ... }: | ||||
|  | ||||
| { | ||||
|   nix.settings.trusted-users = [ "@nix-builder-users" ]; | ||||
| } | ||||
| @@ -2,8 +2,6 @@ synapse: | ||||
|     turnconfig: ENC[AES256_GCM,data:mASRjYa4C9WRow4x0XYRrlCE5LMJUYaId+o62r1qhsyJPa2LzrI=,iv:5vYdubvMDjLS6soiWx2DzkEAATb9NFbSS/Jhuuz1yI8=,tag:wOW07CQMDbOiZNervee/pg==,type:str] | ||||
|     user_registration: ENC[AES256_GCM,data:ZDZfEEvyw8pg0WzhrdC8747ed+ZR2ZA8/WypJd/iDkmIy2RmxOeI0sE=,iv:l61mOlvzpCql4fC/eubBSU6px21et2WcpxQ6rFl14iw=,tag:sVDEAa3xipKIi/6isCjWew==,type:str] | ||||
|     signing_key: ENC[AES256_GCM,data:6UpfiRlX9pRM7zhdm7Mc8y8EItLzugWkHSgE0tGpEmudCTa1wc60oNbYfhKDWU81DT/U148pZOoX1A==,iv:UlqCPicPm5eNBz1xBMI3A3Rn4t/GtldNIDdMH5MMnLw=,tag:HHaw6iMjEAv5b9mjHSVpwA==,type:str] | ||||
| sliding-sync: | ||||
|     env: ENC[AES256_GCM,data:DsU1qKTy5sn06Y0S5kFUqZHML20n6HdHUdXsQRUw,iv:/TNTc+StAZbf6pBY9CeXdxkx8E+3bak/wOqHyBNMprU=,tag:er5u4FRlSmUZrOT/sj+RhQ==,type:str] | ||||
| coturn: | ||||
|     static-auth-secret: ENC[AES256_GCM,data:y5cG/LyrorkDH+8YrgcV7DY=,iv:ca90q2J3+NOy51mUBy4TMKfYMgWL4hxWDdsKIuxRBgU=,tag:hpFCns1lpi07paHyGB7tGQ==,type:str] | ||||
| mjolnir: | ||||
| @@ -43,8 +41,8 @@ sops: | ||||
|             cGxZVnFhdXRka2drTGdkVk1iM0pFL1kK2ry7b2cLYPfntWi/BV3K2O+mHt3242Ef | ||||
|             sI2JLLQYHeAhxjFdCzP1RDR+Wu/pRxZje6xuTZ9I9TKNmm+LhAXHQw== | ||||
|             -----END AGE ENCRYPTED FILE----- | ||||
|     lastmodified: "2023-10-22T00:31:46Z" | ||||
|     mac: ENC[AES256_GCM,data:UpnaUfRxvdyzBy5x4EC3w5LQ1qWxILTQhpyVPd9whTzQMAivAHT0pVmP9aE4T9w3NcWTaghp+f70GmQXx/OCC6DsRCWtU9pFHRj12YUowM3yB5lVTOomOLZQ9m4gUXw5I2GZHWBJn8CyosDcBMlXz2tiR91v/8Ulh6sDSAO86U0=,iv:5GcgRvbpqDEslZruKHM/TcMaF52A5X7AK41DEbrsRIQ=,tag:ndDgCRyX1aDRnzEUNmpoMw==,type:str] | ||||
|     lastmodified: "2023-09-15T04:40:21Z" | ||||
|     mac: ENC[AES256_GCM,data:ZJVHLbpSu/nIzl5FJfRdg2ymRN5M+zJXNUpi1hBt2MBmvK+1ed2ElhMe5x7pyasSDdaUtXDo7ghkUF7vE46Wo6Z9dvlAvhwWm7Y2AWfUe5SFVwzqlOCjSKRPFrQrL7PcDBtMj4twtwhc4XsfJoUSuigWW2m21BKtEZSuuxLRqLA=,iv:ufFbfMaNHydbkwq6lxN1dQJldkAbtqais/CZFkoDhb4=,tag:uMj0LaiU0obIlw/+HJJdKg==,type:str] | ||||
|     pgp: | ||||
|         - created_at: "2023-05-06T21:31:39Z" | ||||
|           enc: | | ||||
|   | ||||
							
								
								
									
										12
									
								
								shell.nix
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								shell.nix
									
									
									
									
									
								
							| @@ -3,17 +3,5 @@ pkgs.mkShell { | ||||
|   nativeBuildInputs = with pkgs; [ | ||||
|     sops | ||||
|     gnupg | ||||
|     openstackclient | ||||
|   ]; | ||||
|  | ||||
|   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 | ||||
|   ''; | ||||
| } | ||||
|   | ||||
| @@ -3,12 +3,7 @@ | ||||
| { | ||||
|   users.users.danio = { | ||||
|     isNormalUser = true; | ||||
|     extraGroups = [ "drift" "nix-builder-users" ]; | ||||
|     extraGroups = [ "drift" ]; # Enable ‘sudo’ for the user. | ||||
|     shell = pkgs.zsh; | ||||
|  | ||||
|     openssh.authorizedKeys.keys = [ | ||||
|       "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp8iMOx3eTiG5AmDh2KjKcigf7xdRKn9M7iZQ4RqP0np0UN2NUbu+VAMJmkWFyi3JpxmLuhszU0F1xY+3qM3ARduy1cs89B/bBE85xlOeYhcYVmpcgPR5xduS+TuHTBzFAgp+IU7/lgxdjcJ3PH4K0ruGRcX1xrytmk/vdY8IeSk3GVWDRrRbH6brO4cCCFjX0zJ7G6hBQueTPQoOy3jrUvgpRkzZY4ZCuljXtxbuX5X/2qWAkp8ca0iTQ5FzNA5JUyj+DWeEzjIEz6GrckOdV2LjWpT9+CtOqoPZOUudE1J9mJk4snNlMQjE06It7Kr50bpwoPqnxjo7ZjlHFLezl" | ||||
|       "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDpGSDczzDOhTETCj+uB5e3/9QbOCaVW1knM+n1ey0n6LXH7uiPPmzuZiqfzmfbB1z4bjM2zpn3D6Et6zRCrBUjhTZqf/5GoNlvhVA6QYmBmBp98b8oY7juj5cmu55voxD0S5rC1mQMnWAAf8e8OPbkhs9Lt0XlOYdotLNIZQubzWqE2DK45g/h17ELJs+jkNXoalFjLvLXWzE/C+3pYoeNJVGHfVMTIwt7o64E6JXhxuYTYdSIuzd+BjntkSCXzcAzBFMRwkdlFVoBtLUMMcMQl39kcXv7lAQ8pv+8b1j1N9WuQVf1qEAcZguaimI1ifbXP5d841pZPApCj5KXectIEldfTrcwg8rZpd2UfYS/3XCcOuidBGprY7XsU/jz8wHbH68UjUrsLyaOMnG2ChYztnf63vm3gRs3Fc6FqTycpgYOPDeZBVTcMyPGgtiZvhnTeY20xFS5lK6M+dmgaDqH24kPLiwYSpUF2NK+Rg/2bZxvt/GaSr4U6fJGi3FCJOM= root@DanixLaptop" | ||||
|     ]; | ||||
|   }; | ||||
| } | ||||
|   | ||||
| @@ -1,12 +0,0 @@ | ||||
| {pkgs, ...}: | ||||
|  | ||||
| { | ||||
|   users.users.jonmro = { | ||||
|     isNormalUser = true; | ||||
|     extraGroups = [ "wheel" ];  | ||||
|     shell = pkgs.zsh; | ||||
|     openssh.authorizedKeys.keys = [ | ||||
|       "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEm5PfYmfl/0fnAP/3coVlvTw3/TYNLT6r/NwJHZbLAK jonrodtang@gmail.com" | ||||
|     ]; | ||||
|   }; | ||||
| } | ||||
| @@ -37,10 +37,6 @@ in rec { | ||||
|       ipv4 = pvv-ipv4 209; | ||||
|       ipv6 = pvv-ipv6 209; | ||||
|     }; | ||||
|     bob = { | ||||
|       ipv4 = "129.241.152.254"; | ||||
|       # ipv6 = ; | ||||
|     }; | ||||
|     shark = { | ||||
|       ipv4 = pvv-ipv4 196; | ||||
|       ipv6 = pvv-ipv6 196; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user