nvidia: move configurations in respective files #3
					 67 changed files with 1406 additions and 3963 deletions
				
			
		
							
								
								
									
										1
									
								
								.envrc
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								.envrc
									
										
									
									
									
								
							|  | @ -1 +0,0 @@ | ||||||
| export SOPS_AGE_KEY=$(ssh-to-age -i ~/.ssh/id_ed25519 -private-key) |  | ||||||
|  | @ -1,22 +0,0 @@ | ||||||
| on:  |  | ||||||
|   schedule: |  | ||||||
|     - cron: 0 */6 * * * |  | ||||||
|    |  | ||||||
| jobs: |  | ||||||
|   UpdateFlake: |  | ||||||
|     runs-on: native |  | ||||||
| 
 |  | ||||||
|     steps: |  | ||||||
|       - name: Check out repository code |  | ||||||
|         uses: actions/checkout@v4 |  | ||||||
|       - name: Update flake |  | ||||||
|         run: |  |  | ||||||
|           cd ${{ env.FORGEJO_WORKSPACE }} |  | ||||||
|           nix flake update |  | ||||||
|       - name: Commit new Flake.lock |  | ||||||
|         run: | |  | ||||||
|           git config --local user.email "christoph.hollizeck@hey.com" |  | ||||||
|           git config --local user.name "forgjo-actions[bot]" |  | ||||||
|           git commit -a -m "chore: update flake" |  | ||||||
|       - name: Push changes |  | ||||||
|         run: git push |  | ||||||
							
								
								
									
										7
									
								
								.gitattributes
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								.gitattributes
									
										
									
									
										vendored
									
									
								
							|  | @ -1,4 +1,3 @@ | ||||||
| # *.png filter=lfs diff=lfs merge=lfs -text | *.png filter=lfs diff=lfs merge=lfs -text | ||||||
| # *.webp filter=lfs diff=lfs merge=lfs -text | *.webp filter=lfs diff=lfs merge=lfs -text | ||||||
| # *.jpg filter=lfs diff=lfs merge=lfs -text | *.jpg filter=lfs diff=lfs merge=lfs -text | ||||||
| * !text !filter !merge !diff |  | ||||||
|  |  | ||||||
							
								
								
									
										24
									
								
								.github/templates/PULL_REQUEST_TEMPLATE.md
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.github/templates/PULL_REQUEST_TEMPLATE.md
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | <!--- Provide a general summary of your changes in the Title above --> | ||||||
|  | 
 | ||||||
|  | ## Description | ||||||
|  | <!--- Describe your changes in detail --> | ||||||
|  | 
 | ||||||
|  | - Built on platform(s) | ||||||
|  |   - [ ] x86_64-linux | ||||||
|  |   - [ ] aarch64-linux | ||||||
|  |   - [ ] x86_64-darwin | ||||||
|  |   - [ ] aarch64-darwin | ||||||
|  | 
 | ||||||
|  | ## Types of changes | ||||||
|  | <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> | ||||||
|  | - [ ] Bug fix (non-breaking change which fixes an issue) | ||||||
|  | - [ ] New feature (non-breaking change which adds functionality) | ||||||
|  | - [ ] Breaking change (fix or feature that would cause existing functionality to change) | ||||||
|  | 
 | ||||||
|  | ## Checklist: | ||||||
|  | <!--- Go over all the following points, and put an `x` in all the boxes that apply. --> | ||||||
|  | <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> | ||||||
|  | - [ ] My change requires a change to the documentation. | ||||||
|  | - [ ] I have updated the documentation accordingly. | ||||||
|  | - [ ] I have added tests to cover my changes. | ||||||
|  | - [ ] All new and existing tests passed. | ||||||
							
								
								
									
										11
									
								
								.sops.yaml
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								.sops.yaml
									
										
									
									
									
								
							|  | @ -1,8 +1,5 @@ | ||||||
| keys: | keys: | ||||||
|   - &primary age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85 |   - &primary age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85 | ||||||
|   - &yggdrasil age1xxv54tzxz6n4cp4undmejl2lyd7k7s3yh9q0z6ed83evfuz6asqsqhaduv |  | ||||||
|   - &loptland age13xshg5e6ucvnu3vqgn344mxpk5kcqutv2lf4gdffvwadq0ku5ewqy4cck6 |  | ||||||
|   - &nixberry age1ev7c7xfz0gmj6p5p8ugzz55y28lsn8fjlk0d8wc3w9drmw4e69ys6z5yg4 |  | ||||||
| creation_rules: | creation_rules: | ||||||
|   - path_regex: secrets/secrets.yaml$ |   - path_regex: secrets/secrets.yaml$ | ||||||
|     key_groups:  |     key_groups:  | ||||||
|  | @ -13,16 +10,8 @@ creation_rules: | ||||||
|     key_groups:  |     key_groups:  | ||||||
|     - age: |     - age: | ||||||
|       - *primary |       - *primary | ||||||
|       - *yggdrasil |  | ||||||
|        |        | ||||||
|   - path_regex: secrets/secrets-loptland.yaml$ |   - path_regex: secrets/secrets-loptland.yaml$ | ||||||
|     key_groups:  |     key_groups:  | ||||||
|     - age: |     - age: | ||||||
|       - *primary |       - *primary | ||||||
|       - *loptland |  | ||||||
|        |  | ||||||
|   - path_regex: secrets/secrets-nixberry.yaml$ |  | ||||||
|     key_groups:  |  | ||||||
|     - age: |  | ||||||
|       - *primary |  | ||||||
|       - *nixberry |  | ||||||
|  |  | ||||||
							
								
								
									
										1444
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										1444
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										125
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										125
									
								
								flake.nix
									
										
									
									
									
								
							|  | @ -2,12 +2,12 @@ | ||||||
|   description = "NixOs Config"; |   description = "NixOs Config"; | ||||||
| 
 | 
 | ||||||
|   inputs = { |   inputs = { | ||||||
|  |     # nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; | ||||||
|     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; |     nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; | ||||||
|     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; |     nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; | ||||||
| 
 | 
 | ||||||
|     nixpkgs-master.url = "github:nixos/nixpkgs/master"; |     nixpkgs-master.url = "github:nixos/nixpkgs/master"; | ||||||
|     nixpkgs-latest-factorio.url = "github:Daholli/nixpkgs/e880129391be2f558d6c205cfd931be338b3b707"; |     nixpkgs-latest-factorio.url = "github:Daholli/nixpkgs/d941e9aa2d89f377d45516c5edd765fef15ea90a"; | ||||||
|     nixpkgs-tuya-vacuum.url = "github:Daholli/nixpkgs/84b34e39e7a0879367189f34401191f6a0364bcf"; |  | ||||||
| 
 | 
 | ||||||
|     home-manager = { |     home-manager = { | ||||||
|       url = "github:nix-community/home-manager/master"; |       url = "github:nix-community/home-manager/master"; | ||||||
|  | @ -28,47 +28,21 @@ | ||||||
|       inputs.nixpkgs.follows = "nixpkgs-unstable"; |       inputs.nixpkgs.follows = "nixpkgs-unstable"; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     nh-flake = { |  | ||||||
|       url = "github:nix-community/nh"; |  | ||||||
|       inputs.nixpkgs.follows = "nixpkgs-unstable"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     ### |     ### | ||||||
|     # hyprland stuff |     # hyprland stuff | ||||||
|     hyprland = { |     hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; | ||||||
|       url = "github:hyprwm/Hyprland"; |     hyprlock.url = "github:hyprwm/hyprlock"; | ||||||
|       inputs.nixpkgs.follows = "nixpkgs-unstable"; |  | ||||||
|     }; |  | ||||||
|     hyprlock = { |  | ||||||
|       url = "github:hyprwm/hyprlock"; |  | ||||||
|       inputs.nixpkgs.follows = "nixpkgs-unstable"; |  | ||||||
|     }; |  | ||||||
|     hyprland-plugins = { |     hyprland-plugins = { | ||||||
|       url = "github:hyprwm/hyprland-plugins"; |       url = "github:hyprwm/hyprland-plugins"; | ||||||
|       inputs.hyprland.follows = "hyprland"; |       inputs.hyprland.follows = "hyprland"; | ||||||
|     }; |     }; | ||||||
|  | 
 | ||||||
|     hy3 = { |     hy3 = { | ||||||
|       url = "github:outfoxxed/hy3"; |       url = "github:outfoxxed/hy3"; | ||||||
|       inputs.hyprland.follows = "hyprland"; |       inputs.hyprland.follows = "hyprland"; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     ### |     hyprpanel.url = "github:Jas-SinghFSU/HyprPanel"; | ||||||
|     # Niri |  | ||||||
|     niri = { |  | ||||||
|       url = "github:YaLTeR/niri"; |  | ||||||
|       inputs = { |  | ||||||
|         nixpkgs.follows = "nixpkgs"; |  | ||||||
|         rust-overlay.follows = ""; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     niri-flake = { |  | ||||||
|       url = "github:sodiboo/niri-flake"; |  | ||||||
|       inputs = { |  | ||||||
|         niri-stable.follows = "niri"; |  | ||||||
|         nixpkgs.follows = "nixpkgs"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 | 
 | ||||||
|     ### |     ### | ||||||
|     # Snowfall dependencies |     # Snowfall dependencies | ||||||
|  | @ -77,6 +51,17 @@ | ||||||
|       inputs.nixpkgs.follows = "nixpkgs"; |       inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |     snowfall-flake = { | ||||||
|  |       url = "github:snowfallorg/flake"; | ||||||
|  |       inputs.nixpkgs.follows = "nixpkgs-unstable"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     # still not sure if I like helix or nvim more, for now helix does mostly everything I need it to | ||||||
|  |     kickstartnvim = { | ||||||
|  |       url = "github:Daholli/kickstart-nix-nvim"; | ||||||
|  |       inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|     helix = { |     helix = { | ||||||
|       url = "github:helix-editor/helix"; |       url = "github:helix-editor/helix"; | ||||||
|       inputs.nixpkgs.follows = "nixpkgs"; |       inputs.nixpkgs.follows = "nixpkgs"; | ||||||
|  | @ -91,43 +76,10 @@ | ||||||
|     sops-nix.url = "github:Mic92/sops-nix"; |     sops-nix.url = "github:Mic92/sops-nix"; | ||||||
| 
 | 
 | ||||||
|     ## temporary |     ## temporary | ||||||
|     zen-browser.url = "github:0xc000022070/zen-browser-flake"; |     zen-browser.url = "github:ch4og/zen-browser-flake"; | ||||||
| 
 |  | ||||||
|     raspberry-pi-nix = { |  | ||||||
|       url = "github:JamieMagee/raspberry-pi-nix/25118248489e047a7da43a21409b457aa2af315e"; |  | ||||||
|       inputs.nixpkgs.follows = "nixpkgs"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; |  | ||||||
|     catppuccin.url = "github:catppuccin/nix"; |  | ||||||
| 
 |  | ||||||
|     ############### |  | ||||||
|     # homeassitant |  | ||||||
| 
 |  | ||||||
|     tuya-vaccum-maps = { |  | ||||||
|       url = "github:jaidenlabelle/tuya-vacuum-maps"; |  | ||||||
|       flake = false; |  | ||||||
|     }; |  | ||||||
| 
 | 
 | ||||||
|     ################ |     ################ | ||||||
|     ## inputs for dev shells |     ## inputs for dev shells | ||||||
|     # |  | ||||||
|     devenv = { |  | ||||||
|       url = "github:cachix/devenv"; |  | ||||||
|       # inputs.nixpkgs.follows = "nixpkgs"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     # zig |  | ||||||
|     zig-overlay = { |  | ||||||
|       url = "github:mitchellh/zig-overlay"; |  | ||||||
|       inputs.nixpkgs.follows = "nixpkgs"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     zls = { |  | ||||||
|       url = "github:zigtools/zls"; |  | ||||||
|       inputs.nixpkgs.follows = "nixpkgs"; |  | ||||||
|       inputs.zig-overlay.follows = "zig-overlay"; |  | ||||||
|     }; |  | ||||||
| 
 | 
 | ||||||
|     # rust |     # rust | ||||||
|     fenix = { |     fenix = { | ||||||
|  | @ -161,52 +113,17 @@ | ||||||
|       outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; }; |       outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; }; | ||||||
| 
 | 
 | ||||||
|       overlays = with inputs; [ |       overlays = with inputs; [ | ||||||
|         devenv.overlays.default |         snowfall-flake.overlays.default | ||||||
|         niri-flake.overlays.niri |         kickstartnvim.overlays.default | ||||||
|       ]; |         hyprpanel.overlay | ||||||
| 
 |  | ||||||
|       homes.modules = with inputs; [ |  | ||||||
|         sops-nix.homeManagerModules.sops |  | ||||||
|         catppuccin.homeModules.catppuccin |  | ||||||
|       ]; |       ]; | ||||||
| 
 | 
 | ||||||
|       systems.modules.nixos = with inputs; [ |       systems.modules.nixos = with inputs; [ | ||||||
|         home-manager.nixosModules.home-manager |         home-manager.nixosModules.home-manager | ||||||
|         nix-ld.nixosModules.nix-ld |         nix-ld.nixosModules.nix-ld | ||||||
|         sops-nix.nixosModules.sops |         sops-nix.nixosModules.sops | ||||||
| 
 |  | ||||||
|         catppuccin.nixosModules.catppuccin |  | ||||||
|       ]; |  | ||||||
| 
 |  | ||||||
|       systems.hosts.yggdrasil.modules = with inputs; [ |  | ||||||
|         niri-flake.nixosModules.niri |  | ||||||
|       ]; |  | ||||||
| 
 |  | ||||||
|       homes.hosts.yggdrasil.modules = with inputs; [ |  | ||||||
|         niri-flake.homeModules.niri |  | ||||||
|       ]; |  | ||||||
| 
 |  | ||||||
|       systems.hosts.nixberry.modules = with inputs; [ |  | ||||||
|         raspberry-pi-nix.nixosModules.raspberry-pi |  | ||||||
|         raspberry-pi-nix.nixosModules.sd-image |  | ||||||
|       ]; |  | ||||||
| 
 |  | ||||||
|       systems.hosts.loptland.modules = with inputs; [ |  | ||||||
|         simple-nixos-mailserver.nixosModules.default |  | ||||||
|       ]; |       ]; | ||||||
| 
 | 
 | ||||||
|       systems.hosts.wsl.modules = with inputs; [ nixos-wsl.nixosModules.default ]; |       systems.hosts.wsl.modules = with inputs; [ nixos-wsl.nixosModules.default ]; | ||||||
|     } |  | ||||||
|     // rec { |  | ||||||
|       self = inputs.self; |  | ||||||
| 
 |  | ||||||
|       hydraJobs = { |  | ||||||
|         # hosts = lib.mapAttrs (_: cfg: cfg.config.system.build.toplevel) ( |  | ||||||
|         #   lib.filterAttrs (name: cfg: name != "nixberry") self.outputs.nixosConfigurations |  | ||||||
|         # ); |  | ||||||
|         hosts = lib.mapAttrs (_: cfg: cfg.config.system.build.toplevel) self.outputs.nixosConfigurations; |  | ||||||
|         packages = self.packages; |  | ||||||
|         shells = lib.filterAttrs (name: shell: name == "x86_64-linux") self.devShells; |  | ||||||
|       }; |  | ||||||
|     }; |     }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,22 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   osConfig ? { }, |  | ||||||
|   format ? "unknown", |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| with lib.wyrdgard; |  | ||||||
| { |  | ||||||
|   wyrdgard = { |  | ||||||
|     apps = { |  | ||||||
|       kitty = enabled; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     tools = { |  | ||||||
|       direnv = enabled; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   home.stateVersion = "24.11"; |  | ||||||
| } |  | ||||||
|  | @ -17,4 +17,6 @@ with lib.wyrdgard; | ||||||
|       direnv = enabled; |       direnv = enabled; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | 
 | ||||||
|  |   home.stateVersion = "24.11"; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,291 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   namespace, |  | ||||||
|   osConfig ? { }, |  | ||||||
|   format ? "unknown", |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| with lib.${namespace}; |  | ||||||
| { |  | ||||||
|   wyrdgard = { |  | ||||||
|     apps = { |  | ||||||
|       kitty = enabled; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     tools = { |  | ||||||
|       direnv = enabled; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   services.easyeffects = { |  | ||||||
|     enable = true; |  | ||||||
|     preset = "jtrv-preset"; |  | ||||||
|     extraPresets = { |  | ||||||
|       jtrv-preset = { |  | ||||||
|         input = { |  | ||||||
|           blocklist = [ |  | ||||||
| 
 |  | ||||||
|           ]; |  | ||||||
|           "compressor#0" = { |  | ||||||
|             attack = 5; |  | ||||||
|             boost-amount = 6; |  | ||||||
|             boost-threshold = -72; |  | ||||||
|             bypass = false; |  | ||||||
|             dry = -100; |  | ||||||
|             hpf-frequency = 10; |  | ||||||
|             hpf-mode = "off"; |  | ||||||
|             input-gain = 0; |  | ||||||
|             knee = -6; |  | ||||||
|             lpf-frequency = 20000; |  | ||||||
|             lpf-mode = "off"; |  | ||||||
|             makeup = 0; |  | ||||||
|             mode = "Downward"; |  | ||||||
|             output-gain = 0; |  | ||||||
|             ratio = 4; |  | ||||||
|             release = 75; |  | ||||||
|             release-threshold = -40; |  | ||||||
|             sidechain = { |  | ||||||
|               lookahead = 0; |  | ||||||
|               mode = "RMS"; |  | ||||||
|               preamp = 0; |  | ||||||
|               reactivity = 10; |  | ||||||
|               source = "Middle"; |  | ||||||
|               stereo-split-source = "Left/Right"; |  | ||||||
|               type = "Feed-forward"; |  | ||||||
|             }; |  | ||||||
|             stereo-split = false; |  | ||||||
|             threshold = -20; |  | ||||||
|             wet = 0; |  | ||||||
|           }; |  | ||||||
|           "deesser#0" = { |  | ||||||
|             bypass = false; |  | ||||||
|             detection = "RMS"; |  | ||||||
|             f1-freq = 3000.0; |  | ||||||
|             f1-level = -6.0; |  | ||||||
|             f2-freq = 5000.0; |  | ||||||
|             f2-level = -6.0; |  | ||||||
|             f2-q = 1.5000000000000004; |  | ||||||
|             input-gain = 0.0; |  | ||||||
|             laxity = 15; |  | ||||||
|             makeup = 0; |  | ||||||
|             mode = "Wide"; |  | ||||||
|             output-gain = 0; |  | ||||||
|             ratio = 5; |  | ||||||
|             sc-listen = false; |  | ||||||
|             threshold = -20; |  | ||||||
|           }; |  | ||||||
|           "equalizer#0" = { |  | ||||||
|             balance = 0; |  | ||||||
|             bypass = false; |  | ||||||
|             input-gain = 0; |  | ||||||
|             left = { |  | ||||||
|               band0 = { |  | ||||||
|                 frequency = 50; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "RLC (BT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Hi-pass"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band1 = { |  | ||||||
|                 frequency = 90; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "RLC (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Lo-shelf"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band2 = { |  | ||||||
|                 frequency = 425; |  | ||||||
|                 gain = -2; |  | ||||||
|                 mode = "BWC (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.9999999999999998; |  | ||||||
|                 slope = "x2"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Bell"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band3 = { |  | ||||||
|                 frequency = 3500; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "BWC (BT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x2"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Bell"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band4 = { |  | ||||||
|                 frequency = 9000; |  | ||||||
|                 gain = 2; |  | ||||||
|                 mode = "LRX (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Hi-shelf"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|             }; |  | ||||||
|             mode = "IIR"; |  | ||||||
|             num-bands = 5; |  | ||||||
|             output-gain = 0; |  | ||||||
|             pitch-left = 0; |  | ||||||
|             pitch-right = 0; |  | ||||||
|             right = { |  | ||||||
|               band0 = { |  | ||||||
|                 frequency = 50; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "RLC (BT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Hi-pass"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band1 = { |  | ||||||
|                 frequency = 90; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "RLC (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.9999999999999998; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Lo-shelf"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band2 = { |  | ||||||
|                 frequency = 425; |  | ||||||
|                 gain = -2; |  | ||||||
|                 mode = "BWC (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x2"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Bell"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band3 = { |  | ||||||
|                 frequency = 3500; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "BWC (BT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x2"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Bell"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band4 = { |  | ||||||
|                 frequency = 9000; |  | ||||||
|                 gain = 2; |  | ||||||
|                 mode = "LRX (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Hi-shelf"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|             }; |  | ||||||
|             split-channels = false; |  | ||||||
|           }; |  | ||||||
|           "gate#0" = { |  | ||||||
|             attack = 1; |  | ||||||
|             bypass = false; |  | ||||||
|             curve-threshold = -50; |  | ||||||
|             curve-zone = -2; |  | ||||||
|             dry = -100; |  | ||||||
|             hpf-frequency = 10; |  | ||||||
|             hpf-mode = "off"; |  | ||||||
|             hysteresis = true; |  | ||||||
|             hysteresis-threshold = -3; |  | ||||||
|             hysteresis-zone = -1; |  | ||||||
|             input-gain = 0; |  | ||||||
|             lpf-frequency = 20000; |  | ||||||
|             lpf-mode = "off"; |  | ||||||
|             makeup = 1; |  | ||||||
|             output-gain = 0; |  | ||||||
|             reduction = -15; |  | ||||||
|             release = 200; |  | ||||||
|             sidechain = { |  | ||||||
|               input = "Internal"; |  | ||||||
|               lookahead = 0; |  | ||||||
|               mode = "RMS"; |  | ||||||
|               preamp = 0; |  | ||||||
|               reactivity = 10; |  | ||||||
|               source = "Middle"; |  | ||||||
|               stereo-split-source = "Left/Right"; |  | ||||||
|             }; |  | ||||||
|             stereo-split = false; |  | ||||||
|             wet = -1; |  | ||||||
|           }; |  | ||||||
|           "limiter#0" = { |  | ||||||
|             alr = false; |  | ||||||
|             alr-attack = 5; |  | ||||||
|             alr-knee = 0; |  | ||||||
|             alr-release = 50; |  | ||||||
|             attack = 1; |  | ||||||
|             bypass = false; |  | ||||||
|             dithering = "16bit"; |  | ||||||
|             external-sidechain = false; |  | ||||||
|             gain-boost = true; |  | ||||||
|             input-gain = 0; |  | ||||||
|             lookahead = 5; |  | ||||||
|             mode = "Herm Wide"; |  | ||||||
|             output-gain = 0; |  | ||||||
|             oversampling = "Half x2(2L)"; |  | ||||||
|             release = 5; |  | ||||||
|             sidechain-preamp = 0; |  | ||||||
|             stereo-link = 100; |  | ||||||
|             threshold = -1; |  | ||||||
|           }; |  | ||||||
|           plugins_order = [ |  | ||||||
|             "rnnoise#0" |  | ||||||
|             "gate#0" |  | ||||||
|             "deesser#0" |  | ||||||
|             "compressor#0" |  | ||||||
|             "equalizer#0" |  | ||||||
|             "speex#0" |  | ||||||
|             "limiter#0" |  | ||||||
|           ]; |  | ||||||
|           "rnnoise#0" = { |  | ||||||
|             bypass = false; |  | ||||||
|             enable-vad = false; |  | ||||||
|             input-gain = 0; |  | ||||||
|             model-path = ""; |  | ||||||
|             output-gain = 0; |  | ||||||
|             release = 20; |  | ||||||
|             vad-thres = 50; |  | ||||||
|             wet = 0; |  | ||||||
|           }; |  | ||||||
|           "speex#0" = { |  | ||||||
|             bypass = false; |  | ||||||
|             enable-agc = false; |  | ||||||
|             enable-denoise = false; |  | ||||||
|             enable-dereverb = false; |  | ||||||
|             input-gain = 0; |  | ||||||
|             noise-suppression = -70; |  | ||||||
|             output-gain = 0; |  | ||||||
|             vad = { |  | ||||||
|               enable = true; |  | ||||||
|               probability-continue = 90; |  | ||||||
|               probability-start = 95; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -17,6 +17,4 @@ with lib.wyrdgard; | ||||||
|       direnv = enabled; |       direnv = enabled; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 |  | ||||||
|   home.packages = with pkgs; [ diebahn ]; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2,12 +2,11 @@ | ||||||
|   lib, |   lib, | ||||||
|   pkgs, |   pkgs, | ||||||
|   config, |   config, | ||||||
|   namespace, |  | ||||||
|   osConfig ? { }, |   osConfig ? { }, | ||||||
|   format ? "unknown", |   format ? "unknown", | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| with lib.${namespace}; | with lib.wyrdgard; | ||||||
| { | { | ||||||
|   wyrdgard = { |   wyrdgard = { | ||||||
|     apps = { |     apps = { | ||||||
|  | @ -19,273 +18,5 @@ with lib.${namespace}; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   services.easyeffects = { |   home.stateVersion = "23.11"; | ||||||
|     enable = true; |  | ||||||
|     preset = "jtrv-preset"; |  | ||||||
|     extraPresets = { |  | ||||||
|       jtrv-preset = { |  | ||||||
|         input = { |  | ||||||
|           blocklist = [ |  | ||||||
| 
 |  | ||||||
|           ]; |  | ||||||
|           "compressor#0" = { |  | ||||||
|             attack = 5; |  | ||||||
|             boost-amount = 6; |  | ||||||
|             boost-threshold = -72; |  | ||||||
|             bypass = false; |  | ||||||
|             dry = -100; |  | ||||||
|             hpf-frequency = 10; |  | ||||||
|             hpf-mode = "off"; |  | ||||||
|             input-gain = 0; |  | ||||||
|             knee = -6; |  | ||||||
|             lpf-frequency = 20000; |  | ||||||
|             lpf-mode = "off"; |  | ||||||
|             makeup = 0; |  | ||||||
|             mode = "Downward"; |  | ||||||
|             output-gain = 0; |  | ||||||
|             ratio = 4; |  | ||||||
|             release = 75; |  | ||||||
|             release-threshold = -40; |  | ||||||
|             sidechain = { |  | ||||||
|               lookahead = 0; |  | ||||||
|               mode = "RMS"; |  | ||||||
|               preamp = 0; |  | ||||||
|               reactivity = 10; |  | ||||||
|               source = "Middle"; |  | ||||||
|               stereo-split-source = "Left/Right"; |  | ||||||
|               type = "Feed-forward"; |  | ||||||
|             }; |  | ||||||
|             stereo-split = false; |  | ||||||
|             threshold = -20; |  | ||||||
|             wet = 0; |  | ||||||
|           }; |  | ||||||
|           "deesser#0" = { |  | ||||||
|             bypass = false; |  | ||||||
|             detection = "RMS"; |  | ||||||
|             f1-freq = 3000.0; |  | ||||||
|             f1-level = -6.0; |  | ||||||
|             f2-freq = 5000.0; |  | ||||||
|             f2-level = -6.0; |  | ||||||
|             f2-q = 1.5000000000000004; |  | ||||||
|             input-gain = 0.0; |  | ||||||
|             laxity = 15; |  | ||||||
|             makeup = 0; |  | ||||||
|             mode = "Wide"; |  | ||||||
|             output-gain = 0; |  | ||||||
|             ratio = 5; |  | ||||||
|             sc-listen = false; |  | ||||||
|             threshold = -20; |  | ||||||
|           }; |  | ||||||
|           "equalizer#0" = { |  | ||||||
|             balance = 0; |  | ||||||
|             bypass = false; |  | ||||||
|             input-gain = 0; |  | ||||||
|             left = { |  | ||||||
|               band0 = { |  | ||||||
|                 frequency = 50; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "RLC (BT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Hi-pass"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band1 = { |  | ||||||
|                 frequency = 90; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "RLC (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Lo-shelf"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band2 = { |  | ||||||
|                 frequency = 425; |  | ||||||
|                 gain = -2; |  | ||||||
|                 mode = "BWC (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.9999999999999998; |  | ||||||
|                 slope = "x2"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Bell"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band3 = { |  | ||||||
|                 frequency = 3500; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "BWC (BT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x2"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Bell"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band4 = { |  | ||||||
|                 frequency = 9000; |  | ||||||
|                 gain = 2; |  | ||||||
|                 mode = "LRX (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Hi-shelf"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|             }; |  | ||||||
|             mode = "IIR"; |  | ||||||
|             num-bands = 5; |  | ||||||
|             output-gain = 0; |  | ||||||
|             pitch-left = 0; |  | ||||||
|             pitch-right = 0; |  | ||||||
|             right = { |  | ||||||
|               band0 = { |  | ||||||
|                 frequency = 50; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "RLC (BT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Hi-pass"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band1 = { |  | ||||||
|                 frequency = 90; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "RLC (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.9999999999999998; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Lo-shelf"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band2 = { |  | ||||||
|                 frequency = 425; |  | ||||||
|                 gain = -2; |  | ||||||
|                 mode = "BWC (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x2"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Bell"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band3 = { |  | ||||||
|                 frequency = 3500; |  | ||||||
|                 gain = 3; |  | ||||||
|                 mode = "BWC (BT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x2"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Bell"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|               band4 = { |  | ||||||
|                 frequency = 9000; |  | ||||||
|                 gain = 2; |  | ||||||
|                 mode = "LRX (MT)"; |  | ||||||
|                 mute = false; |  | ||||||
|                 q = 0.7; |  | ||||||
|                 slope = "x1"; |  | ||||||
|                 solo = false; |  | ||||||
|                 type = "Hi-shelf"; |  | ||||||
|                 width = 4; |  | ||||||
|               }; |  | ||||||
|             }; |  | ||||||
|             split-channels = false; |  | ||||||
|           }; |  | ||||||
|           "gate#0" = { |  | ||||||
|             attack = 1; |  | ||||||
|             bypass = false; |  | ||||||
|             curve-threshold = -50; |  | ||||||
|             curve-zone = -2; |  | ||||||
|             dry = -100; |  | ||||||
|             hpf-frequency = 10; |  | ||||||
|             hpf-mode = "off"; |  | ||||||
|             hysteresis = true; |  | ||||||
|             hysteresis-threshold = -3; |  | ||||||
|             hysteresis-zone = -1; |  | ||||||
|             input-gain = 0; |  | ||||||
|             lpf-frequency = 20000; |  | ||||||
|             lpf-mode = "off"; |  | ||||||
|             makeup = 1; |  | ||||||
|             output-gain = 0; |  | ||||||
|             reduction = -15; |  | ||||||
|             release = 200; |  | ||||||
|             sidechain = { |  | ||||||
|               input = "Internal"; |  | ||||||
|               lookahead = 0; |  | ||||||
|               mode = "RMS"; |  | ||||||
|               preamp = 0; |  | ||||||
|               reactivity = 10; |  | ||||||
|               source = "Middle"; |  | ||||||
|               stereo-split-source = "Left/Right"; |  | ||||||
|             }; |  | ||||||
|             stereo-split = false; |  | ||||||
|             wet = -1; |  | ||||||
|           }; |  | ||||||
|           "limiter#0" = { |  | ||||||
|             alr = false; |  | ||||||
|             alr-attack = 5; |  | ||||||
|             alr-knee = 0; |  | ||||||
|             alr-release = 50; |  | ||||||
|             attack = 1; |  | ||||||
|             bypass = false; |  | ||||||
|             dithering = "16bit"; |  | ||||||
|             external-sidechain = false; |  | ||||||
|             gain-boost = true; |  | ||||||
|             input-gain = 0; |  | ||||||
|             lookahead = 5; |  | ||||||
|             mode = "Herm Wide"; |  | ||||||
|             output-gain = 0; |  | ||||||
|             oversampling = "Half x2(2L)"; |  | ||||||
|             release = 5; |  | ||||||
|             sidechain-preamp = 0; |  | ||||||
|             stereo-link = 100; |  | ||||||
|             threshold = -1; |  | ||||||
|           }; |  | ||||||
|           plugins_order = [ |  | ||||||
|             "rnnoise#0" |  | ||||||
|             "gate#0" |  | ||||||
|             "deesser#0" |  | ||||||
|             "compressor#0" |  | ||||||
|             "equalizer#0" |  | ||||||
|             "speex#0" |  | ||||||
|             "limiter#0" |  | ||||||
|           ]; |  | ||||||
|           "rnnoise#0" = { |  | ||||||
|             bypass = false; |  | ||||||
|             enable-vad = false; |  | ||||||
|             input-gain = 0; |  | ||||||
|             model-path = ""; |  | ||||||
|             output-gain = 0; |  | ||||||
|             release = 20; |  | ||||||
|             vad-thres = 50; |  | ||||||
|             wet = 0; |  | ||||||
|           }; |  | ||||||
|           "speex#0" = { |  | ||||||
|             bypass = false; |  | ||||||
|             enable-agc = false; |  | ||||||
|             enable-denoise = false; |  | ||||||
|             enable-dereverb = false; |  | ||||||
|             input-gain = 0; |  | ||||||
|             noise-suppression = -70; |  | ||||||
|             output-gain = 0; |  | ||||||
|             vad = { |  | ||||||
|               enable = true; |  | ||||||
|               probability-continue = 90; |  | ||||||
|               probability-start = 95; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -18,14 +18,13 @@ in | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     catppuccin.fish.enable = true; |  | ||||||
| 
 |  | ||||||
|     programs = { |     programs = { | ||||||
|       fish = { |       fish = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         shellInit = '' |         shellInit = '' | ||||||
|           zoxide init fish | source |           zoxide init fish | source | ||||||
|           direnv hook fish | source |           direnv hook fish | source | ||||||
|  |           source ~/.config/op/plugins.sh | ||||||
| 
 | 
 | ||||||
|           set -x LESS_TERMCAP_mb \e'[01;32m' |           set -x LESS_TERMCAP_mb \e'[01;32m' | ||||||
|           set -x LESS_TERMCAP_md \e'[01;32m' |           set -x LESS_TERMCAP_md \e'[01;32m' | ||||||
|  | @ -39,15 +38,9 @@ in | ||||||
|         ''; |         ''; | ||||||
|         shellAliases = { |         shellAliases = { | ||||||
|           vim = "hx"; |           vim = "hx"; | ||||||
|           ls = "eza -lah --icons --git"; |           ls = "eza -lh --icons --git"; | ||||||
|           lss = "ls --total-size"; |           lss = "ls --total-size"; | ||||||
|         }; |         }; | ||||||
|         functions = { |  | ||||||
|           checkHash = "nix hash to-sri --type sha256 $(nix-prefetch-url --unpack $argv)"; |  | ||||||
|           deployNixberry = "nixos-rebuild switch --flake .#nixberry --target-host nixberry --sudo --ask-sudo-password"; |  | ||||||
|           deployLoptland = "nixos-rebuild switch --flake .#loptland --target-host christophhollizeck.dev --sudo --ask-sudo-password"; |  | ||||||
|           checkPR = ''cd /home/cholli/projects/nixpkgs && ${lib.getExe pkgs.nixpkgs-review} pr $argv --post-result --systems "x86_64-linux aarch64-linux"''; |  | ||||||
|         }; |  | ||||||
|         plugins = with pkgs.fishPlugins; [ |         plugins = with pkgs.fishPlugins; [ | ||||||
|           { |           { | ||||||
|             name = "forgit"; |             name = "forgit"; | ||||||
|  |  | ||||||
|  | @ -16,10 +16,9 @@ in | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     catppuccin.starship.enable = false; |  | ||||||
|     programs = { |     programs = { | ||||||
|       fish.shellInit = " |       fish.shellInit = " | ||||||
| 	        starship init fish | source | 	starship init fish | source | ||||||
|       "; |       "; | ||||||
| 
 | 
 | ||||||
|       starship = { |       starship = { | ||||||
|  |  | ||||||
|  | @ -19,8 +19,6 @@ in | ||||||
| 
 | 
 | ||||||
|     home.sessionVariables.TERMINAL = "kitty"; |     home.sessionVariables.TERMINAL = "kitty"; | ||||||
| 
 | 
 | ||||||
|     catppuccin.kitty.enable = true; |  | ||||||
| 
 |  | ||||||
|     # TODO: move this to a thunar specific module |     # TODO: move this to a thunar specific module | ||||||
|     home.file.".config/Thunar/uca.xml".text = '' |     home.file.".config/Thunar/uca.xml".text = '' | ||||||
|       <?xml version="1.0" encoding="UTF-8"?> |       <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | @ -42,9 +40,9 @@ in | ||||||
| 
 | 
 | ||||||
|     programs.kitty = { |     programs.kitty = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       # themeFile = "tokyo_night_night"; |       themeFile = "tokyo_night_night"; | ||||||
|       font = { |       font = { | ||||||
|         name = "FiraCode Nerd Font"; |         name = "Code New Roman"; | ||||||
|         size = 15; |         size = 15; | ||||||
|       }; |       }; | ||||||
|       shellIntegration.enableFishIntegration = true; |       shellIntegration.enableFishIntegration = true; | ||||||
|  |  | ||||||
|  | @ -16,82 +16,20 @@ in | ||||||
|     enable = mkBoolOpt true "Enable Git (Default true)"; |     enable = mkBoolOpt true "Enable Git (Default true)"; | ||||||
|     userName = mkOpt types.str user.fullName "The name to configure git with."; |     userName = mkOpt types.str user.fullName "The name to configure git with."; | ||||||
|     userEmail = mkOpt types.str user.email "The email to configure git with."; |     userEmail = mkOpt types.str user.email "The email to configure git with."; | ||||||
|     signingKey = mkOpt types.str "ACCFA2DB47795D9E" "The pub key to sign commits with."; |     signingKey = mkOpt types.str "6995A5FF33791B7B" "The pub key to sign commits with."; | ||||||
|     signByDefault = mkOpt types.bool true "Whether to sign commits by default."; |     signByDefault = mkOpt types.bool true "Whether to sign commits by default."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     systemd.user = { |  | ||||||
|       services."git-maintenance@" = { |  | ||||||
|         Unit = { |  | ||||||
|           Description = "Optimize Git repositories data"; |  | ||||||
|         }; |  | ||||||
|         Service = { |  | ||||||
|           Type = "oneshot"; |  | ||||||
|           ExecStart = ''"${lib.getExe config.programs.git.package}" --exec-path="${lib.getBin config.programs.git.package}/bin" -c credential.interactive=false -c core.askPass=true for-each-repo --config=maintenance.repo maintenance run --schedule=%i''; |  | ||||||
|           LockPersonality = "yes"; |  | ||||||
|           MemoryDenyWriteExecute = "yes"; |  | ||||||
|           NoNewPrivileges = "yes"; |  | ||||||
|           RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_VSOCK"; |  | ||||||
|           RestrictNamespaces = "yes"; |  | ||||||
|           RestrictRealtime = "yes"; |  | ||||||
|           RestrictSUIDSGID = "yes"; |  | ||||||
|           SystemCallArchitectures = "native"; |  | ||||||
|           SystemCallFilter = "@system-service"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|       timers = { |  | ||||||
|         "git-maintenance@hourly" = { |  | ||||||
|           Unit = { |  | ||||||
|             Description = "Optimize Git repositories data"; |  | ||||||
|           }; |  | ||||||
|           Timer = { |  | ||||||
|             OnCalendar = "*-*-* *:00:00"; |  | ||||||
|             Persistent = true; |  | ||||||
|           }; |  | ||||||
|           Install = { |  | ||||||
|             WantedBy = [ "timers.target" ]; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|         "git-maintenance@daily" = { |  | ||||||
|           Unit = { |  | ||||||
|             Description = "Optimize Git repositories data"; |  | ||||||
|           }; |  | ||||||
|           Timer = { |  | ||||||
|             OnCalendar = "*-*-* 20:00:00"; |  | ||||||
|             Persistent = true; |  | ||||||
|           }; |  | ||||||
|           Install = { |  | ||||||
|             WantedBy = [ "timers.target" ]; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|         "git-maintenance@weekly" = { |  | ||||||
|           Unit = { |  | ||||||
|             Description = "Optimize Git repositories data"; |  | ||||||
|           }; |  | ||||||
|           Timer = { |  | ||||||
|             OnCalendar = "Sun *-*-* 20:00:00"; |  | ||||||
|             Persistent = true; |  | ||||||
|           }; |  | ||||||
|           Install = { |  | ||||||
|             WantedBy = [ "timers.target" ]; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     programs.git = { |     programs.git = { | ||||||
|       enable = true; |       enable = true; | ||||||
|  |       inherit (cfg) userName userEmail; | ||||||
|       lfs = enabled; |       lfs = enabled; | ||||||
|       signing = { |       signing = { | ||||||
|         key = cfg.signingKey; |         key = cfg.signingKey; | ||||||
|         inherit (cfg) signByDefault; |         inherit (cfg) signByDefault; | ||||||
|       }; |       }; | ||||||
|       settings = { |       extraConfig = { | ||||||
|         user = { |  | ||||||
|           name = cfg.userName; |  | ||||||
|           email = cfg.userEmail; |  | ||||||
|         }; |  | ||||||
|         core = { |         core = { | ||||||
|           fsmonitor = true; |           fsmonitor = true; | ||||||
|         }; |         }; | ||||||
|  | @ -104,9 +42,6 @@ in | ||||||
|         push = { |         push = { | ||||||
|           autoSetupRemote = true; |           autoSetupRemote = true; | ||||||
|         }; |         }; | ||||||
|         rebase = { |  | ||||||
|           autoStash = true; |  | ||||||
|         }; |  | ||||||
|         safe = { |         safe = { | ||||||
|           directory = "${user.home}/projects/config"; |           directory = "${user.home}/projects/config"; | ||||||
|         }; |         }; | ||||||
|  | @ -117,7 +52,6 @@ in | ||||||
|           ]; |           ]; | ||||||
|           strategy = "incremental"; |           strategy = "incremental"; | ||||||
|         }; |         }; | ||||||
|         lfs."https://git.christophhollizeck.dev/Daholli/nixos-config.git/info/lfs".locksverify = true; |  | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -11,10 +11,8 @@ let | ||||||
|   inherit (lib.${namespace}) mkBoolOpt; |   inherit (lib.${namespace}) mkBoolOpt; | ||||||
| 
 | 
 | ||||||
|   cfg = config.${namespace}.apps._1password; |   cfg = config.${namespace}.apps._1password; | ||||||
|   username = config.${namespace}.user.name; |  | ||||||
| in | in | ||||||
| { | { | ||||||
| 
 |  | ||||||
|   options.${namespace}.apps._1password = { |   options.${namespace}.apps._1password = { | ||||||
|     enable = mkBoolOpt true "Enable 1Password"; |     enable = mkBoolOpt true "Enable 1Password"; | ||||||
|   }; |   }; | ||||||
|  | @ -24,17 +22,8 @@ in | ||||||
|       _1password.enable = true; |       _1password.enable = true; | ||||||
|       _1password-gui = { |       _1password-gui = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         polkitPolicyOwners = [ username ]; |         polkitPolicyOwners = [ config.${namespace}.user.name ]; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 |  | ||||||
|     ${namespace}.home.file.".ssh/config".text = '' |  | ||||||
|       Host * |  | ||||||
|        	ForwardAgent yes |  | ||||||
|       	IdentityAgent /home/${username}/.1password/agent.sock |  | ||||||
| 
 |  | ||||||
|       Host loptland |  | ||||||
|         Hostname christophhollizeck.dev |  | ||||||
|     ''; |  | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| let | let | ||||||
|   inherit (lib) mkIf mkEnableOption mkOption; |   inherit (lib) mkIf mkEnableOption; | ||||||
|   cfg = config.${namespace}.apps.cli-apps.helix; |   cfg = config.${namespace}.apps.cli-apps.helix; | ||||||
| 
 | 
 | ||||||
|   cachix-url = "https://helix.cachix.org"; |   cachix-url = "https://helix.cachix.org"; | ||||||
|  | @ -19,42 +19,27 @@ in | ||||||
| { | { | ||||||
|   options.${namespace}.apps.cli-apps.helix = { |   options.${namespace}.apps.cli-apps.helix = { | ||||||
|     enable = mkEnableOption "Whether to enable helix or not"; |     enable = mkEnableOption "Whether to enable helix or not"; | ||||||
|     pkg = mkOption { |  | ||||||
|       type = lib.types.package; |  | ||||||
|       default = helix-pkg; |  | ||||||
|       description = "Which helix pacakge to use"; |  | ||||||
|     }; |  | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment = { |     environment = { | ||||||
|       systemPackages = [ |       systemPackages = [ | ||||||
|         cfg.pkg |         helix-pkg | ||||||
|  |         pkgs.wl-clipboard | ||||||
|       ]; |       ]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     ${namespace} = { |     ${namespace} = { | ||||||
|       home.extraOptions = { |       home.extraOptions = { | ||||||
|         home.file.".config/helix/ignore".text = '' |  | ||||||
|           .idea/ |  | ||||||
|           !**/appsettings.json |  | ||||||
|           .direnv/ |  | ||||||
|           .devenv/ |  | ||||||
|         ''; |  | ||||||
| 
 |  | ||||||
|         catppuccin.helix.enable = true; |  | ||||||
| 
 |  | ||||||
|         programs.helix = { |         programs.helix = { | ||||||
|           enable = true; |           enable = true; | ||||||
|           package = helix-pkg; |           package = helix-pkg; | ||||||
|           defaultEditor = true; |           defaultEditor = true; | ||||||
|           settings = { |           settings = { | ||||||
|  |             theme = "tokyonight"; | ||||||
|             editor = { |             editor = { | ||||||
|               auto-format = true; |               auto-format = true; | ||||||
|               line-number = "relative"; |               line-number = "relative"; | ||||||
|               file-picker = { |  | ||||||
|                 hidden = false; |  | ||||||
|               }; |  | ||||||
| 
 | 
 | ||||||
|               lsp = { |               lsp = { | ||||||
|                 display-inlay-hints = true; |                 display-inlay-hints = true; | ||||||
|  | @ -103,8 +88,20 @@ in | ||||||
|                   space = "file_picker"; |                   space = "file_picker"; | ||||||
|                 }; |                 }; | ||||||
| 
 | 
 | ||||||
|                 C-j = (builtins.genList (_: "move_line_down") 5) ++ [ "align_view_center" ]; |                 C-j = [ | ||||||
|                 C-k = (builtins.genList (_: "move_line_up") 5) ++ [ "align_view_center" ]; |                   "move_line_down" | ||||||
|  |                   "move_line_down" | ||||||
|  |                   "move_line_down" | ||||||
|  |                   "move_line_down" | ||||||
|  |                   "move_line_down" | ||||||
|  |                 ]; | ||||||
|  |                 C-k = [ | ||||||
|  |                   "move_line_up" | ||||||
|  |                   "move_line_up" | ||||||
|  |                   "move_line_up" | ||||||
|  |                   "move_line_up" | ||||||
|  |                   "move_line_up" | ||||||
|  |                 ]; | ||||||
|               }; |               }; | ||||||
|             }; |             }; | ||||||
|           }; |           }; | ||||||
|  | @ -142,21 +139,11 @@ in | ||||||
|                 config.provideFormatter = true; |                 config.provideFormatter = true; | ||||||
|                 config.json.validate.enable = true; |                 config.json.validate.enable = true; | ||||||
|               }; |               }; | ||||||
|               vscode-html-language-server = { |  | ||||||
|                 command = "${pkgs.vscode-langservers-extracted}/bin/vscode-html-language-server"; |  | ||||||
|                 args = [ "--stdio" ]; |  | ||||||
|                 config.provideFormatter = true; |  | ||||||
|               }; |  | ||||||
|               vscode-css-language-server = { |               vscode-css-language-server = { | ||||||
|                 command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server"; |                 command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server"; | ||||||
|                 args = [ "--stdio" ]; |                 args = [ "--stdio" ]; | ||||||
|                 config.provideFormatter = true; |                 config.provideFormatter = true; | ||||||
|               }; |               }; | ||||||
|               vscode-eslint-language-server = { |  | ||||||
|                 command = "${pkgs.vscode-langservers-extracted}/bin/vscode-eslint-language-server"; |  | ||||||
|                 args = [ "--stdio" ]; |  | ||||||
|                 config.provideFormatter = true; |  | ||||||
|               }; |  | ||||||
|             }; |             }; | ||||||
|           }; |           }; | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|  | @ -19,7 +19,6 @@ in | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment.systemPackages = with pkgs; [ |     environment.systemPackages = with pkgs; [ | ||||||
|       discord |       discord | ||||||
|       vesktop |  | ||||||
|     ]; |     ]; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,23 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   options, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkEnableOption; |  | ||||||
|   cfg = config.${namespace}.apps.starsector; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.apps.starsector = { |  | ||||||
|     enable = mkEnableOption "Whether or not to enable the game starsector."; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     environment.systemPackages = with pkgs; [ |  | ||||||
|       starsector |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -15,5 +15,5 @@ in | ||||||
|     enable = mkBoolOpt false "Whether or not to enable basic configuration"; |     enable = mkBoolOpt false "Whether or not to enable basic configuration"; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ teamspeak6-client ]; }; |   config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ teamspeak_client ]; }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -23,15 +23,12 @@ in | ||||||
|       zenbrowser |       zenbrowser | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     environment.sessionVariables = { |     environment.sessionVariables.DEFAULT_BROWSER = "${zenbrowser}/bin/zen"; | ||||||
|       DEFAULT_BROWSER = "${zenbrowser}/bin/zen-beta"; |  | ||||||
|       BROWSER = "zen-beta"; |  | ||||||
|     }; |  | ||||||
| 
 | 
 | ||||||
|     environment.etc = { |     environment.etc = { | ||||||
|       "1password/custom_allowed_browsers" = { |       "1password/custom_allowed_browsers" = { | ||||||
|         text = '' |         text = '' | ||||||
|           zen |           .zen-wrapped | ||||||
|         ''; |         ''; | ||||||
|         mode = "0755"; |         mode = "0755"; | ||||||
|       }; |       }; | ||||||
|  |  | ||||||
|  | @ -2,12 +2,14 @@ | ||||||
|   config, |   config, | ||||||
|   lib, |   lib, | ||||||
|   namespace, |   namespace, | ||||||
|   pkgs, |  | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| let | let | ||||||
|   inherit (lib) mkIf mkEnableOption; |   inherit (lib) mkIf mkEnableOption; | ||||||
|  | 
 | ||||||
|   cfg = config.${namespace}.desktop.addons.hypridle; |   cfg = config.${namespace}.desktop.addons.hypridle; | ||||||
|  | 
 | ||||||
|  |   username = config.${namespace}.user.name; | ||||||
| in | in | ||||||
| { | { | ||||||
|   options.${namespace}.desktop.addons.hypridle = { |   options.${namespace}.desktop.addons.hypridle = { | ||||||
|  | @ -15,19 +17,19 @@ in | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     ${namespace}.home.extraOptions = { |     snowfallorg.users.${username}.home.config = { | ||||||
|       services.hypridle = { |       services.hypridle = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         settings = { |         settings = { | ||||||
|           general = { |           general = { | ||||||
|             after_sleep_cmd = "hyprctl dispatch dpms on"; |             after_sleep_cmd = "hyprctl dispatch dpms on"; | ||||||
|             ignore_dbus_inhibit = false; |             ignore_dbus_inhibit = false; | ||||||
|             lock_cmd = "hyprlock-blur"; |             lock_cmd = "hyprlock"; | ||||||
|           }; |           }; | ||||||
| 
 | 
 | ||||||
|           listener = [ |           listener = [ | ||||||
|             { |             { | ||||||
|               timeout = 600; |               timeout = 900; | ||||||
|               on-timeout = "loginctl lock-session"; |               on-timeout = "loginctl lock-session"; | ||||||
|             } |             } | ||||||
|             { |             { | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ let | ||||||
|   hyprlock-package = inputs.hyprlock.packages.${system}.hyprlock; |   hyprlock-package = inputs.hyprlock.packages.${system}.hyprlock; | ||||||
| 
 | 
 | ||||||
|   hyprlock-blur = pkgs.writeShellScriptBin "hyprlock-blur" '' |   hyprlock-blur = pkgs.writeShellScriptBin "hyprlock-blur" '' | ||||||
|     ${pkgs.grim}/bin/grim -o DP-1 -l 0 /tmp/screenshot1.png & |     ${pkgs.grim}/bin/grim -o DP-2 -l 0 /tmp/screenshot1.png & | ||||||
|     ${pkgs.grim}/bin/grim -o HDMI-A-1 -l 0 /tmp/screenshot2.png &  |     ${pkgs.grim}/bin/grim -o HDMI-A-1 -l 0 /tmp/screenshot2.png &  | ||||||
|     wait && |     wait && | ||||||
|     hyprlock  |     hyprlock  | ||||||
|  | @ -29,20 +29,11 @@ in | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     security.pam.services.hyprlock = { |     security.pam.services.hyprlock = { }; | ||||||
|       allowNullPassword = false; |  | ||||||
|       startSession = false; |  | ||||||
|       text = '' |  | ||||||
|         auth    include login |  | ||||||
|         account include login |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
| 
 | 
 | ||||||
|     environment.systemPackages = [ hyprlock-blur ]; |     ${namespace}.desktop.hyprland.settings = { | ||||||
| 
 |  | ||||||
|     ${namespace}.desktop.hyprland.settings = mkIf config.desktop.hyprland.enable { |  | ||||||
|       bind = [ |       bind = [ | ||||||
|         "$mod CTRL, l, exec, hyprlock-blur" |         "$mod CTRL, l, exec, ${hyprlock-blur}/bin/hyprlock-blur" | ||||||
|       ]; |       ]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | @ -55,7 +46,7 @@ in | ||||||
|           # inspiration from https://github.com/justinmdickey/publicdots/blob/main/.config/hypr/hyprlock.conf |           # inspiration from https://github.com/justinmdickey/publicdots/blob/main/.config/hypr/hyprlock.conf | ||||||
|           background = [ |           background = [ | ||||||
|             { |             { | ||||||
|               monitor = "DP-1"; |               monitor = "DP-2"; | ||||||
|               path = "/tmp/screenshot1.png"; |               path = "/tmp/screenshot1.png"; | ||||||
| 
 | 
 | ||||||
|               blur_passes = 1; # 0 disables blurring |               blur_passes = 1; # 0 disables blurring | ||||||
|  | @ -74,7 +65,7 @@ in | ||||||
| 
 | 
 | ||||||
|           label = [ |           label = [ | ||||||
|             { |             { | ||||||
|               monitor = "DP-1"; |               monitor = "DP-2"; | ||||||
|               text = "$TIME"; |               text = "$TIME"; | ||||||
|               color = "rgba(242, 243, 244, 0.75)"; |               color = "rgba(242, 243, 244, 0.75)"; | ||||||
|               font_size = 95; |               font_size = 95; | ||||||
|  | @ -85,7 +76,7 @@ in | ||||||
|             } |             } | ||||||
|             { |             { | ||||||
| 
 | 
 | ||||||
|               monitor = "DP-1"; |               monitor = "DP-2"; | ||||||
|               text = ''cmd[update:1000] echo $(date +"%A, %B %d")''; |               text = ''cmd[update:1000] echo $(date +"%A, %B %d")''; | ||||||
|               color = "rgba(242, 243, 244, 0.75)"; |               color = "rgba(242, 243, 244, 0.75)"; | ||||||
|               font_size = 22; |               font_size = 22; | ||||||
|  | @ -98,7 +89,7 @@ in | ||||||
|           ]; |           ]; | ||||||
| 
 | 
 | ||||||
|           image = { |           image = { | ||||||
|             monitor = "DP-1"; |             monitor = "DP-2"; | ||||||
|             path = "/home/${username}/Pictures/profile.png"; |             path = "/home/${username}/Pictures/profile.png"; | ||||||
| 
 | 
 | ||||||
|             position = "0, 50"; |             position = "0, 50"; | ||||||
|  | @ -107,7 +98,7 @@ in | ||||||
|           }; |           }; | ||||||
| 
 | 
 | ||||||
|           input-field = { |           input-field = { | ||||||
|             monitor = "DP-1"; |             monitor = "DP-2"; | ||||||
|             size = "200,50"; |             size = "200,50"; | ||||||
|             outline_thickness = 2; |             outline_thickness = 2; | ||||||
|             dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8 |             dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8 | ||||||
|  | @ -125,10 +116,6 @@ in | ||||||
|             halign = "center"; |             halign = "center"; | ||||||
|             valign = "center"; |             valign = "center"; | ||||||
|           }; |           }; | ||||||
| 
 |  | ||||||
|           general = { |  | ||||||
|             auth_method = "pam"; |  | ||||||
|           }; |  | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 3.7 MiB After Width: | Height: | Size: 132 B | 
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -25,17 +25,16 @@ in | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       wayland.windowManager.hyprland.settings.exec-once = [ |       wayland.windowManager.hyprland.settings.exec-once = [ | ||||||
|         ''hyprctl hyprpaper wallpaper "DP-1,${picture-path}"'' |         ''hyprctl hyprpaper wallpaper "DP-2,${picture-path}"'' | ||||||
|       ]; |       ]; | ||||||
| 
 | 
 | ||||||
|       services.hyprpaper = { |       services.hyprpaper = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         settings = { |         settings = { | ||||||
|           preload = [ picture-path ]; |           preload = [ picture-path ]; | ||||||
|           wallpaper = "DP-1,${picture-path}"; |           wallpaper = "DP-2,${picture-path}"; | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 |  | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 132 B | 
|  | @ -18,9 +18,10 @@ in | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     ${namespace}.home.extraOptions = { |     ${namespace}.home.extraOptions = { | ||||||
| 
 |       dconf.settings = { | ||||||
|       dconf = { |         "org/gnome/desktop/interface" = { | ||||||
|         settings."org/gnome/desktop/interface".color-scheme = "prefer-dark"; |           color-scheme = "prefer-dark"; | ||||||
|  |         }; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       gtk = { |       gtk = { | ||||||
|  | @ -34,10 +35,11 @@ in | ||||||
|       systemd.user.sessionVariables = config.home-manager.users.${user}.home.sessionVariables; |       systemd.user.sessionVariables = config.home-manager.users.${user}.home.sessionVariables; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     # qt = { |     qt = { | ||||||
|     #   enable = true; |       enable = true; | ||||||
|     #   platformTheme = "gnome"; |       platformTheme = "gnome"; | ||||||
|     #   style = "adwaita-dark"; |       style = "adwaita-dark"; | ||||||
|     # }; |     }; | ||||||
|  | 
 | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -31,51 +31,9 @@ let | ||||||
|     else |     else | ||||||
|         # always open on w/space 4 |         # always open on w/space 4 | ||||||
|         hyprctl dispatch workspace 9 |         hyprctl dispatch workspace 9 | ||||||
|         ELECTRON_OZONE_PLATFORM_HINT=x11 1password& |         1password& | ||||||
|     fi |     fi | ||||||
|   ''; |   ''; | ||||||
| 
 |  | ||||||
|   # clipsync = pkgs.writeShellScriptBin "clipsync" '' |  | ||||||
|   #   insert() { |  | ||||||
|   #     # Read all the piped input into variable. |  | ||||||
|   #     value=$(cat) |  | ||||||
|   #     wValue="$(wl-paste)" |  | ||||||
|   #     xValue="$(xclip -o -selection clipboard)" |  | ||||||
| 
 |  | ||||||
|   #     notify() { |  | ||||||
|   #       notify-send -u low -c clipboard "$1" "$value" |  | ||||||
|   #     } |  | ||||||
| 
 |  | ||||||
|   #     if [ "$value" != "$wValue" ]; then |  | ||||||
|   #       notify "Wayland" |  | ||||||
|   #       echo -n "$value" | wl-copy |  | ||||||
|   #     fi |  | ||||||
| 
 |  | ||||||
|   #     if [ "$value" != "$xValue" ]; then |  | ||||||
|   #       notify "X11" |  | ||||||
|   #       echo -n "$value" | xclip -selection clipboard |  | ||||||
|   #     fi |  | ||||||
|   #   } |  | ||||||
| 
 |  | ||||||
|   #   watch() { |  | ||||||
|   #     # Wayland -> X11 |  | ||||||
|   #     wl-paste --type text --watch clipsync insert & |  | ||||||
| 
 |  | ||||||
|   #     # X11 -> Wayland |  | ||||||
|   #     while clipnotify; do |  | ||||||
|   #       xclip -o -selection clipboard | clipsync insert |  | ||||||
|   #     done & |  | ||||||
|   #   } |  | ||||||
| 
 |  | ||||||
|   #   kill() { |  | ||||||
|   #     pkill wl-paste |  | ||||||
|   #     pkill clipnotify |  | ||||||
|   #     pkill xclip |  | ||||||
|   #     pkill clipsync |  | ||||||
|   #   } |  | ||||||
|   #   "$@" |  | ||||||
|   # ''; |  | ||||||
| 
 |  | ||||||
| in | in | ||||||
| { | { | ||||||
|   options.${namespace}.desktop.hyprland = { |   options.${namespace}.desktop.hyprland = { | ||||||
|  | @ -96,13 +54,8 @@ in | ||||||
|       libnotify |       libnotify | ||||||
| 
 | 
 | ||||||
|       # Wayland Utilities |       # Wayland Utilities | ||||||
|       wlr-randr |  | ||||||
| 
 |  | ||||||
|       # Clipboard Stuff |  | ||||||
|       wl-clipboard |       wl-clipboard | ||||||
|       xclip |       wlr-randr | ||||||
|       clipnotify |  | ||||||
|       # clipsync |  | ||||||
| 
 | 
 | ||||||
|       # Screenshot Utility |       # Screenshot Utility | ||||||
|       grimblast |       grimblast | ||||||
|  | @ -118,9 +71,6 @@ in | ||||||
|       focus-1password |       focus-1password | ||||||
| 
 | 
 | ||||||
|       hyprpanel |       hyprpanel | ||||||
| 
 |  | ||||||
|       ##### |  | ||||||
|       xdg-dbus-proxy |  | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     programs = { |     programs = { | ||||||
|  | @ -128,49 +78,24 @@ in | ||||||
|         enable = true; |         enable = true; | ||||||
|         package = hyprland-package; |         package = hyprland-package; | ||||||
|         portalPackage = inputs.hyprland.packages.${system}.xdg-desktop-portal-hyprland; |         portalPackage = inputs.hyprland.packages.${system}.xdg-desktop-portal-hyprland; | ||||||
|         withUWSM = true; |  | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     xdg = { |     services = { | ||||||
|       autostart.enable = true; |       xserver = enabled; | ||||||
|       portal = { |       displayManager.sddm = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         extraPortals = [ |         theme = "Elegant"; | ||||||
|           pkgs.xdg-desktop-portal |  | ||||||
|           pkgs.xdg-desktop-portal-gtk |  | ||||||
|         ]; |  | ||||||
|         xdgOpenUsePortal = true; |  | ||||||
| 
 |  | ||||||
|         config = { |  | ||||||
|           common = { |  | ||||||
|             default = [ "*" ]; |  | ||||||
|             "org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ]; |  | ||||||
|           }; |  | ||||||
|           hyprland = { |  | ||||||
|             default = [ |  | ||||||
|               "hyprland" |  | ||||||
|               "gtk" |  | ||||||
|             ]; |  | ||||||
|             "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ]; |  | ||||||
|             "org.freedesktop.impl.portal.OpenURI" = [ "gtk" ]; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     services.displayManager.gdm = { |  | ||||||
|       enable = true; |  | ||||||
|       wayland = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     ${namespace} = { |     ${namespace} = { | ||||||
|       desktop = { |       desktop = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         addons = { |         addons = { | ||||||
|           rofi = { |           rofi = { | ||||||
|             enable = true; |             enable = true; | ||||||
|             package = pkgs.rofi-unwrapped; |             package = pkgs.rofi-wayland-unwrapped; | ||||||
|           }; |           }; | ||||||
|           hypridle = enabled; |           hypridle = enabled; | ||||||
|           hyprlock = enabled; |           hyprlock = enabled; | ||||||
|  | @ -188,7 +113,6 @@ in | ||||||
|           enable = true; |           enable = true; | ||||||
|           package = hyprland-package; |           package = hyprland-package; | ||||||
|           plugins = [ inputs.hy3.packages.${system}.hy3 ]; |           plugins = [ inputs.hy3.packages.${system}.hy3 ]; | ||||||
|           systemd.variables = [ "--all" ]; |  | ||||||
|           settings = mkMerge [ |           settings = mkMerge [ | ||||||
|             { |             { | ||||||
|               "$mod" = "SUPER"; |               "$mod" = "SUPER"; | ||||||
|  | @ -196,12 +120,10 @@ in | ||||||
|               exec-once = [ |               exec-once = [ | ||||||
|                 "systemctl --user start hyprpolkitagent" |                 "systemctl --user start hyprpolkitagent" | ||||||
| 
 | 
 | ||||||
|                 "[workspace 2 silent] steam" |                 "[workspace 2 silent] steam --disable-gpu-compositing" # nvidia pls let me have nice things | ||||||
|                 "[workspace 8 silent] discord" |                 "[workspace 8 silent] discord --disable-gpu-compositing" | ||||||
|                 "[workspace 9 silent] ELECTRON_OZONE_PLATFORM_HINT=x11 1password" # fix for promts not showing up anymore |                 "[workspace 9 silent] 1password" | ||||||
|                 "[workspace 1 silent] zen-beta" |                 "[workspace 1 silent] zen" | ||||||
| 
 |  | ||||||
|                 "${pkgs.xorg.xhost}/bin/xhost +" |  | ||||||
|               ]; |               ]; | ||||||
| 
 | 
 | ||||||
|               windowrulev2 = [ |               windowrulev2 = [ | ||||||
|  | @ -275,68 +197,71 @@ in | ||||||
|                 ]; |                 ]; | ||||||
|               }; |               }; | ||||||
| 
 | 
 | ||||||
|               bind = [ |               bind = | ||||||
|                 # compositor commands |                 [ | ||||||
|                 "$mod SHIFT, R, exec, hyprctl reload" |                   # compositor commands | ||||||
|                 "$mod SHIFT, Q, killactive," |                   "$mod SHIFT, R, exec, hyprctl reload" | ||||||
|                 "$mod SHIFT, E, exec, pkill Hyprland" |                   "$mod SHIFT, Q, killactive," | ||||||
|  |                   "$mod SHIFT, E, exec, pkill Hyprland" | ||||||
| 
 | 
 | ||||||
|                 "$mod, F, fullscreen," |                   "$mod, F, fullscreen," | ||||||
|                 "$mod, G, togglegroup," |                   "$mod, G, togglegroup," | ||||||
|                 "$mod SHIFT, N, changegroupactive, f" |                   "$mod SHIFT, N, changegroupactive, f" | ||||||
|                 "$mod SHIFT, P, changegroupactive, b" |                   "$mod SHIFT, P, changegroupactive, b" | ||||||
|                 "$mod, R, togglesplit," |                   "$mod, R, togglesplit," | ||||||
|                 "$mod, T, togglefloating," |                   "$mod, T, togglefloating," | ||||||
|                 "$mod ALT, ,resizeactive," |                   "$mod, P, pseudo," | ||||||
|  |                   "$mod ALT, ,resizeactive," | ||||||
| 
 | 
 | ||||||
|                 "$mod CTRL, left, movecurrentworkspacetomonitor, l" |                   "$mod CTRL, left, movecurrentworkspacetomonitor, l" | ||||||
|                 "$mod CTRL, right, movecurrentworkspacetomonitor, r" |                   "$mod CTRL, right, movecurrentworkspacetomonitor, r" | ||||||
| 
 | 
 | ||||||
|                 # move focus |                   # move focus | ||||||
|                 "$mod, h, movefocus, l" |                   "$mod, h, hy3:movefocus, l" | ||||||
|                 "$mod, j, movefocus, d" |                   "$mod, j, hy3:movefocus, d" | ||||||
|                 "$mod, k, movefocus, u" |                   "$mod, k, hy3:movefocus, u" | ||||||
|                 "$mod, l, movefocus, r" |                   "$mod, l, hy3:movefocus, r" | ||||||
|                 "$mod, left, movefocus, l" |                   "$mod, left, hy3:movefocus, l" | ||||||
|                 "$mod, down, movefocus, d" |                   "$mod, down, hy3:movefocus, d" | ||||||
|                 "$mod, up, movefocus, u" |                   "$mod, up, hy3:movefocus, u" | ||||||
|                 "$mod, right, movefocus, r" |                   "$mod, right, hy3:movefocus, r" | ||||||
| 
 | 
 | ||||||
|                 # move focus |                   # move focus | ||||||
|                 "$mod SHIFT, h, movewindow, l, once" |                   "$mod SHIFT, h, hy3:movewindow, l, once" | ||||||
|                 "$mod SHIFT, j, movewindow, d, once" |                   "$mod SHIFT, j, hy3:movewindow, d, once" | ||||||
|                 "$mod SHIFT, k, movewindow, u, once" |                   "$mod SHIFT, k, hy3:movewindow, u, once" | ||||||
|                 "$mod SHIFT, l, movewindow, r, once" |                   "$mod SHIFT, l, hy3:movewindow, r, once" | ||||||
|                 "$mod SHIFT, left, movewindow, l, once" |                   "$mod SHIFT, left, hy3:movewindow, l, once" | ||||||
|                 "$mod SHIFT, down, movewindow, d, once" |                   "$mod SHIFT, down, hy3:movewindow, d, once" | ||||||
|                 "$mod SHIFT, up, movewindow, u, once" |                   "$mod SHIFT, up, hy3:movewindow, u, once" | ||||||
|                 "$mod SHIFT, right, movewindow, r, once" |                   "$mod SHIFT, right, hy3:movewindow, r, once" | ||||||
| 
 | 
 | ||||||
|                 #run important programs |                   #run important programs | ||||||
|                 "$mod, Return, exec, kitty" |                   "$mod, Return, exec, kitty" | ||||||
|                 "$mod, D, exec, rofi -show drun" |                   "$mod, Z, exec, zen" | ||||||
|                 "$mod, P, exec, focus-or-open-1pass" |                   "$mod, D, exec, rofi -show drun" | ||||||
|                 # "$mod, D, exec, rofi -show combi" |                   "$mod, P, exec, focus-or-open-1pass" | ||||||
|  |                   # "$mod, D, exec, rofi -show combi" | ||||||
| 
 | 
 | ||||||
|                 #screenshot |                   #screenshot | ||||||
|                 ", Print, exec, grimblast copy area" |                   ", Print, exec, grimblast copy area" | ||||||
|               ] |                 ] | ||||||
|               ++ ( |                 ++ ( | ||||||
|                 # workspaces |                   # workspaces | ||||||
|                 # binds $mod + [shift +] {1..9} to [move to] workspace {1..9} |                   # binds $mod + [shift +] {1..9} to [move to] workspace {1..9} | ||||||
|                 builtins.concatLists ( |                   builtins.concatLists ( | ||||||
|                   builtins.genList ( |                     builtins.genList ( | ||||||
|                     i: |                       i: | ||||||
|                     let |                       let | ||||||
|                       ws = i + 1; |                         ws = i + 1; | ||||||
|                     in |                       in | ||||||
|                     [ |                       [ | ||||||
|                       "$mod, code:1${toString i}, workspace, ${toString ws}" |                         "$mod, code:1${toString i}, workspace, ${toString ws}" | ||||||
|                       "$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" |                         "$mod SHIFT, code:1${toString i}, hy3:movetoworkspace, ${toString ws}" | ||||||
|                     ] |                       ] | ||||||
|                   ) 9 |                     ) 9 | ||||||
|                 ) |                   ) | ||||||
|               ); |                 ); | ||||||
| 
 | 
 | ||||||
|               # mouse movements |               # mouse movements | ||||||
|               bindm = [ |               bindm = [ | ||||||
|  | @ -386,13 +311,18 @@ in | ||||||
| 
 | 
 | ||||||
|     environment.sessionVariables = { |     environment.sessionVariables = { | ||||||
|       NIXOS_OZONE_WL = "1"; # Hint electron apps to use wayland |       NIXOS_OZONE_WL = "1"; # Hint electron apps to use wayland | ||||||
|       ELECTRON_OZONE_PLATFORM_HINT = "auto"; |  | ||||||
| 
 | 
 | ||||||
|  |       XDG_CURRENT_DESKTOP = "Hyprland"; | ||||||
|       XDG_SESSION_TYPE = "wayland"; |       XDG_SESSION_TYPE = "wayland"; | ||||||
|  |       XDG_SESSION_DESKTOP = "Hyprland"; | ||||||
| 
 | 
 | ||||||
|       QT_AUTO_SCREEN_SCALE_FACTOR = "1"; |       QT_AUTO_SCREEN_SCALE_FACTOR = "1"; | ||||||
|       QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; |       QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; | ||||||
|       QT_QPA_PLATFORM = "wayland;xcb"; |       QT_QPA_PLATFORM = "wayland;xcb"; | ||||||
|  | 
 | ||||||
|  |       ELECTRON_OZONE_PLATFORM_HINT = "auto"; | ||||||
|  | 
 | ||||||
|  |       WLR_DRM_NO_ATOMIC = "1"; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,207 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   inputs, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   system, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   inherit (lib) |  | ||||||
|     mkIf |  | ||||||
|     mkEnableOption |  | ||||||
|     mkOption |  | ||||||
|     mkMerge |  | ||||||
|     types |  | ||||||
|     ; |  | ||||||
| 
 |  | ||||||
|   cfg = config.${namespace}.desktop.niri; |  | ||||||
| 
 |  | ||||||
|   apps-submodule = types.submodule { |  | ||||||
|     options = { |  | ||||||
|       terminal = mkOption { |  | ||||||
|         type = types.package; |  | ||||||
|         default = pkgs.kitty; |  | ||||||
|         description = "The default Terminal to use"; |  | ||||||
|       }; |  | ||||||
|       runner = mkOption { |  | ||||||
|         type = types.package; |  | ||||||
|         default = pkgs.fuzzel; |  | ||||||
|         description = "The app-runner to use"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.desktop.niri = { |  | ||||||
|     enable = mkEnableOption "Whether to enable niri"; |  | ||||||
|     settings = mkOption { |  | ||||||
|       type = types.attrs; |  | ||||||
|       default = { }; |  | ||||||
|       description = "Additional niri settings to apply."; |  | ||||||
|     }; |  | ||||||
|     apps = mkOption { |  | ||||||
|       type = apps-submodule; |  | ||||||
|       default = { }; |  | ||||||
|       description = "Which apps to use"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     programs.niri = { |  | ||||||
|       enable = true; |  | ||||||
|       package = inputs.niri-flake.packages.${system}.niri-unstable; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     environment.systemPackages = [ |  | ||||||
|       pkgs.alacritty |  | ||||||
|       pkgs.fuzzel |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     ${namespace} = { |  | ||||||
|       desktop.addons = { |  | ||||||
|         hyprlock = enabled; |  | ||||||
|         hypridle = enabled; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     snowfallorg.users."cholli".home.config = { |  | ||||||
|       programs.niri.settings = mkMerge [ |  | ||||||
|         { |  | ||||||
|           input = { |  | ||||||
|             keyboard = { |  | ||||||
|               numlock = true; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
|           outputs."DP-1" = { |  | ||||||
|             mode = { |  | ||||||
|               width = 3440; |  | ||||||
|               height = 1440; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|           outputs."HDMI-A-1" = { |  | ||||||
|             mode = { |  | ||||||
|               width = 1920; |  | ||||||
|               height = 1080; |  | ||||||
|             }; |  | ||||||
|             transform.rotation = 90; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
|           layout = { |  | ||||||
|             gaps = 5; |  | ||||||
|             center-focused-column = "never"; |  | ||||||
| 
 |  | ||||||
|             default-column-width = { |  | ||||||
|               proportion = 0.5; |  | ||||||
|             }; |  | ||||||
| 
 |  | ||||||
|             preset-column-widths = [ |  | ||||||
|               { proportion = 1. / 3.; } |  | ||||||
|               { proportion = 1. / 2.; } |  | ||||||
|               { proportion = 2. / 3.; } |  | ||||||
| 
 |  | ||||||
|             ]; |  | ||||||
| 
 |  | ||||||
|             focus-ring = { |  | ||||||
|               width = 1; |  | ||||||
|               active = { |  | ||||||
|                 color = "#7fc8ff"; |  | ||||||
|               }; |  | ||||||
|               inactive = { |  | ||||||
|                 color = "#505050"; |  | ||||||
|               }; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
|           hotkey-overlay.skip-at-startup = true; |  | ||||||
| 
 |  | ||||||
|           screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; |  | ||||||
| 
 |  | ||||||
|           # block 1pass from screenshots and window capture |  | ||||||
|           window-rules = [ |  | ||||||
|           ]; |  | ||||||
| 
 |  | ||||||
|           binds = |  | ||||||
|             with config.lib.niri; |  | ||||||
|             let |  | ||||||
|               workspaces = (builtins.genList (x: x + 1) 9); |  | ||||||
| 
 |  | ||||||
|               focus-workspaces = builtins.listToAttrs ( |  | ||||||
|                 map (num: { |  | ||||||
|                   name = "Mod=${toString num}"; |  | ||||||
|                   value = { |  | ||||||
|                     action.focus-workspace = num; |  | ||||||
|                   }; |  | ||||||
|                 }) workspaces |  | ||||||
|               ); |  | ||||||
|             in |  | ||||||
| 
 |  | ||||||
|             mkMerge [ |  | ||||||
|               { |  | ||||||
|                 "Mod+Shift+Slash".action = show-hotkey-overlay; |  | ||||||
| 
 |  | ||||||
|                 "Mod+Enter".action.spawn = "${lib.getExe cfg.apps.terminal}"; |  | ||||||
|                 "Mod+D".action.spwan = "${lib.getExe cfg.apps.runner}"; |  | ||||||
|                 "Mod+Alt+L".action.spawn = "hyprlock-blur"; |  | ||||||
| 
 |  | ||||||
|                 "Mod+Shift+Q" = { |  | ||||||
|                   action = actions.close-window; |  | ||||||
|                   repeat = false; |  | ||||||
|                 }; |  | ||||||
| 
 |  | ||||||
|                 "Mod+O" = { |  | ||||||
|                   action = actions.toggle-overview; |  | ||||||
|                   repeat = false; |  | ||||||
|                 }; |  | ||||||
| 
 |  | ||||||
|                 inherit focus-workspaces; |  | ||||||
| 
 |  | ||||||
|                 "XF86AudioRaiseVolume" = { |  | ||||||
|                   action.spawn = [ |  | ||||||
|                     "wpctl" |  | ||||||
|                     "set-volume" |  | ||||||
|                     "@DEFAULT_AUDIO_SINK@" |  | ||||||
|                     "0.1+" |  | ||||||
|                   ]; |  | ||||||
|                   allow-when-locked = true; |  | ||||||
|                 }; |  | ||||||
|                 "XF86AudioLowerVolume" = { |  | ||||||
|                   action.spawn = [ |  | ||||||
|                     "wpctl" |  | ||||||
|                     "set-volume" |  | ||||||
|                     "@DEFAULT_AUDIO_SINK@" |  | ||||||
|                     "0.1-" |  | ||||||
|                   ]; |  | ||||||
|                   allow-when-locked = true; |  | ||||||
|                 }; |  | ||||||
|                 "XF86AudioMute" = { |  | ||||||
|                   action.spawn = [ |  | ||||||
|                     "wpctl" |  | ||||||
|                     "set-mute" |  | ||||||
|                     "@DEFAULT_AUDIO_SINK@" |  | ||||||
|                     "toggle" |  | ||||||
|                   ]; |  | ||||||
|                   allow-when-locked = true; |  | ||||||
|                 }; |  | ||||||
|                 "XF86AudioMicMute" = { |  | ||||||
|                   action.spawn = [ |  | ||||||
|                     "wpctl" |  | ||||||
|                     "set-mute" |  | ||||||
|                     "@DEFAULT_AUDIO_SOURCE@" |  | ||||||
|                     "toggle" |  | ||||||
|                   ]; |  | ||||||
|                   allow-when-locked = true; |  | ||||||
|                 }; |  | ||||||
|               } |  | ||||||
|             ]; |  | ||||||
| 
 |  | ||||||
|         } |  | ||||||
|         cfg.settings |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -20,15 +20,15 @@ in | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = { |   config = { | ||||||
|     snowfallorg.users.${config.${namespace}.user.name}.home.config = mkMerge [ |     ${namespace}.home.extraOptions = { | ||||||
|       { |       home.stateVersion = config.system.stateVersion; | ||||||
|         home.stateVersion = config.system.stateVersion; |       home.file = mkAliasDefinitions options.${namespace}.home.file; | ||||||
|         home.file = mkAliasDefinitions options.${namespace}.home.file; |       xdg.enable = true; | ||||||
|         xdg.enable = true; |       xdg.configFile = mkAliasDefinitions options.${namespace}.home.configFile; | ||||||
|         xdg.configFile = mkAliasDefinitions options.${namespace}.home.configFile; |     }; | ||||||
|       } | 
 | ||||||
|       config.${namespace}.home.extraOptions |     snowfallorg.users.${config.${namespace}.user.name}.home.config = | ||||||
|     ]; |       config.${namespace}.home.extraOptions; | ||||||
| 
 | 
 | ||||||
|     home-manager = { |     home-manager = { | ||||||
|       useUserPackages = true; |       useUserPackages = true; | ||||||
|  |  | ||||||
|  | @ -1,10 +1,8 @@ | ||||||
| { | { | ||||||
|   config, |   config, | ||||||
|   inputs, |  | ||||||
|   lib, |   lib, | ||||||
|   namespace, |   namespace, | ||||||
|   pkgs, |   pkgs, | ||||||
|   system, |  | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| with lib; | with lib; | ||||||
|  | @ -43,28 +41,18 @@ in | ||||||
|     }) cfg.extra-substituters; |     }) cfg.extra-substituters; | ||||||
| 
 | 
 | ||||||
|     environment.systemPackages = with pkgs; [ |     environment.systemPackages = with pkgs; [ | ||||||
|  |       snowfallorg.flake | ||||||
|       nixfmt-rfc-style |       nixfmt-rfc-style | ||||||
|       nix-prefetch-git |       nix-prefetch-git | ||||||
|       nix-du |       nix-du | ||||||
| 
 |  | ||||||
|       nix-weather |  | ||||||
|       nix-index |  | ||||||
|       nix-output-monitor |  | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     programs.nh = { |  | ||||||
|       enable = true; |  | ||||||
|       package = inputs.nh-flake.packages.${system}.nh; |  | ||||||
|       flake = "/home/cholli/projects/config"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     nix = |     nix = | ||||||
|       let |       let | ||||||
|         users = [ |         users = [ | ||||||
|           "root" |           "root" | ||||||
|           config.${namespace}.user.name |           config.${namespace}.user.name | ||||||
|           "gitea-runner" |         ]; | ||||||
|         ] ++ optional config.services.hydra.enable "hydra hydra-www hydra-evaluator hydra-queue-runner"; |  | ||||||
|       in |       in | ||||||
|       { |       { | ||||||
|         package = cfg.package; |         package = cfg.package; | ||||||
|  | @ -79,7 +67,6 @@ in | ||||||
|             auto-optimise-store = true; |             auto-optimise-store = true; | ||||||
|             trusted-users = users; |             trusted-users = users; | ||||||
|             allowed-users = users; |             allowed-users = users; | ||||||
|             allowed-uris = "github: https://github.com/ git+https://github.com/ gitlab: https://gitlab.com/ git+https://gitlab.com/"; |  | ||||||
|             substituters = [ |             substituters = [ | ||||||
|               cfg.default-substituter.url |               cfg.default-substituter.url | ||||||
|             ] ++ (mapAttrsToList (name: value: name) cfg.extra-substituters); |             ] ++ (mapAttrsToList (name: value: name) cfg.extra-substituters); | ||||||
|  |  | ||||||
|  | @ -26,15 +26,15 @@ in | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     sops = { |     sops = { | ||||||
|       secrets = { |       secrets = { | ||||||
|         "netcup/customer_number" = { |         netcup_customer_number = { | ||||||
|           inherit (cfg) sopsFile; |           inherit (cfg) sopsFile; | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         "netcup/api/key" = { |         netcup_api_key = { | ||||||
|           inherit (cfg) sopsFile; |           inherit (cfg) sopsFile; | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         "netcup/api/password" = { |         netcup_api_password = { | ||||||
|           inherit (cfg) sopsFile; |           inherit (cfg) sopsFile; | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|  | @ -42,9 +42,9 @@ in | ||||||
|       templates = { |       templates = { | ||||||
|         "netcup.env" = { |         "netcup.env" = { | ||||||
|           content = '' |           content = '' | ||||||
|             NETCUP_CUSTOMER_NUMBER=${config.sops.placeholder."netcup/customer_number"} |             NETCUP_CUSTOMER_NUMBER=${config.sops.placeholder.netcup_customer_number} | ||||||
|             NETCUP_API_KEY=${config.sops.placeholder."netcup/api/key"} |             NETCUP_API_KEY=${config.sops.placeholder.netcup_api_key} | ||||||
|             NETCUP_API_PASSWORD=${config.sops.placeholder."netcup/api/password"} |             NETCUP_API_PASSWORD=${config.sops.placeholder.netcup_api_password} | ||||||
|             NETCUP_PROPAGATION_TIMEOUT=1200 |             NETCUP_PROPAGATION_TIMEOUT=1200 | ||||||
|           ''; |           ''; | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ in | ||||||
|       pinentry-qt |       pinentry-qt | ||||||
| 
 | 
 | ||||||
|       yubikey-manager |       yubikey-manager | ||||||
|       yubioath-flutter |       yubikey-manager-qt | ||||||
|       reload-yubikey |       reload-yubikey | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|  | @ -64,6 +64,7 @@ in | ||||||
|         ".gnupg/gpg.conf".source = gpgConf; |         ".gnupg/gpg.conf".source = gpgConf; | ||||||
|         ".gnupg/gpg-agent.conf".text = gpgAgentConf; |         ".gnupg/gpg-agent.conf".text = gpgAgentConf; | ||||||
|         ".gnupg/scdeamon.conf".text = "disable-ccid"; |         ".gnupg/scdeamon.conf".text = "disable-ccid"; | ||||||
|  |         # YUBIKEYCERTIFYPASSWORD | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ | ||||||
|   config, |   config, | ||||||
|   lib, |   lib, | ||||||
|   namespace, |   namespace, | ||||||
|   pkgs, |  | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| let | let | ||||||
|  | @ -18,13 +17,6 @@ in | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     services.gnome.gnome-keyring.enable = true; |     services.gnome.gnome-keyring.enable = true; | ||||||
|     security.pam.services.gdm.enableGnomeKeyring = true; |     security.pam.services.sddm.enableGnomeKeyring = true; | ||||||
| 
 |  | ||||||
|     services.dbus.packages = [ |  | ||||||
|       pkgs.gnome-keyring |  | ||||||
|       pkgs.gcr |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     environment.systemPackages = [ pkgs.seahorse ]; |  | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -19,15 +19,13 @@ in | ||||||
|     environment.systemPackages = with pkgs; [ |     environment.systemPackages = with pkgs; [ | ||||||
|       sops |       sops | ||||||
|       age |       age | ||||||
|       ssh-to-age |  | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     sops = { |     sops = { | ||||||
|       defaultSopsFile = lib.snowfall.fs.get-file "secrets/secrets.yaml"; |       defaultSopsFile = lib.snowfall.fs.get-file "secrets/secrets.yaml"; | ||||||
|       defaultSopsFormat = "yaml"; |       defaultSopsFormat = "yaml"; | ||||||
| 
 | 
 | ||||||
|       # age.keyFile = "/home/cholli/.config/sops/age/keys.txt"; |       age.keyFile = "/home/cholli/.config/sops/age/keys.txt"; | ||||||
|       age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; |  | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -24,50 +24,44 @@ in | ||||||
|     environment.systemPackages = [ pkgs.factorio-headless ]; |     environment.systemPackages = [ pkgs.factorio-headless ]; | ||||||
|     sops = { |     sops = { | ||||||
|       secrets = { |       secrets = { | ||||||
|         "factorio/token" = { |         factorio_token = { | ||||||
|           restartUnits = [ "factorio.service" ]; |           restartUnits = [ "factorio.service" ]; | ||||||
|           inherit (cfg) sopsFile; |           inherit (cfg) sopsFile; | ||||||
|         }; |         }; | ||||||
|         "factorio/username" = { |         factorio_username = { | ||||||
|           restartUnits = [ "factorio.service" ]; |           restartUnits = [ "factorio.service" ]; | ||||||
|           inherit (cfg) sopsFile; |           inherit (cfg) sopsFile; | ||||||
|         }; |         }; | ||||||
|         "factorio/game_password" = { |         factorio_game_password = { | ||||||
|           restartUnits = [ "factorio.service" ]; |           restartUnits = [ "factorio.service" ]; | ||||||
|           inherit (cfg) sopsFile; |           inherit (cfg) sopsFile; | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|       templates."extraSettingsFile.json".content = '' |       templates."extraSettingsFile.json".content = '' | ||||||
|         { |         { | ||||||
|           "name": "Pyanodons Holli", |           "name": "SpaceAgeHolli", | ||||||
|           "description": "Trying to run a factorio-headless-server on my nix system", |           "description": "Trying to run a factorio-headless-server on my nix system", | ||||||
|           "tags": ["vanilla"], |           "tags": ["vanilla"], | ||||||
|           "max_players": 10, |           "max_players": 10, | ||||||
|           "game_password": "${config.sops.placeholder."factorio/game_password"}", |           "game_password": "${config.sops.placeholder.factorio_game_password}", | ||||||
|           "allow_commands": "admins-only", |           "allow_commands": "admins-only", | ||||||
|           "autosave_slots": 5, |           "autosave_slots": 5, | ||||||
|           "ignore_player_limit_for_returning_players": true, |           "ignore_player_limit_for_returning_players": true, | ||||||
|           "username" : "${config.sops.placeholder."factorio/username"}", |           "username" : "${config.sops.placeholder.factorio_username}", | ||||||
|           "token": "${config.sops.placeholder."factorio/token"}" |           "token": "${config.sops.placeholder.factorio_token}" | ||||||
|         } |         } | ||||||
|       ''; |       ''; | ||||||
|       templates."extraSettingsFile.json".mode = "0444"; |       templates."extraSettingsFile.json".mode = "0444"; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     systemd.tmpfiles.rules = [ |  | ||||||
|       "Z /var/lib/factorio/mods 770 65400 65400 - -" |  | ||||||
|       "Z /var/lib/factorio/saves 770 65400 65400 - -" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     services.factorio = { |     services.factorio = { | ||||||
|       enable = true; |       enable = true; | ||||||
|       openFirewall = true; |       openFirewall = true; | ||||||
|       public = true; |       public = true; | ||||||
|       lan = true; |       lan = true; | ||||||
|       nonBlockingSaving = true; |       nonBlockingSaving = true; | ||||||
|       autosave-interval = 5; |       autosave-interval = 15; | ||||||
|       saveName = "Pyanodons"; |       saveName = "SpaceAge"; | ||||||
|       loadLatestSave = true; |  | ||||||
|       admins = [ |       admins = [ | ||||||
|         "daholli" |         "daholli" | ||||||
|         "galbrain" |         "galbrain" | ||||||
|  |  | ||||||
|  | @ -1,182 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   namespace, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.gitea-runner; |  | ||||||
|   inherit (lib) mkIf mkOption mkEnableOption; |  | ||||||
|   inherit (lib.types) |  | ||||||
|     attrsOf |  | ||||||
|     package |  | ||||||
|     path |  | ||||||
|     submodule |  | ||||||
|     str |  | ||||||
|     ; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.services.gitea-runner = { |  | ||||||
|     enable = mkEnableOption "Enable gitea/forgejo runner"; |  | ||||||
|     git-url = mkOption { |  | ||||||
|       type = str; |  | ||||||
|       default = "https://git.christophhollizeck.dev"; |  | ||||||
|     }; |  | ||||||
|     sopsFile = mkOption { |  | ||||||
|       type = path; |  | ||||||
|       default = lib.snowfall.fs.get-file "secrets/secrets.yaml"; |  | ||||||
|       description = "SecretFile"; |  | ||||||
|     }; |  | ||||||
|     runner-package = mkOption { |  | ||||||
|       type = package; |  | ||||||
|       default = pkgs.forgejo-actions-runner; |  | ||||||
|       description = "Which runner to use Gitea/Forgjo"; |  | ||||||
|     }; |  | ||||||
|     ## taken from nixos/modules/services/continuous-integration/gitea-actions-runner.nix |  | ||||||
|     runner-instances = mkOption { |  | ||||||
|       default = { }; |  | ||||||
|       description = '' |  | ||||||
|         Gitea Actions Runner instances. |  | ||||||
|       ''; |  | ||||||
|       type = attrsOf (submodule { |  | ||||||
|         options = { |  | ||||||
|           enable = mkEnableOption "Gitea Actions Runner instance"; |  | ||||||
|           name = mkOption { |  | ||||||
|             type = str; |  | ||||||
|             example = literalExpression "config.networking.hostName"; |  | ||||||
|             description = '' |  | ||||||
|               The name identifying the runner instance towards the Gitea/Forgejo instance. |  | ||||||
|             ''; |  | ||||||
|           }; |  | ||||||
|           url = mkOption { |  | ||||||
|             type = str; |  | ||||||
|             example = "https://forge.example.com"; |  | ||||||
|             description = '' |  | ||||||
|               Base URL of your Gitea/Forgejo instance. |  | ||||||
|             ''; |  | ||||||
|           }; |  | ||||||
|           tokenFile = mkOption { |  | ||||||
|             type = nullOr (either str path); |  | ||||||
|             default = null; |  | ||||||
|             description = '' |  | ||||||
|               Path to an environment file, containing the `TOKEN` environment |  | ||||||
|               variable, that holds a token to register at the configured |  | ||||||
|               Gitea/Forgejo instance. |  | ||||||
|             ''; |  | ||||||
|           }; |  | ||||||
|           labels = mkOption { |  | ||||||
|             type = listOf str; |  | ||||||
|             example = literalExpression '' |  | ||||||
|               [ |  | ||||||
|                 # provide a debian base with nodejs for actions |  | ||||||
|                 "debian-latest:docker://node:18-bullseye" |  | ||||||
|                 # fake the ubuntu name, because node provides no ubuntu builds |  | ||||||
|                 "ubuntu-latest:docker://node:18-bullseye" |  | ||||||
|                 # provide native execution on the host |  | ||||||
|                 #"native:host" |  | ||||||
|               ] |  | ||||||
|             ''; |  | ||||||
|             description = '' |  | ||||||
|               Labels used to map jobs to their runtime environment. Changing these |  | ||||||
|               labels currently requires a new registration token. |  | ||||||
| 
 |  | ||||||
|               Many common actions require bash, git and nodejs, as well as a filesystem |  | ||||||
|               that follows the filesystem hierarchy standard. |  | ||||||
|             ''; |  | ||||||
|           }; |  | ||||||
|           settings = mkOption { |  | ||||||
|             description = '' |  | ||||||
|               Configuration for `act_runner daemon`. |  | ||||||
|               See https://gitea.com/gitea/act_runner/src/branch/main/internal/pkg/config/config.example.yaml for an example configuration |  | ||||||
|             ''; |  | ||||||
| 
 |  | ||||||
|             type = types.submodule { |  | ||||||
|               freeformType = settingsFormat.type; |  | ||||||
|             }; |  | ||||||
| 
 |  | ||||||
|             default = { }; |  | ||||||
|           }; |  | ||||||
| 
 |  | ||||||
|           hostPackages = mkOption { |  | ||||||
|             type = listOf package; |  | ||||||
|             default = with pkgs; [ |  | ||||||
|               bash |  | ||||||
|               coreutils |  | ||||||
|               curl |  | ||||||
|               gawk |  | ||||||
|               gitMinimal |  | ||||||
|               gnused |  | ||||||
|               nodejs |  | ||||||
|               wget |  | ||||||
|             ]; |  | ||||||
|             defaultText = literalExpression '' |  | ||||||
|               with pkgs; [ |  | ||||||
|                 bash |  | ||||||
|                 coreutils |  | ||||||
|                 curl |  | ||||||
|                 gawk |  | ||||||
|                 gitMinimal |  | ||||||
|                 gnused |  | ||||||
|                 nodejs |  | ||||||
|                 wget |  | ||||||
|               ] |  | ||||||
|             ''; |  | ||||||
|             description = '' |  | ||||||
|               List of packages, that are available to actions, when the runner is configured |  | ||||||
|               with a host execution label. |  | ||||||
|             ''; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }); |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     sops = { |  | ||||||
|       secrets = { |  | ||||||
|         "forgejo/runner/token" = { |  | ||||||
|           inherit (cfg) sopsFile; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     services.gitea-actions-runner = { |  | ||||||
|       package = cfg.runner-package; |  | ||||||
|       instances = { |  | ||||||
|         native = { |  | ||||||
|           enable = true; |  | ||||||
|           name = "monolith"; |  | ||||||
|           url = cfg.git-url; |  | ||||||
|           tokenFile = config.sops.secrets."forgejo/runner/token".path; |  | ||||||
|           labels = [ |  | ||||||
|             "native:host" |  | ||||||
|           ]; |  | ||||||
|           hostPackages = with pkgs; [ |  | ||||||
|             bash |  | ||||||
|             coreutils |  | ||||||
|             curl |  | ||||||
|             gawk |  | ||||||
|             gitMinimal |  | ||||||
|             gnused |  | ||||||
|             nodejs |  | ||||||
|             wget |  | ||||||
|             lix |  | ||||||
|           ]; |  | ||||||
|           settings = { |  | ||||||
|             log.level = "info"; |  | ||||||
|             runner = { |  | ||||||
|               capacity = 1; |  | ||||||
|               timeout = "3h"; |  | ||||||
|               shutdown_timeout = "5s"; |  | ||||||
|               fetch_timeout = "10s"; |  | ||||||
|               fetch_inteval = "5s"; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       } // cfg.runner-instances; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,40 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.hydra; |  | ||||||
|   inherit (lib) mkIf mkOption mkEnableOption; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.services.hydra = { |  | ||||||
|     enable = mkEnableOption "Enable Hydra CI"; |  | ||||||
|     httpPort = mkOption { |  | ||||||
|       type = lib.types.int; |  | ||||||
|       default = 2000; |  | ||||||
|       description = "The path to host the http server on, relevant for nginx forwarding"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     enableCache = mkEnableOption "Enable cache using nix-server"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     services.nix-serve = mkIf cfg.enableCache { |  | ||||||
|       enable = true; |  | ||||||
|       secretKeyFile = "/var/cache-priv-key.pem"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     services.hydra = { |  | ||||||
|       enable = true; |  | ||||||
|       hydraURL = "http://localhost:${toString cfg.httpPort}"; |  | ||||||
|       port = cfg.httpPort; |  | ||||||
|       notificationSender = "hydra@localhost"; |  | ||||||
|       useSubstitutes = true; |  | ||||||
|       extraConfig = '' |  | ||||||
|         allow-import-from-derivation = 1 |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,29 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.openssh; |  | ||||||
|   inherit (lib) mkIf mkEnableOption; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.services.openssh = { |  | ||||||
|     enable = mkEnableOption "Enable SSH"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     services.openssh = { |  | ||||||
|       enable = true; |  | ||||||
|       settings = { |  | ||||||
|         PasswordAuthentication = false; |  | ||||||
|         KbdInteractiveAuthentication = false; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     services.fail2ban = { |  | ||||||
|       enable = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,52 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   cfg = config.${namespace}.services.remotebuild; |  | ||||||
|   inherit (lib) mkIf mkEnableOption; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.services.remotebuild = { |  | ||||||
|     enable = mkEnableOption "Enable remotebuild"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     users.users.remotebuild = { |  | ||||||
|       isNormalUser = true; |  | ||||||
|       createHome = false; |  | ||||||
|       group = "remotebuild"; |  | ||||||
| 
 |  | ||||||
|       openssh.authorizedKeys.keys = [ |  | ||||||
|         "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJYZjG+XPNoVHVdCel5MK4mwvtoFCqDY1WMI1yoU71Rd root@yggdrasil" |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     users.groups.remotebuild = { }; |  | ||||||
| 
 |  | ||||||
|     nix = { |  | ||||||
|       nrBuildUsers = 64; |  | ||||||
|       settings = { |  | ||||||
|         trusted-users = [ "remotebuild" ]; |  | ||||||
| 
 |  | ||||||
|         min-free = 10 * 1024 * 1024; |  | ||||||
|         max-free = 200 * 1024 * 1024; |  | ||||||
| 
 |  | ||||||
|         max-jobs = "auto"; |  | ||||||
|         cores = 0; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       daemonIOSchedClass = lib.mkDefault "idle"; |  | ||||||
|       daemonCPUSchedPolicy = lib.mkDefault "idle"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     systemd.services.nix-daemon.serviceConfig = { |  | ||||||
|       MemoryAccounting = true; |  | ||||||
|       MemoryMax = "90%"; |  | ||||||
|       OOMScoreAdjust = 500; |  | ||||||
|       Slice = "-.slice"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -17,7 +17,7 @@ in | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment.systemPackages = with pkgs; [ |     environment.systemPackages = with pkgs; [ | ||||||
|       fastfetch |       neofetch | ||||||
| 
 | 
 | ||||||
|       fd |       fd | ||||||
|       tree |       tree | ||||||
|  | @ -27,27 +27,10 @@ in | ||||||
| 
 | 
 | ||||||
|       wslu |       wslu | ||||||
|       wsl-open |       wsl-open | ||||||
| 
 |  | ||||||
|       zip |  | ||||||
|       unzip |  | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     ${namespace} = { |     ${namespace} = { | ||||||
|       nix = { |       nix = enabled; | ||||||
|         enable = true; |  | ||||||
| 
 |  | ||||||
|         extra-substituters = { |  | ||||||
|           "https://cache.lix.systems" = { |  | ||||||
|             key = "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="; |  | ||||||
|           }; |  | ||||||
|           "https://nix-community.cachix.org" = { |  | ||||||
|             key = "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="; |  | ||||||
|           }; |  | ||||||
|           "https://nixcache.christophhollizeck.dev" = { |  | ||||||
|             key = "christophhollizeck.dev:7pPAvm9xqFQB8FDApVNL6Tii1Jsv+Sj/LjEIkdeGhbA="; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 | 
 | ||||||
|       apps.cli-apps.helix = enabled; |       apps.cli-apps.helix = enabled; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ in | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment.systemPackages = with pkgs; [ |     environment.systemPackages = with pkgs; [ | ||||||
|       fastfetch |       neofetch | ||||||
| 
 | 
 | ||||||
|       fd |       fd | ||||||
|       tree |       tree | ||||||
|  | @ -30,26 +30,10 @@ in | ||||||
|       pciutils |       pciutils | ||||||
|       usbutils |       usbutils | ||||||
|       btop |       btop | ||||||
| 
 |  | ||||||
|       zip |  | ||||||
|       unzip |  | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     ${namespace} = { |     ${namespace} = { | ||||||
|       nix = { |       nix = enabled; | ||||||
|         enable = true; |  | ||||||
|         extra-substituters = { |  | ||||||
|           "https://cache.lix.systems" = { |  | ||||||
|             key = "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="; |  | ||||||
|           }; |  | ||||||
|           "https://nix-community.cachix.org" = { |  | ||||||
|             key = "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="; |  | ||||||
|           }; |  | ||||||
|           "https://nixcache.christophhollizeck.dev" = { |  | ||||||
|             key = "christophhollizeck.dev:7pPAvm9xqFQB8FDApVNL6Tii1Jsv+Sj/LjEIkdeGhbA="; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 | 
 | ||||||
|       apps.cli-apps.helix = enabled; |       apps.cli-apps.helix = enabled; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,84 +0,0 @@ | ||||||
| Arch: win64 |  | ||||||
| CompatData: '' |  | ||||||
| Creation_Date: '2024-11-12 18:24:45.924771' |  | ||||||
| Custom_Path: false |  | ||||||
| DLL_Overrides: {} |  | ||||||
| DXVK: dxvk-2.4.1 |  | ||||||
| Environment: Custom |  | ||||||
| Environment_Variables: {} |  | ||||||
| External_Programs: |  | ||||||
|     b8ae3872-d1d4-435f-ba7f-1cd829b4da81: |  | ||||||
|         executable: eve-online-latest+Setup.exe |  | ||||||
|         folder: /home/cholli/Downloads |  | ||||||
|         id: b8ae3872-d1d4-435f-ba7f-1cd829b4da81 |  | ||||||
|         name: eve-online-latest+Setup |  | ||||||
|         path: /home/cholli/Downloads/eve-online-latest+Setup.exe |  | ||||||
| Installed_Dependencies: |  | ||||||
| - dotnet40 |  | ||||||
| - dotnet48 |  | ||||||
| - vcredist2022 |  | ||||||
| Language: sys |  | ||||||
| LatencyFleX: latencyflex-v0.1.1 |  | ||||||
| NVAPI: dxvk-nvapi-v0.7.1 |  | ||||||
| Name: EVE |  | ||||||
| Parameters: |  | ||||||
|     custom_dpi: 96 |  | ||||||
|     decorated: true |  | ||||||
|     discrete_gpu: false |  | ||||||
|     dxvk: true |  | ||||||
|     dxvk_nvapi: false |  | ||||||
|     fixme_logs: false |  | ||||||
|     fsr: false |  | ||||||
|     fsr_quality_mode: none |  | ||||||
|     fsr_sharpening_strength: 2 |  | ||||||
|     fullscreen_capture: false |  | ||||||
|     gamemode: false |  | ||||||
|     gamescope: false |  | ||||||
|     gamescope_borderless: false |  | ||||||
|     gamescope_fps: 0 |  | ||||||
|     gamescope_fps_no_focus: 0 |  | ||||||
|     gamescope_fullscreen: true |  | ||||||
|     gamescope_game_height: 0 |  | ||||||
|     gamescope_game_width: 0 |  | ||||||
|     gamescope_scaling: false |  | ||||||
|     gamescope_window_height: 0 |  | ||||||
|     gamescope_window_width: 0 |  | ||||||
|     latencyflex: false |  | ||||||
|     mangohud: false |  | ||||||
|     mouse_warp: true |  | ||||||
|     obsvkc: false |  | ||||||
|     pulseaudio_latency: false |  | ||||||
|     renderer: gl |  | ||||||
|     sandbox: false |  | ||||||
|     sync: wine |  | ||||||
|     take_focus: false |  | ||||||
|     use_be_runtime: true |  | ||||||
|     use_eac_runtime: true |  | ||||||
|     use_runtime: false |  | ||||||
|     use_steam_runtime: false |  | ||||||
|     versioning_automatic: false |  | ||||||
|     versioning_compression: false |  | ||||||
|     versioning_exclusion_patterns: false |  | ||||||
|     virtual_desktop: false |  | ||||||
|     virtual_desktop_res: 1280x720 |  | ||||||
|     vkbasalt: false |  | ||||||
|     vkd3d: true |  | ||||||
|     vmtouch: false |  | ||||||
|     vmtouch_cache_cwd: false |  | ||||||
| Path: EVE |  | ||||||
| Runner: caffe-9.7 |  | ||||||
| RunnerPath: '' |  | ||||||
| Sandbox: |  | ||||||
|     share_net: false |  | ||||||
|     share_sound: false |  | ||||||
| State: 0 |  | ||||||
| Uninstallers: {} |  | ||||||
| Update_Date: '2024-11-12 18:36:11.134986' |  | ||||||
| VKD3D: vkd3d-proton-2.13 |  | ||||||
| Versioning: false |  | ||||||
| Versioning_Exclusion_Patterns: [] |  | ||||||
| Windows: win10 |  | ||||||
| WorkingDir: /storage/home/bottles |  | ||||||
| data: {} |  | ||||||
| run_in_terminal: false |  | ||||||
| session_arguments: '' |  | ||||||
|  | @ -28,13 +28,15 @@ in | ||||||
|     fonts.packages = |     fonts.packages = | ||||||
|       with pkgs; |       with pkgs; | ||||||
|       [ |       [ | ||||||
|  |         (nerdfonts.override { | ||||||
|  |           fonts = [ | ||||||
|  |             "CodeNewRoman" | ||||||
|  |             "NerdFontsSymbolsOnly" | ||||||
|  |           ]; | ||||||
|  |         }) | ||||||
|         font-awesome |         font-awesome | ||||||
|         powerline-fonts |         powerline-fonts | ||||||
|         powerline-symbols |         powerline-symbols | ||||||
|         nerd-fonts.code-new-roman |  | ||||||
|         nerd-fonts.fira-code |  | ||||||
|         nerd-fonts.symbols-only |  | ||||||
|         fira |  | ||||||
|       ] |       ] | ||||||
|       ++ cfg.fonts; |       ++ cfg.fonts; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -18,11 +18,13 @@ in | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment.systemPackages = with pkgs; [ |     environment.systemPackages = with pkgs; [ | ||||||
|  |       noisetorch | ||||||
|       pavucontrol |       pavucontrol | ||||||
|       easyeffects |  | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     services.pulseaudio = disabled; |     programs.noisetorch.enable = true; | ||||||
|  | 
 | ||||||
|  |     hardware.pulseaudio = disabled; | ||||||
|     security.rtkit.enable = true; |     security.rtkit.enable = true; | ||||||
| 
 | 
 | ||||||
|     services.pipewire = { |     services.pipewire = { | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ in | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     environment.systemPackages = with pkgs; [ kdePackages.bluez-qt ]; |     environment.systemPackages = with pkgs; [ libsForQt5.bluez-qt ]; | ||||||
| 
 | 
 | ||||||
|     hardware.bluetooth = { |     hardware.bluetooth = { | ||||||
|       enable = true; |       enable = true; | ||||||
|  |  | ||||||
|  | @ -1,29 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   config, |  | ||||||
|   pkgs, |  | ||||||
|   namespace, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkEnableOption; |  | ||||||
|   cfg = config.${namespace}.system.hardware.gpu.amd; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.system.hardware.gpu.amd = { |  | ||||||
|     enable = mkEnableOption "Enable AMD GPU"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     hardware.graphics = { |  | ||||||
|       enable = true; |  | ||||||
|       enable32Bit = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     environment = { |  | ||||||
|       variables = { |  | ||||||
|         AMD_VULKAN_ICD = "RADV"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -26,21 +26,27 @@ in | ||||||
|     hardware.nvidia = { |     hardware.nvidia = { | ||||||
|       modesetting.enable = true; |       modesetting.enable = true; | ||||||
|       powerManagement.enable = true; |       powerManagement.enable = true; | ||||||
|       open = true; |       open = false; | ||||||
|       nvidiaSettings = true; |       nvidiaSettings = true; | ||||||
|       package = config.boot.kernelPackages.nvidiaPackages.beta; # stable, beta |       package = config.boot.kernelPackages.nvidiaPackages.stable; # stable, beta | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     services.xserver.videoDrivers = [ "nvidia" ]; |     services.xserver.videoDrivers = [ "nvidia" ]; | ||||||
|     boot.kernelParams = [ |     boot.kernelParams = [ | ||||||
|       "nvidia.NVreg_PreserveVideoMemoryAllocations=1" |  | ||||||
|       "nvidia_drm.fbdev=1" |       "nvidia_drm.fbdev=1" | ||||||
|  | 
 | ||||||
|  |       # TODO: remove after https://github.com/NVIDIA/open-gpu-kernel-modules/pull/692 | ||||||
|  |       # and similar are merged and build in nixpkgs-unstable. | ||||||
|  |       # WARNING: this disables tty output and thus hides boot logs. | ||||||
|  |       "initcall_blacklist=simpledrm_platform_driver_init" | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     environment.sessionVariables = { |     environment.sessionVariables = { | ||||||
|       GBM_BACKEND = "nvidia-drm"; |       GBM_BACKEND = "nvidia-drm"; | ||||||
|       __GLX_VENDOR_LIBRARY_NAME = "nvidia"; |       __GLX_VENDOR_LIBRARY_NAME = "nvidia"; | ||||||
|       LIBVA_DRIVER_NAME = "nvidia"; |       LIBVA_DRIVER_NAME = "nvidia"; | ||||||
|  |       __GL_GSYNC_ALLOWED = "1"; | ||||||
|  |       __GL_VRR_ALLOWED = "0"; | ||||||
|       NVD_BACKEND = "direct"; |       NVD_BACKEND = "direct"; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  | @ -1,23 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
|   inherit (lib) mkIf mkEnableOption; |  | ||||||
| 
 |  | ||||||
|   cfg = config.${namespace}.tools.devenv; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   options.${namespace}.tools.devenv = { |  | ||||||
|     enable = mkEnableOption "Whether or not to enable direnv."; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   config = mkIf cfg.enable { |  | ||||||
|     environment.systemPackages = [ |  | ||||||
|       pkgs.devenv |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -17,7 +17,7 @@ in | ||||||
|     enable = mkBoolOpt true "Wether or not to enable git (Default enabled)"; |     enable = mkBoolOpt true "Wether or not to enable git (Default enabled)"; | ||||||
|     userName = mkOpt types.str user.fullName "The name to use git with"; |     userName = mkOpt types.str user.fullName "The name to use git with"; | ||||||
|     userEmail = mkOpt types.str user.email "The email to use git with"; |     userEmail = mkOpt types.str user.email "The email to use git with"; | ||||||
|     signingKey = mkOpt types.str "ACCFA2DB47795D9E" "The key ID to sign commits with."; |     signingKey = mkOpt types.str "6995A5FF33791B7B" "The key ID to sign commits with."; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|  | @ -34,7 +34,7 @@ in | ||||||
|         lfs.enable = true; |         lfs.enable = true; | ||||||
|         signing = { |         signing = { | ||||||
|           key = cfg.signingKey; |           key = cfg.signingKey; | ||||||
|           signByDefault = true; |           signByDefault = mkIf gpg.enable true; | ||||||
|         }; |         }; | ||||||
|         extraConfig = { |         extraConfig = { | ||||||
|           init = { |           init = { | ||||||
|  | @ -46,13 +46,9 @@ in | ||||||
|           push = { |           push = { | ||||||
|             autoSetupRemote = true; |             autoSetupRemote = true; | ||||||
|           }; |           }; | ||||||
|           rebase = { |  | ||||||
|             autoStash = true; |  | ||||||
|           }; |  | ||||||
|           safe = { |           safe = { | ||||||
|             directory = "${config.users.users.${user.name}.home}/projects/config"; |             directory = "${config.users.users.${user.name}.home}/projects/config"; | ||||||
|           }; |           }; | ||||||
|           lfs."https://git.christophhollizeck.dev/Daholli/nixos-config.git/info/lfs".locksverify = true; |  | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ | ||||||
|   config, |   config, | ||||||
|   lib, |   lib, | ||||||
|   namespace, |   namespace, | ||||||
|  |   options, | ||||||
|   pkgs, |   pkgs, | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
|  | @ -10,6 +11,33 @@ with lib.${namespace}; | ||||||
| let | let | ||||||
|   cfg = config.${namespace}.user; |   cfg = config.${namespace}.user; | ||||||
|   defaultIconFileName = "profile.png"; |   defaultIconFileName = "profile.png"; | ||||||
|  |   defaultIcon = pkgs.stdenvNoCC.mkDerivation { | ||||||
|  |     name = "default-icon"; | ||||||
|  |     src = ./. + "/${defaultIconFileName}"; | ||||||
|  | 
 | ||||||
|  |     dontUnpack = true; | ||||||
|  | 
 | ||||||
|  |     installPhase = '' | ||||||
|  |       cp $src $out | ||||||
|  |     ''; | ||||||
|  | 
 | ||||||
|  |     passthru = { | ||||||
|  |       fileName = defaultIconFileName; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  |   propagatedIcon = | ||||||
|  |     pkgs.runCommandNoCC "propagated-icon" | ||||||
|  |       { | ||||||
|  |         passthru = { | ||||||
|  |           inherit (fileName) ; | ||||||
|  |         }; | ||||||
|  |       } | ||||||
|  |       '' | ||||||
|  |         local target="$out/share/${namespace}-icons/user/${cfg.name}" | ||||||
|  |         mkdir -p "$target" | ||||||
|  | 
 | ||||||
|  |         cp ${cfg.icon} "$target/${cfg.icon.fileName}" | ||||||
|  |       ''; | ||||||
| in | in | ||||||
| { | { | ||||||
|   options.${namespace}.user = with types; { |   options.${namespace}.user = with types; { | ||||||
|  | @ -17,7 +45,7 @@ in | ||||||
|     fullName = mkOpt str "Christoph Hollizeck" "The full name of the user."; |     fullName = mkOpt str "Christoph Hollizeck" "The full name of the user."; | ||||||
|     email = mkOpt str "christoph.hollizeck@hey.com" "The email of the user."; |     email = mkOpt str "christoph.hollizeck@hey.com" "The email of the user."; | ||||||
|     initialPassword = mkOpt str "asdf" "The initial password to use when the user is first created."; |     initialPassword = mkOpt str "asdf" "The initial password to use when the user is first created."; | ||||||
|     icon = mkOpt (nullOr path) ./${defaultIconFileName} "The profile picture to use for the user."; |     icon = mkOpt (nullOr package) defaultIcon "The profile picture to use for the user."; | ||||||
|     extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned."; |     extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned."; | ||||||
|     extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.<name>`."); |     extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.<name>`."); | ||||||
|     trustedPublicKeys = mkOption { |     trustedPublicKeys = mkOption { | ||||||
|  | @ -50,7 +78,7 @@ in | ||||||
|         "Videos/.keep".text = ""; |         "Videos/.keep".text = ""; | ||||||
|         "projects/.keep".text = ""; |         "projects/.keep".text = ""; | ||||||
|         ".face".source = cfg.icon; |         ".face".source = cfg.icon; | ||||||
|         "Pictures/${defaultIconFileName}".source = cfg.icon; |         "Pictures/${cfg.icon.fileName or (builtins.baseNameOf cfg.icon)}".source = cfg.icon; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										9
									
								
								overlays/discord/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								overlays/discord/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | ||||||
|  | { ... }: | ||||||
|  | 
 | ||||||
|  | final: prev: { | ||||||
|  |   discord = prev.discord.overrideAttrs (oldAttrs: { | ||||||
|  |     commandLineArgs = '' | ||||||
|  |       --disable-gpu-compositing | ||||||
|  |     ''; | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | @ -1,8 +1,3 @@ | ||||||
| { ... }: | { channels, ... }: | ||||||
| final: prev: { | 
 | ||||||
|   path-of-building = prev.path-of-building.overrideAttrs (prevAttrs: { | final: prev: { inherit (channels.nixpkgs-unstable) pobfrontend; } | ||||||
|     postInstall = '' |  | ||||||
|       wrapProgram $out/bin/pobfrontend --set QT_QPA_PLATFORM xcb |  | ||||||
|     ''; |  | ||||||
|   }); |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -1,8 +0,0 @@ | ||||||
| { ... }: |  | ||||||
| final: prev: { |  | ||||||
|   starsector = prev.starsector.overrideAttrs (prevAttrs: { |  | ||||||
|     postInstall = '' |  | ||||||
|       wrapProgram $out/bin/starsector --set __GL_THREADED_OPTIMIZATIONS 0 |  | ||||||
|     ''; |  | ||||||
|   }); |  | ||||||
| } |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| { channels, ... }: |  | ||||||
| 
 |  | ||||||
| final: prev: { |  | ||||||
|   tuya-vacuum = channels.nixpkgs-tuya-vacuum.python3Packages.tuya-vacuum; |  | ||||||
| } |  | ||||||
|  | @ -1,44 +1,30 @@ | ||||||
| factorio: | #ENC[AES256_GCM,data:Cgp+gOU81+rvdlY=,iv:8DxJxnCslDoEu0bxtlTjmNiAUCdiAV/8VYKTb4yqQ50=,tag:ZTkK7WCOBh1It6GuKPUXdg==,type:comment] | ||||||
|     username: ENC[AES256_GCM,data:aFRsUMsoaw==,iv:8EGn99WbgJxUyEKuOcwV6U8awOl7bDfmui+M3mDBoCg=,tag:BzMvGS3lfTsXToI/I5dguQ==,type:str] | factorio_username: ENC[AES256_GCM,data:egV5kXtAiw==,iv:Hay0PC2yol5FAJGcWxLkxzNdwpD1V4UfDDnkhsjvjVQ=,tag:QBDS6eAeOswQoHBoi4Gj6A==,type:str] | ||||||
|     token: ENC[AES256_GCM,data:WP6FTOBOBuNF6+pzi090wXsXpL2XsU34dQ2ZMzmw,iv:uKM4hLyx3vdyk9F0SyKu4x+2sl442GWXwEKbdgo/Dug=,tag:Xw3BJ7wxuft6hOG9cGtW0g==,type:str] | factorio_token: ENC[AES256_GCM,data:whruEJQCNIqqfMA0A3yQdwwrzpIJBt815Lvex4Au,iv:hh3zZt+UxV9ltSHIAjpTRwtDvPgPU5APrB/1bXtKUkE=,tag:AgUmBYWp+Oyxm8O7yD8vlA==,type:str] | ||||||
|     game_password: ENC[AES256_GCM,data:GtLNoCdQH1M=,iv:dxOMtXscLeMdsQxWjNgrIMb08vL2wAswvd1oM6pEWPA=,tag:a55ciDtw9mjLM9x5YQBTwQ==,type:str] | factorio_game_password: ENC[AES256_GCM,data:Gu/p0+Sbd6Y=,iv:6AB1T3JdleiUnusU7hw/0wOFNSBsAsBgP2yD9FB7zXk=,tag:DMgD4csthynuBon+KNZtOw==,type:str] | ||||||
| forgejo: | #ENC[AES256_GCM,data:15i2BBxM4iM=,iv:JV6Lsk8jUZl/eIJWkH/w5I2NraB9J9+0ggsENBGgbdI=,tag:HDwGheUv7dFIztQoJBjGmQ==,type:comment] | ||||||
|     db: | forgejo_db_password: ENC[AES256_GCM,data:CFsvko1AXRymDBC6WiOBs98rvFM=,iv:Wemhu8URxA6HsWQyYcPSwJzuMP4myrDC3rU3GEDVt7c=,tag:6wcNlDFVdnjez8hzi4E2cw==,type:str] | ||||||
|         password: ENC[AES256_GCM,data:CicLsCG2WCtiKMcz3DF5eVVaT8A=,iv:SPO1H4AZwo5FjJWkf1OS7aPOrpTGxqsAj4q3cuuWAbA=,tag:0snK8RyAd8heNvui2sbSNw==,type:str] | #ENC[AES256_GCM,data:nQnLBl7v,iv:HORr/Uvw4eUXfW5uS6rWr+6FkFF9bTNpMYGaRpVITRY=,tag:/r4n/xpqp7EPecGxDj4N+w==,type:comment] | ||||||
|     mail: | netcup_customer_number: ENC[AES256_GCM,data:pRooJa3O,iv:0U/ONcWa2eqcsT1UpgXmLpAvJndaU8zln2g1HMbBQYE=,tag:+pu8EBl/dnm6DoLAtrjZBQ==,type:str] | ||||||
|         password: ENC[AES256_GCM,data:XgQZM0MBUEELyhH7UvyyMEiUABs=,iv:m3Wzs2SAPQ2w6UC02lpTvwd83Dt0LEzqdIj65HeOrbU=,tag:3cr5dnjeyoJ4ze9RFd9K5g==,type:str] | netcup_api_key: ENC[AES256_GCM,data:nlkDz1VV2NIXxv/tIROWDHN9DLI0lVq9n9l2FlDwt+3H4G4gg6yCeZjGtR+pTCNfwio=,iv:x8HLL10ww52UJDkz7Yi02KBg7jbuLFHAlG0iMYDd8hk=,tag:pcuka4/Hu/QFIwS0b8GlxQ==,type:str] | ||||||
|         passwordHash: ENC[AES256_GCM,data:hHGJBUEtCi/gErZ5vm0gsEFqyIDNkED4scR4NAOSzbiiZAYTMg++yqf3hfjjwWV3wTPswNpzzw+gYKEH,iv:wDM5IOOamopFpMEkUit4y7LBZi8CJff3+Tc08lK4IXI=,tag:FaaaohtA+vBFwjDugoemQw==,type:str] | netcup_api_password: ENC[AES256_GCM,data:k2mdQp57x5ZTypRCHbVlq1fembJ0uj5D0rb72K5rac43p888y3TFyiYVuDTosxR66mo=,iv:0OhtKWD/LWeV5ZWN9fbPozebSxvaFRdSn1AkX97ffAM=,tag:uY6A4jBL/9mtGy7++Yvn0A==,type:str] | ||||||
|     runner: |  | ||||||
|         token: ENC[AES256_GCM,data:mnKLrRPsh3l8jVOCxBrZvSoELR+Bbf8iWBbb8fFmO+0tVniV87M3/0CDneXkuA==,iv:jdySCO3mB+Kz236IBuz8SMGBI6dtFjvcaQLb0zOxW/w=,tag:h+HGLRnbDYLHrTd5dnMIYw==,type:str] |  | ||||||
| netcup: |  | ||||||
|     customer_number: ENC[AES256_GCM,data:9+QboNg1,iv:Tg9ylJUM8L/kzqFmk2uIsD9noqnp5wIxr5GVXMsZwB8=,tag:2qRggSIkPHuCQYDWCfka5Q==,type:str] |  | ||||||
|     api: |  | ||||||
|         key: ENC[AES256_GCM,data:eYTKtJSSXmZfkRjlj65OHi99mpD3Iom8dPc8v34pwJIQSBbxVaqdgb7Gqzhse1c9L+U=,iv:9gmsBwlJ+NQIGY5NBA6Fi/1EQium2pcfQkF7x/fHyFU=,tag:v25eeqT6/WEMG9za7LVWAg==,type:str] |  | ||||||
|         password: ENC[AES256_GCM,data:VTW4XGDg19AbE4EM6kS0u89Sz6718vHXvZZmQlkhGJe/4/LQJHmF1FetAClxkLZ9Za0=,iv:sWHvjHEsMXBbtFmkEdAOeSlQ6VTabRJ28kH3iP3GDaY=,tag:5k6NXFXwXHorUGKe+sAbbg==,type:str] |  | ||||||
| hydra: |  | ||||||
|     cachix: |  | ||||||
|         token: ENC[AES256_GCM,data:FqlJMfw7d1VfWhC+vI4SEMWzzADXK/np33fCsihq3wgC6nWNeTurNn1vDRLIRH+s6iT1C8Ni8iAAlndfUS5SPH6Ymswix9KuJCvYc8Jy+c8pPchYePtMQfv3dVe5a1i06b8I5c+MX8V7j2kaCijYDirnhiD0qlc8SW/mIyB5RNpAgKPTzLjLKJNSUkTGOWUnww==,iv:H2yQ5ioBVnezmhGHbJ7sAlXvUb2MUmHpQpS7f+nIph4=,tag:qvqsbgf2Y/PAd3s9ZFuxWA==,type:str] |  | ||||||
| sops: | sops: | ||||||
|  |     kms: [] | ||||||
|  |     gcp_kms: [] | ||||||
|  |     azure_kv: [] | ||||||
|  |     hc_vault: [] | ||||||
|     age: |     age: | ||||||
|         - recipient: age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85 |         - recipient: age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85 | ||||||
|           enc: | |           enc: | | ||||||
|             -----BEGIN AGE ENCRYPTED FILE----- |             -----BEGIN AGE ENCRYPTED FILE----- | ||||||
|             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBleDhiRlplSndCcUhaMXV3 |             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3NFlTd2hOTHBtUDhuT0lF | ||||||
|             ZUR5QXVyemQ2VlhaQ1JjampwaWV5emhnVGt3ClBWRlJJbmx4cldDWmI3cUd2M0Z5 |             amtLclY2ZTN0SStZQjFSNkZUd1RmMkdJZ0dJCnB2WU04dk41Qk45aGphMW9GQVJ4 | ||||||
|             YTl5ODVTbmZjM2UxQkhGZ3hvRWVqWmMKLS0tIFlDZXJTQi9wTGxRWElvcDRPVStj |             b2VWQVlOVFFLaGJWaU9FVU5ZUWtlRncKLS0tIGVPYW5DQnJMeW1qdWtINDNlQWFo | ||||||
|             MGV3VDBEMWkxNkV4TGV6dTFWaDhLWXMKg2Xt5PJe7etU1yp+IgnwTnLl7AXaN1MA |             NmhrdXhpbVlmUFNsT1VaQjZyYkZkdzgKhL2BKXfPWNWUbFavpmtBQpnNEm/x0xH6 | ||||||
|             5RymeKYjdNipJtxSNxzTjkNpENtHyXLcjVEBTH3IjGujtyGPMpk3eg== |             NsjiV05AcrqPmGjj2kjvTv4ULPSoHiHiC5McUMfFTYIrCJgNvUbmMg== | ||||||
|             -----END AGE ENCRYPTED FILE----- |             -----END AGE ENCRYPTED FILE----- | ||||||
|         - recipient: age13xshg5e6ucvnu3vqgn344mxpk5kcqutv2lf4gdffvwadq0ku5ewqy4cck6 |     lastmodified: "2024-11-07T14:40:34Z" | ||||||
|           enc: | |     mac: ENC[AES256_GCM,data:uk2AeOA9pnhekuofIjXavCGy9ZaO0ObprkvnGhJg5lPr/hyT9l7YcZtMQ7wckKDLS03I1hCAcNg0w/EmSUeU2+EHLb6Z1IUj3l0HBUPtPIJwJZifkrzp9iQwGwlK+i6nfREEgPGeuNMj/rnD67MECO4NRHTzGBzH7ZImoDpu0Us=,iv:ss8Q7i75UOQDMJfw4dQCT0qxPUGwfHizX0c/TUej+vc=,tag:iufeO6sfaToNcJg6E8tuxA==,type:str] | ||||||
|             -----BEGIN AGE ENCRYPTED FILE----- |     pgp: [] | ||||||
|             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArRTBLR09YS0tuM212a25G |  | ||||||
|             cWV5bnR5ZytjQWIvd2txSmdEWjExeWRSbTNvClQwMjc4VnhtdnpKQmQ3Z0JOTEFW |  | ||||||
|             OEtEZ0h2bDlPb3UrNTZFVFdCajdzSGcKLS0tIG16UFNqRVpWOHJNTE03TkFTUDF1 |  | ||||||
|             UllqSDR1YWl6aU1jSnY2WE9oczg5Q28KfN15tFxXHrJmOHySK+cyLi2bFqArg244 |  | ||||||
|             bNTYyuBUtBW1Y/EuNpbyLjSNQpKZWFz7grE64uxrNQHP865N3wv0gg== |  | ||||||
|             -----END AGE ENCRYPTED FILE----- |  | ||||||
|     lastmodified: "2025-04-30T16:13:29Z" |  | ||||||
|     mac: ENC[AES256_GCM,data:KBJJJc30KARd79w7iTZ4DPwpgcZGTf3oE85xVO//KX8uq/rPPWuXBSwDGcIKlWGVpwiNbCqVvoH3DhKxJfKnuGKadK96xjv3KyIR2H8KMvhTQDXodt61ZyNERDEpa1HcuOemYpAe8W1cUzJkm1wxNublNYBdKz1kQKMQ43tgalk=,iv:wr+nqXKB5wW4VgIr1z61f+LXsw76mMs4kFAOYAkV+tk=,tag:m8uLg6HQhIL1oN1pWQoTAg==,type:str] |  | ||||||
|     unencrypted_suffix: _unencrypted |     unencrypted_suffix: _unencrypted | ||||||
|     version: 3.10.2 |     version: 3.9.1 | ||||||
|  |  | ||||||
|  | @ -1,43 +0,0 @@ | ||||||
| hello: ENC[AES256_GCM,data:Chu3BJw5FUpcyFL0pstHML2ASUFZE/vByvPOLlx7/FB+/TlY0ZOS75XvOLobuw==,iv:FVQkNRCDehby6EmNVIY+qRsHdIxTvVtNeGQrkmlTLPc=,tag:fUS0Ntsn2U3NBT0Jz7NbqQ==,type:str] |  | ||||||
| example_key: ENC[AES256_GCM,data:JzNQOxeTJW1CACce9Q==,iv:KNpw2AcMallVJRJgM045QVZ1NJhuDPGAq0GS/ffHF9Q=,tag:xe8nGrG8TJeNBRHG4XfJfQ==,type:str] |  | ||||||
| #ENC[AES256_GCM,data:hF5EESbtBCCkSEhlo7sZhw==,iv:nwEOaph9RXiDPYpFJMFe8xQLg/geF+/uZbh/7OS6pQI=,tag:2VE8ThB2AGhGfcrSv8IMEw==,type:comment] |  | ||||||
| example_array: |  | ||||||
|     - ENC[AES256_GCM,data:wo1Bhh1uS2YRTUsO/o4=,iv:gexmBvW6Pzllqjy476Bz+k9QGKFwVu5A28QRJ/4kMag=,tag:PTshms817ZQ/q4AKmfShsg==,type:str] |  | ||||||
|     - ENC[AES256_GCM,data:yzAukUqZvAyetJT909w=,iv:yI8DuCL+5UDg68x3DAN90u491HLBBzloRj1MXtyNmGg=,tag:18SuyRpTSKHAVUgs3yeOig==,type:str] |  | ||||||
| example_number: ENC[AES256_GCM,data:6nVMpQYOEGAyOw==,iv:GdAPLzbtX2+WGebca69WWFp/MDxpn35slcKuVV35RpA=,tag:3CpIbId/k/rkjDRb/Zb+sw==,type:float] |  | ||||||
| example_booleans: |  | ||||||
|     - ENC[AES256_GCM,data:XSKOGQ==,iv:sGMyrxXDziwegrAesHClLUnUo0pI8s3zFeufTfTqB44=,tag:0AHWfkCFDAHeSZcrQUw42Q==,type:bool] |  | ||||||
|     - ENC[AES256_GCM,data:6zfyErQ=,iv:2XqbeLNj1wMgiX4F0uPykiieR5HiVEsxL0DrgGd1Gao=,tag:ZiB4P71l/vrqllo8mXEp9g==,type:bool] |  | ||||||
| homeassistant: |  | ||||||
|     location: |  | ||||||
|         latitude: ENC[AES256_GCM,data:BWIGR74SOTQydeREhDFLMAU=,iv:oqCyFzp1ZFzvHIHm1httPgO6mYjRVi456/xw2wyDkxk=,tag:fBak58KkIXLUpBorosZ3jw==,type:float] |  | ||||||
|         longitude: ENC[AES256_GCM,data:ocU0OeFeNk6UX3AT9daYnQw=,iv:nGPYr+ee3QOxX2Tq7H8Qt/ghY2ygt0ztpaAgTyMsLOs=,tag:jIvO1ZLsGCiRFRxoHKzWDA==,type:float] |  | ||||||
| sops: |  | ||||||
|     kms: [] |  | ||||||
|     gcp_kms: [] |  | ||||||
|     azure_kv: [] |  | ||||||
|     hc_vault: [] |  | ||||||
|     age: |  | ||||||
|         - recipient: age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85 |  | ||||||
|           enc: | |  | ||||||
|             -----BEGIN AGE ENCRYPTED FILE----- |  | ||||||
|             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlTzF0TlpYeVFkNGUwM3g1 |  | ||||||
|             SmRjMUJaVkhwSzN1ckE3WCthaFU0OVhFc0hzCmFjd0lhRlhYMGRKRVMvUTBiRkoy |  | ||||||
|             NUc0amFTWEtkMEp6WHZ5VkM0ODVNM2sKLS0tIHRGTDdkRmtsZFNVQTd1YUhpMkxQ |  | ||||||
|             U2RUUjY5cnBwcEhtRE0wRkxGMWIrYkkKtV692BxbjxbAqyssbh5Whqkytg4LN91x |  | ||||||
|             ZPwVv2s5TuZl7OG0p2qt4rbKg8WCrjK2K0TF2l1Hwdcpbrswf1H1ng== |  | ||||||
|             -----END AGE ENCRYPTED FILE----- |  | ||||||
|         - recipient: age1ev7c7xfz0gmj6p5p8ugzz55y28lsn8fjlk0d8wc3w9drmw4e69ys6z5yg4 |  | ||||||
|           enc: | |  | ||||||
|             -----BEGIN AGE ENCRYPTED FILE----- |  | ||||||
|             YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMVGZudDd5VDlqZERQOVNE |  | ||||||
|             S21PSC9zOFltTHQ1dW9qZ1grem1RdUlBRG5NClZzMEZvVlZ3L0d3MjVvQ1NxQXAz |  | ||||||
|             VGJ1STdsdDVmNzVmbkhQWkt3V0k1QVUKLS0tIHhOTlJ5ZnYzZitEZFNoU2xGdHBx |  | ||||||
|             N1hma0VrbE5HR0xNWVV2NHdMSW0yL1kKrrPaslz+pejsNy/jwopBqi3I9J1PCk+Y |  | ||||||
|             hRgQt4mWfd7ua3Ja+Cq/Rm/pRZFX40g4pImaYdsWL8VNwAJid1WuKQ== |  | ||||||
|             -----END AGE ENCRYPTED FILE----- |  | ||||||
|     lastmodified: "2025-03-28T12:52:52Z" |  | ||||||
|     mac: ENC[AES256_GCM,data:X/noJJr/L1PfvfIdSoVULpvtH2JDIHnkQBhFqM6k3DR+x+cN+ReLXN/uBQyAKd5uSgsmtl9QjlidzByDqRQaOpqEDIk4o9qbchMLWxceAFZyj+7nFB4e50mu9pyCT2ibumuP5X8kscn4U9x5oiKfoMXB11yqioBtQES4B4mOBsw=,iv:CQcIiNKnzLz5ibGub1hqRkW5m0CjLcWVTyDA2hTJM+M=,tag:7/T1p1ouYTZjYz0+RGG6pg==,type:str] |  | ||||||
|     pgp: [] |  | ||||||
|     unencrypted_suffix: _unencrypted |  | ||||||
|     version: 3.9.4 |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| { |  | ||||||
|   pkgs, |  | ||||||
|   mkShell, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| mkShell { |  | ||||||
|   # Create your shell |  | ||||||
|   nativeBuildInputs = with pkgs; [ |  | ||||||
|     jdt-language-server |  | ||||||
|     zulu8 |  | ||||||
|     zulu21 |  | ||||||
|     jetbrains.idea-community |  | ||||||
|     maven |  | ||||||
|     ant |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,27 +0,0 @@ | ||||||
| { |  | ||||||
|   # Snowfall Lib provides a customized `lib` instance with access to your flake's library |  | ||||||
|   # as well as the libraries available from your flake's inputs. |  | ||||||
|   lib, |  | ||||||
|   # You also have access to your flake's inputs. |  | ||||||
|   inputs, |  | ||||||
| 
 |  | ||||||
|   # The namespace used for your flake, defaulting to "internal" if not set. |  | ||||||
|   namespace, |  | ||||||
| 
 |  | ||||||
|   # All other arguments come from NixPkgs. You can use `pkgs` to pull shells or helpers |  | ||||||
|   # programmatically or you may add the named attributes as arguments here. |  | ||||||
|   pkgs, |  | ||||||
|   mkShell, |  | ||||||
|   system, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
| 
 |  | ||||||
| in |  | ||||||
| mkShell { |  | ||||||
|   # Create your shell |  | ||||||
|   nativeBuildInputs = [ |  | ||||||
|     inputs.zig-overlay.packages.${system}.master |  | ||||||
|     inputs.zls.packages.${system}.zls |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,266 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   inputs, |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   pkgs, |  | ||||||
|   system, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| 
 |  | ||||||
| with lib.${namespace}; |  | ||||||
| let |  | ||||||
|   inherit (lib) mkForce; |  | ||||||
| 
 |  | ||||||
|   ipAddress = "192.168.178.2"; |  | ||||||
|   sopsFile = lib.snowfall.fs.get-file "secrets/secrets-nixberry.yaml"; |  | ||||||
| 
 |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   nixpkgs.hostPlatform = { |  | ||||||
|     system = "aarch64-linux"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   services.tailscale = { |  | ||||||
|     enable = true; |  | ||||||
|     useRoutingFeatures = "server"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   networking = { |  | ||||||
|     interfaces.end0 = { |  | ||||||
|       ipv4.addresses = [ |  | ||||||
|         { |  | ||||||
|           address = ipAddress; |  | ||||||
|           prefixLength = 24; |  | ||||||
|         } |  | ||||||
|       ]; |  | ||||||
|       useDHCP = true; |  | ||||||
|     }; |  | ||||||
|     interfaces.wlan0 = { |  | ||||||
|       ipv4.addresses = [ |  | ||||||
|         { |  | ||||||
|           address = "192.168.178.3"; |  | ||||||
|           prefixLength = 24; |  | ||||||
|         } |  | ||||||
|       ]; |  | ||||||
|       useDHCP = true; |  | ||||||
|     }; |  | ||||||
|     defaultGateway = { |  | ||||||
|       address = "192.168.178.1"; |  | ||||||
|       interface = "wlan0"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     wireless = { |  | ||||||
|       enable = true; |  | ||||||
|       networks = { |  | ||||||
|         "Slow Internet" = { |  | ||||||
|           pskRaw = "521b6d766b27276c29c7b6bec5b495b1c52bf88b0682277e65b37dc649b630de"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|     firewall = { |  | ||||||
|       allowedTCPPorts = [ |  | ||||||
|         443 |  | ||||||
|         53 |  | ||||||
|         80 |  | ||||||
|       ]; |  | ||||||
|       allowedUDPPorts = [ |  | ||||||
|         53 |  | ||||||
|       ]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   services.adguardhome = { |  | ||||||
|     enable = true; |  | ||||||
|     host = ipAddress; |  | ||||||
|     port = 80; |  | ||||||
| 
 |  | ||||||
|     settings = { |  | ||||||
|       http = { |  | ||||||
|         address = "0.0.0.0:80"; |  | ||||||
|       }; |  | ||||||
|       dns = { |  | ||||||
|         ratelimit = 0; |  | ||||||
|         bind_hosts = [ "0.0.0.0" ]; |  | ||||||
|         upstream_dns = [ |  | ||||||
|           "1.1.1.1" |  | ||||||
|           "1.0.0.1" |  | ||||||
|           "8.8.8.8" |  | ||||||
|           "8.8.4.4" |  | ||||||
|         ]; |  | ||||||
|       }; |  | ||||||
|       filtering = { |  | ||||||
|         protection_enabled = true; |  | ||||||
|         filtering_enabled = true; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       filters = |  | ||||||
|         map |  | ||||||
|           (url: { |  | ||||||
|             enabled = true; |  | ||||||
|             url = url; |  | ||||||
|           }) |  | ||||||
|           [ |  | ||||||
|             "https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt" # AdGuard Dns filter |  | ||||||
|             "https://adguardteam.github.io/HostlistsRegistry/assets/filter_59.txt" # AdGuard Dns PopupHosts filter |  | ||||||
|             "https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt" # The Big List of Hacked Malware Web Sites |  | ||||||
|             "https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt" # malicious url blocklist |  | ||||||
|             "https://adguardteam.github.io/HostlistsRegistry/assets/filter_18.txt" # Phishing |  | ||||||
|             "https://adguardteam.github.io/HostlistsRegistry/assets/filter_24.txt" |  | ||||||
|             "https://adguardteam.github.io/HostlistsRegistry/assets/filter_47.txt" |  | ||||||
|           ]; |  | ||||||
| 
 |  | ||||||
|       statistics = { |  | ||||||
|         enabled = true; |  | ||||||
|         interval = "8760h"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   systemd.tmpfiles.rules = [ |  | ||||||
|     # "C+ /var/lib/hass/custom_components/tuya_vacuum_maps - - - - ${inputs.tuya-vaccum-maps}/custom_components/tuya_vacuum_maps" |  | ||||||
|     # "Z /var/lib/hass/custom_components 770 hass hass - -" |  | ||||||
|     "f ${config.services.home-assistant.configDir}/automations.yaml 0755 hass hass" |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   services.home-assistant = { |  | ||||||
|     enable = true; |  | ||||||
|     configWritable = true; |  | ||||||
|     extraComponents = [ |  | ||||||
|       "default_config" |  | ||||||
|       "analytics" |  | ||||||
|       "shopping_list" |  | ||||||
|       "fritzbox" |  | ||||||
|       "met" |  | ||||||
|       "esphome" |  | ||||||
|       "rpi_power" |  | ||||||
|       "tuya" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     customComponents = with pkgs.home-assistant-custom-components; [ |  | ||||||
|       smartthinq-sensors |  | ||||||
|       sleep_as_android |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     extraPackages = |  | ||||||
|       python3Packages: with python3Packages; [ |  | ||||||
|         ical |  | ||||||
|       ]; |  | ||||||
| 
 |  | ||||||
|     customLovelaceModules = with pkgs.home-assistant-custom-lovelace-modules; [ |  | ||||||
|       mushroom |  | ||||||
|       bubble-card |  | ||||||
|       clock-weather-card |  | ||||||
|       vacuum-card |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     config = { |  | ||||||
|       homeassistant = { |  | ||||||
|         latitude = 49.4; |  | ||||||
|         longitude = 8.6; |  | ||||||
|         temperature_unit = "C"; |  | ||||||
|         unit_system = "metric"; |  | ||||||
| 
 |  | ||||||
|         external_url = "https://ha.christophhollizeck.dev"; |  | ||||||
|         internal_url = "http://192.168.178.2:8123"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       default_config = ""; |  | ||||||
| 
 |  | ||||||
|       mobile_app = ""; |  | ||||||
|       recorder = ""; |  | ||||||
| 
 |  | ||||||
|       lovelace = { |  | ||||||
|         # mode = "yaml"; |  | ||||||
|         resources = [ |  | ||||||
|           { |  | ||||||
|             url = "/local/nixos-lovelace-modules/vacuum-card.js"; |  | ||||||
|             type = "module"; |  | ||||||
|           } |  | ||||||
|           { |  | ||||||
|             url = "/local/nixos-lovelace-modules/bubble-card.js"; |  | ||||||
|             type = "module"; |  | ||||||
|           } |  | ||||||
|           { |  | ||||||
|             url = "/local/nixos-lovelace-modules/clock-weather-card.js"; |  | ||||||
|             type = "module"; |  | ||||||
|           } |  | ||||||
|           { |  | ||||||
|             url = "/local/nixos-lovelace-modules/mushroom.js"; |  | ||||||
|             type = "module"; |  | ||||||
|           } |  | ||||||
|         ]; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       http = { |  | ||||||
|         use_x_forwarded_for = true; |  | ||||||
|         trusted_proxies = [ |  | ||||||
|           "100.86.250.97" # loptland tailscale |  | ||||||
|         ]; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|     openFirewall = true; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Pi specific stuff |  | ||||||
|   raspberry-pi-nix = { |  | ||||||
|     board = "bcm2712"; |  | ||||||
|     # kernel-build-system = "x86_64-linux"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   hardware = { |  | ||||||
|     raspberry-pi = { |  | ||||||
|       config = { |  | ||||||
|         all = { |  | ||||||
|           base-dt-params = { |  | ||||||
|             BOOT_UART = { |  | ||||||
|               value = 1; |  | ||||||
|               enable = true; |  | ||||||
|             }; |  | ||||||
|             uart_2ndstage = { |  | ||||||
|               value = 1; |  | ||||||
|               enable = true; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|           dt-overlays = { |  | ||||||
|             disable-bt = { |  | ||||||
|               enable = true; |  | ||||||
|               params = { }; |  | ||||||
|             }; |  | ||||||
|           }; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   ${namespace} = { |  | ||||||
|     submodules.basics = enabled; |  | ||||||
| 
 |  | ||||||
|     services = { |  | ||||||
|       openssh = enabled; |  | ||||||
|       remotebuild = enabled; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     apps.cli-apps.helix.pkg = pkgs.helix; |  | ||||||
| 
 |  | ||||||
|     system = { |  | ||||||
|       # cachemiss for webkit gtk |  | ||||||
|       hardware.networking.enable = mkForce false; |  | ||||||
| 
 |  | ||||||
|       # rasberry pi uses alternative boot settings |  | ||||||
|       boot.enable = mkForce false; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     user.trustedPublicKeys = [ |  | ||||||
|       "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFrDiO5+vMfD5MimkzN32iw3MnSMLZ0mHvOrHVVmLD0" |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # 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 = "24.11"; # Did you read the comment? |  | ||||||
| } |  | ||||||
|  | @ -11,7 +11,6 @@ let | ||||||
| 
 | 
 | ||||||
|   domainName = "christophhollizeck.dev"; |   domainName = "christophhollizeck.dev"; | ||||||
|   forgejoPort = 3000; |   forgejoPort = 3000; | ||||||
|   hydraPort = 2000; |  | ||||||
| 
 | 
 | ||||||
|   cfg.enableAcme = true; |   cfg.enableAcme = true; | ||||||
| 
 | 
 | ||||||
|  | @ -22,22 +21,26 @@ in | ||||||
| 
 | 
 | ||||||
|   environment.systemPackages = [ ]; |   environment.systemPackages = [ ]; | ||||||
| 
 | 
 | ||||||
|   services.qemuGuest.enable = true; |  | ||||||
| 
 |  | ||||||
|   sops = { |   sops = { | ||||||
|     secrets = { |     secrets = { | ||||||
|       "forgejo/db/password" = { |       forgejo_db_password = { | ||||||
|         inherit sopsFile; |  | ||||||
|       }; |  | ||||||
|       "forgejo/mail/password" = { |  | ||||||
|         inherit sopsFile; |  | ||||||
|       }; |  | ||||||
|       "forgejo/mail/passwordHash" = { |  | ||||||
|         inherit sopsFile; |         inherit sopsFile; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   services.openssh = { | ||||||
|  |     enable = true; | ||||||
|  |     settings = { | ||||||
|  |       PasswordAuthentication = false; | ||||||
|  |       KbdInteractiveAuthentication = false; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   services.fail2ban = { | ||||||
|  |     enable = true; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   services.nginx = { |   services.nginx = { | ||||||
|     enable = true; |     enable = true; | ||||||
|     recommendedProxySettings = true; |     recommendedProxySettings = true; | ||||||
|  | @ -48,51 +51,16 @@ in | ||||||
|         useACMEHost = mkIf cfg.enableAcme domainName; |         useACMEHost = mkIf cfg.enableAcme domainName; | ||||||
| 
 | 
 | ||||||
|         locations."/" = { |         locations."/" = { | ||||||
|           extraConfig = '' |  | ||||||
|             client_max_body_size 200M; |  | ||||||
|           ''; |  | ||||||
|           proxyPass = "http://localhost:${toString forgejoPort}/"; |           proxyPass = "http://localhost:${toString forgejoPort}/"; | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       "hydra.${domainName}" = mkIf config.${namespace}.services.hydra.enable { |       "${domainName}" = { | ||||||
|         forceSSL = cfg.enableAcme; |         forceSSL = cfg.enableAcme; | ||||||
|         useACMEHost = mkIf cfg.enableAcme domainName; |         useACMEHost = mkIf cfg.enableAcme domainName; | ||||||
| 
 | 
 | ||||||
|         locations."/" = { |         locations."/" = { | ||||||
|           proxyPass = "http://localhost:${toString hydraPort}/"; |           return = "404"; | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "ha.${domainName}" = { |  | ||||||
|         forceSSL = cfg.enableAcme; |  | ||||||
|         useACMEHost = mkIf cfg.enableAcme domainName; |  | ||||||
| 
 |  | ||||||
|         locations."/" = { |  | ||||||
|           # tailscale ip |  | ||||||
|           extraConfig = '' |  | ||||||
|             proxy_set_header Upgrade $http_upgrade; |  | ||||||
|             proxy_set_header Connection "upgrade"; |  | ||||||
|           ''; |  | ||||||
|           proxyPass = "http://100.86.23.74:8123"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "nixcache.${domainName}" = mkIf config.${namespace}.services.hydra.enableCache { |  | ||||||
|         forceSSL = cfg.enableAcme; |  | ||||||
|         useACMEHost = mkIf cfg.enableAcme domainName; |  | ||||||
| 
 |  | ||||||
|         locations."/" = { |  | ||||||
|           proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}"; |  | ||||||
|         }; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       "_" = { |  | ||||||
|         forceSSL = cfg.enableAcme; |  | ||||||
|         useACMEHost = mkIf cfg.enableAcme domainName; |  | ||||||
| 
 |  | ||||||
|         locations."/" = { |  | ||||||
|           proxyPass = "https://${domainName}"; |  | ||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|  | @ -103,7 +71,7 @@ in | ||||||
|     database.type = "postgres"; |     database.type = "postgres"; | ||||||
|     lfs.enable = true; |     lfs.enable = true; | ||||||
|     database = { |     database = { | ||||||
|       passwordFile = config.sops.secrets."forgejo/db/password".path; |       passwordFile = config.sops.secrets.forgejo_db_password.path; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     settings = { |     settings = { | ||||||
|  | @ -113,77 +81,8 @@ in | ||||||
|         HTTP_PORT = forgejoPort; |         HTTP_PORT = forgejoPort; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       mailer = { |  | ||||||
|         ENABLED = true; |  | ||||||
|         PROTOCOL = "smtps"; |  | ||||||
|         FROM = "no-reply@${domainName}"; |  | ||||||
|         SMTP_ADDR = "mail.${domainName}"; |  | ||||||
|         USER = "forgejo@${domainName}"; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       service.DISABLE_REGISTRATION = true; |       service.DISABLE_REGISTRATION = true; | ||||||
|     }; |     }; | ||||||
| 
 |  | ||||||
|     secrets = { |  | ||||||
|       mailer.PASSWD = config.sops.secrets."forgejo/mail/password".path; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   mailserver = { |  | ||||||
|     enable = true; |  | ||||||
|     fqdn = "mail.${domainName}"; |  | ||||||
|     domains = [ domainName ]; |  | ||||||
| 
 |  | ||||||
|     loginAccounts = { |  | ||||||
|       "forgejo@${domainName}" = { |  | ||||||
|         hashedPasswordFile = config.sops.secrets."forgejo/mail/passwordHash".path; |  | ||||||
|         aliases = [ "no-reply@${domainName}" ]; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     certificateScheme = "acme-nginx"; |  | ||||||
|     stateVersion = 3; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   nix = { |  | ||||||
|     distributedBuilds = true; |  | ||||||
| 
 |  | ||||||
|     extraOptions = '' |  | ||||||
|       builders-use-substitutes = true |  | ||||||
|     ''; |  | ||||||
| 
 |  | ||||||
|     buildMachines = [ |  | ||||||
|       { |  | ||||||
|         hostName = "localhost"; |  | ||||||
|         protocol = null; |  | ||||||
|         system = "x86_64-linux"; |  | ||||||
| 
 |  | ||||||
|         supportedFeatures = [ |  | ||||||
|           "kvm" |  | ||||||
|           "nixos-test" |  | ||||||
|           "big-parallel" |  | ||||||
|           "benchmark" |  | ||||||
|         ]; |  | ||||||
|       } |  | ||||||
|       { |  | ||||||
|         hostName = "100.86.23.74"; |  | ||||||
|         sshUser = "remotebuild"; |  | ||||||
|         sshKey = "/root/.ssh/remotebuild"; |  | ||||||
|         systems = [ "aarch64-linux" ]; |  | ||||||
|         protocol = "ssh"; |  | ||||||
| 
 |  | ||||||
|         supportedFeatures = [ |  | ||||||
|           "nixos-test" |  | ||||||
|           "big-parallel" |  | ||||||
|           "kvm" |  | ||||||
|         ]; |  | ||||||
|       } |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   services.tailscale = { |  | ||||||
|     enable = true; |  | ||||||
|     useRoutingFeatures = "client"; |  | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   networking.firewall.allowedTCPPorts = [ |   networking.firewall.allowedTCPPorts = [ | ||||||
|  | @ -202,16 +101,6 @@ in | ||||||
|         enable = true; |         enable = true; | ||||||
|         inherit sopsFile; |         inherit sopsFile; | ||||||
|       }; |       }; | ||||||
|       openssh = enabled; |  | ||||||
|       hydra = { |  | ||||||
|         enable = true; |  | ||||||
|         httpPort = hydraPort; |  | ||||||
|         enableCache = true; |  | ||||||
|       }; |  | ||||||
|       gitea-runner = { |  | ||||||
|         enable = true; |  | ||||||
|         inherit sopsFile; |  | ||||||
|       }; |  | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     security = { |     security = { | ||||||
|  | @ -222,10 +111,16 @@ in | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     user.trustedPublicKeys = [ |     user.trustedPublicKeys = [ | ||||||
|       "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFrDiO5+vMfD5MimkzN32iw3MnSMLZ0mHvOrHVVmLD0" # yggdrasil |       "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFrDiO5+vMfD5MimkzN32iw3MnSMLZ0mHvOrHVVmLD0" | ||||||
|       "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII4Pr7p0jizrvIl0UhcvrmL5SHRQQQWIcHLAnRFyUZS6" # Phone |       "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII4Pr7p0jizrvIl0UhcvrmL5SHRQQQWIcHLAnRFyUZS6" | ||||||
|     ]; |     ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|  |   snowfallorg.users.${config.${namespace}.user.name}.home.config = { | ||||||
|  |     programs.fish.shellInit = '' | ||||||
|  |       eval $(op signin) | ||||||
|  |     ''; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   system.stateVersion = "24.11"; |   system.stateVersion = "24.11"; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -10,11 +10,6 @@ with lib.wyrdgard; | ||||||
|   wsl = { |   wsl = { | ||||||
|     enable = true; |     enable = true; | ||||||
|     defaultUser = config.wyrdgard.user.name; |     defaultUser = config.wyrdgard.user.name; | ||||||
| 
 |  | ||||||
|     usbip = { |  | ||||||
|       enable = true; |  | ||||||
|       autoAttach = [ "3-1" ]; |  | ||||||
|     }; |  | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   wyrdgard = { |   wyrdgard = { | ||||||
|  |  | ||||||
|  | @ -1,5 +1,4 @@ | ||||||
| { | { | ||||||
|   inputs, |  | ||||||
|   lib, |   lib, | ||||||
|   namespace, |   namespace, | ||||||
|   pkgs, |   pkgs, | ||||||
|  | @ -9,30 +8,15 @@ let | ||||||
|   inherit (lib.${namespace}) enabled disabled; |   inherit (lib.${namespace}) enabled disabled; | ||||||
| in | in | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ ./hardware.nix ]; | ||||||
|     ./hardware.nix |  | ||||||
|     ./hyprland_config.nix |  | ||||||
|   ]; |  | ||||||
| 
 | 
 | ||||||
|   environment.systemPackages = with pkgs; [ |   environment.systemPackages = with pkgs; [ | ||||||
|     path-of-building |     path-of-building | ||||||
|     teams-for-linux |     teams-for-linux | ||||||
|     obsidian |     obsidian | ||||||
|     zed-editor |     zed-editor | ||||||
| 
 |  | ||||||
|     # eve |  | ||||||
|     bottles |  | ||||||
|     pyfa |  | ||||||
| 
 |  | ||||||
|     # misc |  | ||||||
|     diebahn |  | ||||||
| 
 |  | ||||||
|     nixpkgs-review |  | ||||||
|     teamviewer |  | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   services.teamviewer.enable = true; |  | ||||||
| 
 |  | ||||||
|   environment.pathsToLink = [ "/libexec" ]; |   environment.pathsToLink = [ "/libexec" ]; | ||||||
| 
 | 
 | ||||||
|   virtualisation.waydroid = enabled; |   virtualisation.waydroid = enabled; | ||||||
|  | @ -40,29 +24,6 @@ in | ||||||
|   programs.ssh.extraConfig = '' |   programs.ssh.extraConfig = '' | ||||||
|     AddressFamily inet |     AddressFamily inet | ||||||
|   ''; |   ''; | ||||||
|   home-manager = { |  | ||||||
|     backupFileExtension = "bak"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   nix = { |  | ||||||
|     distributedBuilds = true; |  | ||||||
|     settings.builders-use-substitutes = true; |  | ||||||
|     buildMachines = [ |  | ||||||
|       { |  | ||||||
|         hostName = "nixberry"; |  | ||||||
|         sshUser = "remotebuild"; |  | ||||||
|         sshKey = "/root/.ssh/remotebuild"; |  | ||||||
|         systems = [ "aarch64-linux" ]; |  | ||||||
|         protocol = "ssh-ng"; |  | ||||||
| 
 |  | ||||||
|         supportedFeatures = [ |  | ||||||
|           "nixos-test" |  | ||||||
|           "big-parallel" |  | ||||||
|           "kvm" |  | ||||||
|         ]; |  | ||||||
|       } |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| 
 | 
 | ||||||
|   ${namespace} = { |   ${namespace} = { | ||||||
|     archetypes = { |     archetypes = { | ||||||
|  | @ -73,24 +34,54 @@ in | ||||||
|       _1password = enabled; |       _1password = enabled; | ||||||
|       obs-studio = enabled; |       obs-studio = enabled; | ||||||
|       cli-apps.helix = enabled; |       cli-apps.helix = enabled; | ||||||
|       starsector = enabled; |  | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     desktop = { |     desktop.hyprland = { | ||||||
|       hyprland = enabled; |       enable = true; | ||||||
|       niri = enabled; |       settings = { | ||||||
|  |         monitor = [ | ||||||
|  |           #Ultrawide | ||||||
|  |           "DP-2,3440x1440@144, 0x0, 1" | ||||||
|  |           #Vertical | ||||||
|  |           "HDMI-A-1, 1920x1080@144, auto-right, 1, transform, 1" | ||||||
|  |           # nividia kernel issues | ||||||
|  |           "Unknown-1, disable" | ||||||
|  |         ]; | ||||||
|  | 
 | ||||||
|  |         cursor = { | ||||||
|  |           no_hardware_cursors = true; | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         exec-once = [ | ||||||
|  |           "xrandr --output DP-2 --primary" | ||||||
|  |           "[workspace 1 silent] obsidian --disabled-gpu" | ||||||
|  |           "[workspace 9 silent] git-butler" | ||||||
|  |         ]; | ||||||
|  | 
 | ||||||
|  |         workspace = [ | ||||||
|  |           "1, monitor:DP-2" | ||||||
|  |           "2, monitor:DP-2" | ||||||
|  |           "3, monitor:DP-2" | ||||||
|  |           "4, monitor:DP-2" | ||||||
|  |           "8, monitor:HDMI-A-1" | ||||||
|  |           "9, monitor:HDMI-A-1" | ||||||
|  |         ]; | ||||||
|  | 
 | ||||||
|  |         windowrulev2 = [ | ||||||
|  |           "workspace 8 silent, class:^(steam)$, title:^(Friends List)" | ||||||
|  |           "workspace 8 silent, class:^(discord)$, title:^(Discord)" | ||||||
|  |         ]; | ||||||
|  |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     services = { |     services = { | ||||||
|       factorio-server = disabled; |       factorio-server = disabled; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     tools.devenv = enabled; |  | ||||||
| 
 |  | ||||||
|     system = { |     system = { | ||||||
|       hardware = { |       hardware = { | ||||||
|         bluetooth = enabled; |         bluetooth = enabled; | ||||||
|         gpu.amd = enabled; |         gpu.nvidia = enabled; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,9 +4,8 @@ | ||||||
| { | { | ||||||
|   config, |   config, | ||||||
|   lib, |   lib, | ||||||
|   inputs, |  | ||||||
|   pkgs, |  | ||||||
|   modulesPath, |   modulesPath, | ||||||
|  |   inputs, | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| let | let | ||||||
|  | @ -16,6 +15,7 @@ in | ||||||
|   imports = with nixos-hardware.nixosModules; [ |   imports = with nixos-hardware.nixosModules; [ | ||||||
|     (modulesPath + "/installer/scan/not-detected.nix") |     (modulesPath + "/installer/scan/not-detected.nix") | ||||||
|     common-cpu-amd |     common-cpu-amd | ||||||
|  |     common-gpu-nvidia-nonprime | ||||||
|     common-pc |     common-pc | ||||||
|     common-pc-ssd |     common-pc-ssd | ||||||
|   ]; |   ]; | ||||||
|  | @ -23,28 +23,29 @@ in | ||||||
|   boot = { |   boot = { | ||||||
|     initrd.availableKernelModules = [ |     initrd.availableKernelModules = [ | ||||||
|       "nvme" |       "nvme" | ||||||
|       "ahci" |  | ||||||
|       "xhci_pci" |       "xhci_pci" | ||||||
|       "usbhid" |       "ahci" | ||||||
|       "usb_storage" |       "usb_storage" | ||||||
|  |       "usbhid" | ||||||
|       "sd_mod" |       "sd_mod" | ||||||
|     ]; |     ]; | ||||||
|     kernelModules = [ "kvm-amd" ]; |     initrd.kernelModules = [ ]; | ||||||
|  |     kernelModules = [ | ||||||
|  |       "kvm-amd" | ||||||
|  |       "btusb" | ||||||
|  |     ]; | ||||||
|  |     extraModulePackages = [ ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   fileSystems = { |   fileSystems = { | ||||||
|     "/" = { |     "/" = { | ||||||
|       device = "/dev/disk/by-uuid/b1a956f4-91d5-456e-a92b-be505bb719bd"; |       device = "/dev/disk/by-uuid/444a9216-59d1-46e0-9643-0b716a42ba0b"; | ||||||
|       fsType = "ext4"; |       fsType = "ext4"; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     "/boot" = { |     "/boot" = { | ||||||
|       device = "/dev/disk/by-uuid/B4D4-8BA0"; |       device = "/dev/disk/by-uuid/8310-585A"; | ||||||
|       fsType = "vfat"; |       fsType = "vfat"; | ||||||
|       options = [ |  | ||||||
|         "fmask=0077" |  | ||||||
|         "dmask=0077" |  | ||||||
|       ]; |  | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     "/storage" = { |     "/storage" = { | ||||||
|  | @ -53,17 +54,15 @@ in | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   swapDevices = [ |   swapDevices = [ ]; | ||||||
|     { device = "/dev/disk/by-uuid/4bec00ec-e9eb-4034-836a-ecf15e0bb40e"; } |  | ||||||
|   ]; |  | ||||||
| 
 | 
 | ||||||
|   # Enables DHCP on each ethernet and wireless interface. In case of scripted networking |   # 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 |   # (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 |   # 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`. |   # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. | ||||||
|   networking.useDHCP = lib.mkDefault true; |   networking.useDHCP = lib.mkDefault true; | ||||||
|   # networking.interfaces.enp14s0.useDHCP = lib.mkDefault true; |   # networking.interfaces.enp40s0.useDHCP = lib.mkDefault true; | ||||||
|   # networking.interfaces.wlp15s0.useDHCP = lib.mkDefault true; |   # networking.interfaces.enp42s0.useDHCP = lib.mkDefault true; | ||||||
| 
 | 
 | ||||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; |   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||||||
|   hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; |   hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; | ||||||
|  |  | ||||||
|  | @ -1,48 +0,0 @@ | ||||||
| { |  | ||||||
|   lib, |  | ||||||
|   namespace, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: |  | ||||||
| let |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   ${namespace}.desktop.hyprland.settings = { |  | ||||||
|     monitor = [ |  | ||||||
|       #Ultrawide |  | ||||||
|       "DP-1,3440x1440@144, 0x0, 1" |  | ||||||
|       #Vertical |  | ||||||
|       "HDMI-A-1, 1920x1080@144, auto-right, 1, transform, 1" |  | ||||||
|       # nividia kernel issues |  | ||||||
|       "Unknown-1, disable" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     cursor = { |  | ||||||
|       no_hardware_cursors = true; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     exec-once = [ |  | ||||||
|       "[workspace 7 silent] obsidian" |  | ||||||
| 
 |  | ||||||
|       "${lib.getExe pkgs.xorg.xrandr} --output DP-1 --primary" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     workspace = [ |  | ||||||
|       "1, monitor:DP-1" |  | ||||||
|       "2, monitor:DP-1" |  | ||||||
|       "3, monitor:DP-1" |  | ||||||
|       "4, monitor:DP-1" |  | ||||||
|       "5, monitor:DP-1" |  | ||||||
|       "6, monitor:DP-1" |  | ||||||
|       "7, monitor:HDMI-A-1" |  | ||||||
|       "8, monitor:HDMI-A-1" |  | ||||||
|       "9, monitor:HDMI-A-1" |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|     windowrulev2 = [ |  | ||||||
|       "workspace 8 silent, class:^(steam)$, title:^(Friends List)" |  | ||||||
|       "workspace 8 silent, class:^(discord)$, title:^(Discord)" |  | ||||||
|       "workspace 7 silent, class:^(com.obsproject.Studio)$" |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue