Compare commits
	
		
			No commits in common. "main" and "refactor" have entirely different histories.
		
	
	
		
	
		
					 80 changed files with 517 additions and 1626 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitattributes
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitattributes
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,2 +0,0 @@
 | 
			
		|||
flake.lock binary
 | 
			
		||||
*.gpg binary
 | 
			
		||||
							
								
								
									
										37
									
								
								.sops.yaml
									
										
									
									
									
								
							
							
						
						
									
										37
									
								
								.sops.yaml
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,37 +0,0 @@
 | 
			
		|||
keys:
 | 
			
		||||
  - &lelgenio-gpg 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
 | 
			
		||||
  - &lelgenio-ssh age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
 | 
			
		||||
  - &monolith-ssh age1ecyynwv93lfu7crjjp8l47defv07quzfzaktwurpep7jc9eha5pscg7lrw
 | 
			
		||||
  - &double-rainbow-ssh age1026d4c8nqyapcsy4jz57szt6zw3ejcgv3ecyvz0s89t7w7z964fqdqv52h
 | 
			
		||||
  - &phantom-ssh age1m4mqcd2kmuhfr8a22rvh02c68jkakhdfmuqgtusuv0czk4jvna7sz79p3y
 | 
			
		||||
 | 
			
		||||
creation_rules:
 | 
			
		||||
  - path_regex: secrets/[^/]+\.(yaml|json|env|ini|gpg)$
 | 
			
		||||
    key_groups:
 | 
			
		||||
    - pgp:
 | 
			
		||||
      - *lelgenio-gpg
 | 
			
		||||
      age:
 | 
			
		||||
      - *lelgenio-ssh
 | 
			
		||||
      - *monolith-ssh
 | 
			
		||||
  - path_regex: secrets/monolith/[^/]+\.(yaml|json|env|ini|gpg)$
 | 
			
		||||
    key_groups:
 | 
			
		||||
    - pgp:
 | 
			
		||||
      - *lelgenio-gpg
 | 
			
		||||
      age:
 | 
			
		||||
      - *lelgenio-ssh
 | 
			
		||||
      - *monolith-ssh
 | 
			
		||||
  - path_regex: secrets/double-rainbow/[^/]+\.(yaml|json|env|ini|gpg)$
 | 
			
		||||
    key_groups:
 | 
			
		||||
    - pgp:
 | 
			
		||||
      - *lelgenio-gpg
 | 
			
		||||
      age:
 | 
			
		||||
      - *lelgenio-ssh
 | 
			
		||||
      - *monolith-ssh
 | 
			
		||||
      - *double-rainbow-ssh
 | 
			
		||||
  - path_regex: secrets/phantom/[^/]+\.(yaml|json|env|ini|gpg)$
 | 
			
		||||
    key_groups:
 | 
			
		||||
    - pgp:
 | 
			
		||||
      - *lelgenio-gpg
 | 
			
		||||
      age:
 | 
			
		||||
      - *lelgenio-ssh
 | 
			
		||||
      - *phantom-ssh
 | 
			
		||||
							
								
								
									
										233
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										233
									
								
								flake.lock
									
										
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -28,11 +28,11 @@
 | 
			
		|||
        "systems": "systems"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1760836749,
 | 
			
		||||
        "narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=",
 | 
			
		||||
        "lastModified": 1736955230,
 | 
			
		||||
        "narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=",
 | 
			
		||||
        "owner": "ryantm",
 | 
			
		||||
        "repo": "agenix",
 | 
			
		||||
        "rev": "2f0f812f69f3eb4140157fe15e12739adf82e32a",
 | 
			
		||||
        "rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -73,22 +73,6 @@
 | 
			
		|||
        "url": "https://git.lelgenio.com/lelgenio/catboy-spinner"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "contador-da-viagem": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1742610036,
 | 
			
		||||
        "narHash": "sha256-sY1iheemazmIVJAnoFtut6cN7HX/C5OMDY54UrmCoqE=",
 | 
			
		||||
        "ref": "refs/heads/main",
 | 
			
		||||
        "rev": "efe5ac4a16de7f78824ac89dc987ef635afa5267",
 | 
			
		||||
        "revCount": 4,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.lelgenio.com/lelgenio/contador-da-viagem"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.lelgenio.com/lelgenio/contador-da-viagem"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "crane": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-compat": "flake-compat",
 | 
			
		||||
| 
						 | 
				
			
			@ -163,11 +147,11 @@
 | 
			
		|||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1744478979,
 | 
			
		||||
        "narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=",
 | 
			
		||||
        "lastModified": 1700795494,
 | 
			
		||||
        "narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
 | 
			
		||||
        "owner": "lnl7",
 | 
			
		||||
        "repo": "nix-darwin",
 | 
			
		||||
        "rev": "43975d782b418ebf4969e9ccba82466728c2851b",
 | 
			
		||||
        "rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -225,11 +209,11 @@
 | 
			
		|||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1760701190,
 | 
			
		||||
        "narHash": "sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw=",
 | 
			
		||||
        "lastModified": 1740485968,
 | 
			
		||||
        "narHash": "sha256-WK+PZHbfDjLyveXAxpnrfagiFgZWaTJglewBWniTn2Y=",
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "repo": "disko",
 | 
			
		||||
        "rev": "3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5",
 | 
			
		||||
        "rev": "19c1140419c4f1cdf88ad4c1cfb6605597628940",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -243,11 +227,11 @@
 | 
			
		|||
        "nixpkgs": "nixpkgs_3"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1749410315,
 | 
			
		||||
        "narHash": "sha256-5H8MuMMSq1WnQcvb1FiDNkKP+uyeZ8HX5GRTMfEOyLI=",
 | 
			
		||||
        "lastModified": 1739502527,
 | 
			
		||||
        "narHash": "sha256-KMLNOCWmqdDeAZV5O1ccRmVqRutDcy4IONJin3lzd0Q=",
 | 
			
		||||
        "owner": "lelgenio",
 | 
			
		||||
        "repo": "dzgui-nix",
 | 
			
		||||
        "rev": "49adbb1edfb3c25b0cd8256d35673394386065e7",
 | 
			
		||||
        "rev": "06fcea9445b5a005b40469a69f57f2147398bc94",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -297,11 +281,11 @@
 | 
			
		|||
    "flake-compat_2": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1747046372,
 | 
			
		||||
        "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
 | 
			
		||||
        "lastModified": 1696426674,
 | 
			
		||||
        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
 | 
			
		||||
        "owner": "edolstra",
 | 
			
		||||
        "repo": "flake-compat",
 | 
			
		||||
        "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
 | 
			
		||||
        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -433,54 +417,6 @@
 | 
			
		|||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "git-hooks": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-compat": [
 | 
			
		||||
          "nixos-mailserver",
 | 
			
		||||
          "flake-compat"
 | 
			
		||||
        ],
 | 
			
		||||
        "gitignore": "gitignore",
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixos-mailserver",
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1742649964,
 | 
			
		||||
        "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
 | 
			
		||||
        "owner": "cachix",
 | 
			
		||||
        "repo": "git-hooks.nix",
 | 
			
		||||
        "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "cachix",
 | 
			
		||||
        "repo": "git-hooks.nix",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "gitignore": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixos-mailserver",
 | 
			
		||||
          "git-hooks",
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1709087332,
 | 
			
		||||
        "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
 | 
			
		||||
        "owner": "hercules-ci",
 | 
			
		||||
        "repo": "gitignore.nix",
 | 
			
		||||
        "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "hercules-ci",
 | 
			
		||||
        "repo": "gitignore.nix",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "hello-fonts": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
| 
						 | 
				
			
			@ -504,40 +440,20 @@
 | 
			
		|||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1758463745,
 | 
			
		||||
        "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
 | 
			
		||||
        "lastModified": 1739757849,
 | 
			
		||||
        "narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=",
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "repo": "home-manager",
 | 
			
		||||
        "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
 | 
			
		||||
        "rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "ref": "release-25.05",
 | 
			
		||||
        "ref": "release-24.11",
 | 
			
		||||
        "repo": "home-manager",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "lsfg-vk-flake": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1756367273,
 | 
			
		||||
        "narHash": "sha256-u7/qG5xQxW+o51R2lBPj0NxU3oFrUwj78UlCKKNHGAc=",
 | 
			
		||||
        "owner": "pabloaul",
 | 
			
		||||
        "repo": "lsfg-vk-flake",
 | 
			
		||||
        "rev": "62aadfc844b2002abe47cbbc9dfd028033376248",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "pabloaul",
 | 
			
		||||
        "repo": "lsfg-vk-flake",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "made-you-look": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "crane": "crane_2",
 | 
			
		||||
| 
						 | 
				
			
			@ -565,11 +481,11 @@
 | 
			
		|||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1760846226,
 | 
			
		||||
        "narHash": "sha256-xmU8kAsRprJiTGBTaGrwmjBP3AMA9ltlrxHKFuy5JWc=",
 | 
			
		||||
        "lastModified": 1740281615,
 | 
			
		||||
        "narHash": "sha256-dZWcbAQ1sF8oVv+zjSKkPVY0ebwENQEkz5vc6muXbKY=",
 | 
			
		||||
        "owner": "Mic92",
 | 
			
		||||
        "repo": "nix-index-database",
 | 
			
		||||
        "rev": "5024e1901239a76b7bf94a4cd27f3507e639d49e",
 | 
			
		||||
        "rev": "465792533d03e6bb9dc849d58ab9d5e31fac9023",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -582,23 +498,22 @@
 | 
			
		|||
      "inputs": {
 | 
			
		||||
        "blobs": "blobs",
 | 
			
		||||
        "flake-compat": "flake-compat_2",
 | 
			
		||||
        "git-hooks": "git-hooks",
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ],
 | 
			
		||||
        "nixpkgs-25_05": "nixpkgs-25_05"
 | 
			
		||||
        "nixpkgs-24_11": "nixpkgs-24_11"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1755110674,
 | 
			
		||||
        "narHash": "sha256-PigqTAGkdBYXVFWsJnqcirrLeFqRFN4PFigLA8FzxeI=",
 | 
			
		||||
        "lastModified": 1740437053,
 | 
			
		||||
        "narHash": "sha256-exPTta4qI1ka9sk+jPcLogGffJ1OVXnAsTRqpeAXeNw=",
 | 
			
		||||
        "owner": "simple-nixos-mailserver",
 | 
			
		||||
        "repo": "nixos-mailserver",
 | 
			
		||||
        "rev": "f5936247dbdb8501221978562ab0b302dd75456c",
 | 
			
		||||
        "rev": "c8ec4d5e432f5df4838eacd39c11828d23ce66ec",
 | 
			
		||||
        "type": "gitlab"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "simple-nixos-mailserver",
 | 
			
		||||
        "ref": "nixos-25.05",
 | 
			
		||||
        "ref": "master",
 | 
			
		||||
        "repo": "nixos-mailserver",
 | 
			
		||||
        "type": "gitlab"
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -619,29 +534,28 @@
 | 
			
		|||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs-25_05": {
 | 
			
		||||
    "nixpkgs-24_11": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1747610100,
 | 
			
		||||
        "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=",
 | 
			
		||||
        "lastModified": 1734083684,
 | 
			
		||||
        "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "ca49c4304acf0973078db0a9d200fd2bae75676d",
 | 
			
		||||
        "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "ref": "nixos-25.05",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
        "id": "nixpkgs",
 | 
			
		||||
        "ref": "nixos-24.11",
 | 
			
		||||
        "type": "indirect"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs-unstable": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1761114652,
 | 
			
		||||
        "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=",
 | 
			
		||||
        "lastModified": 1740367490,
 | 
			
		||||
        "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c",
 | 
			
		||||
        "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -698,26 +612,26 @@
 | 
			
		|||
    },
 | 
			
		||||
    "nixpkgs_5": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1761173472,
 | 
			
		||||
        "narHash": "sha256-m9W0dYXflzeGgKNravKJvTMR4Qqa2MVD11AwlGMufeE=",
 | 
			
		||||
        "lastModified": 1740339700,
 | 
			
		||||
        "narHash": "sha256-cbrw7EgQhcdFnu6iS3vane53bEagZQy/xyIkDWpCgVE=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "c8aa8cc00a5cb57fada0851a038d35c08a36a2bb",
 | 
			
		||||
        "rev": "04ef94c4c1582fd485bbfdb8c4a8ba250e359195",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "id": "nixpkgs",
 | 
			
		||||
        "ref": "nixos-25.05",
 | 
			
		||||
        "ref": "nixos-24.11",
 | 
			
		||||
        "type": "indirect"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs_6": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1761236834,
 | 
			
		||||
        "narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
 | 
			
		||||
        "lastModified": 1735554305,
 | 
			
		||||
        "narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
 | 
			
		||||
        "rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -778,11 +692,11 @@
 | 
			
		|||
    "ranger-icons": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1749128401,
 | 
			
		||||
        "narHash": "sha256-qvWqKVS4C5OO6bgETBlVDwcv4eamGlCUltjsBU3gAbA=",
 | 
			
		||||
        "lastModified": 1736375293,
 | 
			
		||||
        "narHash": "sha256-ck53eG+mGIQ706sUnEHbJ6vY1/LYnRcpq94JXzwnGTQ=",
 | 
			
		||||
        "owner": "alexanderjeurissen",
 | 
			
		||||
        "repo": "ranger_devicons",
 | 
			
		||||
        "rev": "1bcaff0366a9d345313dc5af14002cfdcddabb82",
 | 
			
		||||
        "rev": "f227f212e14996fbb366f945ec3ecaf5dc5f44b0",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -795,14 +709,12 @@
 | 
			
		|||
      "inputs": {
 | 
			
		||||
        "agenix": "agenix",
 | 
			
		||||
        "catboy-spinner": "catboy-spinner",
 | 
			
		||||
        "contador-da-viagem": "contador-da-viagem",
 | 
			
		||||
        "demoji": "demoji",
 | 
			
		||||
        "dhist": "dhist",
 | 
			
		||||
        "disko": "disko",
 | 
			
		||||
        "dzgui-nix": "dzgui-nix",
 | 
			
		||||
        "hello-fonts": "hello-fonts",
 | 
			
		||||
        "home-manager": "home-manager",
 | 
			
		||||
        "lsfg-vk-flake": "lsfg-vk-flake",
 | 
			
		||||
        "made-you-look": "made-you-look",
 | 
			
		||||
        "nix-index-database": "nix-index-database",
 | 
			
		||||
        "nixos-mailserver": "nixos-mailserver",
 | 
			
		||||
| 
						 | 
				
			
			@ -810,7 +722,6 @@
 | 
			
		|||
        "nixpkgs-unstable": "nixpkgs-unstable",
 | 
			
		||||
        "plymouth-themes": "plymouth-themes",
 | 
			
		||||
        "ranger-icons": "ranger-icons",
 | 
			
		||||
        "sops-nix": "sops-nix",
 | 
			
		||||
        "tlauncher": "tlauncher",
 | 
			
		||||
        "tomater": "tomater",
 | 
			
		||||
        "treefmt-nix": "treefmt-nix",
 | 
			
		||||
| 
						 | 
				
			
			@ -864,26 +775,6 @@
 | 
			
		|||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "sops-nix": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1760998189,
 | 
			
		||||
        "narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=",
 | 
			
		||||
        "owner": "Mic92",
 | 
			
		||||
        "repo": "sops-nix",
 | 
			
		||||
        "rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "Mic92",
 | 
			
		||||
        "repo": "sops-nix",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "systems": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1681028828,
 | 
			
		||||
| 
						 | 
				
			
			@ -1003,11 +894,11 @@
 | 
			
		|||
        "rev": "6a68f2cda0aa2fbb399a4c43b445e8c1a2df0634",
 | 
			
		||||
        "revCount": 4,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.lelgenio.com/lelgenio/tlauncher-nix"
 | 
			
		||||
        "url": "https://git.lelgenio.xyz/lelgenio/tlauncher-nix"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.lelgenio.com/lelgenio/tlauncher-nix"
 | 
			
		||||
        "url": "https://git.lelgenio.xyz/lelgenio/tlauncher-nix"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tomater": {
 | 
			
		||||
| 
						 | 
				
			
			@ -1031,11 +922,11 @@
 | 
			
		|||
        "nixpkgs": "nixpkgs_6"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1761311587,
 | 
			
		||||
        "narHash": "sha256-Msq86cR5SjozQGCnC6H8C+0cD4rnx91BPltZ9KK613Y=",
 | 
			
		||||
        "lastModified": 1739829690,
 | 
			
		||||
        "narHash": "sha256-mL1szCeIsjh6Khn3nH2cYtwO5YXG6gBiTw1A30iGeDU=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "treefmt-nix",
 | 
			
		||||
        "rev": "2eddae033e4e74bf581c2d1dfa101f9033dbd2dc",
 | 
			
		||||
        "rev": "3d0579f5cc93436052d94b73925b48973a104204",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -1046,11 +937,11 @@
 | 
			
		|||
    },
 | 
			
		||||
    "vpsadminos": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1761032776,
 | 
			
		||||
        "narHash": "sha256-u/uujjN1kiUgCVs+ha4m+IMD6OwATRpW/YWJKjs48f0=",
 | 
			
		||||
        "lastModified": 1740082937,
 | 
			
		||||
        "narHash": "sha256-HcTWGIzG2leM0gZabg9lkY7iLwvAe49lqXEzez/Rp/s=",
 | 
			
		||||
        "owner": "vpsfreecz",
 | 
			
		||||
        "repo": "vpsadminos",
 | 
			
		||||
        "rev": "db4e325b1499f184f5e9a0025af2c2fab0043db3",
 | 
			
		||||
        "rev": "521427c69173bc443de940ba88d4f58d5fa8d8e2",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			@ -1066,11 +957,11 @@
 | 
			
		|||
        "nixpkgs": "nixpkgs_7"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1758999384,
 | 
			
		||||
        "narHash": "sha256-n1RiAhVtPxhjHmKoOBfEleTAMwz9JSvLmZyCQYpwXSQ=",
 | 
			
		||||
        "lastModified": 1719076817,
 | 
			
		||||
        "narHash": "sha256-B6NTomYXL50j6fabZrAGvTPp3zv5oFxNUhwvLhDNoMw=",
 | 
			
		||||
        "ref": "refs/heads/main",
 | 
			
		||||
        "rev": "0949b2fe4f54f74bf880c2034f6fc3a7d15b7cef",
 | 
			
		||||
        "revCount": 6,
 | 
			
		||||
        "rev": "406d6646970191c016a375f25a35aa00dfa0d4aa",
 | 
			
		||||
        "revCount": 4,
 | 
			
		||||
        "type": "git",
 | 
			
		||||
        "url": "https://git.lelgenio.com/lelgenio/warthunder-leak-counter"
 | 
			
		||||
      },
 | 
			
		||||
| 
						 | 
				
			
			@ -1085,11 +976,11 @@
 | 
			
		|||
        "nixpkgs": "nixpkgs_8"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1752343846,
 | 
			
		||||
        "narHash": "sha256-tm2iycSAzbomHfOqmpQ21ozmS84OXfKIu/ZJant0Vfk=",
 | 
			
		||||
        "lastModified": 1715216838,
 | 
			
		||||
        "narHash": "sha256-q5key9BWJjJQqECrhflso9ZTzULBeScvromo0S4fjqE=",
 | 
			
		||||
        "owner": "lelgenio",
 | 
			
		||||
        "repo": "wl-crosshair",
 | 
			
		||||
        "rev": "940acb43e753cfbe0afd0478370778e1bf2d3d55",
 | 
			
		||||
        "rev": "39b716cf410a1b45006f50f32f8d63de5c43aedb",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										42
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										42
									
								
								flake.nix
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,10 +1,10 @@
 | 
			
		|||
{
 | 
			
		||||
  description = "My system config";
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "nixpkgs/nixos-25.05";
 | 
			
		||||
    nixpkgs.url = "nixpkgs/nixos-24.11";
 | 
			
		||||
    nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
 | 
			
		||||
 | 
			
		||||
    home-manager.url = "github:nix-community/home-manager/release-25.05";
 | 
			
		||||
    home-manager.url = "github:nix-community/home-manager/release-24.11";
 | 
			
		||||
    home-manager.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
 | 
			
		||||
    vpsadminos.url = "github:vpsfreecz/vpsadminos";
 | 
			
		||||
| 
						 | 
				
			
			@ -26,25 +26,15 @@
 | 
			
		|||
      inputs.home-manager.follows = "home-manager";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    sops-nix = {
 | 
			
		||||
      url = "github:Mic92/sops-nix";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    nixos-mailserver = {
 | 
			
		||||
      url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05";
 | 
			
		||||
      url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    dzgui-nix.url = "github:lelgenio/dzgui-nix";
 | 
			
		||||
 | 
			
		||||
    tlauncher = {
 | 
			
		||||
      url = "git+https://git.lelgenio.com/lelgenio/tlauncher-nix";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    lsfg-vk-flake = {
 | 
			
		||||
      url = "github:pabloaul/lsfg-vk-flake";
 | 
			
		||||
      url = "git+https://git.lelgenio.xyz/lelgenio/tlauncher-nix";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -61,10 +51,6 @@
 | 
			
		|||
    wl-crosshair.url = "github:lelgenio/wl-crosshair";
 | 
			
		||||
    warthunder-leak-counter.url = "git+https://git.lelgenio.com/lelgenio/warthunder-leak-counter";
 | 
			
		||||
    made-you-look.url = "git+https://git.lelgenio.com/lelgenio/made-you-look";
 | 
			
		||||
    contador-da-viagem = {
 | 
			
		||||
      url = "git+https://git.lelgenio.com/lelgenio/contador-da-viagem";
 | 
			
		||||
      flake = false;
 | 
			
		||||
    };
 | 
			
		||||
    catboy-spinner = {
 | 
			
		||||
      url = "git+https://git.lelgenio.com/lelgenio/catboy-spinner";
 | 
			
		||||
      flake = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -105,16 +91,15 @@
 | 
			
		|||
      specialArgs = {
 | 
			
		||||
        inherit inputs;
 | 
			
		||||
      };
 | 
			
		||||
      common_modules = [
 | 
			
		||||
      common_modules =
 | 
			
		||||
        [
 | 
			
		||||
          { nixpkgs.pkgs = pkgs; }
 | 
			
		||||
          ./system/configuration.nix
 | 
			
		||||
          ./system/secrets.nix
 | 
			
		||||
        ./system/sops.nix
 | 
			
		||||
          ./system/greetd.nix
 | 
			
		||||
          { login-manager.greetd.enable = desktop == "sway"; }
 | 
			
		||||
 | 
			
		||||
          inputs.agenix.nixosModules.default
 | 
			
		||||
        inputs.sops-nix.nixosModules.default
 | 
			
		||||
          inputs.home-manager.nixosModules.home-manager
 | 
			
		||||
          inputs.disko.nixosModules.disko
 | 
			
		||||
          (
 | 
			
		||||
| 
						 | 
				
			
			@ -126,7 +111,6 @@
 | 
			
		|||
                my = config.my;
 | 
			
		||||
                imports = [
 | 
			
		||||
                  ./user/home.nix
 | 
			
		||||
                inputs.sops-nix.homeManagerModules.sops
 | 
			
		||||
                ];
 | 
			
		||||
              };
 | 
			
		||||
              home-manager.backupFileExtension = "bkp";
 | 
			
		||||
| 
						 | 
				
			
			@ -157,21 +141,19 @@
 | 
			
		|||
            ./system/monolith-gitlab-runner.nix
 | 
			
		||||
            ./system/monolith-forgejo-runner.nix
 | 
			
		||||
            ./system/nix-serve.nix
 | 
			
		||||
          ]
 | 
			
		||||
          ++ common_modules;
 | 
			
		||||
          ] ++ common_modules;
 | 
			
		||||
        };
 | 
			
		||||
        double-rainbow = lib.nixosSystem {
 | 
			
		||||
          inherit system specialArgs;
 | 
			
		||||
          modules = [
 | 
			
		||||
            ./hosts/double-rainbow
 | 
			
		||||
          ]
 | 
			
		||||
          ++ common_modules;
 | 
			
		||||
            ./hosts/double-rainbow.nix
 | 
			
		||||
            ./system/rainbow-gitlab-runner.nix
 | 
			
		||||
          ] ++ common_modules;
 | 
			
		||||
        };
 | 
			
		||||
        pixie = lib.nixosSystem {
 | 
			
		||||
          inherit system specialArgs;
 | 
			
		||||
          modules = [
 | 
			
		||||
            ./hosts/pixie.nix
 | 
			
		||||
          ]
 | 
			
		||||
          modules =
 | 
			
		||||
            [ ./hosts/pixie.nix ]
 | 
			
		||||
            ++ common_modules
 | 
			
		||||
            ++ [
 | 
			
		||||
              {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,12 +17,7 @@ let
 | 
			
		|||
  ];
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    (modulesPath + "/installer/scan/not-detected.nix")
 | 
			
		||||
    ./gitlab-runner.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  my.nix-ld.enable = true;
 | 
			
		||||
  imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
 | 
			
		||||
 | 
			
		||||
  boot.initrd.availableKernelModules = [
 | 
			
		||||
    "xhci_pci"
 | 
			
		||||
| 
						 | 
				
			
			@ -1,36 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  inherit (pkgs.callPackage ../../system/gitlab-runner.nix { }) mkNixRunnerFull;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  boot.kernel.sysctl."net.ipv4.ip_forward" = true;
 | 
			
		||||
  virtualisation.docker.enable = true;
 | 
			
		||||
  services.gitlab-runner = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings.concurrent = 4;
 | 
			
		||||
    services = {
 | 
			
		||||
      wopus-gitlab-nix = mkNixRunnerFull {
 | 
			
		||||
        authenticationTokenConfigFile = config.sops.secrets."gitlab-runners/wopus-gitlab-nix".path;
 | 
			
		||||
        nixCacheSshPrivateKeyPath = config.sops.secrets."gitlab-runners/wopus-ssh-nix-cache-pk".path;
 | 
			
		||||
        nixCacheSshPublicKeyPath = config.sops.secrets."gitlab-runners/wopus-ssh-nix-cache-pub".path;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  systemd.services.gitlab-runner.serviceConfig.Nice = 10;
 | 
			
		||||
 | 
			
		||||
  sops.secrets = {
 | 
			
		||||
    "gitlab-runners/wopus-gitlab-nix" = {
 | 
			
		||||
      sopsFile = ../../secrets/double-rainbow/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
    "gitlab-runners/wopus-ssh-nix-cache-pk" = {
 | 
			
		||||
      sopsFile = ../../secrets/double-rainbow/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
    "gitlab-runners/wopus-ssh-nix-cache-pub" = {
 | 
			
		||||
      sopsFile = ../../secrets/double-rainbow/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -14,11 +14,12 @@ in
 | 
			
		|||
  boot.initrd.kernelModules = [ "amdgpu" ];
 | 
			
		||||
  boot.kernelParams = [
 | 
			
		||||
    "video=DP-1:1920x1080@144"
 | 
			
		||||
    "amdgpu.ppfeaturemask=0xfffd7fff" # enable undervolting
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  systemd.services.amd-fan-control = {
 | 
			
		||||
    script = ''
 | 
			
		||||
      ${lib.getExe pkgs.amd-fan-control} /sys/class/drm/card1/device 60 90 0 80
 | 
			
		||||
      ${lib.getExe pkgs.amd-fan-control} /sys/class/drm/card1/device 60 85
 | 
			
		||||
    '';
 | 
			
		||||
    serviceConfig = {
 | 
			
		||||
      Restart = "always";
 | 
			
		||||
| 
						 | 
				
			
			@ -27,13 +28,6 @@ in
 | 
			
		|||
    wantedBy = [ "multi-user.target" ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  hardware.amdgpu = {
 | 
			
		||||
    overdrive = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      ppfeaturemask = "0xffffffff";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  hardware.graphics.enable32Bit = true;
 | 
			
		||||
 | 
			
		||||
  hardware.graphics.extraPackages = with pkgs; [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,9 +42,6 @@ in
 | 
			
		|||
  };
 | 
			
		||||
 | 
			
		||||
  my.gaming.enable = true;
 | 
			
		||||
  my.nix-ld.enable = true;
 | 
			
		||||
 | 
			
		||||
  boot.kernelPackages = pkgs.linuxPackages_latest;
 | 
			
		||||
 | 
			
		||||
  boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -96,8 +93,7 @@ in
 | 
			
		|||
    options = [
 | 
			
		||||
      "subvol=@games"
 | 
			
		||||
      "nofail"
 | 
			
		||||
    ]
 | 
			
		||||
    ++ btrfs_options;
 | 
			
		||||
    ] ++ btrfs_options;
 | 
			
		||||
  };
 | 
			
		||||
  fileSystems."/home/lelgenio/Downloads/Torrents" = {
 | 
			
		||||
    device = "/dev/disk/by-label/BTRFS_DATA";
 | 
			
		||||
| 
						 | 
				
			
			@ -105,8 +101,7 @@ in
 | 
			
		|||
    options = [
 | 
			
		||||
      "subvol=@torrents"
 | 
			
		||||
      "nofail"
 | 
			
		||||
    ]
 | 
			
		||||
    ++ btrfs_options;
 | 
			
		||||
    ] ++ btrfs_options;
 | 
			
		||||
  };
 | 
			
		||||
  fileSystems."/home/lelgenio/Música" = {
 | 
			
		||||
    device = "/dev/disk/by-label/BTRFS_DATA";
 | 
			
		||||
| 
						 | 
				
			
			@ -114,8 +109,7 @@ in
 | 
			
		|||
    options = [
 | 
			
		||||
      "subvol=@music"
 | 
			
		||||
      "nofail"
 | 
			
		||||
    ]
 | 
			
		||||
    ++ btrfs_options;
 | 
			
		||||
    ] ++ btrfs_options;
 | 
			
		||||
  };
 | 
			
		||||
  fileSystems."/home/lelgenio/.local/mount/data" = {
 | 
			
		||||
    device = "/dev/disk/by-label/BTRFS_DATA";
 | 
			
		||||
| 
						 | 
				
			
			@ -123,8 +117,7 @@ in
 | 
			
		|||
    options = [
 | 
			
		||||
      "subvol=@data"
 | 
			
		||||
      "nofail"
 | 
			
		||||
    ]
 | 
			
		||||
    ++ btrfs_options;
 | 
			
		||||
    ] ++ btrfs_options;
 | 
			
		||||
  };
 | 
			
		||||
  fileSystems."/home/lelgenio/.local/mount/old" = {
 | 
			
		||||
    device = "/dev/disk/by-label/BTRFS_ROOT";
 | 
			
		||||
| 
						 | 
				
			
			@ -150,7 +143,7 @@ in
 | 
			
		|||
    ACTION=="add" SUBSYSTEM=="usb" ATTR{idVendor}=="046d" ATTR{idProduct}=="c547" ATTR{power/wakeup}="disabled"
 | 
			
		||||
    # Force all disks to use mq-deadline scheduler
 | 
			
		||||
    # For some reason "noop" is used by default which is kinda bad when io is saturated
 | 
			
		||||
    ACTION=="add|change", KERNEL=="sd[a-z]*[0-9]*|mmcblk[0-9]*p[0-9]*|nvme[0-9]*n[0-9]*p[0-9]*", ATTR{../queue/scheduler}="kyber"
 | 
			
		||||
    ACTION=="add|change", KERNEL=="sd[a-z]*[0-9]*|mmcblk[0-9]*p[0-9]*|nvme[0-9]*n[0-9]*p[0-9]*", ATTR{../queue/scheduler}="mq-deadline"
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  boot.tmp = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@
 | 
			
		|||
{
 | 
			
		||||
  services.factorio = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.my-factorio-headless;
 | 
			
		||||
    package = pkgs.factorio-headless; # I override this in ./pkgs
 | 
			
		||||
    public = true;
 | 
			
		||||
    lan = true;
 | 
			
		||||
    openFirewall = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -23,12 +23,11 @@
 | 
			
		|||
  systemd.services.factorio-backup-save = {
 | 
			
		||||
    description = "Backup factorio saves";
 | 
			
		||||
    script = ''
 | 
			
		||||
      FILENAME="space-age-$(date --iso=seconds | tr ':' '_').zip"
 | 
			
		||||
      ${lib.getExe pkgs.rsync} \
 | 
			
		||||
        -av  \
 | 
			
		||||
        --chown=lelgenio \
 | 
			
		||||
        /var/lib/factorio/saves/default.zip \
 | 
			
		||||
        ~lelgenio/Documentos/GameSaves/factorio_saves/$FILENAME
 | 
			
		||||
        ~lelgenio/Documentos/GameSaves/factorio_saves/space-age-$(date --iso=seconds).zip
 | 
			
		||||
    '';
 | 
			
		||||
    serviceConfig.Type = "oneshot";
 | 
			
		||||
    wantedBy = [ "multi-user.target" ];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,16 +2,12 @@
 | 
			
		|||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    inputs.vpsadminos.nixosConfigurations.container
 | 
			
		||||
    inputs.agenix.nixosModules.default
 | 
			
		||||
    inputs.sops-nix.nixosModules.default
 | 
			
		||||
 | 
			
		||||
    ../../system/sops.nix
 | 
			
		||||
    ../../system/nix.nix
 | 
			
		||||
    ./hardware-config.nix
 | 
			
		||||
    ./mastodon.nix
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +49,7 @@
 | 
			
		|||
  # Set your time zone.
 | 
			
		||||
  time.timeZone = "America/Sao_Paulo";
 | 
			
		||||
  # Select internationalisation properties.
 | 
			
		||||
  i18n.defaultLocale = "pt_BR.UTF-8";
 | 
			
		||||
  i18n.defaultLocale = "pt_BR.utf8";
 | 
			
		||||
 | 
			
		||||
  boot.kernel.sysctl."fs.inotify.max_user_watches" = 1048576;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -61,15 +57,6 @@
 | 
			
		|||
    identityPaths = [ "/root/.ssh/id_rsa" ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  sops = {
 | 
			
		||||
    secrets.hello = { };
 | 
			
		||||
    defaultSopsFile = lib.mkForce ../../secrets/phantom/default.yaml;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  environment.etc."teste-sops" = {
 | 
			
		||||
    text = config.sops.secrets.hello.path;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  virtualisation.docker = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    daemon.settings = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,8 +36,6 @@
 | 
			
		|||
        hashedPassword = "$2b$05$DcA9xMdvHqqQMZw2.zybI.vfKsQAJtaQ/JB.t9AHu6psstWq97m2C";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    enableManageSieve = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Prefer ipv4 and use main ipv6 to avoid reverse DNS issues
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +52,7 @@
 | 
			
		|||
      $config['smtp_host'] = "tls://${config.mailserver.fqdn}:587";
 | 
			
		||||
      $config['smtp_user'] = "%u";
 | 
			
		||||
      $config['smtp_pass'] = "%p";
 | 
			
		||||
      $config['plugins'] = [ "carddav", "archive", "managesieve" ];
 | 
			
		||||
      $config['plugins'] = [ "carddav", "archive" ];
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,9 +43,4 @@
 | 
			
		|||
    forceSSL = true;
 | 
			
		||||
    root = inputs.hello-fonts;
 | 
			
		||||
  };
 | 
			
		||||
  services.nginx.virtualHosts."contador-da-viagem.lelgenio.com" = {
 | 
			
		||||
    enableACME = true;
 | 
			
		||||
    forceSSL = true;
 | 
			
		||||
    root = inputs.contador-da-viagem;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@
 | 
			
		|||
    options = [ "nofail" ];
 | 
			
		||||
  };
 | 
			
		||||
  fileSystems."/var/lib/mastodon" = {
 | 
			
		||||
    device = "172.16.131.19:/nas/5749/mastodon";
 | 
			
		||||
    device = "172.16.130.7:/nas/5749/mastodon";
 | 
			
		||||
    fsType = "nfs";
 | 
			
		||||
    options = [ "nofail" ];
 | 
			
		||||
  };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -10,7 +11,6 @@
 | 
			
		|||
    hostName = "cloud.lelgenio.com";
 | 
			
		||||
    https = true;
 | 
			
		||||
    config = {
 | 
			
		||||
      dbtype = "sqlite"; # TODO: move to single postgres db
 | 
			
		||||
      adminpassFile = config.age.secrets.phantom-nextcloud.path;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,6 +28,14 @@ rec {
 | 
			
		|||
          ];
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
      nerdfonts_fira_hack = (
 | 
			
		||||
        final.nerdfonts.override {
 | 
			
		||||
          fonts = [
 | 
			
		||||
            "FiraCode"
 | 
			
		||||
            "Hack"
 | 
			
		||||
          ];
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -35,8 +43,6 @@ rec {
 | 
			
		|||
    final: prev:
 | 
			
		||||
    packages
 | 
			
		||||
    // {
 | 
			
		||||
      lsfg-vk = inputs.lsfg-vk-flake.packages.${prev.system}.lsfg-vk;
 | 
			
		||||
      lsfg-vk-ui = inputs.lsfg-vk-flake.packages.${prev.system}.lsfg-vk-ui;
 | 
			
		||||
      dhist = inputs.dhist.packages.${prev.system}.dhist;
 | 
			
		||||
      demoji = inputs.demoji.packages.${prev.system}.default;
 | 
			
		||||
      tlauncher = inputs.tlauncher.packages.${prev.system}.tlauncher;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,51 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  stdenv,
 | 
			
		||||
  lib,
 | 
			
		||||
  fetchFromGitHub,
 | 
			
		||||
 | 
			
		||||
  pkgconf,
 | 
			
		||||
  pkg-config,
 | 
			
		||||
  wayland-scanner,
 | 
			
		||||
 | 
			
		||||
  systemd,
 | 
			
		||||
  libbsd,
 | 
			
		||||
  wayland,
 | 
			
		||||
  wayland-protocols,
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
stdenv.mkDerivation {
 | 
			
		||||
  pname = "caffeinated";
 | 
			
		||||
  version = "2022-12-08";
 | 
			
		||||
 | 
			
		||||
  src = fetchFromGitHub {
 | 
			
		||||
    owner = "electrickite";
 | 
			
		||||
    repo = "caffeinated";
 | 
			
		||||
    rev = "5a8eff054bdce225a19cf3ab785dc1bbc9bd3265";
 | 
			
		||||
    hash = "sha256-X1w/YWljcwb5ZH8Nt92CDhPU/yqBLH3lBS7yVJUeyzY=";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [
 | 
			
		||||
    pkgconf
 | 
			
		||||
    pkg-config
 | 
			
		||||
    wayland-scanner
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  buildInputs = [
 | 
			
		||||
    systemd
 | 
			
		||||
    libbsd
 | 
			
		||||
    wayland
 | 
			
		||||
    wayland-protocols
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  makeFlags = [ "WAYLAND=1" ];
 | 
			
		||||
 | 
			
		||||
  installFlags = [ "PREFIX=$(out)" ];
 | 
			
		||||
 | 
			
		||||
  meta = {
 | 
			
		||||
    description = "Utility to prevent the system from entering an idle state";
 | 
			
		||||
    homepage = "https://github.com/electrickite/caffeinated";
 | 
			
		||||
    license = lib.licenses.mit;
 | 
			
		||||
    platforms = lib.platforms.linux;
 | 
			
		||||
    maintainers = with lib.maintainers; [ lelgenio ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3,13 +3,12 @@
 | 
			
		|||
 | 
			
		||||
{ pkgs, inputs }:
 | 
			
		||||
rec {
 | 
			
		||||
  caffeinated = pkgs.callPackage ./caffeinated { };
 | 
			
		||||
  cargo-checkmate = pkgs.callPackage ./cargo-checkmate.nix { };
 | 
			
		||||
  lipsum = pkgs.callPackage ./lipsum.nix { };
 | 
			
		||||
  emmet-cli = pkgs.callPackage ./emmet-cli.nix { };
 | 
			
		||||
  material-wifi-icons = pkgs.callPackage ./material-wifi-icons.nix { };
 | 
			
		||||
  gnome-pass-search-provider = pkgs.callPackage ./gnome-pass-search-provider.nix { };
 | 
			
		||||
  my-factorio-headless = pkgs.callPackage ./factorio-headless {
 | 
			
		||||
  factorio-headless = pkgs.callPackage ./factorio-headless {
 | 
			
		||||
    inherit (pkgs.unstable) factorio-headless;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,10 @@
 | 
			
		|||
{ factorio-headless, pkgs }:
 | 
			
		||||
 | 
			
		||||
factorio-headless.overrideAttrs (_: rec {
 | 
			
		||||
  version = "2.0.66";
 | 
			
		||||
  version = "2.0.28";
 | 
			
		||||
  src = pkgs.fetchurl {
 | 
			
		||||
    name = "factorio_headless_x64-${version}.tar.xz";
 | 
			
		||||
    url = "https://www.factorio.com/get-download/${version}/headless/linux64";
 | 
			
		||||
    hash = "sha256-8bOXbqzE4jOADTmdkABsNW+jZvXWQ0HFBMlcDLoyHAY=";
 | 
			
		||||
    hash = "sha256-6pk3tq3HoY4XpOHmSZLsOJQHSXs25oKAuxT83UyITdM=";
 | 
			
		||||
  };
 | 
			
		||||
})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										11
									
								
								scripts/_sway_idle_toggle
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								scripts/_sway_idle_toggle
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
swayidlectl() {
 | 
			
		||||
  systemctl --user $1 swayidle.service
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if swayidlectl status > /dev/null; then
 | 
			
		||||
    swayidlectl stop
 | 
			
		||||
else
 | 
			
		||||
    swayidlectl start
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			@ -2,144 +2,60 @@
 | 
			
		|||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
DEVICE="$1" # eg: /sys/class/drm/card1/device
 | 
			
		||||
HWMON=$(echo "$DEVICE"/hwmon/hwmon*)
 | 
			
		||||
 | 
			
		||||
exit() {
 | 
			
		||||
    echo "Setting controll to auto" >&2
 | 
			
		||||
    echo 2 > "$HWMON/pwm1_enable"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
trap exit EXIT INT
 | 
			
		||||
 | 
			
		||||
bail() {
 | 
			
		||||
    echo "Error: $@" >&2
 | 
			
		||||
    echo "Exiting..." >&2
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
map_range() {
 | 
			
		||||
    VALUE="$1"
 | 
			
		||||
    MIN_INPUT="$2"
 | 
			
		||||
    MAX_INPUT="$3"
 | 
			
		||||
    INPUT_RANGE=$(( $MAX_INPUT - $MIN_INPUT ))
 | 
			
		||||
    MIN_OUTPUT="$4"
 | 
			
		||||
    MAX_OUTPUT="$5"
 | 
			
		||||
    OUTPUT_RANGE=$(( $MAX_OUTPUT - $MIN_OUTPUT ))
 | 
			
		||||
 | 
			
		||||
    echo $(( ($VALUE - $MIN_INPUT) * $OUTPUT_RANGE / $INPUT_RANGE  + $MIN_OUTPUT ))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
clamp() {
 | 
			
		||||
    VALUE="$1"
 | 
			
		||||
 | 
			
		||||
    MIN="$2"
 | 
			
		||||
    MAX="$3"
 | 
			
		||||
 | 
			
		||||
    VALUE=$VALUE
 | 
			
		||||
    if [ "$VALUE" -gt $MAX ]; then
 | 
			
		||||
        VALUE=$MAX
 | 
			
		||||
    elif [ "$VALUE" -lt $MIN ]; then
 | 
			
		||||
        VALUE=$MIN
 | 
			
		||||
if ! [ -d "$HWMON" ]; then
 | 
			
		||||
    bail "Invalid HWMON"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
    echo $VALUE
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cleanup() {
 | 
			
		||||
    echo "Setting controll to auto" >&2
 | 
			
		||||
    if test -f "$HWMON/pwm1_enable"; then
 | 
			
		||||
        echo 2 > "$HWMON/pwm1_enable"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
trap cleanup EXIT INT
 | 
			
		||||
 | 
			
		||||
usage() {
 | 
			
		||||
    echo "Usage: $0 <device> <min-temp> <max-temp> <min-fan> <max-fan>" >&2
 | 
			
		||||
    echo "Example: $0 /sys/class/drm/card1/device 60 100 10 80" >&2
 | 
			
		||||
    exit 1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
parse_cli() {
 | 
			
		||||
    if test -n "$AMDGPU_FAN_CRONTROL_DEBUG"; then
 | 
			
		||||
        echo parse_cli "$@" >&2
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    DEVICE="$1" # eg: /sys/class/drm/card1/device
 | 
			
		||||
    HWMON=$(echo "$DEVICE"/hwmon/hwmon*)
 | 
			
		||||
TEMP_INPUT="$HWMON/temp2_input"
 | 
			
		||||
 | 
			
		||||
if ! [ -f $TEMP_INPUT ]; then
 | 
			
		||||
    bail "Invalid TEMP_INPUT"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
TEMP_MIN="$2"
 | 
			
		||||
TEMP_MAX="$3"
 | 
			
		||||
 | 
			
		||||
    PWM_MIN_PCT="$4"
 | 
			
		||||
    PWM_MAX_PCT="$5"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
validate_variables() {
 | 
			
		||||
    if ! [ -d "$HWMON" ]; then
 | 
			
		||||
        bail "Invalid drm-device: '$HWMON' is not a directory"
 | 
			
		||||
if [ -z "$TEMP_MIN" ];then
 | 
			
		||||
  bail "No minimum temperature provided"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
    if ! [ -f "$TEMP_INPUT" ]; then
 | 
			
		||||
        bail "Error: Could not find hotspot temperature at '$TEMP_INPUT'"
 | 
			
		||||
if [ -z "$TEMP_MAX" ];then
 | 
			
		||||
  bail "No maximum temperature provided"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
    if [ -z "$TEMP_MIN" -o -z "$TEMP_MAX" -o -z "$PWM_MIN_PCT" -o -z "$PWM_MAX_PCT" ];then
 | 
			
		||||
        usage
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
setup() {
 | 
			
		||||
    PWM_MIN=$(map_range $PWM_MIN_PCT 0 100 0 255)
 | 
			
		||||
    PWM_MAX=$(map_range $PWM_MAX_PCT 0 100 0 255)
 | 
			
		||||
PWM_MIN=0
 | 
			
		||||
PWM_MAX=255
 | 
			
		||||
 | 
			
		||||
echo "Running..." >&2
 | 
			
		||||
 | 
			
		||||
    if test -n "$AMDGPU_FAN_CRONTROL_DEBUG"; then
 | 
			
		||||
        echo "TEMP_MIN=$TEMP_MIN°C" >&2
 | 
			
		||||
        echo "TEMP_MAX=$TEMP_MAX°C" >&2
 | 
			
		||||
        echo "FAN_MIN=$PWM_MIN_PCT% (PWM=$PWM_MIN)" >&2
 | 
			
		||||
        echo "FAN_MAX=$PWM_MAX_PCT% (PWM=$PWM_MAX)" >&2
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Set fan control mode to manual, this will be reverted in the cleanup trap
 | 
			
		||||
    echo 1 > "$HWMON/pwm1_enable"
 | 
			
		||||
 | 
			
		||||
    PREV_PWM=0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
main_loop() {
 | 
			
		||||
    TEMPERATURE_RAW=$(cat "$TEMP_INPUT")
 | 
			
		||||
    TEMPERATURE="$(( $TEMPERATURE_RAW / 1000 ))" # 60_000 = 60°C
 | 
			
		||||
 | 
			
		||||
    # Calculate the fan speed we would want to reach given infinite time
 | 
			
		||||
    TARGET_PWM=$(map_range $TEMPERATURE $TEMP_MIN $TEMP_MAX $PWM_MIN $PWM_MAX)
 | 
			
		||||
 | 
			
		||||
    # Calculate an appropriate amount to "walk" in the direction of target fan speed
 | 
			
		||||
    DIFFERENCE=$(( $TARGET_PWM - $PREV_PWM ))
 | 
			
		||||
    ADJUSTMENT=$(( $DIFFERENCE * 20 / 100 ))
 | 
			
		||||
 | 
			
		||||
    NEXT_PWM=$(( $PREV_PWM + $ADJUSTMENT ))
 | 
			
		||||
 | 
			
		||||
    NEXT_PWM=$(clamp $NEXT_PWM $PWM_MIN $PWM_MAX)
 | 
			
		||||
    NEXT_PWM_PCT=$(map_range $NEXT_PWM 0 255 0 100 )
 | 
			
		||||
 | 
			
		||||
    if test -n "$AMDGPU_FAN_CRONTROL_DEBUG"; then
 | 
			
		||||
        for var in \
 | 
			
		||||
            "Temperature=$TEMPERATURE°C" \
 | 
			
		||||
            "Fan speed=$NEXT_PWM_PCT%" \
 | 
			
		||||
        ; do
 | 
			
		||||
            echo -en "$var\t"
 | 
			
		||||
        done
 | 
			
		||||
        echo
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    # Apply the new fan speed
 | 
			
		||||
    echo "$NEXT_PWM" > "$HWMON/pwm1"
 | 
			
		||||
 | 
			
		||||
    # Wait for next iteratino
 | 
			
		||||
    PREV_PWM="$NEXT_PWM"
 | 
			
		||||
    sleep .1s
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
main() {
 | 
			
		||||
    parse_cli "$@"
 | 
			
		||||
    validate_variables
 | 
			
		||||
    setup
 | 
			
		||||
while true; do
 | 
			
		||||
        main_loop
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
    TEMPERATURE_RAW=$(cat "$TEMP_INPUT")
 | 
			
		||||
    TEMPERATURE="$(( $TEMPERATURE_RAW / 1000 ))"
 | 
			
		||||
    # Remap from a number between 60_000..90_000 to 0..255
 | 
			
		||||
    PWM=$(( ($TEMPERATURE - $TEMP_MIN) * $PWM_MAX / ($TEMP_MAX - $TEMP_MIN) ))
 | 
			
		||||
 | 
			
		||||
main "$@"
 | 
			
		||||
    if [ "$PWM" -gt $PWM_MAX ]; then
 | 
			
		||||
        PWM=$PWM_MAX
 | 
			
		||||
    elif [ "$PWM" -lt $PWM_MIN ]; then
 | 
			
		||||
        PWM=$PWM_MIN
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    echo 1 > "$HWMON/pwm1_enable"
 | 
			
		||||
    echo "$PWM" > "$HWMON/pwm1"
 | 
			
		||||
    sleep .1s
 | 
			
		||||
done
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,17 +0,0 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -euo pipefail
 | 
			
		||||
 | 
			
		||||
if [ "$#" = 0 ]; then
 | 
			
		||||
    echo "Usage: $0 [passwords...] | $0 - < passwords.txt" >&2
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ "$1" = '-' ]; then
 | 
			
		||||
    xargs -x -n1 -d'\n' htpasswd -bnBC 10 "" | tr -d ':' | sed '/^$/d'
 | 
			
		||||
else
 | 
			
		||||
    for pass in "$@"; do
 | 
			
		||||
        htpasswd -bnBC 10 "" "$pass" | tr -d ':' | sed '/^$/d'
 | 
			
		||||
    done
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -8,10 +8,13 @@
 | 
			
		|||
if test "$argv[1]" = "run"
 | 
			
		||||
    test -n "$argv[2]" && set t "$argv[2]" || set t "terminal"
 | 
			
		||||
 | 
			
		||||
    test -n "$i3SOCK" && set wrapper 'i3-msg exec --'
 | 
			
		||||
    test -n "$SWAYSOCK" && set wrapper 'swaymsg exec --'
 | 
			
		||||
 | 
			
		||||
    exec j4-dmenu-desktop \
 | 
			
		||||
        --dmenu="bmenu start -p Iniciar:" \
 | 
			
		||||
        --term "$t" \
 | 
			
		||||
        --i3-ipc \
 | 
			
		||||
        --wrapper="$wrapper" \
 | 
			
		||||
        --no-generic
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,20 +10,29 @@ if test -z "$CONTROLLER"; then
 | 
			
		|||
fi
 | 
			
		||||
 | 
			
		||||
CAPACITY=$(cat "$CONTROLLER/capacity")
 | 
			
		||||
STATUS=$(cat "$CONTROLLER/status")
 | 
			
		||||
 | 
			
		||||
echo -n ''
 | 
			
		||||
 | 
			
		||||
if test "$STATUS" = "Charging"; then
 | 
			
		||||
    echo -n ""
 | 
			
		||||
if test "$CAPACITY" -ge 90; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 90; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 80; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 70; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 60; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 50; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 40; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 30; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 20; then
 | 
			
		||||
    echo ''
 | 
			
		||||
elif test "$CAPACITY" -ge 10; then
 | 
			
		||||
    echo ''
 | 
			
		||||
else
 | 
			
		||||
    print-battery-icon "$CAPACITY"
 | 
			
		||||
    echo ''
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Add terminating newline
 | 
			
		||||
echo
 | 
			
		||||
 | 
			
		||||
# Tooltip
 | 
			
		||||
echo -n ''
 | 
			
		||||
print-battery-icon "$CAPACITY"
 | 
			
		||||
echo " $CAPACITY%"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,6 +44,7 @@
 | 
			
		|||
    ];
 | 
			
		||||
    _diffr = [ diffr ];
 | 
			
		||||
    _thunar-terminal = [ terminal ];
 | 
			
		||||
    _sway_idle_toggle = [ swayidle ];
 | 
			
		||||
    kak-pager = [
 | 
			
		||||
      fish
 | 
			
		||||
      _diffr
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +55,6 @@
 | 
			
		|||
      _diffr
 | 
			
		||||
    ];
 | 
			
		||||
    helix-man-pager = [ helix-pager ];
 | 
			
		||||
    bcrypt = [ apacheHttpd ];
 | 
			
		||||
    musmenu = [
 | 
			
		||||
      mpc-cli
 | 
			
		||||
      wdmenu
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +74,6 @@
 | 
			
		|||
    ];
 | 
			
		||||
    wpass = [
 | 
			
		||||
      wdmenu
 | 
			
		||||
      ripgrep
 | 
			
		||||
      fd
 | 
			
		||||
      myPass
 | 
			
		||||
      sd
 | 
			
		||||
| 
						 | 
				
			
			@ -138,13 +137,7 @@
 | 
			
		|||
      libinput
 | 
			
		||||
      libratbag
 | 
			
		||||
    ];
 | 
			
		||||
    sway-sync-xkbmap = [
 | 
			
		||||
      xorg.setxkbmap
 | 
			
		||||
      jq
 | 
			
		||||
    ];
 | 
			
		||||
    print-battery-icon = [ ];
 | 
			
		||||
    controller-battery = [ print-battery-icon ];
 | 
			
		||||
    mouse-battery = [ print-battery-icon ];
 | 
			
		||||
    controller-battery = [ ];
 | 
			
		||||
    _docker-block-external-connections = [
 | 
			
		||||
      iptables
 | 
			
		||||
      gawk
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,19 +1,10 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -euo pipefail
 | 
			
		||||
 | 
			
		||||
cleanup() {
 | 
			
		||||
    if test "$?" != 0; then
 | 
			
		||||
        notify-send "Failed to download"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
trap cleanup EXIT INT
 | 
			
		||||
 | 
			
		||||
DIR=$(mktemp -d)
 | 
			
		||||
 | 
			
		||||
cd "$DIR"
 | 
			
		||||
 | 
			
		||||
yt-dlp --cookies-from-browser firefox --merge-output-format mp4 "$(wl-paste)"
 | 
			
		||||
yt-dlp --merge-output-format mp4 "$(wl-paste)"
 | 
			
		||||
 | 
			
		||||
FILENAME="$(ls | head -n1)"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,39 +0,0 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
MODEL_NAME_FILE=$(rg --files-with-matches G502 /sys/class/power_supply/*/model_name | head -n1)
 | 
			
		||||
 | 
			
		||||
if test -z "$MODEL_NAME_FILE"; then
 | 
			
		||||
    echo
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
MOUSE=$(dirname "$MODEL_NAME_FILE")
 | 
			
		||||
 | 
			
		||||
if test -z "$MOUSE"; then
 | 
			
		||||
    echo
 | 
			
		||||
    exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
CAPACITY=$(cat "$MOUSE/capacity")
 | 
			
		||||
STATUS=$(cat "$MOUSE/status")
 | 
			
		||||
 | 
			
		||||
echo -n '🖱️'
 | 
			
		||||
 | 
			
		||||
if test "$STATUS" = "Charging"; then
 | 
			
		||||
    echo -n ""
 | 
			
		||||
else
 | 
			
		||||
    print-battery-icon "$CAPACITY"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if test "$CAPACITY" -lt 50; then
 | 
			
		||||
    echo -n "$CAPACITY%"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo
 | 
			
		||||
 | 
			
		||||
# Tooltip
 | 
			
		||||
echo -n '🖱️'
 | 
			
		||||
print-battery-icon "$CAPACITY"
 | 
			
		||||
echo " $CAPACITY%"
 | 
			
		||||
| 
						 | 
				
			
			@ -1,33 +0,0 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
if test $# -ne 1; then
 | 
			
		||||
    echo "Usage $0" >&2
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
CAPACITY="$1"
 | 
			
		||||
 | 
			
		||||
if test "$CAPACITY" -ge 90; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 90; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 80; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 70; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 60; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 50; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 40; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 30; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 20; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
elif test "$CAPACITY" -ge 10; then
 | 
			
		||||
    echo -n ''
 | 
			
		||||
else
 | 
			
		||||
    echo -n ''
 | 
			
		||||
fi
 | 
			
		||||
| 
						 | 
				
			
			@ -46,13 +46,4 @@ case $1 in
 | 
			
		|||
            $screenshot -o "$cur_output" - | $copy ||
 | 
			
		||||
            $screenshot - | $copy
 | 
			
		||||
        ;;
 | 
			
		||||
    edit)
 | 
			
		||||
        # Focused monitor to clipboard
 | 
			
		||||
        cur_output=$(swaymsg -t get_outputs |
 | 
			
		||||
            jq -r '.[] | select(.focused) | .name')
 | 
			
		||||
 | 
			
		||||
        test -n "$cur_output" &&
 | 
			
		||||
            $screenshot -o "$cur_output" - | satty --filename - --output-filename "$DESTFILE" ||
 | 
			
		||||
            $screenshot - | satty --filename - --output-filename "$DESTFILE"
 | 
			
		||||
        ;;
 | 
			
		||||
esac
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
set -euo pipefail
 | 
			
		||||
 | 
			
		||||
LAST_LAYOUT=""
 | 
			
		||||
 | 
			
		||||
while sleep 1s; do
 | 
			
		||||
    CURRENT_LAYOUT=$(swaymsg -t get_inputs | jq -r '.[]|.xkb_active_layout_name|select(.)' | head -n1)
 | 
			
		||||
 | 
			
		||||
    if test "$LAST_LAYOUT" = "$CURRENT_LAYOUT"; then
 | 
			
		||||
        true
 | 
			
		||||
    elif test "$CURRENT_LAYOUT" = "English (Colemak)"; then
 | 
			
		||||
        echo "Setting layout to colemak"
 | 
			
		||||
        setxkbmap us colemak
 | 
			
		||||
    elif test "$CURRENT_LAYOUT" = "Portuguese (Brazil)"; then
 | 
			
		||||
        echo "Setting layout to br"
 | 
			
		||||
        setxkbmap br
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    LAST_LAYOUT="$CURRENT_LAYOUT"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -29,8 +29,8 @@ main() {
 | 
			
		|||
 | 
			
		||||
    test -n "$entry" || exit 0
 | 
			
		||||
 | 
			
		||||
    username=`pass show "$entry" 2>/dev/null | rg -m1 '(login|user|email): (.*)' -r '$2'` || true
 | 
			
		||||
    password=`pass show "$entry" 2>/dev/null | head -n 1` || true
 | 
			
		||||
    username=`pass show "$entry" 2>/dev/null | perl -ne 'print $2 if /^(login|user|email): (.*)/'`
 | 
			
		||||
    password=`pass show "$entry" 2>/dev/null | head -n 1`
 | 
			
		||||
    otp=`pass otp "$entry" 2>/dev/null` || true
 | 
			
		||||
 | 
			
		||||
    action="$(print_actions_for_entry | wdmenu -p Action)"
 | 
			
		||||
| 
						 | 
				
			
			@ -50,10 +50,8 @@ main() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
autotype(){
 | 
			
		||||
    if test -n "$username"; then
 | 
			
		||||
    env wtype -s 100 "$username"
 | 
			
		||||
    env wtype -s 100 -k tab
 | 
			
		||||
    fi
 | 
			
		||||
    env wtype -s 100 "$password"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,53 +0,0 @@
 | 
			
		|||
gitlab-runners:
 | 
			
		||||
    wopus-gitlab-nix: ENC[AES256_GCM,data:n/bm5W5Q/h7MxMZX7yz4qeUBpfZDrI7A7/PlnLncMto5V5itVTXRvfd3+D/d2r9PVuJSogfMgMAh0cwuvPspjlm9ToPxrmgGdYbnAkhnFeTHdCfcF1x2DG2JkHe54wUhcQa9QEJkWZ5jJM//2jU=,iv:63lrYCCBMSr5toulba7Rni+iun0Bl2vMFbIsTVvOWQs=,tag:Z1GHj91q09sOWCaLPIKJ4Q==,type:str]
 | 
			
		||||
    wopus-ssh-nix-cache-pk: ENC[AES256_GCM,data:+5I7INvMNfegjjC0xPNOSj+vFakXe6V4N/S5wvL64DOxfPXhSQAjVtdMslp/LlJXH4XWbkQ8ErLbySB3WMDMRDnDRY+6+UKXsP6MFpvEtho0lN+8ZeAGC25ehadYDSFTX43wz6cLRuoAqRQdhPKM96wcYif7nF40cStgaAQhkNemK7AenSA9LQ4J72dWovFuwfTZml8qH6W/O+YEqfOgZsyJ/LobcM1fiuN1S4NnCOJSWB2Ahsu0tiMOSRxKWeUS9+ewh+x1xnZL3y4vax5GgtS2KojtXq0U4qgNi4Gwnmef7HmH1tVgeMO2ykCsuCCZ9iJR0IOqTHU2l+U6hTzf5vehpgK5/tsthkXRsLUmVRnjUaQwaEq9JYltGpEdk6U0UnD+Mf0f5BsDw23lHgannLeduhrSFrPFj+BVodnPxjyYJTPXwXfbWrKIQ8s5kWfIq9x0VePsteIgEH4xLL0yFtyZzrYeCq9WF3j5xTvJsOlG0ehQzX22orrM4RzrFVmeLYOIc/V4bQeyIf1lWemr,iv:UNaUnlVayrzF7qpgIVi9gxPFGCzIP24jNUpO295JPog=,tag:a5OlD+AJH3u6y+Lo3lOQWw==,type:str]
 | 
			
		||||
    wopus-ssh-nix-cache-pub: ENC[AES256_GCM,data:aknblYwAAGaso/Vhr9f1RX64tA3uOh3qxc1dBI7DQmk4TUlQn/AYrKF7wanIhhydrasRulDEam3CBiiyeW/ejcXG07wKIUyZ94TOYfcyRd1yo+PGkmb1yycU6PdjaP5/zwUPAnjMhR2quW+8iwADaUMYKXIJkdQaqUW9a845vBKIxgNgBskWMGMzldb+aUnr2eCb,iv:MQdEUrNugzv+QL6f/MNUqh9M+nFVsWI4VHlMrgQOTEg=,tag:olNTQyCSOhv3sgSjuIXKBA==,type:str]
 | 
			
		||||
sops:
 | 
			
		||||
    age:
 | 
			
		||||
        - recipient: age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0eTBFdVM5OFlQTi9JMmFw
 | 
			
		||||
            QWpIU2dSdDMzQTVJOWJCUU03QXR1QVZoeXc4CkljdHNKQ0tUczMrNys5eXNGMnVa
 | 
			
		||||
            K003QjdRaWY4RmNtaEw4cEsxSEJwZlEKLS0tIFZpbGUyaHh0RndkVlpQVlVucHJa
 | 
			
		||||
            TndIUUhsY2xSR3E1WlJXV3ZFN0lIMncKjjf1yt4XhfguzYoCNmHYSmetMDnoz4cr
 | 
			
		||||
            frbZdy4hl9w9EZO5JUeC/n7QMYTZLC2/Zk2PXRUvwyQglrGoUVK2Bg==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
        - recipient: age1ecyynwv93lfu7crjjp8l47defv07quzfzaktwurpep7jc9eha5pscg7lrw
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHbHd4L0NEZW55OWd3SWlv
 | 
			
		||||
            U3dEcDNKZUJid2VsZ1lQdy9NRnIyVDRPRm1VCnZDcCs0S1BLNjJLZTFpSHVpNVRj
 | 
			
		||||
            OFpMK0ZjWTJkcWJoUFk2YnBCK3JKcFUKLS0tIEtqRkF4Q0FobXhPVTF6eWN2d0Nx
 | 
			
		||||
            eVAwSi9LaVNEcHIvQnhhZmZLbHRPOUUK6A91L8YCpi/sM9FiXcJ1sLmW3U4KadYL
 | 
			
		||||
            uw07mobP1Rf0RUdAuSK+42ErFgmS+OTDze/mT/PXg6Dfk+vhTjbfGA==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
        - recipient: age1026d4c8nqyapcsy4jz57szt6zw3ejcgv3ecyvz0s89t7w7z964fqdqv52h
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEaUpLU1ZxQWNCNFNGeEpl
 | 
			
		||||
            dEpVbzBFbk1XaVoxMXIzMWFmTkZWS05GOFFvCmJGamVGK2pCeTJROVloMGdYK3Mx
 | 
			
		||||
            cGF1elFSbjJ3UmUyc1FsUkh6b2JNWTgKLS0tIFRzbHZIL25tK1dnWm90QVFueWZM
 | 
			
		||||
            WUZrTkg0cklJSUg5MndsN0ZPcVk4U0kKPsj787kDFDMxsBt5qk4Bp121AMTE++99
 | 
			
		||||
            m2X4lL6ona9fUe8e8wGhdgxZmqvJL2RCaVWJJy5SAbJ/skP3y7i2mw==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
    lastmodified: "2025-09-09T20:29:01Z"
 | 
			
		||||
    mac: ENC[AES256_GCM,data:forfO9i1DJvf38Q2B6ETUuOmGB3XVNQEURlUH4h6+6qEZqpZb/c7yUlMpXTUk9kgXn+IcfUhymFN3lrS7KVhSG5SxOTqwpOLF39+XFXcam3X4jf1/H4uBVqmntWAFG2+SvPxvL5jUKw9j8O0xBPWlbnx6BOQU4ifjcoPMOWanBQ=,iv:wj6F/5AV4oieoASZXb6oBtDYA0cA+1ujPWkziMTAhQ0=,tag:29lR7wsFT3vhp2ztMHBlsA==,type:str]
 | 
			
		||||
    pgp:
 | 
			
		||||
        - created_at: "2025-09-09T20:27:32Z"
 | 
			
		||||
          enc: |-
 | 
			
		||||
            -----BEGIN PGP MESSAGE-----
 | 
			
		||||
 | 
			
		||||
            hQEMAzy6JxafzLr5AQf/a5v/AIIsdE9WawM710HCLQwEJXskDXfN7UP055gDBJer
 | 
			
		||||
            96qny8cKC833OhTPLqWCUpAVgJ1JQ8EDLvj2YvXLiq/NmMFs+mBwjPdzNIUKzK6E
 | 
			
		||||
            QgtjRJuQfOGSW0i44b+nkmWLSi1PhxVbIFt27Nl4I+mrvkhztIZcTwht+be3mMrp
 | 
			
		||||
            z1hEn/BbXsin6JOB6EuyFbsRZ3wYFUlr23NiKVI/JSo39ifbtGqgWn68GN+tYYYs
 | 
			
		||||
            mZ5tJykyRZxTU6qEKBaW9veClxs0FW2shQpp6Go/u6u/ghhHeB99trauPFL2rypT
 | 
			
		||||
            IaLGWruFwHMsd+rSTcw+YrTbL7bfkqx/4xj5dxJaFNJeAfo5F5ddr1odeAHeSQmh
 | 
			
		||||
            pfStJmy83SHhyDw8wLKMeF9d7dPKIyU4cXbLjSv1w86bDpDw8LBJSYEjJPVjLONV
 | 
			
		||||
            F6AXCJxNckDXmshGUejC09abAcMzzTsEJK7ocqEoMg==
 | 
			
		||||
            =XAWM
 | 
			
		||||
            -----END PGP MESSAGE-----
 | 
			
		||||
          fp: 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
 | 
			
		||||
    unencrypted_suffix: _unencrypted
 | 
			
		||||
    version: 3.10.2
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| 
						 | 
				
			
			@ -1,49 +0,0 @@
 | 
			
		|||
forgejo-runners:
 | 
			
		||||
    git.lelgenio.com-default: ENC[AES256_GCM,data:sEfpBZvgQUkyXPWY4RI0RPJWUbsYK/RGqiYJ5wDSVY9a0EYenyt96QYq6815evq2iQ==,iv:rSWnCOdhfKH4TM9R0/IParYd9laYhWxR+iUhgkVvqfc=,tag:mBcSH/oGDMBgBScvCdn3Zg==,type:str]
 | 
			
		||||
gitlab-runners:
 | 
			
		||||
    thoreb-telemetria-nix: ENC[AES256_GCM,data:zrZvG4be08ulpo7itbrprKK5csCMLvzZjrszfMw1XiJP0FyRTUd9nHgHpbAzbjj2KyT7kKngoZAyengvaTEhkT9sUi1pdGnvajAH8BDDOD0g4LJIHFl4,iv:3bSsTzU7gHx+MchuPg9kmb5xEDugmGPje8Jw74NpRJI=,tag:zffRr77lWbyLt7o/mywb5A==,type:str]
 | 
			
		||||
    thoreb-itinerario-nix: ENC[AES256_GCM,data:UdAAD0V895sFoEYR56sCG2LlpZugJ0K/nwkTygzWOnbTSmBRAcIQ8qVFPZGw+K+XMSLiCyio6Jp7k8AYP0K1VYm+6aEP3OkqR9FCLQTJgXo=,iv:UGUby50BYkn13OzItk6zZmxc5+SnbZZa4bebQHIow2A=,tag:LjDg3deWwdH2T71EtPo6jA==,type:str]
 | 
			
		||||
    docker-images-token: ENC[AES256_GCM,data:GGB/KSkjdAyhFKEspAh91ItbqEDf7K/LZSGSn+Jp7SxRfXpDzHIiMD8XJ9PTkGLeQGN4ug1i2nTYPS7d/P5OALWDU+1NPiV9nPdG0w7GERfu4g==,iv:6roabdOKX9xFMf0hWlECd73+943R+hFLos0e2dOpzns=,tag:LrASFc4DtN7aQ+3oOW/p/w==,type:str]
 | 
			
		||||
    wopus-gitlab-nix: ENC[AES256_GCM,data:asE7J0d58x9VfQFWc07f5T4s5NZ+/VqMQo66EX93J0LbJ4iI5YjvrrIE4pSI1e4Nz/SRQhltaJ0DfSH0+qgjD4wnAONPRi3UlFbSdGWS2bwwRtWe+Nci2krrUFxV2i/ZVE3CwCkNe4mqtII=,iv:gKrD/LhzI+jnDnX6CdxoHfjpiRdrsuRYJF9rTc8SffM=,tag:TczDGSU3gdKmERjBJ7tP/A==,type:str]
 | 
			
		||||
    wopus-ssh-nix-cache-pk: ENC[AES256_GCM,data:MtYDK6P7nwBzr6p+lRX/dkosBfeDUAj/slf/a5SgVXNIbQlkEk7gvfW5iL+C2HgMwowqWx4F+3q2W+kGweqEYzEYAoZ9pR08a7Jci3Szyy49hkamxJXF+Qwhb5VQKxDppESne7DARCF0iYeUjgeXxCYyuWlGpisnkN3HCWrIYCqbk0LS+yqgkNhDxtxMaThGYztfPnLMEV/P5vuge9sRKu3Xi3iX2uDKtx4FTBsX30Lmd8kngOVnP/GaEHDa5ECO+/yW6ZRg3fIaqJ4RV+Vz79ovFUuZV/VE8eY3JOdK5tKIBWb31YUOjP7ccBes7mMhFLO3ceNeh+a6KAJbQ4pCojJwf/cLz663FKr5f/uWDicOBbL64l3+zV5zvSDzFls0ImXMNL6Fe3SaKP7ZcC5rVrRD8P+UN/OSFmbN5LM7uYY8nNsLxTH7MYsRHgTBUmTsFEhLGJIUjtf6J3/NWIlxjBq1MmpgxN0bD6gwVAxDPP489v918tsZtKdG8SJhLUPE4LWKsU7LHpgUBroKlbGE,iv:1jnF2TTlyTR59xM8Bgaz6bubDOwFexHBJipNVa0VPXY=,tag:VsDb6C6wYa9p4Yey3iG4eA==,type:str]
 | 
			
		||||
    wopus-ssh-nix-cache-pub: ENC[AES256_GCM,data:F+QHv9wwgyQYobKwyG13tS2OKCZuBPKLe7RLkhxsqYmVEtkCnli9jG+unMp7MC5L0i3puNqfoXP2IC6g4ESHq1yE0ksUpUCHzps4oMZBQK9b5JcqXQs+c//hskTQ/sFmTfGPpdnQ7wAifnQf5Mx2E4RwiRznMgJGQ3RDDjg9xfWUyvw6PlslZH65aGrq3P/iURvj,iv:u34+rXKLcZjBlVJmdbf60I82Fb621lUjOBmR4CTJWGk=,tag:ToPtBIz3bgzAUKc6hh4Oxg==,type:str]
 | 
			
		||||
sops:
 | 
			
		||||
    age:
 | 
			
		||||
        - recipient: age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlaFFtOHRBNjZqOXJOV1Bk
 | 
			
		||||
            SXRhZTdNWklKaTZST2JhU3VFLzBGSWY0QlMwCldwS1hhMDEyZDAxWUlRRXZtTWts
 | 
			
		||||
            Ti9IOUR2OFdGYkJ4cFRsV0lkbWJvb1EKLS0tIEJUS1ZCZ1M4ZUs5cDhiam5JaEk1
 | 
			
		||||
            U1VjNFprNHZWeDhwU3owRXh0MlBFYkUKHPgxz9/w3+JEtOljfyWBPSshfFlVWVys
 | 
			
		||||
            f15yxlAeWIZVEGqoau7DegVdZiYYIJR2dFBXV1RkKbAwLrbUxAQidg==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
        - recipient: age1ecyynwv93lfu7crjjp8l47defv07quzfzaktwurpep7jc9eha5pscg7lrw
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5OWk0cTJ4d25Qd0hrdkFD
 | 
			
		||||
            a2Fzd1lrMDREclkvRmxUSjFpYXZvRGs2Rm13Cm5aRVZDWE5ZUVR1K2hkZkdKWjYw
 | 
			
		||||
            K3lKNndBNGFveGVGVWplaHA0MVlYUG8KLS0tIFlVeXhCTGJGUm1HK2RCSFg1RnI3
 | 
			
		||||
            aFVxcDFhaGdYekRWRVFIWnRsZndtZFkKgsvxOFHOcO306Z9FkucA1fDOpZA8N1/h
 | 
			
		||||
            jYmIgcKTFgWoSCvux67lK30jFsYp7sm5z6WxxDYsGcoQ/+pxoUX2jQ==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
    lastmodified: "2025-07-16T15:17:16Z"
 | 
			
		||||
    mac: ENC[AES256_GCM,data:UKIJFzABE0vr7vSYL85iZdTvd0y3dN/MaBUoKf6OpcDtRphM8/yY5J0Xq6XM5f28WFN1GlSKUekQz+DkA6aR6aCI2SICVOJpFb/eXKQ3Y7Td+PGcBr07hFOGCSu2vAzgYB1ZnajfI659FcWmdOoJSYgHUz3G7iRTHHCRVcoaVVk=,iv:jmKwn9bkqvPa0dGge4FFW2uT4Oa1LlFpFMUlnqUgkAA=,tag:CL+0+frQMt2TmgYv9yZeuw==,type:str]
 | 
			
		||||
    pgp:
 | 
			
		||||
        - created_at: "2025-03-07T22:49:16Z"
 | 
			
		||||
          enc: |-
 | 
			
		||||
            -----BEGIN PGP MESSAGE-----
 | 
			
		||||
 | 
			
		||||
            hQEMAzy6JxafzLr5AQgAjwQqdeESOfrOuCjfjALdoy3AnNYC+slusdlra58CoRu6
 | 
			
		||||
            YFDAivwPHJBRiuVy43Lo7SWnKXMKvLOry589GBY3JGjNV5U1cPWBhMlTubYZmZWl
 | 
			
		||||
            iel8Bvw4IF5JksMIvLFdDgexLN7wETzzZP9S8750BCgpSrncrw1k/dUedhv5HUjo
 | 
			
		||||
            N10x6BPjPSmgolA8uxsISHLAUrKcQoeaWvcZFU1ofKywq08HgIySphy6z3Gmv3Qs
 | 
			
		||||
            86saZp1rFm5+qHkrDRgL6Oe3Xx30jVkzn9MHPWzZCDPCEvYGJgXX34NGzbX+/nd3
 | 
			
		||||
            JB9XkT2YTFi4BLhdHY3EE7e9//PJc5G9RVDZyAF1e9JeAXH2yR5blXbogoy+VMnS
 | 
			
		||||
            Yn74Uvs+fnYFTDOiuequro5i0uAyxtrCx8fdfwjuh+9SC5p3N2cBv2eT7zLQwQHi
 | 
			
		||||
            czHlwxmpi/dMB/u83fR4FzuCUt98VXiezIC4yGn25g==
 | 
			
		||||
            =Yqqx
 | 
			
		||||
            -----END PGP MESSAGE-----
 | 
			
		||||
          fp: 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
 | 
			
		||||
    unencrypted_suffix: _unencrypted
 | 
			
		||||
    version: 3.10.2
 | 
			
		||||
| 
						 | 
				
			
			@ -1,54 +0,0 @@
 | 
			
		|||
hello: ENC[AES256_GCM,data:UJAAdOL7wzQ1LduTyW+XK2NtXyw/u/Yz28Bmd7OoBe41FVLKwVfvdI1nAwYuNQ==,iv:7kPT2HF5T498bUJ9hUlz5Ez/jn1g7YIUVbJOTW/CHhQ=,tag:KJhJPg8AStyW4roEbEUJ2g==,type:str]
 | 
			
		||||
example_key: ENC[AES256_GCM,data:DcLN+C1BQ6WZg5fRiA==,iv:JC3GTWn4a4RekAHdOQB3YV5+eGa4cUK1JjyTPe8eNHY=,tag:W9CV4rsgHuXyqpWpUxlIQg==,type:str]
 | 
			
		||||
#ENC[AES256_GCM,data:RjdYJNz6qGfbsU/AiBeLlQ==,iv:LjRzSjBXp44cGSqUUfRDNLC9cW4Vd7lfsqDWINt31VA=,tag:NzVm1h9CVKE2XXt300aR/g==,type:comment]
 | 
			
		||||
example_array:
 | 
			
		||||
    - ENC[AES256_GCM,data:K9j/t8MDibYO8Frhu1M=,iv:YnrxRnJJwTH6DJC6Bv/d1NUnX2ZPFwsjoji7L1Z+d7s=,tag:Dm7xCUlnjKdXHCuk8lwY8w==,type:str]
 | 
			
		||||
    - ENC[AES256_GCM,data:0g6ACJzEHBtukwQYYTY=,iv:xLBJWfOYkX7Y28N01CX2+d5QOr9VGAhInH6pa1hNSGE=,tag:tCkCigo4yhi6YKVMe3Z3lQ==,type:str]
 | 
			
		||||
example_number: ENC[AES256_GCM,data:R+/m/QVBH9/3DA==,iv:FumBUj97ICrRQmyh5fg8Gu9Lba9oITD1pdsr1I/PCf0=,tag:hguw1gpPI3w64fG1WLnJqA==,type:float]
 | 
			
		||||
example_booleans:
 | 
			
		||||
    - ENC[AES256_GCM,data:VvI5ag==,iv:koMzyWcua75sK19vuk65oywCD61lMyH3xUwue8LTqy4=,tag:2ym1M0FTwevLm7wefTUWAw==,type:bool]
 | 
			
		||||
    - ENC[AES256_GCM,data:lFEC/S8=,iv:cJWbnmseP/AqJzyORM+VI5y7rK8axVeh7EXoLP7mT/Q=,tag:BaS5HyecokdLCq+LzQxGkg==,type:bool]
 | 
			
		||||
sops:
 | 
			
		||||
    kms: []
 | 
			
		||||
    gcp_kms: []
 | 
			
		||||
    azure_kv: []
 | 
			
		||||
    hc_vault: []
 | 
			
		||||
    age:
 | 
			
		||||
        - recipient: age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpSXhsMHQvb0NyUXRkRDE3
 | 
			
		||||
            TjVjb2orQktDMGs4U2JUS3hWdmtMdnhuYnhBCi9VU1RVblZPaW14VGxMcjM0N20z
 | 
			
		||||
            R1pOdUJZc1ZGcjBsTnNaZGhleVR6L1kKLS0tIE5vQkFhVXd0R3ZQSzZkNmVqN1Vj
 | 
			
		||||
            NERXdlJhVHF0NWpNT29CNlRid2NYMVUKxg7kbP6dOZDUz0uxdC45DZCAa6GQTQ1x
 | 
			
		||||
            nIb7lvPW4xFIb0bOZuvc7cAbHjf4So+8zvA0MM4mkTmIDpnwGD5Clg==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
        - recipient: age1m4mqcd2kmuhfr8a22rvh02c68jkakhdfmuqgtusuv0czk4jvna7sz79p3y
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrcTJGVmZUenNwYVNjRFlU
 | 
			
		||||
            VXNBeDdpVFVtSTN5TG9VN0Q1WjRFbjlHd0Z3CjFsU1BsNkZ1a1ZkY2lva3lBUWZ3
 | 
			
		||||
            YUpqeEo0Tys1bDk0TEpwQTJ2U29kbjgKLS0tIFJDYWpNemY4NXZ0MkM0YWNldDBE
 | 
			
		||||
            RU1HSUhldHpzeURaUWQvcjBCQ3pMY2cKYL87Njs4e68zu5AXKNF/hxiB3HduS8wz
 | 
			
		||||
            o0kmGI58DZx17+Cdipw0ab9a9wiu9C9Fn+LaiCcdM/ESXtS79RzdbQ==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
    lastmodified: "2025-03-05T22:27:18Z"
 | 
			
		||||
    mac: ENC[AES256_GCM,data:WSopSnWZ+uOllywd7difaZtJcfxkL7eIf9Kr3GajZKO0+rP6pEHIS+5AbXZy6oKRlCLUPecY/WXFvk3//akpvvXHbf6Jp4fQ/YSuTcYKRQupbDBpOXSlc33QyRl6oEyiMOjxMxa2N2tmq8dmA0NbF9wSDMa5a4eNDoiL5T/sUZ8=,iv:QqbVRApzFF6q24rk8KfKuthj656nEczD9Si4INj+N9A=,tag:tMRNYo+u/jIQ6iX3KqKJdA==,type:str]
 | 
			
		||||
    pgp:
 | 
			
		||||
        - created_at: "2025-03-07T22:49:19Z"
 | 
			
		||||
          enc: |-
 | 
			
		||||
            -----BEGIN PGP MESSAGE-----
 | 
			
		||||
 | 
			
		||||
            hQEMAzy6JxafzLr5AQf/Zw+EB0lFpbul4KmHL3ndbhQCHzhkMgG6vEyj7EpjHQxE
 | 
			
		||||
            nwf9kRrTcRh9YdrgR+5PFRnFJ8+L+gZhk+V/GaEPcEUyskOX/YGTSp1u6pXKGEem
 | 
			
		||||
            TGojrIx0WwcmeCZUn+qCehbC7ZU64NDDmb7VeWnRkMbboU6UVooHUub88VsbnYw2
 | 
			
		||||
            XXtXh4G8isrbyAKzUyypnJnEVbKlVqPOL67BYczjyBqMYc1JVLmBy6nP+sv6q/yo
 | 
			
		||||
            QyDzlunmZtu52dwAL0L6wJF+novLr4W9cso4K5UVv2sp5M8gucuiY2obiB3vNfgO
 | 
			
		||||
            q9GZTlMWnyDGflM1w+tzpZ/Ke+sM4dSy3cXpZd+MFNJeAaBJ1owjolb4tPUXlt+W
 | 
			
		||||
            cJ+SFLWxzH8MsPb+Hfxrt8PPCcv67uch/k50PLYs/V/EM59+mgEJe5LY4rMbUSFw
 | 
			
		||||
            REGL3LA6Cnkl2bUeHlfG7XlztHd/ehmZM2RPKof+Qw==
 | 
			
		||||
            =htZl
 | 
			
		||||
            -----END PGP MESSAGE-----
 | 
			
		||||
          fp: 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
 | 
			
		||||
    unencrypted_suffix: _unencrypted
 | 
			
		||||
    version: 3.9.4-unstable
 | 
			
		||||
| 
						 | 
				
			
			@ -2,6 +2,9 @@ let
 | 
			
		|||
  main_ssh_public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxR/w+38b2lX90yNBqhq3mUmkn1WGu6GAPhN1tVp2ZjYRJNV/+5gWCnTtOWYtDx35HmK/spQ2Qy8X9ttkzORa24fysNx1Iqn/TiXhD7eIJjbGPnrOpIKTkW5/uB3SD/P5NBSa06//BaqJU4sBlG79hoXRpod052hQtdpTVDiMCIV+iboWPKqopmJJfWdBtVnHXs9rep0htPRExxGslImFk7Z6xjcaHyCpIQZPlOGf+sGsmUU7jRqzvZFV8ucIdbnAlMHrU4pepNFhuraESyZVTa/bi9sw0iozXp5Q5+5thMebEslmT1Z771kI4sieDy+O4r8c0Sx2/VY1UAzcpq1faggc3YB01MTh+tiEC6xdMvZLrQGL1NBWjHleMyL53GU5ERluC0vXJF3Hv3BGGBDfXWbrEm5n06DHr2apRVJGC0LwiQ7Woud1X4V4X1pKSusxCVMjT2lmcOwV6YhKhB2sowJc1OdMx4+tL0UWE+YKSZgBHfolwk6ml0F4EO9nnUHc= lelgenio@i15";
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  "rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.age".publicKeys = [
 | 
			
		||||
    main_ssh_public_key
 | 
			
		||||
  ];
 | 
			
		||||
  "monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.age".publicKeys = [
 | 
			
		||||
    main_ssh_public_key
 | 
			
		||||
  ];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,55 +0,0 @@
 | 
			
		|||
hello: ENC[AES256_GCM,data:ADXdQUkrnh9lDrsHyInYsPBo21u/mIAH47KhGQsxuz5OshT6CoK+89CILEi9tQ==,iv:b/rnM77z69+pVO3kxQZxI2YzTCRiBwwO5fhcwCB2/CI=,tag:A0FOXIfgIkJawV3QhlJPWQ==,type:str]
 | 
			
		||||
example_key: ENC[AES256_GCM,data:gXXl6hhdYNLC1Grmyw==,iv:miSL7Wdewd5zs4A86/r8OW6gK+PGZJ+gaqZRHHxvZos=,tag:Ty+IaoXdMSEThNPRjwhqTA==,type:str]
 | 
			
		||||
#ENC[AES256_GCM,data:FLhydTaiOqLRFk+ZrgGx9Q==,iv:TqhX2ylJKFQjdOpmwCER1+gRe4iR+I0hkVkNnYH4ESo=,tag:1BSk9TKqTma4MVUMswwmog==,type:comment]
 | 
			
		||||
example_array:
 | 
			
		||||
    - ENC[AES256_GCM,data:1sIEL3xGDAygUKoodBA=,iv:1DumVv8vDvhT/K0jXM1vHdrFTE7dIxqqjS8CIpWdnc8=,tag:WSs+3a816zVOaGCTElxgFQ==,type:str]
 | 
			
		||||
    - ENC[AES256_GCM,data:tFi1czQnVgX/nlWrJrs=,iv:isH65ldilVe3EjsKNP/dOKgtWZtHQPw364fPHBI+LEw=,tag:Ka5ywriFptKg3+lIHPEIyA==,type:str]
 | 
			
		||||
example_number: ENC[AES256_GCM,data:sxSM8a9oAp+u6g==,iv:KRLfIxZuBsnK+QE4mqm3pyhJmE7Fsd4ykJA++KrOnEQ=,tag:F5EkVUzw06ulr5jZvlTJdg==,type:float]
 | 
			
		||||
example_booleans:
 | 
			
		||||
    - ENC[AES256_GCM,data:PDts2Q==,iv:qtfKg5gmUw2aERJe3gfT15Pk7mWocXwKdJhAzSic1o0=,tag:gn1sWsgt9ihYF8bHAkAQwQ==,type:bool]
 | 
			
		||||
    - ENC[AES256_GCM,data:o9as7T0=,iv:YXyTB2X9PmTsOd37+BAp2xnT/+Yzyajcn5y1GE1O5rE=,tag:hyXA43jpyAbgH2hg1ivloQ==,type:bool]
 | 
			
		||||
sops:
 | 
			
		||||
    shamir_threshold: 1
 | 
			
		||||
    kms: []
 | 
			
		||||
    gcp_kms: []
 | 
			
		||||
    azure_kv: []
 | 
			
		||||
    hc_vault: []
 | 
			
		||||
    age:
 | 
			
		||||
        - recipient: age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvUURIQmZvSVp3aXlFT0RR
 | 
			
		||||
            VHVBR0drN2JyV1hNUk5sakxGRXl6SEJuOUUwClQ1Q1lRZTR5R3Z4dlZyb29OaTNW
 | 
			
		||||
            UVcwV3h6UlhtZkg2aFhrUUtIT0tQRmsKLS0tIDlnckhHWXRKcmRwTGUzdHZxWEVh
 | 
			
		||||
            a3ZSWk0wNm1raXdMYXdKY1hDd2dZWUEK+IFU/9vsHu70XbSJ7sKqFncrZO3NAH8/
 | 
			
		||||
            X/XF1VUmIuDfQZYJsDa4HaXe52xvDWTw3/4frG9HutEI2NcvvRpxlw==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
        - recipient: age1ecyynwv93lfu7crjjp8l47defv07quzfzaktwurpep7jc9eha5pscg7lrw
 | 
			
		||||
          enc: |
 | 
			
		||||
            -----BEGIN AGE ENCRYPTED FILE-----
 | 
			
		||||
            YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNRGxFWXJVcDZOdzVxaFJG
 | 
			
		||||
            LzdhN3JKaFhPOVBlblRPNWpDdERPaWhDNkM0CmcvUGxNQ09tNTJndWZTdjFia2pl
 | 
			
		||||
            RnNWQ0ZKSFhEN0FNbVZlKzlFUlh5QTgKLS0tIFkwc1pJajlyOGNHSTdaM3FQZWFK
 | 
			
		||||
            NUJpRDlLNXlGOTNBbVRTU0ZMVkhqdUUK1koXmGDGTKoNx1wp4c9EknY9LQ5a7dQP
 | 
			
		||||
            Zx6OzvtpsxL6KGjH7BeNNcm2zOR4YqnklLq09UsPHElz2upJQzECAQ==
 | 
			
		||||
            -----END AGE ENCRYPTED FILE-----
 | 
			
		||||
    lastmodified: "2025-03-07T22:49:01Z"
 | 
			
		||||
    mac: ENC[AES256_GCM,data:yma+7wtzVjCzlLOVpqiicjQ9YN1ttzoh8CpcAtjdtVl6gu7/3FXUKYyAWJd+1NUUpK7vN435gOq9/nsig0FRrn0Hgq0+cjFUGS6+6+SPmL97eFvti89gCOeIFhPvBnJQYJLiyVkUcBek4xW+vnt6UgrTy+sD9AT3KHdBlfu3pzY=,iv:ioswFO5KDAL3Bv7MI8V0aWXXxZZIz1M1PyMUbIMnCRI=,tag:5fUBtqz9J2qvY4fUT2ueoQ==,type:str]
 | 
			
		||||
    pgp:
 | 
			
		||||
        - created_at: "2025-03-07T22:49:20Z"
 | 
			
		||||
          enc: |-
 | 
			
		||||
            -----BEGIN PGP MESSAGE-----
 | 
			
		||||
 | 
			
		||||
            hQEMAzy6JxafzLr5AQf/Xok7aBMNT6W3LV2Ekx/ccxEZaZ0aVNKHE9aFTz5kBSpu
 | 
			
		||||
            cXVohu5mEgeXr++HbrsCI821/gfchQ1yzVSLJsSrmZdJ586c3a7pWx2Eo4pcngmy
 | 
			
		||||
            vb5UWtTBNogABnLz4iTjVQYLjZeNcNhkzW6s3m9PiaX3AvJP9irPcmwIyYpzd9pt
 | 
			
		||||
            hngnBsdTis52fmvZ6+wOuMyTZU0Iksknom1De8xqgR5ZuO0Vitt19RGbpVhx96AC
 | 
			
		||||
            t1CUkb5WMFTdpbCFORa/ta9Z7UcKxXTAPsfPkPVG9DnHQ1jSmsJWPDQZxoIJLHuH
 | 
			
		||||
            SVV+qfRGndOo9fjExCInX6I5wBlrHrdpGtL7VLczV9JeAXYlMJwH63eOyi8hxxtr
 | 
			
		||||
            KfTJEIALC25uFhoK8bmr30yVZe7thUPMXfht+R5dlHne7+FcBb4k7YLpeN/M40me
 | 
			
		||||
            CSKk+9YaG7gQIdrfvEXlHSPCPppcKev6ZUspHewhmQ==
 | 
			
		||||
            =IMON
 | 
			
		||||
            -----END PGP MESSAGE-----
 | 
			
		||||
          fp: 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
 | 
			
		||||
    unencrypted_suffix: _unencrypted
 | 
			
		||||
    version: 3.9.4
 | 
			
		||||
							
								
								
									
										3
									
								
								switch
									
										
									
									
									
								
							
							
						
						
									
										3
									
								
								switch
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -4,9 +4,6 @@ set -euo pipefail
 | 
			
		|||
 | 
			
		||||
nix fmt
 | 
			
		||||
 | 
			
		||||
# Allow usage of untracked files in nix code
 | 
			
		||||
git add --intent-to-add .
 | 
			
		||||
 | 
			
		||||
git --no-pager diff
 | 
			
		||||
 | 
			
		||||
run() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
# Edit this configuration file to define what should be installed on
 | 
			
		||||
# your system.  Help is available in the configuration.nix(5) man page
 | 
			
		||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
 | 
			
		||||
{ pkgs, config, ... }:
 | 
			
		||||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./android.nix
 | 
			
		||||
| 
						 | 
				
			
			@ -17,7 +17,6 @@
 | 
			
		|||
    ./locale.nix
 | 
			
		||||
    ./users.nix
 | 
			
		||||
    ./containers.nix
 | 
			
		||||
    ./nix-ld.nix
 | 
			
		||||
    ./network.nix
 | 
			
		||||
    ../settings
 | 
			
		||||
  ];
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +48,6 @@
 | 
			
		|||
  services.logind.extraConfig = ''
 | 
			
		||||
    HandlePowerKey=suspend
 | 
			
		||||
  '';
 | 
			
		||||
  services.upower.enable = true;
 | 
			
		||||
 | 
			
		||||
  # This value determines the NixOS release from which the default
 | 
			
		||||
  # settings for stateful data, like file locations and database versions
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,6 @@
 | 
			
		|||
 | 
			
		||||
  config = lib.mkIf config.my.containers.enable {
 | 
			
		||||
    services.flatpak.enable = true;
 | 
			
		||||
    programs.appimage.enable = true;
 | 
			
		||||
 | 
			
		||||
    virtualisation.docker = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -33,18 +32,6 @@
 | 
			
		|||
 | 
			
		||||
    networking.firewall.extraCommands = lib.getExe pkgs._docker-block-external-connections;
 | 
			
		||||
 | 
			
		||||
    # Docker punches holes in your firewall
 | 
			
		||||
    systemd.services.docker-update-firewall = {
 | 
			
		||||
      script = lib.getExe pkgs._docker-block-external-connections;
 | 
			
		||||
    };
 | 
			
		||||
    systemd.timers.docker-update-firewall = {
 | 
			
		||||
      timerConfig = {
 | 
			
		||||
        OnCalendar = "minutely";
 | 
			
		||||
        Unit = "docker-update-firewall.service";
 | 
			
		||||
      };
 | 
			
		||||
      wantedBy = [ "multi-user.target" ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    programs.extra-container.enable = true;
 | 
			
		||||
 | 
			
		||||
    programs.firejail.enable = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,6 @@
 | 
			
		|||
    noto-fonts
 | 
			
		||||
    noto-fonts-cjk-sans
 | 
			
		||||
    noto-fonts-emoji
 | 
			
		||||
    nerd-fonts.fira-code
 | 
			
		||||
    nerd-fonts.hack
 | 
			
		||||
    nerdfonts_fira_hack
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,5 @@
 | 
			
		|||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    programs.corectrl.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,18 +1,21 @@
 | 
			
		|||
{ pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  inputs ? null,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  installNixScript =
 | 
			
		||||
    {
 | 
			
		||||
      authenticationTokenConfigFile,
 | 
			
		||||
      nixCacheSshPrivateKeyPath ? null,
 | 
			
		||||
      nixCacheSshPublicKeyPath ? null,
 | 
			
		||||
      ...
 | 
			
		||||
    }:
 | 
			
		||||
    pkgs.writeScriptBin "install-nix" ''
 | 
			
		||||
  mkNixRunner =
 | 
			
		||||
    authenticationTokenConfigFile: with lib; rec {
 | 
			
		||||
      # File should contain at least these two variables:
 | 
			
		||||
      # `CI_SERVER_URL`
 | 
			
		||||
      # `REGISTRATION_TOKEN`
 | 
			
		||||
      inherit authenticationTokenConfigFile; # 2
 | 
			
		||||
      dockerImage = "alpine:3.18.2";
 | 
			
		||||
      dockerAllowedImages = [ dockerImage ];
 | 
			
		||||
      dockerVolumes = [
 | 
			
		||||
        "/etc/nix/nix.conf:/etc/nix/nix.conf:ro"
 | 
			
		||||
        "/nix/store:/nix/store:ro"
 | 
			
		||||
        "/nix/var/nix/db:/nix/var/nix/db:ro"
 | 
			
		||||
        "/nix/var/nix/daemon-socket:/nix/var/nix/daemon-socket:ro"
 | 
			
		||||
      ];
 | 
			
		||||
      dockerDisableCache = true;
 | 
			
		||||
      preBuildScript = pkgs.writeScript "setup-container" ''
 | 
			
		||||
        mkdir -p -m 0755 /nix/var/log/nix/drvs
 | 
			
		||||
        mkdir -p -m 0755 /nix/var/nix/gcroots
 | 
			
		||||
        mkdir -p -m 0755 /nix/var/nix/profiles
 | 
			
		||||
| 
						 | 
				
			
			@ -26,70 +29,23 @@ let
 | 
			
		|||
        . ${pkgs.nix}/etc/profile.d/nix.sh
 | 
			
		||||
 | 
			
		||||
        ${pkgs.nix}/bin/nix-env -i ${
 | 
			
		||||
        lib.concatStringsSep " " (
 | 
			
		||||
          concatStringsSep " " (
 | 
			
		||||
            with pkgs;
 | 
			
		||||
            [
 | 
			
		||||
              nix
 | 
			
		||||
              cacert
 | 
			
		||||
              git
 | 
			
		||||
              openssh
 | 
			
		||||
            docker
 | 
			
		||||
            ]
 | 
			
		||||
          )
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
      ${lib.optionalString (nixCacheSshPrivateKeyPath != null && nixCacheSshPublicKeyPath != null) ''
 | 
			
		||||
        NIX_CACHE_SSH_PRIVATE_KEY_PATH="${nixCacheSshPrivateKeyPath}"
 | 
			
		||||
        NIX_CACHE_SSH_PUBLIC_KEY_PATH="${nixCacheSshPublicKeyPath}"
 | 
			
		||||
        . ${./gitlab-runner/nix-cache-start}
 | 
			
		||||
      ''}
 | 
			
		||||
      '';
 | 
			
		||||
in
 | 
			
		||||
rec {
 | 
			
		||||
  mkNixRunnerFull =
 | 
			
		||||
    {
 | 
			
		||||
      authenticationTokenConfigFile,
 | 
			
		||||
      nixCacheSshPrivateKeyPath ? null,
 | 
			
		||||
      nixCacheSshPublicKeyPath ? null,
 | 
			
		||||
      ...
 | 
			
		||||
    }@args:
 | 
			
		||||
    {
 | 
			
		||||
      # File should contain at least these two variables:
 | 
			
		||||
      # `CI_SERVER_URL`
 | 
			
		||||
      # `REGISTRATION_TOKEN`
 | 
			
		||||
      inherit authenticationTokenConfigFile; # 2
 | 
			
		||||
      dockerImage = "alpine:3.18.2";
 | 
			
		||||
      dockerPullPolicy = "if-not-present";
 | 
			
		||||
      dockerVolumes = [
 | 
			
		||||
        "/etc/nix/nix.conf:/etc/nix/nix.conf:ro"
 | 
			
		||||
        "/nix/store:/nix/store:ro"
 | 
			
		||||
        "/nix/var/nix/db:/nix/var/nix/db:ro"
 | 
			
		||||
        "/nix/var/nix/daemon-socket:/nix/var/nix/daemon-socket:ro"
 | 
			
		||||
        "/tmp:/tmp"
 | 
			
		||||
        "/var/run/docker.sock:/var/run/docker.sock"
 | 
			
		||||
        "/var/lib/docker/containers:/var/lib/docker/containers"
 | 
			
		||||
        "/cache"
 | 
			
		||||
      ]
 | 
			
		||||
      ++ lib.optionals (nixCacheSshPrivateKeyPath != null) [
 | 
			
		||||
        "${nixCacheSshPrivateKeyPath}:${nixCacheSshPrivateKeyPath}"
 | 
			
		||||
      ]
 | 
			
		||||
      ++ lib.optionals (nixCacheSshPublicKeyPath != null) [
 | 
			
		||||
        "${nixCacheSshPublicKeyPath}:${nixCacheSshPublicKeyPath}"
 | 
			
		||||
      ];
 | 
			
		||||
      # dockerDisableCache = true;
 | 
			
		||||
      preBuildScript = "\". ${lib.getExe (installNixScript args)}\"";
 | 
			
		||||
      environmentVariables = {
 | 
			
		||||
        ENV = "/etc/profile";
 | 
			
		||||
        USER = "root";
 | 
			
		||||
        NIX_REMOTE = "daemon";
 | 
			
		||||
        PATH = "/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/bin:/sbin:/usr/bin:/usr/sbin";
 | 
			
		||||
        NIX_SSL_CERT_FILE = "/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt";
 | 
			
		||||
        NIX_PATH = if inputs != null then "nixpkgs=${inputs.nixpkgs}" else "";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  mkNixRunner =
 | 
			
		||||
    authenticationTokenConfigFile:
 | 
			
		||||
    mkNixRunnerFull {
 | 
			
		||||
      inherit authenticationTokenConfigFile;
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,49 +0,0 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
echo "nix-cache: Setting up ssh key and host" >&2
 | 
			
		||||
STORE_HOST_PUB_KEY="$(cat "$NIX_CACHE_SSH_PUBLIC_KEY_PATH" | base64 | tr -d '\n')"
 | 
			
		||||
STORE_URL="ssh://nix-ssh@nix-cache.wopus.dev?trusted=true&compress=true&ssh-key=$NIX_CACHE_SSH_PRIVATE_KEY_PATH&base64-ssh-public-host-key=$STORE_HOST_PUB_KEY"
 | 
			
		||||
echo STORE_URL="$STORE_URL" >&2
 | 
			
		||||
 | 
			
		||||
NIX_EXTRA_CONFIG_FILE=$(mktemp)
 | 
			
		||||
cat > "$NIX_EXTRA_CONFIG_FILE" <<EOF
 | 
			
		||||
  extra-substituters = $STORE_URL
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
echo "nix-cache: Adding remote cache as substituter" >&2
 | 
			
		||||
export NIX_USER_CONF_FILES="$NIX_EXTRA_CONFIG_FILE:$NIX_USER_CONF_FILES"
 | 
			
		||||
 | 
			
		||||
echo "nix-cache: Setting up nix hook" >&2
 | 
			
		||||
nix() {
 | 
			
		||||
    echo "nix-cache: executing nix hook" >&2
 | 
			
		||||
    command nix "$@"
 | 
			
		||||
    local STATUS="$?"
 | 
			
		||||
 | 
			
		||||
    local BUILD=no
 | 
			
		||||
    if test "$STATUS" = "0"; then
 | 
			
		||||
        for arg in "$@"; do
 | 
			
		||||
            echo "nix-cache: evaluating arg '$arg'" >&2
 | 
			
		||||
            case "$arg" in
 | 
			
		||||
                build)
 | 
			
		||||
                    echo "nix-cache: enablig upload" >&2
 | 
			
		||||
                    BUILD=yes
 | 
			
		||||
                ;;
 | 
			
		||||
                -*)
 | 
			
		||||
                    echo "nix-cache: ignoring argument '$arg'" >&2
 | 
			
		||||
                ;;
 | 
			
		||||
                *)
 | 
			
		||||
                    if test "$BUILD" = yes; then
 | 
			
		||||
                        echo "nix-cache: Sending path $arg" >&2
 | 
			
		||||
                        command nix copy --to "$STORE_URL" "$arg" || true
 | 
			
		||||
                    else
 | 
			
		||||
                        echo "nix-cache: not building, ignoring argument '$arg'" >&2
 | 
			
		||||
                    fi
 | 
			
		||||
                ;;
 | 
			
		||||
            esac
 | 
			
		||||
        done
 | 
			
		||||
    else
 | 
			
		||||
        echo "nix-cache: nix exited with code '$STATUS', ignoring" >&2
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    return "$STATUS"
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -37,6 +37,8 @@ in
 | 
			
		|||
    xdg.portal = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      wlr.enable = true;
 | 
			
		||||
      # Always pick the first monitor, this is fine since I only ever use a single monitor
 | 
			
		||||
      wlr.settings.screencast.chooser_type = "none";
 | 
			
		||||
      # gtk portal needed to make gtk apps happy
 | 
			
		||||
      extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
 | 
			
		||||
    };
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +74,7 @@ in
 | 
			
		|||
            user = "lelgenio";
 | 
			
		||||
          };
 | 
			
		||||
          default_session = {
 | 
			
		||||
            command = "dbus-run-session -- ${pkgs.sway}/bin/sway --config ${swayConfig}";
 | 
			
		||||
            command = "${pkgs.sway}/bin/sway --config ${swayConfig}";
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@
 | 
			
		|||
{
 | 
			
		||||
  time.timeZone = "America/Sao_Paulo";
 | 
			
		||||
  environment.variables.TZ = config.time.timeZone;
 | 
			
		||||
  i18n.defaultLocale = "pt_BR.UTF-8";
 | 
			
		||||
  i18n.defaultLocale = "pt_BR.utf8";
 | 
			
		||||
 | 
			
		||||
  # Configure keymap in X11
 | 
			
		||||
  services.xserver.xkb = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,60 +1,24 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  inherit (pkgs.callPackage ./gitlab-runner.nix { inherit inputs; }) mkNixRunner mkNixRunnerFull;
 | 
			
		||||
  inherit (pkgs.callPackage ./gitlab-runner.nix { }) mkNixRunner;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  boot.kernel.sysctl."net.ipv4.ip_forward" = true;
 | 
			
		||||
  virtualisation.docker.enable = true;
 | 
			
		||||
  services.gitlab-runner = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings.concurrent = 8;
 | 
			
		||||
    settings.concurrent = 12;
 | 
			
		||||
    services = {
 | 
			
		||||
      # runner for building in docker via host's nix-daemon
 | 
			
		||||
      # nix store will be readable in runner, might be insecure
 | 
			
		||||
      thoreb-telemetria-nix = mkNixRunner config.sops.secrets."gitlab-runners/thoreb-telemetria-nix".path;
 | 
			
		||||
      thoreb-itinerario-nix = mkNixRunner config.sops.secrets."gitlab-runners/thoreb-itinerario-nix".path;
 | 
			
		||||
 | 
			
		||||
      wopus-gitlab-nix = mkNixRunnerFull {
 | 
			
		||||
        authenticationTokenConfigFile = config.sops.secrets."gitlab-runners/wopus-gitlab-nix".path;
 | 
			
		||||
        nixCacheSshPrivateKeyPath = config.sops.secrets."gitlab-runners/wopus-ssh-nix-cache-pk".path;
 | 
			
		||||
        nixCacheSshPublicKeyPath = config.sops.secrets."gitlab-runners/wopus-ssh-nix-cache-pub".path;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      default = {
 | 
			
		||||
        # File should contain at least these two variables:
 | 
			
		||||
        # `CI_SERVER_URL`
 | 
			
		||||
        # `CI_SERVER_TOKEN`
 | 
			
		||||
        authenticationTokenConfigFile = config.sops.secrets."gitlab-runners/docker-images-token".path;
 | 
			
		||||
        dockerImage = "debian:stable";
 | 
			
		||||
        dockerPullPolicy = "if-not-present";
 | 
			
		||||
      };
 | 
			
		||||
      thoreb-telemetria-nix = mkNixRunner config.age.secrets.gitlab-runner-thoreb-telemetria-registrationConfigFile.path;
 | 
			
		||||
      thoreb-itinerario-nix = mkNixRunner config.age.secrets.monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.path;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  systemd.services.gitlab-runner.serviceConfig.Nice = 10;
 | 
			
		||||
 | 
			
		||||
  sops.secrets = {
 | 
			
		||||
    "gitlab-runners/thoreb-telemetria-nix" = {
 | 
			
		||||
      sopsFile = ../secrets/monolith/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
    "gitlab-runners/thoreb-itinerario-nix" = {
 | 
			
		||||
      sopsFile = ../secrets/monolith/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
    "gitlab-runners/docker-images-token" = {
 | 
			
		||||
      sopsFile = ../secrets/monolith/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
    "gitlab-runners/wopus-gitlab-nix" = {
 | 
			
		||||
      sopsFile = ../secrets/monolith/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
    "gitlab-runners/wopus-ssh-nix-cache-pk" = {
 | 
			
		||||
      sopsFile = ../secrets/monolith/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
    "gitlab-runners/wopus-ssh-nix-cache-pub" = {
 | 
			
		||||
      sopsFile = ../secrets/monolith/default.yaml;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,8 +26,6 @@
 | 
			
		|||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services.fail2ban.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Workaround for nm-wait-online hanging??
 | 
			
		||||
  # Ref: https://github.com/NixOS/nixpkgs/issues/180175
 | 
			
		||||
  systemd.services.NetworkManager-wait-online = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,21 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  options.my.nix-ld.enable = lib.mkEnableOption { };
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf (config.my.nix-ld.enable) {
 | 
			
		||||
    programs.nix-ld = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      libraries =
 | 
			
		||||
        with pkgs;
 | 
			
		||||
        # run appimages + linux games natively
 | 
			
		||||
        [ fuse ]
 | 
			
		||||
        ++ (appimageTools.defaultFhsEnvArgs.multiPkgs pkgs)
 | 
			
		||||
        ++ (appimageTools.defaultFhsEnvArgs.targetPkgs pkgs);
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								system/rainbow-gitlab-runner.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								system/rainbow-gitlab-runner.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  inherit (pkgs.callPackage ./gitlab-runner.nix { }) mkNixRunner;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  boot.kernel.sysctl."net.ipv4.ip_forward" = true;
 | 
			
		||||
  virtualisation.docker.enable = true;
 | 
			
		||||
  services.gitlab-runner = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings.concurrent = 6;
 | 
			
		||||
    services = {
 | 
			
		||||
      thoreb-telemetria-nix = mkNixRunner config.age.secrets.gitlab-runner-thoreb-telemetria-registrationConfigFile.path;
 | 
			
		||||
      thoreb-itinerario-nix = mkNixRunner config.age.secrets.rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.path;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  systemd.services.gitlab-runner.serviceConfig.Nice = 10;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
{ pkgs, config, ... }:
 | 
			
		||||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  age = {
 | 
			
		||||
    identityPaths = [ "/root/.ssh/id_rsa" ];
 | 
			
		||||
| 
						 | 
				
			
			@ -6,6 +6,7 @@
 | 
			
		|||
    secrets.monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.file = ../secrets/monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.age;
 | 
			
		||||
    secrets.gitlab-runner-thoreb-telemetria-registrationConfigFile.file = ../secrets/gitlab-runner-thoreb-telemetria-registrationConfigFile.age;
 | 
			
		||||
    secrets.monolith-forgejo-runner-token.file = ../secrets/monolith-forgejo-runner-token.age;
 | 
			
		||||
    secrets.rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.file = ../secrets/rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.age;
 | 
			
		||||
    secrets.monolith-nix-serve-privkey.file = ../secrets/monolith-nix-serve-privkey.age;
 | 
			
		||||
    secrets.phantom-forgejo-mailer-password.file = ../secrets/phantom-forgejo-mailer-password.age;
 | 
			
		||||
  };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    sops
 | 
			
		||||
    gnupg
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  sops = {
 | 
			
		||||
    defaultSopsFile = ../secrets/test.yaml;
 | 
			
		||||
    age.sshKeyPaths = [
 | 
			
		||||
      "/etc/ssh/ssh_host_ed25519_key"
 | 
			
		||||
      "/home/lelgenio/.ssh/id_ed25519"
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  services.pulseaudio.enable = false;
 | 
			
		||||
  hardware.pulseaudio.enable = false;
 | 
			
		||||
  services.pipewire = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    wireplumber.enable = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,6 @@
 | 
			
		|||
{ lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  options.my = {
 | 
			
		||||
    nix-ld.enable = lib.mkEnableOption { };
 | 
			
		||||
    android.enable = lib.mkEnableOption { };
 | 
			
		||||
    media-packages.enable = lib.mkEnableOption { };
 | 
			
		||||
    containers.enable = lib.mkEnableOption { };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,12 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  font,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  inherit (config.my.theme) color;
 | 
			
		||||
 | 
			
		||||
  inherit (config.my) desktop browser;
 | 
			
		||||
  bugfixedFirefox = pkgs.firefox-devedition-unwrapped // {
 | 
			
		||||
    requireSigning = false;
 | 
			
		||||
    allowAddonSideload = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -27,15 +28,15 @@ in
 | 
			
		|||
            url = "https://addons.mozilla.org/firefox/downloads/file/4202411/sponsorblock-5.4.29.xpi";
 | 
			
		||||
            hash = "sha256-7Xqc8cyQNylMe5/dgDOx1f2QDVmz3JshDlTueu6AcSg=";
 | 
			
		||||
          })
 | 
			
		||||
          # (pkgs.fetchFirefoxAddon {
 | 
			
		||||
          #   name = "tree-style-tab";
 | 
			
		||||
          #   url = "https://addons.mozilla.org/firefox/downloads/file/4197314/tree_style_tab-3.9.19.xpi";
 | 
			
		||||
          #   hash = "sha256-u2f0elVPj5N/QXa+5hRJResPJAYwuT9z0s/0nwmFtVo=";
 | 
			
		||||
          # })
 | 
			
		||||
          (pkgs.fetchFirefoxAddon {
 | 
			
		||||
            name = "tree-style-tab";
 | 
			
		||||
            url = "https://addons.mozilla.org/firefox/downloads/file/4197314/tree_style_tab-3.9.19.xpi";
 | 
			
		||||
            hash = "sha256-u2f0elVPj5N/QXa+5hRJResPJAYwuT9z0s/0nwmFtVo=";
 | 
			
		||||
          })
 | 
			
		||||
          (pkgs.fetchFirefoxAddon {
 | 
			
		||||
            name = "ublock-origin";
 | 
			
		||||
            url = "https://addons.mozilla.org/firefox/downloads/file/4492375/ublock_origin-1.64.0.xpi";
 | 
			
		||||
            hash = "sha256-ueHIaL0awd78q/LgF3bRqQ7/ujSwf+aiE1DUXwIuDp8=";
 | 
			
		||||
            url = "https://addons.mozilla.org/firefox/downloads/file/4290466/ublock_origin-1.58.0.xpi";
 | 
			
		||||
            hash = "sha256-RwxWmUpxdNshV4rc5ZixWKXcCXDIfFz+iJrGMr0wheo=";
 | 
			
		||||
          })
 | 
			
		||||
          (pkgs.fetchFirefoxAddon {
 | 
			
		||||
            name = "user_agent_string_switcher";
 | 
			
		||||
| 
						 | 
				
			
			@ -55,20 +56,10 @@ in
 | 
			
		|||
            hash = "sha256-lKLX6IWWtliRdH1Ig33rVEB4DVfbeuMw0dfUPV/mSSI=";
 | 
			
		||||
          })
 | 
			
		||||
          (pkgs.fetchFirefoxAddon {
 | 
			
		||||
            name = "unhook";
 | 
			
		||||
            url = "https://addons.mozilla.org/firefox/downloads/file/4263531/youtube_recommended_videos-1.6.7.xpi";
 | 
			
		||||
            hash = "sha256-u21ouN9IyOzkTkFSeDz+QBp9psJ1F2Nmsvqp6nh0DRU=";
 | 
			
		||||
            name = "invidious_redirect";
 | 
			
		||||
            url = "https://addons.mozilla.org/firefox/downloads/file/4292924/invidious_redirect_2-1.16.xpi";
 | 
			
		||||
            hash = "sha256-ApCc+MNmW9Wd/5seV6npePQVEaszT/rhD9EB7HGiUb8=";
 | 
			
		||||
          })
 | 
			
		||||
          (pkgs.fetchFirefoxAddon {
 | 
			
		||||
            name = "youtube_no_translation";
 | 
			
		||||
            url = "https://addons.mozilla.org/firefox/downloads/file/4561536/youtube_no_translation-2.11.0.xpi";
 | 
			
		||||
            hash = "sha256-8VpoUDbvZZf0oYGSHnXEiYDjfcPjQqtbDaxp5ndAJ94=";
 | 
			
		||||
          })
 | 
			
		||||
          # (pkgs.fetchFirefoxAddon {
 | 
			
		||||
          #   name = "invidious_redirect";
 | 
			
		||||
          #   url = "https://addons.mozilla.org/firefox/downloads/file/4292924/invidious_redirect_2-1.16.xpi";
 | 
			
		||||
          #   hash = "sha256-ApCc+MNmW9Wd/5seV6npePQVEaszT/rhD9EB7HGiUb8=";
 | 
			
		||||
          # })
 | 
			
		||||
 | 
			
		||||
          (pkgs.fetchFirefoxAddon {
 | 
			
		||||
            name = "substitoot";
 | 
			
		||||
| 
						 | 
				
			
			@ -93,14 +84,13 @@ in
 | 
			
		|||
        dev-edition-default = {
 | 
			
		||||
          isDefault = true;
 | 
			
		||||
          search.force = true;
 | 
			
		||||
          search.default = "ddg";
 | 
			
		||||
          search.default = "DuckDuckGo";
 | 
			
		||||
          settings = {
 | 
			
		||||
            "devtools.theme" = "auto";
 | 
			
		||||
            "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
 | 
			
		||||
            "browser.tabs.inTitlebar" = if desktop == "sway" then 0 else 1;
 | 
			
		||||
            "sidebar.position_start" = false; # Move sidebar to the right
 | 
			
		||||
 | 
			
		||||
            "browser.tabs.groups.enabled" = true;
 | 
			
		||||
 | 
			
		||||
            # enable media RDD to allow gpu acceleration
 | 
			
		||||
            "media.rdd-ffmpeg.enabled" = true;
 | 
			
		||||
            "media.rdd-ffvpx.enabled" = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -117,6 +107,8 @@ in
 | 
			
		|||
            "media.ffmpeg.vaapi.enabled" = true;
 | 
			
		||||
            "media.ffvpx.enabled" = true;
 | 
			
		||||
 | 
			
		||||
            "gfx.webrender.all" = true;
 | 
			
		||||
 | 
			
		||||
            # Enable installing non signed extensions
 | 
			
		||||
            "extensions.langpacks.signatures.required" = false;
 | 
			
		||||
            "xpinstall.signatures.required" = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -127,13 +119,52 @@ in
 | 
			
		|||
            "devtools.chrome.enabled" = true;
 | 
			
		||||
            "devtools.debugger.remote-enabled" = true;
 | 
			
		||||
          };
 | 
			
		||||
          userChrome = ''
 | 
			
		||||
            #sidebar-main {
 | 
			
		||||
              background-color: ${color.bg};
 | 
			
		||||
          userChrome =
 | 
			
		||||
            if desktop == "sway" then
 | 
			
		||||
              ''
 | 
			
		||||
                #titlebar { display: none !important; }
 | 
			
		||||
                #TabsToolbar { display: none !important; }
 | 
			
		||||
                #sidebar-header { display: none !important; }
 | 
			
		||||
              ''
 | 
			
		||||
            else
 | 
			
		||||
              ''
 | 
			
		||||
                /* Element | chrome://browser/content/browser.xhtml */
 | 
			
		||||
 | 
			
		||||
                #navigator-toolbox {
 | 
			
		||||
                  display: grid;
 | 
			
		||||
                  grid-template-columns: 1fr 50px;
 | 
			
		||||
                  overflow: hidden;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            #tabbrowser-tabbox {
 | 
			
		||||
              outline-width: 0 !important;
 | 
			
		||||
                /* Element | chrome://browser/content/browser.xhtml */
 | 
			
		||||
 | 
			
		||||
                #nav-bar {
 | 
			
		||||
                  flex: 1;
 | 
			
		||||
                  width: 100%;
 | 
			
		||||
                  grid-column: 1 / 3;
 | 
			
		||||
                  grid-row: 1;
 | 
			
		||||
                  z-index: 0;
 | 
			
		||||
                  padding-right: 29px !important;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                /* Element | chrome://browser/content/browser.xhtml */
 | 
			
		||||
 | 
			
		||||
                .toolbar-items {
 | 
			
		||||
                  display: none;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                /* Element | chrome://browser/content/browser.xhtml */
 | 
			
		||||
 | 
			
		||||
                #TabsToolbar {
 | 
			
		||||
                  max-width: 50px;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                /* Element | chrome://browser/content/browser.xhtml */
 | 
			
		||||
 | 
			
		||||
                #titlebar {
 | 
			
		||||
                  max-width: 50px;
 | 
			
		||||
                  grid-area: 1 / 2;
 | 
			
		||||
                  z-index: 10;
 | 
			
		||||
                }
 | 
			
		||||
              '';
 | 
			
		||||
        };
 | 
			
		||||
| 
						 | 
				
			
			@ -141,8 +172,12 @@ in
 | 
			
		|||
    };
 | 
			
		||||
    wayland.windowManager.sway = {
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        exec firefox-devedition
 | 
			
		||||
        exec firefox
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    home.sessionVariables = {
 | 
			
		||||
      MOZ_ENABLE_WAYLAND = "1";
 | 
			
		||||
      MOZ_DISABLE_RDD_SANDBOX = "1";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,7 +56,7 @@ in
 | 
			
		|||
        suv = "systemct --user";
 | 
			
		||||
        # docker abbrs
 | 
			
		||||
        d = "docker";
 | 
			
		||||
        dc = "docker compose";
 | 
			
		||||
        dc = "docker-compose";
 | 
			
		||||
        # git abbrs
 | 
			
		||||
        g = "git";
 | 
			
		||||
        ga = "git add";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										35
									
								
								user/git.nix
									
										
									
									
									
								
							
							
						
						
									
										35
									
								
								user/git.nix
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -18,42 +18,15 @@ in
 | 
			
		|||
          email = mail.personal.user;
 | 
			
		||||
        };
 | 
			
		||||
        init.defaultBranch = "main";
 | 
			
		||||
        core = {
 | 
			
		||||
          fsmonitor = true;
 | 
			
		||||
          untrackedCache = true;
 | 
			
		||||
        };
 | 
			
		||||
        commit = {
 | 
			
		||||
          verbose = true;
 | 
			
		||||
        };
 | 
			
		||||
        fetch = {
 | 
			
		||||
          prune = true;
 | 
			
		||||
          pruneTags = true;
 | 
			
		||||
          all = true;
 | 
			
		||||
        };
 | 
			
		||||
        push = {
 | 
			
		||||
          autoSetupRemote = true;
 | 
			
		||||
          default = "simple";
 | 
			
		||||
          followTags = true;
 | 
			
		||||
        };
 | 
			
		||||
        commit.verbose = true;
 | 
			
		||||
        push.autoSetupRemote = true;
 | 
			
		||||
        pull.rebase = true;
 | 
			
		||||
        tag.sort = "version:refname";
 | 
			
		||||
        merge.conflictStyle = "zdiff3";
 | 
			
		||||
        rerere = {
 | 
			
		||||
          enabled = true;
 | 
			
		||||
          autoupdate = true;
 | 
			
		||||
        };
 | 
			
		||||
        branch.sort = "-committerdate";
 | 
			
		||||
        diff = {
 | 
			
		||||
          algorithm = "histogram";
 | 
			
		||||
          colorMoved = "plain";
 | 
			
		||||
          mnemonicPrefix = true;
 | 
			
		||||
          renames = true;
 | 
			
		||||
        };
 | 
			
		||||
        merge.conflictStyle = "diff3";
 | 
			
		||||
        rerere.enabled = true;
 | 
			
		||||
        rebase = {
 | 
			
		||||
          abbreviateCommands = true;
 | 
			
		||||
          autoSquash = true;
 | 
			
		||||
          autoStash = true;
 | 
			
		||||
          updateRefs = true;
 | 
			
		||||
        };
 | 
			
		||||
        pager = {
 | 
			
		||||
          log = "${pkgs._diffr}/bin/_diffr | ${pkgs.kak-pager}/bin/kak-pager";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,7 +35,6 @@ lib.mkIf (config.my.desktop == "gnome") {
 | 
			
		|||
    amberol
 | 
			
		||||
    pitivi
 | 
			
		||||
    keepassxc
 | 
			
		||||
    menulibre
 | 
			
		||||
 | 
			
		||||
    libsForQt5.qt5ct
 | 
			
		||||
    libsForQt5.qtstyleplugin-kvantum
 | 
			
		||||
| 
						 | 
				
			
			@ -43,7 +42,7 @@ lib.mkIf (config.my.desktop == "gnome") {
 | 
			
		|||
    qt6Packages.qtstyleplugin-kvantum
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  services.gpg-agent.pinentry.package = pkgs.pinentry-gnome;
 | 
			
		||||
  services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome;
 | 
			
		||||
 | 
			
		||||
  xdg.defaultApplications = {
 | 
			
		||||
    enable = lib.mkForce false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,28 +0,0 @@
 | 
			
		|||
{ pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.home-manager.enable = true;
 | 
			
		||||
 | 
			
		||||
  systemd.user.services.home-manager-expire = {
 | 
			
		||||
    Unit = {
 | 
			
		||||
      Description = "Remove old home-manager generations";
 | 
			
		||||
    };
 | 
			
		||||
    Service = {
 | 
			
		||||
      Type = "oneshot";
 | 
			
		||||
      ExecStart = pkgs.writeShellScript "home-manager-expire" ''
 | 
			
		||||
        ${lib.getExe pkgs.home-manager} expire-generations 7d
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  systemd.user.timers.home-manager-expire = {
 | 
			
		||||
    Unit = {
 | 
			
		||||
      Description = "Remove old home-manager generations";
 | 
			
		||||
    };
 | 
			
		||||
    Timer = {
 | 
			
		||||
      OnCalendar = "daily";
 | 
			
		||||
      Unit = "home-manager-expire.service";
 | 
			
		||||
    };
 | 
			
		||||
    Install = {
 | 
			
		||||
      WantedBy = [ "timers.target" ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -9,7 +9,6 @@
 | 
			
		|||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./dummy.nix
 | 
			
		||||
    ./home-manager.nix
 | 
			
		||||
    ./waybar
 | 
			
		||||
    ./helix.nix
 | 
			
		||||
    ./kakoune
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +23,6 @@
 | 
			
		|||
    ./mpv.nix
 | 
			
		||||
    ./mangohud.nix
 | 
			
		||||
    ./gaming.nix
 | 
			
		||||
    ./lsfg-vk
 | 
			
		||||
    ./pipewire.nix
 | 
			
		||||
    ./mimeapps.nix
 | 
			
		||||
    ./desktop-entries.nix
 | 
			
		||||
| 
						 | 
				
			
			@ -37,17 +35,15 @@
 | 
			
		|||
    ./pass.nix
 | 
			
		||||
    ./pqiv.nix
 | 
			
		||||
    ./zathura.nix
 | 
			
		||||
    ./satty
 | 
			
		||||
    ./man.nix
 | 
			
		||||
    ./mpd.nix
 | 
			
		||||
    ./sway
 | 
			
		||||
    ./gnome.nix
 | 
			
		||||
    ./thunar.nix
 | 
			
		||||
    ./xdg-dirs.nix
 | 
			
		||||
    inputs.nix-index-database.homeModules.nix-index
 | 
			
		||||
    inputs.nix-index-database.hmModules.nix-index
 | 
			
		||||
    ../settings
 | 
			
		||||
    ./powerplay-led-idle.nix
 | 
			
		||||
    ./rm-target.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  my = import ./variables.nix // {
 | 
			
		||||
| 
						 | 
				
			
			@ -61,6 +57,8 @@
 | 
			
		|||
  home.username = "lelgenio";
 | 
			
		||||
  home.homeDirectory = "/home/lelgenio";
 | 
			
		||||
 | 
			
		||||
  # Let Home Manager install and manage itself.
 | 
			
		||||
  programs.home-manager.enable = true;
 | 
			
		||||
  home.packages = with pkgs; [
 | 
			
		||||
    terminal
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +77,6 @@
 | 
			
		|||
    micro
 | 
			
		||||
    _diffr
 | 
			
		||||
    br # bulk rename
 | 
			
		||||
    bcrypt
 | 
			
		||||
 | 
			
		||||
    comma
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -150,14 +147,12 @@
 | 
			
		|||
    enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  sops.age.keyFile = config.home.homeDirectory + "/.ssh/id_ed25519";
 | 
			
		||||
 | 
			
		||||
  xdg.defaultApplications = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    text-editor = lib.mkDefault "kak.desktop";
 | 
			
		||||
    image-viewer = lib.mkDefault "pqiv.desktop";
 | 
			
		||||
    video-player = lib.mkDefault "mpv.desktop";
 | 
			
		||||
    web-browser = lib.mkDefault "firefox-devedition.desktop";
 | 
			
		||||
    web-browser = lib.mkDefault "firefox.desktop";
 | 
			
		||||
    document-viewer = lib.mkDefault "org.pwmt.zathura.desktop";
 | 
			
		||||
    file-manager = lib.mkDefault "thunar.desktop";
 | 
			
		||||
    archive-manager = "engrampa.desktop";
 | 
			
		||||
| 
						 | 
				
			
			@ -174,6 +169,30 @@
 | 
			
		|||
        exec nicotine
 | 
			
		||||
      '';
 | 
			
		||||
 | 
			
		||||
  systemd.user.services.rm-target = {
 | 
			
		||||
    Unit = {
 | 
			
		||||
      Description = "Remove directories named 'target'";
 | 
			
		||||
    };
 | 
			
		||||
    Service = {
 | 
			
		||||
      Type = "oneshot";
 | 
			
		||||
      ExecStart = pkgs.writeShellScript "rm-target" ''
 | 
			
		||||
        sudo ${pkgs.fd}/bin/fd -td -u '^\.?target$' "$HOME" -x rm -vrf --
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  systemd.user.timers.rm-target = {
 | 
			
		||||
    Unit = {
 | 
			
		||||
      Description = "Remove directories named 'target'";
 | 
			
		||||
    };
 | 
			
		||||
    Timer = {
 | 
			
		||||
      OnCalendar = "weekly";
 | 
			
		||||
      Unit = "rm-target.service";
 | 
			
		||||
    };
 | 
			
		||||
    Install = {
 | 
			
		||||
      WantedBy = [ "timers.target" ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # This value determines the Home Manager release that your
 | 
			
		||||
  # configuration is compatible with. This helps avoid breakage
 | 
			
		||||
  # when a new Home Manager release introduces backwards
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,9 +82,6 @@ in
 | 
			
		|||
            rev = "1cc6baeb14b773916eb9209469aa77b3cfa67a0a";
 | 
			
		||||
            sha256 = "sha256-3PLxG9UtT0MMSibvTviXQIgTH3rApZ3WSbNCEH3c7HE=";
 | 
			
		||||
          };
 | 
			
		||||
          buildInputs = with pkgs; [
 | 
			
		||||
            python3Minimal
 | 
			
		||||
          ];
 | 
			
		||||
        })
 | 
			
		||||
      ];
 | 
			
		||||
      extraConfig =
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +107,6 @@ in
 | 
			
		|||
          set global scrolloff 10,20
 | 
			
		||||
          set global autoreload yes
 | 
			
		||||
          set global startup_info_version 99999999
 | 
			
		||||
          set global grepcmd 'rg -Hn'
 | 
			
		||||
 | 
			
		||||
        ''
 | 
			
		||||
        + (import ./colors.nix {
 | 
			
		||||
| 
						 | 
				
			
			@ -142,8 +138,6 @@ in
 | 
			
		|||
      aspell
 | 
			
		||||
      aspellDicts.en
 | 
			
		||||
      aspellDicts.pt_BR
 | 
			
		||||
 | 
			
		||||
      ripgrep
 | 
			
		||||
    ];
 | 
			
		||||
    home.activation = {
 | 
			
		||||
      update_kakoune = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,16 +15,8 @@ hook global WinSetOption filetype=nix %{
 | 
			
		|||
    set buffer formatcmd 'nixfmt'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.json %{
 | 
			
		||||
    set buffer formatcmd "prettier --stdin-filepath='%val{buffile}'"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.ya?ml %{
 | 
			
		||||
    set buffer formatcmd "prettier --stdin-filepath='%val{buffile}'"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.html %{
 | 
			
		||||
    set buffer formatcmd "prettier --stdin-filepath='%val{buffile}'"
 | 
			
		||||
    set buffer formatcmd 'prettier --parser html'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.component\.html %{
 | 
			
		||||
| 
						 | 
				
			
			@ -43,23 +35,11 @@ hook global BufCreate .*\.php %{
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.js %{
 | 
			
		||||
    set buffer formatcmd "prettier --stdin-filepath='%val{buffile}'"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.jsx %{
 | 
			
		||||
    set buffer formatcmd "prettier --stdin-filepath='%val{buffile}'"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.ts %{
 | 
			
		||||
    set buffer formatcmd "prettier --stdin-filepath='%val{buffile}'"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.tsx %{
 | 
			
		||||
    set buffer formatcmd "prettier --stdin-filepath='%val{buffile}'"
 | 
			
		||||
    set buffer formatcmd 'prettier --parser babel'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.scss %{
 | 
			
		||||
    set buffer formatcmd "prettier --stdin-filepath='%val{buffile}'"
 | 
			
		||||
    set buffer formatcmd 'prettier --parser scss'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
hook global BufCreate .*\.vue %{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,40 +0,0 @@
 | 
			
		|||
{ pkgs, config, ... }:
 | 
			
		||||
let
 | 
			
		||||
  LosslessDllPath = config.home.homeDirectory + "/.local/lib/Lossless.dll";
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  home.file = {
 | 
			
		||||
    ".local/share/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json".source =
 | 
			
		||||
      "${pkgs.lsfg-vk}/share/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json";
 | 
			
		||||
    ".local/lib/liblsfg-vk.so".source = "${pkgs.lsfg-vk}/lib/liblsfg-vk.so";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  home.sessionVariables = {
 | 
			
		||||
    # ENABLE_LSFG = 1; # Don't enable session wide, to avoid bugs
 | 
			
		||||
    LSFG_DLL_PATH = LosslessDllPath;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  home.packages = with pkgs; [
 | 
			
		||||
    lsfg-vk
 | 
			
		||||
    lsfg-vk-ui
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  # Put the dll in a reachable location for steam games
 | 
			
		||||
  # Secrets normally are a symlink to /run/user/1000/secrets.d/
 | 
			
		||||
  # Every time sops-nix.service runs, we copy the dll
 | 
			
		||||
  systemd.user.services.copy-lsfg-dll = {
 | 
			
		||||
    Service = {
 | 
			
		||||
      ExecStart = pkgs.writeShellScript "copy-lsfg-dll" ''
 | 
			
		||||
        cp -fv "${config.sops.secrets."lsfg.dll".path}" "${LosslessDllPath}"
 | 
			
		||||
      '';
 | 
			
		||||
      Type = "oneshot";
 | 
			
		||||
    };
 | 
			
		||||
    Unit.After = [ "sops-nix.service" ];
 | 
			
		||||
    Install.WantedBy = [ "sops-nix.service" ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  sops.secrets."lsfg.dll" = {
 | 
			
		||||
    sopsFile = ../../secrets/lsfg.dll.gpg;
 | 
			
		||||
    format = "binary";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -17,9 +17,6 @@ in
 | 
			
		|||
      toggle_preset = "Control_R+F9";
 | 
			
		||||
      fps_metrics = "Control_R+F8";
 | 
			
		||||
 | 
			
		||||
      media_player = false;
 | 
			
		||||
      battery = false;
 | 
			
		||||
 | 
			
		||||
      # legacy_layout = "false";
 | 
			
		||||
      # gpu_stats = true;
 | 
			
		||||
      # gpu_temp = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,10 +27,10 @@ set confirm_on_delete multiple
 | 
			
		|||
# Use non-default path for file preview script?
 | 
			
		||||
# ranger ships with scope.sh, a script that calls external programs (see
 | 
			
		||||
# README.md for dependencies) to preview images, archives, etc.
 | 
			
		||||
# set preview_script ~/.config/ranger/scope.sh
 | 
			
		||||
set preview_script ~/.config/ranger/scope.sh
 | 
			
		||||
 | 
			
		||||
# Use the external preview script or display simple plain text or image previews?
 | 
			
		||||
# set use_preview_script true
 | 
			
		||||
set use_preview_script true
 | 
			
		||||
 | 
			
		||||
# Automatically count files in the directory, even before entering them?
 | 
			
		||||
set automatically_count_files true
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ set automatically_count_files true
 | 
			
		|||
set open_all_images true
 | 
			
		||||
 | 
			
		||||
# Be aware of version control systems and display information.
 | 
			
		||||
set vcs_aware false
 | 
			
		||||
set vcs_aware true
 | 
			
		||||
 | 
			
		||||
# State of the four backends git, hg, bzr, svn. The possible states are
 | 
			
		||||
# disabled, local (only show local info), enabled (show local and remote
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,26 +0,0 @@
 | 
			
		|||
{ pkgs, lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  systemd.user.services.rm-target = {
 | 
			
		||||
    Unit = {
 | 
			
		||||
      Description = "Remove directories named 'target'";
 | 
			
		||||
    };
 | 
			
		||||
    Service = {
 | 
			
		||||
      Type = "oneshot";
 | 
			
		||||
      ExecStart = pkgs.writeShellScript "rm-target" ''
 | 
			
		||||
        sudo ${pkgs.fd}/bin/fd -td -u '^\.?target$' "$HOME" -x rm -vrf --
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  systemd.user.timers.rm-target = {
 | 
			
		||||
    Unit = {
 | 
			
		||||
      Description = "Remove directories named 'target'";
 | 
			
		||||
    };
 | 
			
		||||
    Timer = {
 | 
			
		||||
      OnCalendar = "weekly";
 | 
			
		||||
      Unit = "rm-target.service";
 | 
			
		||||
    };
 | 
			
		||||
    Install = {
 | 
			
		||||
      WantedBy = [ "timers.target" ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,63 +0,0 @@
 | 
			
		|||
[general]
 | 
			
		||||
# Start Satty in fullscreen mode
 | 
			
		||||
fullscreen = true
 | 
			
		||||
# Exit directly after copy/save action
 | 
			
		||||
early-exit = true
 | 
			
		||||
# Draw corners of rectangles round if the value is greater than 0 (0 disables rounded corners)
 | 
			
		||||
corner-roundness = 12
 | 
			
		||||
# Select the tool on startup [possible values: pointer, crop, line, arrow, rectangle, text, marker, blur, brush]
 | 
			
		||||
initial-tool = "brush"
 | 
			
		||||
# Configure the command to be called on copy, for example `wl-copy`
 | 
			
		||||
copy-command = "wl-copy"
 | 
			
		||||
# Increase or decrease the size of the annotations
 | 
			
		||||
# annotation-size-factor = 2
 | 
			
		||||
# Filename to use for saving action. Omit to disable saving to file. Might contain format specifiers: https://docs.rs/chrono/latest/chrono/format/strftime/index.html
 | 
			
		||||
# output-filename = "/tmp/test-%Y-%m-%d_%H:%M:%S.png"
 | 
			
		||||
# After copying the screenshot, save it to a file as well
 | 
			
		||||
# save-after-copy = false
 | 
			
		||||
# Hide toolbars by default
 | 
			
		||||
# default-hide-toolbars = false
 | 
			
		||||
# Experimental: whether window focus shows/hides toolbars. This does not affect initial state of toolbars, see default-hide-toolbars.
 | 
			
		||||
# focus-toggles-toolbars = false
 | 
			
		||||
# The primary highlighter to use, the other is accessible by holding CTRL at the start of a highlight [possible values: block, freehand]
 | 
			
		||||
primary-highlighter = "block"
 | 
			
		||||
# Disable notifications
 | 
			
		||||
disable-notifications = true
 | 
			
		||||
# Actions to trigger on right click (order is important)
 | 
			
		||||
# [possible values: save-to-clipboard, save-to-file, exit]
 | 
			
		||||
# actions-on-right-click = []
 | 
			
		||||
# Actions to trigger on Enter key (order is important)
 | 
			
		||||
# [possible values: save-to-clipboard, save-to-file, exit]
 | 
			
		||||
# actions-on-enter = ["save-to-clipboard"]
 | 
			
		||||
# Actions to trigger on Escape key (order is important)
 | 
			
		||||
# [possible values: save-to-clipboard, save-to-file, exit]
 | 
			
		||||
# actions-on-escape = ["exit"]
 | 
			
		||||
# Action to perform when the Enter key is pressed [possible values: save-to-clipboard, save-to-file]
 | 
			
		||||
# Deprecated: use actions-on-enter instead
 | 
			
		||||
action-on-enter = "save-to-clipboard"
 | 
			
		||||
# Right click to copy
 | 
			
		||||
# Deprecated: use actions-on-right-click instead
 | 
			
		||||
# right-click-copy = false
 | 
			
		||||
# request no window decoration. Please note that the compositor has the final say in this. At this point. requires xdg-decoration-unstable-v1.
 | 
			
		||||
# no-window-decoration = true
 | 
			
		||||
# experimental feature: adjust history size for brush input smooting (0: disabled, default: 0, try e.g. 5 or 10)
 | 
			
		||||
# brush-smooth-history-size = 10
 | 
			
		||||
 | 
			
		||||
# Font to use for text annotations
 | 
			
		||||
[font]
 | 
			
		||||
family = "Roboto"
 | 
			
		||||
style = "Bold"
 | 
			
		||||
 | 
			
		||||
# Custom colours for the colour palette
 | 
			
		||||
[color-palette]
 | 
			
		||||
# These will be shown in the toolbar for quick selection
 | 
			
		||||
palette = [
 | 
			
		||||
    "#ff0000",
 | 
			
		||||
    "#00ffff",
 | 
			
		||||
    "#a52a2a",
 | 
			
		||||
    "#dc143c",
 | 
			
		||||
    "#ff1493",
 | 
			
		||||
    "#ffd700",
 | 
			
		||||
    "#008000",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.my.satty;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  options.my.satty.enable = lib.mkEnableOption { };
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    xdg.configFile."satty/config.toml" = {
 | 
			
		||||
      source = ./config.toml;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    home.packages = with pkgs; [
 | 
			
		||||
      satty
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -14,14 +14,12 @@ in
 | 
			
		|||
  imports = [
 | 
			
		||||
    ./kanshi.nix
 | 
			
		||||
    ./mako.nix
 | 
			
		||||
    ./sway-sync-xkbmap.nix
 | 
			
		||||
    ./sway-binds.nix
 | 
			
		||||
    ./sway-modes.nix
 | 
			
		||||
    ./sway-assigns.nix
 | 
			
		||||
    ./swayidle.nix
 | 
			
		||||
    ./swaylock.nix
 | 
			
		||||
    ./theme.nix
 | 
			
		||||
    ./gammastep.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.my.sway.enable = lib.mkEnableOption { };
 | 
			
		||||
| 
						 | 
				
			
			@ -33,9 +31,7 @@ in
 | 
			
		|||
    my.swaylock.enable = true;
 | 
			
		||||
    my.mpd.enable = true;
 | 
			
		||||
    my.zathura.enable = true;
 | 
			
		||||
    my.satty.enable = true;
 | 
			
		||||
    my.waybar.enable = true;
 | 
			
		||||
    my.gammastep.enable = true;
 | 
			
		||||
 | 
			
		||||
    wayland.windowManager.sway = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -77,19 +73,10 @@ in
 | 
			
		|||
          };
 | 
			
		||||
        output = {
 | 
			
		||||
          "*" = {
 | 
			
		||||
            adaptive_sync = "on";
 | 
			
		||||
            bg = "${theme.background} fill";
 | 
			
		||||
          };
 | 
			
		||||
          "AOC 24G2W1G4 ATNM6XA004804" = {
 | 
			
		||||
            position = "0,0";
 | 
			
		||||
            adaptive_sync = "on";
 | 
			
		||||
            mode = "1920x1080@144.000Hz";
 | 
			
		||||
          };
 | 
			
		||||
          "LG Electronics 25UM58G 0x01010101" = {
 | 
			
		||||
            position = "1920,215";
 | 
			
		||||
            adaptive_sync = "on";
 | 
			
		||||
            scale = "1.2";
 | 
			
		||||
            mode = "2560x1080@74.991Hz";
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
        fonts = {
 | 
			
		||||
          names = [ font.interface ];
 | 
			
		||||
| 
						 | 
				
			
			@ -126,20 +113,22 @@ in
 | 
			
		|||
        for_window [title=.*] inhibit_idle fullscreen
 | 
			
		||||
        exec swaymsg workspace 2
 | 
			
		||||
        exec_always systemctl --user restart waybar.service
 | 
			
		||||
        exec corectrl --minimize-systray
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    services.gammastep = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      provider = "geoclue2";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    services.kdeconnect = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      indicator = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    services.gpg-agent.pinentry.package = pkgs.pinentry-all;
 | 
			
		||||
    services.gpg-agent.pinentryPackage = pkgs.pinentry-all;
 | 
			
		||||
 | 
			
		||||
    xdg.configFile."OpenTabletDriver/settings.json" = {
 | 
			
		||||
      force = true;
 | 
			
		||||
      source = ./open-tablet-driver.json;
 | 
			
		||||
    };
 | 
			
		||||
    xdg.configFile."OpenTabletDriver/settings.json".source = ./open-tablet-driver.json;
 | 
			
		||||
 | 
			
		||||
    home.packages = with pkgs; [
 | 
			
		||||
      mySway
 | 
			
		||||
| 
						 | 
				
			
			@ -164,7 +153,6 @@ in
 | 
			
		|||
      wl-clipboard
 | 
			
		||||
      wtype
 | 
			
		||||
      wl-crosshair
 | 
			
		||||
      caffeinated
 | 
			
		||||
 | 
			
		||||
      grim
 | 
			
		||||
      satty
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,19 +0,0 @@
 | 
			
		|||
{ config, lib, ... }:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.my.gammastep;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  options.my.gammastep.enable = lib.mkEnableOption { };
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    services.gammastep = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      dawnTime = "6:00-7:45";
 | 
			
		||||
      duskTime = "18:35-20:15";
 | 
			
		||||
      temperature = {
 | 
			
		||||
        day = 6500;
 | 
			
		||||
        night = 4500;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -8,24 +8,6 @@ in
 | 
			
		|||
  config.services.kanshi = lib.mkIf cfg.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = [
 | 
			
		||||
      {
 | 
			
		||||
        profile = {
 | 
			
		||||
          name = "home";
 | 
			
		||||
          outputs = [
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "AOC 24G2W1G4 ATNM6XA004804";
 | 
			
		||||
              position = "0,0";
 | 
			
		||||
            }
 | 
			
		||||
            {
 | 
			
		||||
              criteria = "LG Electronics 25UM58G 0x01010101";
 | 
			
		||||
              position = "1920,215";
 | 
			
		||||
              scale = 1.2;
 | 
			
		||||
              mode = "2560x1080@74.991Hz";
 | 
			
		||||
            }
 | 
			
		||||
          ];
 | 
			
		||||
          exec = [ "xrdb .Xresources" ];
 | 
			
		||||
        };
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        profile = {
 | 
			
		||||
          name = "sedetary";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,28 +20,26 @@ in
 | 
			
		|||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    services.mako = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
 | 
			
		||||
      settings = {
 | 
			
		||||
        border-size = 2;
 | 
			
		||||
      borderSize = 2;
 | 
			
		||||
      padding = "5";
 | 
			
		||||
      margin = "15";
 | 
			
		||||
      layer = "overlay";
 | 
			
		||||
 | 
			
		||||
      font = "${font.interface} ${toString font.size.small}";
 | 
			
		||||
        text-color = color.txt;
 | 
			
		||||
      textColor = color.txt;
 | 
			
		||||
 | 
			
		||||
        background-color = color.bg;
 | 
			
		||||
        border-color = accent.color;
 | 
			
		||||
        progress-color = "over ${accent.color}88";
 | 
			
		||||
      backgroundColor = color.bg;
 | 
			
		||||
      borderColor = accent.color;
 | 
			
		||||
      progressColor = "over ${accent.color}88";
 | 
			
		||||
 | 
			
		||||
        default-timeout = 10000;
 | 
			
		||||
      defaultTimeout = 10000;
 | 
			
		||||
 | 
			
		||||
        "app-name=volumesh" = {
 | 
			
		||||
          "default-timeout" = "5000";
 | 
			
		||||
          "group-by" = "app-name";
 | 
			
		||||
          "format" = "<b>%s</b>\\n%b";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
      extraConfig = ''
 | 
			
		||||
        [app-name=volumesh]
 | 
			
		||||
        default-timeout=5000
 | 
			
		||||
        group-by=app-name
 | 
			
		||||
        format=<b>%s</b>\n%b
 | 
			
		||||
      '';
 | 
			
		||||
 | 
			
		||||
      # # {{@@ header() @@}}
 | 
			
		||||
      # # text
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,13 +14,12 @@ let
 | 
			
		|||
  terminal = "alacritty";
 | 
			
		||||
 | 
			
		||||
  _lock = pkgs.writeShellScriptBin "_lock" ''
 | 
			
		||||
    pkill caffeinated || true
 | 
			
		||||
    ${pkgs.sway}/bin/swaymsg mode default
 | 
			
		||||
    ${pkgs.swaylock}/bin/swaylock -f
 | 
			
		||||
  '';
 | 
			
		||||
  _suspend = pkgs.writeShellScriptBin "_suspend" ''
 | 
			
		||||
    ${pkgs.sway}/bin/swaymsg mode default
 | 
			
		||||
    pkill caffeinated || true
 | 
			
		||||
    systemctl --user start swayidle.service
 | 
			
		||||
    systemctl suspend
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -110,8 +109,6 @@ let
 | 
			
		|||
            "${mod}+Control+${keyBind}" = "resize ${resize_cmd}";
 | 
			
		||||
            #  focus output
 | 
			
		||||
            "${mod}+mod1+${keyBind}" = "focus output ${direction}";
 | 
			
		||||
            #  Move window to output
 | 
			
		||||
            "${mod}+mod1+Control+${keyBind}" = "move window output ${direction}; focus output ${direction}";
 | 
			
		||||
            #  Move workspace to output
 | 
			
		||||
            "${mod}+mod1+Shift+${keyBind}" = "move workspace output ${direction}";
 | 
			
		||||
          }
 | 
			
		||||
| 
						 | 
				
			
			@ -127,8 +124,9 @@ let
 | 
			
		|||
    "${mod}+v" = "splitv";
 | 
			
		||||
    "${mod}+a" = "focus parent";
 | 
			
		||||
 | 
			
		||||
    "${mod}+Shift+z" = "move scratchpad";
 | 
			
		||||
    "${mod}+z" = "scratchpad show";
 | 
			
		||||
    ## TODO:
 | 
			
		||||
    # "${mod}+Shift+minus" = "move scratchpad";
 | 
			
		||||
    # "${mod}+minus" = "scratchpad show";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  audio_binds = {
 | 
			
		||||
| 
						 | 
				
			
			@ -145,7 +143,7 @@ let
 | 
			
		|||
 | 
			
		||||
  system_binds = {
 | 
			
		||||
    "--locked Ctrl+${mod}+z" = "exec ${_suspend}/bin/_suspend";
 | 
			
		||||
    "${mod}+Alt+c" = "exec pkill caffeinated || exec caffeinated";
 | 
			
		||||
    "${mod}+Alt+c" = "exec ${pkgs._sway_idle_toggle}/bin/_sway_idle_toggle";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  screenshot_binds = {
 | 
			
		||||
| 
						 | 
				
			
			@ -162,7 +160,7 @@ let
 | 
			
		|||
  screen_binds = {
 | 
			
		||||
    "XF86MonBrightnessDown" = "exec brightnessctl --min-value=1 set 5%-";
 | 
			
		||||
    "XF86MonBrightnessUp" = "exec brightnessctl --min-value=1 set 5%+";
 | 
			
		||||
    "${mod}+l" = "exec ${lib.getExe _lock}";
 | 
			
		||||
    "${mod}+l" = lib.getExe _lock;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  other_binds = {
 | 
			
		||||
| 
						 | 
				
			
			@ -173,7 +171,9 @@ let
 | 
			
		|||
    "${mod}+c" = "exec ${pkgs.color_picker}/bin/color_picker";
 | 
			
		||||
    "${mod}+Return" = "exec ${terminal}";
 | 
			
		||||
    "${mod}+Ctrl+Return" = "exec thunar";
 | 
			
		||||
    "${mod}+Shift+s" = "exec ${pkgs.screenshotsh}/bin/screenshotsh edit";
 | 
			
		||||
    "${mod}+Shift+s" = ''
 | 
			
		||||
      exec grim - | satty --filename - --fullscreen --output-filename "$(xdg-user-dir PICTURES)"/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png
 | 
			
		||||
    '';
 | 
			
		||||
    "${mod}+Ctrl+v" = "exec wl-paste | tesseract -l por - - | wl-copy";
 | 
			
		||||
    "${mod}+k" = "exec showkeys";
 | 
			
		||||
    "${mod}+Alt+x" = "exec pkill wl-crosshair || exec wl-crosshair";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,27 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  cfg = config.my.sway;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    systemd.user.services.sway-sync-xkbmap = {
 | 
			
		||||
      Unit = {
 | 
			
		||||
        Description = "Sync xkbmap with sway keyboard layout";
 | 
			
		||||
        PartOf = [ "graphical-session.target" ];
 | 
			
		||||
        After = [ "graphical-session.target" ];
 | 
			
		||||
      };
 | 
			
		||||
      Service = {
 | 
			
		||||
        ExecStart = lib.getExe pkgs.sway-sync-xkbmap;
 | 
			
		||||
        Restart = "on-failure";
 | 
			
		||||
      };
 | 
			
		||||
      Install = {
 | 
			
		||||
        WantedBy = [ "sway-session.target" ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -9,7 +9,7 @@ in
 | 
			
		|||
  options.my.swaylock.enable = lib.mkEnableOption { };
 | 
			
		||||
 | 
			
		||||
  config.programs.swaylock.settings = lib.mkIf cfg.enable {
 | 
			
		||||
    image = theme.backgroundPath;
 | 
			
		||||
    image = toString theme.background;
 | 
			
		||||
    font = font.interface;
 | 
			
		||||
    font-size = font.size.medium;
 | 
			
		||||
    indicator-thickness = 20;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,8 @@ lib.mkIf (desktop == "sway") {
 | 
			
		|||
    package = pkgs.bibata-cursors;
 | 
			
		||||
    gtk.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
  gtk = {
 | 
			
		||||
  gtk =
 | 
			
		||||
    {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      font = {
 | 
			
		||||
        name = font.interface;
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +55,7 @@ lib.mkIf (desktop == "sway") {
 | 
			
		|||
  qt = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    platformTheme.name = "gtk3";
 | 
			
		||||
    style.name = "kvantum";
 | 
			
		||||
    style.name = "qt5ct";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  dconf.settings = {
 | 
			
		||||
| 
						 | 
				
			
			@ -69,6 +70,28 @@ lib.mkIf (desktop == "sway") {
 | 
			
		|||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # fonts.fontconfig.enable = true;
 | 
			
		||||
  xdg.configFile = {
 | 
			
		||||
    "qt5ct/qt5ct.conf".text = ''
 | 
			
		||||
      [Appearance]
 | 
			
		||||
      # color_scheme_path=/nix/store/f07mk0vrm47jxw3y5v99hxncy0w4vcyq-qt5ct-1.5/share/qt5ct/colors/darker.conf
 | 
			
		||||
      custom_palette=false
 | 
			
		||||
      icon_theme=${icon_theme}
 | 
			
		||||
      standard_dialogs=default
 | 
			
		||||
      style=kvantum-dark
 | 
			
		||||
 | 
			
		||||
      # [Fonts]
 | 
			
		||||
      # fixed=@Variant(\0\0\0@\0\0\0\x1c\0H\0\x61\0\x63\0k\0 \0N\0\x65\0r\0\x64\0 \0\x46\0o\0n\0t@(\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
 | 
			
		||||
      # general=@Variant(\0\0\0@\0\0\0\x1e\0L\0i\0\x62\0\x65\0r\0\x61\0t\0i\0o\0n\0 \0S\0\x61\0n\0s@(\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
 | 
			
		||||
    '';
 | 
			
		||||
    "kdedefaults/kdeglobals".text = ''
 | 
			
		||||
      [General]
 | 
			
		||||
      ColorScheme=BreezeDark
 | 
			
		||||
 | 
			
		||||
      [Icons]
 | 
			
		||||
      Theme=${icon_theme}
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
  services.xsettingsd = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
| 
						 | 
				
			
			@ -82,6 +105,11 @@ lib.mkIf (desktop == "sway") {
 | 
			
		|||
  };
 | 
			
		||||
 | 
			
		||||
  home.packages = with pkgs; [
 | 
			
		||||
    libsForQt5.qt5ct
 | 
			
		||||
    libsForQt5.qtstyleplugin-kvantum
 | 
			
		||||
    qt6Packages.qt6ct
 | 
			
		||||
    qt6Packages.qtstyleplugin-kvantum
 | 
			
		||||
 | 
			
		||||
    pkgs.bibata-cursors
 | 
			
		||||
    pkgs.orchis_theme_compact
 | 
			
		||||
    pkgs.papirus_red
 | 
			
		||||
| 
						 | 
				
			
			@ -91,6 +119,7 @@ lib.mkIf (desktop == "sway") {
 | 
			
		|||
    hack-font
 | 
			
		||||
    font-awesome_5
 | 
			
		||||
    fira-code
 | 
			
		||||
    nerdfonts_fira_hack
 | 
			
		||||
    material-wifi-icons
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,6 @@ let
 | 
			
		|||
      cursor_theme = "Bibata-Modern-Classic";
 | 
			
		||||
 | 
			
		||||
      background = ./backgrounds/nixos-dark-pattern.png;
 | 
			
		||||
      backgroundPath = "~/.local/share/backgrounds/nixos-dark-pattern.png";
 | 
			
		||||
      opacity = 95;
 | 
			
		||||
      opacityHex = "ee";
 | 
			
		||||
      color = {
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +59,6 @@ let
 | 
			
		|||
      cursor_theme = "Bibata-Modern-Classic";
 | 
			
		||||
 | 
			
		||||
      background = ./backgrounds/nixos-light-pattern.png;
 | 
			
		||||
      backgroundPath = "~/.local/share/backgrounds/nixos-light-pattern.png";
 | 
			
		||||
      opacity = 95;
 | 
			
		||||
      opacityHex = "ee";
 | 
			
		||||
      color = {
 | 
			
		||||
| 
						 | 
				
			
			@ -116,6 +114,6 @@ rec {
 | 
			
		|||
 | 
			
		||||
  dmenu = "bmenu";
 | 
			
		||||
  desktop = "sway";
 | 
			
		||||
  browser = "firefox-devedition";
 | 
			
		||||
  browser = "firefox";
 | 
			
		||||
  editor = "kakoune";
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
  programs.vscode = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.vscodium;
 | 
			
		||||
    profiles.default.extensions = with pkgs.vscode-extensions; [
 | 
			
		||||
    extensions = with pkgs.vscode-extensions; [
 | 
			
		||||
      jnoortheen.nix-ide
 | 
			
		||||
      github.github-vscode-theme
 | 
			
		||||
      rust-lang.rust-analyzer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,10 +3,12 @@
 | 
			
		|||
  osConfig,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  font,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
  inherit (config.my)
 | 
			
		||||
    key
 | 
			
		||||
    theme
 | 
			
		||||
    accent
 | 
			
		||||
    font
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +40,6 @@ in
 | 
			
		|||
            "custom/playerctl"
 | 
			
		||||
            "tray"
 | 
			
		||||
            "custom/controller-battery"
 | 
			
		||||
            "custom/mouse-battery"
 | 
			
		||||
            "custom/caffeine"
 | 
			
		||||
            "pulseaudio"
 | 
			
		||||
            (lib.optional (osConfig.services.vpn.enable or false) "custom/vpn")
 | 
			
		||||
| 
						 | 
				
			
			@ -165,16 +166,12 @@ in
 | 
			
		|||
            format = "{}";
 | 
			
		||||
            exec = lib.getExe pkgs.controller-battery;
 | 
			
		||||
            interval = 1;
 | 
			
		||||
          };
 | 
			
		||||
          "custom/mouse-battery" = {
 | 
			
		||||
            format = "{}";
 | 
			
		||||
            exec = lib.getExe pkgs.mouse-battery;
 | 
			
		||||
            interval = 1;
 | 
			
		||||
            tooltip = false;
 | 
			
		||||
          };
 | 
			
		||||
          "custom/caffeine" = {
 | 
			
		||||
            format = "{}";
 | 
			
		||||
            exec = "pgrep caffeinated > /dev/null && echo '' || echo '' ";
 | 
			
		||||
            on-click = "pkill caffeinated || exec caffeinated";
 | 
			
		||||
            exec = "systemctl --user status swayidle > /dev/null && echo  || echo ";
 | 
			
		||||
            on-click = "${pkgs._sway_idle_toggle}/bin/_sway_idle_toggle";
 | 
			
		||||
            interval = 1;
 | 
			
		||||
            tooltip = false;
 | 
			
		||||
          };
 | 
			
		||||
| 
						 | 
				
			
			@ -237,7 +234,10 @@ in
 | 
			
		|||
          };
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
      style = pkgs.replaceVars ./style.css {
 | 
			
		||||
      style = builtins.readFile (
 | 
			
		||||
        pkgs.substituteAll {
 | 
			
		||||
          src = ./style.css;
 | 
			
		||||
 | 
			
		||||
          accent_color = accent.color;
 | 
			
		||||
 | 
			
		||||
          color_bg = color.bg;
 | 
			
		||||
| 
						 | 
				
			
			@ -249,7 +249,8 @@ in
 | 
			
		|||
 | 
			
		||||
          font_size_big = "${toString font.size.big}px";
 | 
			
		||||
          font_size_medium = "${toString font.size.medium}px";
 | 
			
		||||
      };
 | 
			
		||||
        }
 | 
			
		||||
      );
 | 
			
		||||
    };
 | 
			
		||||
    home.packages = with pkgs; [ waybar ];
 | 
			
		||||
  };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -38,7 +38,6 @@ window#waybar.solo {
 | 
			
		|||
#custom-mpd,
 | 
			
		||||
#custom-playerctl,
 | 
			
		||||
#custom-controller-battery,
 | 
			
		||||
#custom-mouse-battery,
 | 
			
		||||
#tray,
 | 
			
		||||
#clock,
 | 
			
		||||
#network,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,8 @@
 | 
			
		|||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
let
 | 
			
		||||
| 
						 | 
				
			
			@ -21,4 +24,9 @@ in
 | 
			
		|||
      videos = "${HOME}/Vídeos";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  home.sessionVariables = {
 | 
			
		||||
    CARGO_HOME = "${config.xdg.dataHome}/cargo";
 | 
			
		||||
    RUSTUP_HOME = "${config.xdg.dataHome}/rustup";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue