diff --git a/.gitattributes b/.gitattributes
index 24a8e87..0e3c3f1 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,3 @@
*.png filter=lfs diff=lfs merge=lfs -text
+*.webp filter=lfs diff=lfs merge=lfs -text
+*.jpg filter=lfs diff=lfs merge=lfs -text
diff --git a/.sops.yaml b/.sops.yaml
index 76fe9cb..bdeec1a 100644
--- a/.sops.yaml
+++ b/.sops.yaml
@@ -5,3 +5,13 @@ creation_rules:
key_groups:
- age:
- *primary
+
+ - path_regex: secrets/secrets-yggdrasil.yaml$
+ key_groups:
+ - age:
+ - *primary
+
+ - path_regex: secrets/secrets-loptland.yaml$
+ key_groups:
+ - age:
+ - *primary
diff --git a/flake.lock b/flake.lock
index db65e18..7c056c9 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,24 @@
{
"nodes": {
+ "ags": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_3",
+ "systems": "systems_4"
+ },
+ "locked": {
+ "lastModified": 1728326430,
+ "narHash": "sha256-tV1ABHuA1HItMdCTuNdA8fMB+qw7LpjvI945VwMSABI=",
+ "owner": "Aylur",
+ "repo": "ags",
+ "rev": "60180a184cfb32b61a1d871c058b31a3b9b0743d",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Aylur",
+ "repo": "ags",
+ "type": "github"
+ }
+ },
"aquamarine": {
"inputs": {
"hyprutils": [
@@ -20,11 +39,11 @@
]
},
"locked": {
- "lastModified": 1728902391,
- "narHash": "sha256-44bnoY0nAvbBQ/lVjmn511yL39Sv7SknV0BDxn34P3Q=",
+ "lastModified": 1730968822,
+ "narHash": "sha256-NocDjINsh6ismkhb0Xr6xPRksmhuB2WGf8ZmXMhxu7Y=",
"owner": "hyprwm",
"repo": "aquamarine",
- "rev": "9874e08eec85b5542ca22494e127b0cdce46b786",
+ "rev": "a49bc3583ff223f426cb3526fdaa4bcaa247ec14",
"type": "github"
},
"original": {
@@ -34,18 +53,12 @@
}
},
"crane": {
- "inputs": {
- "nixpkgs": [
- "helix",
- "nixpkgs"
- ]
- },
"locked": {
- "lastModified": 1709610799,
- "narHash": "sha256-5jfLQx0U9hXbi2skYMGodDJkIgffrjIOgMRjZqms2QE=",
+ "lastModified": 1727974419,
+ "narHash": "sha256-WD0//20h+2/yPGkO88d2nYbb23WMWYvnRyDQ9Dx4UHg=",
"owner": "ipetkov",
"repo": "crane",
- "rev": "81c393c776d5379c030607866afef6406ca1be57",
+ "rev": "37e4f9f0976cb9281cd3f0c70081e5e0ecaee93f",
"type": "github"
},
"original": {
@@ -62,11 +75,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
- "lastModified": 1728973961,
- "narHash": "sha256-Jkqaw9O7WXTf5SHrK7xr9HpVU/mEPVg0Sp6s3AENC90=",
+ "lastModified": 1730961036,
+ "narHash": "sha256-nkho9Dq4WzyF4xr83UdxrlDS5Sm7ZKkPaqGVupLOpOI=",
"owner": "nix-community",
"repo": "fenix",
- "rev": "d6a9ff4d1e60c347a23bc96ccdb058d37a810541",
+ "rev": "9bf50cb857db8dba15528f3905e271d948cbff06",
"type": "github"
},
"original": {
@@ -179,11 +192,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1709126324,
- "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
+ "lastModified": 1726560853,
+ "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "d465f4819400de7c8d874d50b982301f28a84605",
+ "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
@@ -232,7 +245,7 @@
},
"flake-utils_2": {
"inputs": {
- "systems": "systems_4"
+ "systems": "systems_5"
},
"locked": {
"lastModified": 1710146030,
@@ -250,7 +263,7 @@
},
"flake-utils_3": {
"inputs": {
- "systems": "systems_5"
+ "systems": "systems_6"
},
"locked": {
"lastModified": 1726560853,
@@ -283,7 +296,7 @@
},
"flake-utils_5": {
"inputs": {
- "systems": "systems_6"
+ "systems": "systems_7"
},
"locked": {
"lastModified": 1694529238,
@@ -302,7 +315,7 @@
"gen-luarc": {
"inputs": {
"flake-parts": "flake-parts",
- "nixpkgs": "nixpkgs_3"
+ "nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1718922730,
@@ -366,11 +379,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1729331287,
- "narHash": "sha256-CiQsoNEOGHkSfG/0JJMegHfwXUAI0PwAIVj3i3FmGao=",
+ "lastModified": 1730790589,
+ "narHash": "sha256-xJ6bQ4VmdTB7A+dMbmOMaZ8a6erB6rkZkB+yzqD7gd4=",
"owner": "helix-editor",
"repo": "helix",
- "rev": "be2884d80061493ab1999d73ffa51dfb4f59639d",
+ "rev": "b53dafe326d51b7f64a1c52379e3d4150cd2991e",
"type": "github"
},
"original": {
@@ -386,11 +399,11 @@
]
},
"locked": {
- "lastModified": 1729321331,
- "narHash": "sha256-KVyQq+ez/oB30/WbdNgVD8g/bda34z8NiU187QKQb74=",
+ "lastModified": 1730837930,
+ "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "122f70545b29ccb922e655b08acfe05bfb44ec68",
+ "rev": "2f607e07f3ac7e53541120536708e824acccfaa8",
"type": "github"
},
"original": {
@@ -407,11 +420,11 @@
]
},
"locked": {
- "lastModified": 1729122023,
- "narHash": "sha256-OJNfAveVogmpSIJ7V3eCSWVGvmWOVQfMQTfOpK163HQ=",
+ "lastModified": 1730065367,
+ "narHash": "sha256-XIsgB/tgaenHorewWrfU2gkDsbkMfPA87Z/LXjeKM7Y=",
"owner": "outfoxxed",
"repo": "hy3",
- "rev": "29293bf7d509cd18e25a59e15841538fcdef580a",
+ "rev": "4c79361db9c065886c163d1cf873889e1e641e44",
"type": "github"
},
"original": {
@@ -463,11 +476,11 @@
"xdph": "xdph"
},
"locked": {
- "lastModified": 1729353802,
- "narHash": "sha256-6OkHeoC3Iva55uVd7MRKS7RLvln8Ma61H9xpcZtU2eY=",
+ "lastModified": 1730969692,
+ "narHash": "sha256-yHY98IWTLDz57TrseUxdh5QnpngcNCjNXTJ2XCeNhtk=",
"ref": "refs/heads/main",
- "rev": "ce3ba798df6bca5be1da4396644a9ef08a2acab4",
- "revCount": 5358,
+ "rev": "e58e97b0a38b8ccc87a4304c9e4e2b37c9966875",
+ "revCount": 5425,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@@ -495,11 +508,11 @@
]
},
"locked": {
- "lastModified": 1728383680,
- "narHash": "sha256-/SeOrMuPEOjngI+MBlzqxQ/sJxkJFIYoef+wJ/PmX2w=",
+ "lastModified": 1730755630,
+ "narHash": "sha256-IA5U8lHx/lnHwbx25dpPpeLbaALqNNjalYCf19tIoj0=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
- "rev": "d05eb1ffba2ebffb5b4e1b407f134a4dcb411a88",
+ "rev": "44859f877739c05d031fcab4a2991ec004fa9bc4",
"type": "github"
},
"original": {
@@ -599,11 +612,11 @@
"systems": "systems_3"
},
"locked": {
- "lastModified": 1729175038,
- "narHash": "sha256-4eTSbHMPUgap+63YW2IJreM//HL/meaGR0r5IOonH9g=",
+ "lastModified": 1730911842,
+ "narHash": "sha256-stAVRv13iACAIJ6mheJOwZXWD24YDupyshaUDovVNi4=",
"owner": "hyprwm",
"repo": "hyprlock",
- "rev": "b8080862869af28bafdafb512682d414d9de063a",
+ "rev": "4fc133c96fa1ad2968cad44f8e9e9e923cd0381a",
"type": "github"
},
"original": {
@@ -612,6 +625,25 @@
"type": "github"
}
},
+ "hyprpanel": {
+ "inputs": {
+ "ags": "ags",
+ "nixpkgs": "nixpkgs_4"
+ },
+ "locked": {
+ "lastModified": 1730958442,
+ "narHash": "sha256-8vmh+ehnDnIenBNibGTPCu8p7cJiFP6bzj0E7pBxgQQ=",
+ "owner": "Jas-SinghFSU",
+ "repo": "HyprPanel",
+ "rev": "dbd932941b46ced4eac5da30994d5af2ca80530c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Jas-SinghFSU",
+ "repo": "HyprPanel",
+ "type": "github"
+ }
+ },
"hyprutils": {
"inputs": {
"nixpkgs": [
@@ -624,11 +656,11 @@
]
},
"locked": {
- "lastModified": 1728941256,
- "narHash": "sha256-WRypmcZ2Bw94lLmcmxYokVOHPJSZ7T06V49QZ4tkZeQ=",
+ "lastModified": 1730968903,
+ "narHash": "sha256-zFvzLXcSm0Ia4XI1SE4FQ9KE63hlGrRWhLtwMolWuR8=",
"owner": "hyprwm",
"repo": "hyprutils",
- "rev": "fd4be8b9ca932f7384e454bcd923c5451ef2aa85",
+ "rev": "3ce0cde8709cdacbfba471f8e828433b58a561e9",
"type": "github"
},
"original": {
@@ -712,7 +744,7 @@
"nix-ld": {
"inputs": {
"nixpkgs": [
- "unstable"
+ "nixpkgs-unstable"
]
},
"locked": {
@@ -731,11 +763,11 @@
},
"nixos-hardware": {
"locked": {
- "lastModified": 1729333370,
- "narHash": "sha256-NU+tYe3QWzDNpB8RagpqR3hNQXn4BNuBd7ZGosMHLL8=",
+ "lastModified": 1730919458,
+ "narHash": "sha256-yMO0T0QJlmT/x4HEyvrCyigGrdYfIXX3e5gWqB64wLg=",
"owner": "nixos",
"repo": "nixos-hardware",
- "rev": "38279034170b1e2929b2be33bdaedbf14a57bfeb",
+ "rev": "e1cc1f6483393634aee94514186d21a4871e78d7",
"type": "github"
},
"original": {
@@ -753,11 +785,11 @@
]
},
"locked": {
- "lastModified": 1729300178,
- "narHash": "sha256-mkAPu2o5u7F/glAAfBzDji726iL1u2pm2fyN1SPWRQk=",
+ "lastModified": 1730453870,
+ "narHash": "sha256-d+kIgz4BvTXb7emjSFV3zjNydGmLUmuluQjdBb51R9o=",
"owner": "nix-community",
"repo": "NixOS-WSL",
- "rev": "42c23a6d5a2a1cbfd3fd137a7ff3d47c6d718033",
+ "rev": "adb6bc4b661a43328752b4575be4968a4990c033",
"type": "github"
},
"original": {
@@ -768,11 +800,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1728888510,
- "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
+ "lastModified": 1730785428,
+ "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
+ "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github"
},
"original": {
@@ -782,6 +814,22 @@
"type": "github"
}
},
+ "nixpkgs-latest-factorio": {
+ "locked": {
+ "lastModified": 1730638571,
+ "narHash": "sha256-z9Wy1jmhFrABK3cEyiVmQtUwOuQW1YPwA8+HMnbEpnE=",
+ "owner": "Daholli",
+ "repo": "nixpkgs",
+ "rev": "d941e9aa2d89f377d45516c5edd765fef15ea90a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Daholli",
+ "repo": "nixpkgs",
+ "rev": "d941e9aa2d89f377d45516c5edd765fef15ea90a",
+ "type": "github"
+ }
+ },
"nixpkgs-lib": {
"locked": {
"lastModified": 1717284937,
@@ -794,13 +842,29 @@
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
}
},
+ "nixpkgs-master": {
+ "locked": {
+ "lastModified": 1731023751,
+ "narHash": "sha256-80FIi/BkulfaTxT76BfDeYyKc/Lo6SIs/4Xm+VlYe4o=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "ed1b9995752699c34e16e5baafaf5e517397bec8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "master",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
"nixpkgs-stable": {
"locked": {
- "lastModified": 1720386169,
- "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
+ "lastModified": 1730741070,
+ "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "194846768975b7ad2c4988bdb82572c00222c0d7",
+ "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
"type": "github"
},
"original": {
@@ -812,11 +876,11 @@
},
"nixpkgs-stable_2": {
"locked": {
- "lastModified": 1728156290,
- "narHash": "sha256-uogSvuAp+1BYtdu6UWuObjHqSbBohpyARXDWqgI12Ss=",
+ "lastModified": 1730602179,
+ "narHash": "sha256-efgLzQAWSzJuCLiCaQUCDu4NudNlHdg2NzGLX5GYaEY=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "17ae88b569bb15590549ff478bab6494dde4a907",
+ "rev": "3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c",
"type": "github"
},
"original": {
@@ -826,6 +890,22 @@
"type": "github"
}
},
+ "nixpkgs-unstable": {
+ "locked": {
+ "lastModified": 1730785428,
+ "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
"nixpkgs_2": {
"locked": {
"lastModified": 1728492678,
@@ -843,6 +923,38 @@
}
},
"nixpkgs_3": {
+ "locked": {
+ "lastModified": 1725634671,
+ "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_4": {
+ "locked": {
+ "lastModified": 1729880355,
+ "narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_5": {
"locked": {
"lastModified": 1718714799,
"narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=",
@@ -858,13 +970,13 @@
"type": "github"
}
},
- "nixpkgs_4": {
+ "nixpkgs_6": {
"locked": {
- "lastModified": 1729256560,
- "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
+ "lastModified": 1730785428,
+ "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
+ "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github"
},
"original": {
@@ -874,13 +986,13 @@
"type": "github"
}
},
- "nixpkgs_5": {
+ "nixpkgs_7": {
"locked": {
- "lastModified": 1728093190,
- "narHash": "sha256-CAZF2NRuHmqTtRTNAruWpHA43Gg2UvuCNEIzabP0l6M=",
+ "lastModified": 1730272153,
+ "narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "e2f08f4d8b3ecb5cf5c9fd9cb2d53bb3c71807da",
+ "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53",
"type": "github"
},
"original": {
@@ -890,13 +1002,13 @@
"type": "github"
}
},
- "nixpkgs_6": {
+ "nixpkgs_8": {
"locked": {
- "lastModified": 1729256560,
- "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
+ "lastModified": 1730200266,
+ "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=",
"owner": "nixos",
"repo": "nixpkgs",
- "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
+ "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd",
"type": "github"
},
"original": {
@@ -917,11 +1029,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
- "lastModified": 1728778939,
- "narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=",
+ "lastModified": 1730814269,
+ "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=",
"owner": "cachix",
"repo": "git-hooks.nix",
- "rev": "ff68f91754be6f3427e4986d7949e6273659be1d",
+ "rev": "d70155fdc00df4628446352fc58adc640cd705c2",
"type": "github"
},
"original": {
@@ -940,26 +1052,29 @@
"hyprland": "hyprland",
"hyprland-plugins": "hyprland-plugins",
"hyprlock": "hyprlock",
+ "hyprpanel": "hyprpanel",
"kickstartnvim": "kickstartnvim",
"nix-ld": "nix-ld",
"nixos-hardware": "nixos-hardware",
"nixos-wsl": "nixos-wsl",
- "nixpkgs": "nixpkgs_4",
+ "nixpkgs": "nixpkgs_6",
+ "nixpkgs-latest-factorio": "nixpkgs-latest-factorio",
+ "nixpkgs-master": "nixpkgs-master",
+ "nixpkgs-unstable": "nixpkgs-unstable",
"snowfall-flake": "snowfall-flake",
"snowfall-lib": "snowfall-lib_2",
"sops-nix": "sops-nix",
- "unstable": "unstable",
"zen-browser": "zen-browser"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
- "lastModified": 1728921748,
- "narHash": "sha256-BOCZ5osPOMh2BPHnkK4sVdTGj7sn47rBn1nxjrzWe5U=",
+ "lastModified": 1730749868,
+ "narHash": "sha256-b8UMpLh61z6T4J1NObustAuFGoJiAKBTaPTrEf3Amts=",
"owner": "rust-lang",
"repo": "rust-analyzer",
- "rev": "0319586ef2a2636f6d6b891690b7ebebf4337c85",
+ "rev": "b51f9bc736dc0472481a47d7c05de2901323e543",
"type": "github"
},
"original": {
@@ -971,21 +1086,17 @@
},
"rust-overlay": {
"inputs": {
- "flake-utils": [
- "helix",
- "flake-utils"
- ],
"nixpkgs": [
"helix",
"nixpkgs"
]
},
"locked": {
- "lastModified": 1709604635,
- "narHash": "sha256-le4fwmWmjGRYWwkho0Gr7mnnZndOOe4XGbLw68OvF40=",
+ "lastModified": 1728268235,
+ "narHash": "sha256-lJMFnMO4maJuNO6PQ5fZesrTmglze3UFTTBuKGwR1Nw=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "e86c0fb5d3a22a5f30d7f64ecad88643fe26449d",
+ "rev": "25685cc2c7054efc31351c172ae77b21814f2d42",
"type": "github"
},
"original": {
@@ -998,7 +1109,7 @@
"inputs": {
"flake-compat": "flake-compat_3",
"nixpkgs": [
- "unstable"
+ "nixpkgs-unstable"
],
"snowfall-lib": "snowfall-lib"
},
@@ -1049,11 +1160,11 @@
]
},
"locked": {
- "lastModified": 1719005984,
- "narHash": "sha256-mpFl3Jv4fKnn+5znYXG6SsBjfXHJdRG5FEqNSPx0GLA=",
+ "lastModified": 1730136121,
+ "narHash": "sha256-tfVayj13Zw+zzOKrmJhnvBod7Hdb9ixBR6/4GUlyMA0=",
"owner": "snowfallorg",
"repo": "lib",
- "rev": "c6238c83de101729c5de3a29586ba166a9a65622",
+ "rev": "dd348182c1a010993e68004eada86cf0341fe2c4",
"type": "github"
},
"original": {
@@ -1064,15 +1175,15 @@
},
"sops-nix": {
"inputs": {
- "nixpkgs": "nixpkgs_5",
+ "nixpkgs": "nixpkgs_7",
"nixpkgs-stable": "nixpkgs-stable_2"
},
"locked": {
- "lastModified": 1728345710,
- "narHash": "sha256-lpunY1+bf90ts+sA2/FgxVNIegPDKCpEoWwOPu4ITTQ=",
+ "lastModified": 1731008979,
+ "narHash": "sha256-yN1NxvmqV8UltLkqYBWTeZNgpD/eyh/7LM58caHiEfE=",
"owner": "Mic92",
"repo": "sops-nix",
- "rev": "06535d0e3d0201e6a8080dd32dbfde339b94f01b",
+ "rev": "fe63071416471abdab06caa234122932a7c4b980",
"type": "github"
},
"original": {
@@ -1128,16 +1239,16 @@
},
"systems_4": {
"locked": {
- "lastModified": 1681028828,
- "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "lastModified": 1689347949,
+ "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
- "repo": "default",
- "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "repo": "default-linux",
+ "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
- "repo": "default",
+ "repo": "default-linux",
"type": "github"
}
},
@@ -1171,19 +1282,18 @@
"type": "github"
}
},
- "unstable": {
+ "systems_7": {
"locked": {
- "lastModified": 1729256560,
- "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
- "owner": "nixos",
- "repo": "nixpkgs",
- "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
- "owner": "nixos",
- "ref": "nixos-unstable",
- "repo": "nixpkgs",
+ "owner": "nix-systems",
+ "repo": "default",
"type": "github"
}
},
@@ -1215,11 +1325,11 @@
]
},
"locked": {
- "lastModified": 1728166987,
- "narHash": "sha256-w6dVTguAn9zJ+7aPOhBQgDz8bn6YZ7b56cY8Kg5HJRI=",
+ "lastModified": 1730743262,
+ "narHash": "sha256-iTLqj3lU8kFehPm5tXpctzkD274t/k1nwSSq3qCWXeg=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
- "rev": "fb9c8d665af0588bb087f97d0f673ddf0d501787",
+ "rev": "09b23cef06fe248e61cec8862c04b9bcb62f4b6d",
"type": "github"
},
"original": {
@@ -1230,14 +1340,14 @@
},
"zen-browser": {
"inputs": {
- "nixpkgs": "nixpkgs_6"
+ "nixpkgs": "nixpkgs_8"
},
"locked": {
- "lastModified": 1729334402,
- "narHash": "sha256-elpcQZC6VoZC4jKk09upN2cGPW4j+OjDpD2HjvYe9Z4=",
+ "lastModified": 1730444716,
+ "narHash": "sha256-WtqSpYQyG5ad+GK7B0ViDSl0NolHp7yM24TacUslBXE=",
"owner": "ch4og",
"repo": "zen-browser-flake",
- "rev": "d5adb0791f5cf974b2b480f5d62075e9b3e7dd80",
+ "rev": "d3c639ee7bff20f799f443e18fffa6331a71cd3a",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 67190b7..3f0ed80 100644
--- a/flake.nix
+++ b/flake.nix
@@ -4,7 +4,10 @@
inputs = {
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
- unstable.url = "github:nixos/nixpkgs/nixos-unstable";
+ nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
+
+ nixpkgs-master.url = "github:nixos/nixpkgs/master";
+ nixpkgs-latest-factorio.url = "github:Daholli/nixpkgs/d941e9aa2d89f377d45516c5edd765fef15ea90a";
home-manager = {
url = "github:nix-community/home-manager/master";
@@ -22,7 +25,7 @@
# Run unpatched dynamically compiled binaries
nix-ld = {
url = "github:Mic92/nix-ld";
- inputs.nixpkgs.follows = "unstable";
+ inputs.nixpkgs.follows = "nixpkgs-unstable";
};
###
@@ -39,6 +42,8 @@
inputs.hyprland.follows = "hyprland";
};
+ hyprpanel.url = "github:Jas-SinghFSU/HyprPanel";
+
###
# Snowfall dependencies
snowfall-lib = {
@@ -48,9 +53,10 @@
snowfall-flake = {
url = "github:snowfallorg/flake";
- inputs.nixpkgs.follows = "unstable";
+ inputs.nixpkgs.follows = "nixpkgs-unstable";
};
+ # still not sure if I like helix or nvim more, for now helix does mostly everything I need it to
kickstartnvim = {
url = "github:Daholli/kickstart-nix-nvim";
inputs.nixpkgs.follows = "nixpkgs";
@@ -109,6 +115,7 @@
overlays = with inputs; [
snowfall-flake.overlays.default
kickstartnvim.overlays.default
+ hyprpanel.overlay
];
systems.modules.nixos = with inputs; [
diff --git a/homes/x86_64-linux/cholli@loptland/default.nix b/homes/x86_64-linux/cholli@loptland/default.nix
new file mode 100644
index 0000000..5f2a75c
--- /dev/null
+++ b/homes/x86_64-linux/cholli@loptland/default.nix
@@ -0,0 +1,22 @@
+{
+ lib,
+ pkgs,
+ config,
+ osConfig ? { },
+ format ? "unknown",
+ ...
+}:
+with lib.wyrdgard;
+{
+ wyrdgard = {
+ apps = {
+ kitty = enabled;
+ };
+
+ tools = {
+ direnv = enabled;
+ };
+ };
+
+ home.stateVersion = "24.11";
+}
diff --git a/modules/home/apps/cli-apps/fish/default.nix b/modules/home/apps/cli-apps/fish/default.nix
index 747625b..3f02d74 100644
--- a/modules/home/apps/cli-apps/fish/default.nix
+++ b/modules/home/apps/cli-apps/fish/default.nix
@@ -38,9 +38,8 @@ in
'';
shellAliases = {
vim = "hx";
- ls = "colorls --gs -A";
- ll = "ls -l";
- lt = "colorls --tree";
+ ls = "eza -lh --icons --git";
+ lss = "ls --total-size";
};
plugins = with pkgs.fishPlugins; [
{
diff --git a/modules/home/apps/kitty/default.nix b/modules/home/apps/kitty/default.nix
index b1d1268..cfff92f 100644
--- a/modules/home/apps/kitty/default.nix
+++ b/modules/home/apps/kitty/default.nix
@@ -17,6 +17,27 @@ in
config = mkIf cfg.enable {
home.packages = [ pkgs.kitty ];
+ home.sessionVariables.TERMINAL = "kitty";
+
+ # TODO: move this to a thunar specific module
+ home.file.".config/Thunar/uca.xml".text = ''
+
+
+
+ kitty
+ Open Kitty here
+
+ 1726095927116900-1
+ ${pkgs.kitty}/bin/kitty %f
+ Example for a custom action
+
+ *
+
+
+
+
+ '';
+
programs.kitty = {
enable = true;
themeFile = "tokyo_night_night";
diff --git a/modules/nixos/apps/cli-apps/helix/default.nix b/modules/nixos/apps/cli-apps/helix/default.nix
index d81fb6f..5610350 100644
--- a/modules/nixos/apps/cli-apps/helix/default.nix
+++ b/modules/nixos/apps/cli-apps/helix/default.nix
@@ -18,7 +18,7 @@ let
in
{
options.${namespace}.apps.cli-apps.helix = {
- enable = mkEnableOption "Whether to enable nixvim or not";
+ enable = mkEnableOption "Whether to enable helix or not";
};
config = mkIf cfg.enable {
@@ -30,124 +30,119 @@ in
};
${namespace} = {
- home = {
- extraOptions = {
- programs.helix = {
- enable = true;
- package = helix-pkg;
- defaultEditor = true;
- settings = {
- theme = "tokyonight";
- editor = {
- auto-format = true;
- line-number = "relative";
+ home.extraOptions = {
+ programs.helix = {
+ enable = true;
+ package = helix-pkg;
+ defaultEditor = true;
+ settings = {
+ theme = "tokyonight";
+ editor = {
+ auto-format = true;
+ line-number = "relative";
- lsp = {
- display-inlay-hints = true;
- display-messages = true;
- };
-
- cursor-shape = {
- normal = "block";
- insert = "bar";
- select = "underline";
- };
-
- indent-guides = {
- render = true;
- character = "|";
- };
-
- statusline = {
- left = [
- "mode"
- "spinner"
- ];
- center = [ "file-name" ];
- right = [
- "workspace-diagnostics"
- "diagnostics"
- "selections"
- "position"
- "total-line-numbers"
- "spacer"
- "file-encoding"
- "file-line-ending"
- "file-type"
- ];
- separator = "│";
- };
+ lsp = {
+ display-inlay-hints = true;
+ display-messages = true;
};
- keys = {
- normal = {
- esc = [
- "collapse_selection"
- "keep_primary_selection"
- ];
- space = {
- space = "file_picker";
- };
+ cursor-shape = {
+ normal = "block";
+ insert = "bar";
+ select = "underline";
+ };
- C-j = [
- "move_line_down"
- "move_line_down"
- "move_line_down"
- "move_line_down"
- "move_line_down"
- ];
- C-k = [
- "move_line_up"
- "move_line_up"
- "move_line_up"
- "move_line_up"
- "move_line_up"
- ];
- };
+ indent-guides = {
+ render = true;
+ character = "|";
+ };
+
+ statusline = {
+ left = [
+ "mode"
+ "spinner"
+ ];
+ center = [ "file-name" ];
+ right = [
+ "workspace-diagnostics"
+ "diagnostics"
+ "selections"
+ "position"
+ "total-line-numbers"
+ "spacer"
+ "file-encoding"
+ "file-line-ending"
+ "file-type"
+ ];
+ separator = "│";
};
};
- languages = {
- language = [
- {
- name = "nix";
- auto-format = true;
- formatter.command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
- language-servers = [
- "nixd"
- "nil"
- ];
- }
- {
- # provided by the dev environment in the rust shell
- name = "rust";
- auto-format = true;
- formatter.command = "cargo fmt";
- language-servers = [ "rust-analyzer" ];
- }
- ];
+ keys = {
+ normal = {
+ esc = [
+ "collapse_selection"
+ "keep_primary_selection"
+ ];
+ space = {
+ space = "file_picker";
+ };
- language-server = {
- nil = {
- command = "${pkgs.nil}/bin/nil";
- };
- nixd = {
- command = "${pkgs.nixd}/bin/nixd";
- };
- marksman = {
- command = "${pkgs.marksman}/bin/marksman";
- };
- vscode-json-language-server = {
- command = "${pkgs.vscode-langservers-extracted}/bin/vscode-json-language-server";
- args = [ "--stdio" ];
- config.provideFormatter = true;
- config.json.validate.enable = true;
- };
- vscode-css-language-server = {
- command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server";
- args = [ "--stdio" ];
- config.provideFormatter = true;
- };
+ C-j = [
+ "move_line_down"
+ "move_line_down"
+ "move_line_down"
+ "move_line_down"
+ "move_line_down"
+ ];
+ C-k = [
+ "move_line_up"
+ "move_line_up"
+ "move_line_up"
+ "move_line_up"
+ "move_line_up"
+ ];
+ };
+ };
+ };
+
+ languages = {
+ language = [
+ {
+ name = "nix";
+ auto-format = true;
+ formatter.command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
+ language-servers = [
+ "nixd"
+ "nil"
+ ];
+ }
+ {
+ # provided by the dev environment in the rust shell
+ name = "rust";
+ auto-format = true;
+ formatter.command = "cargo fmt";
+ language-servers = [ "rust-analyzer" ];
+ }
+ ];
+
+ language-server = {
+ nixd = {
+ command = "${pkgs.nixd}/bin/nixd";
+ };
+ marksman = {
+ command = "${pkgs.marksman}/bin/marksman";
+ };
+ vscode-json-language-server = {
+ command = "${pkgs.vscode-langservers-extracted}/bin/vscode-json-language-server";
+ args = [ "--stdio" ];
+ config.provideFormatter = true;
+ config.json.validate.enable = true;
+ };
+ vscode-css-language-server = {
+ command = "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server";
+ args = [ "--stdio" ];
+ config.provideFormatter = true;
};
};
};
diff --git a/modules/nixos/desktop/addons/hypridle/default.nix b/modules/nixos/desktop/addons/hypridle/default.nix
new file mode 100644
index 0000000..a242827
--- /dev/null
+++ b/modules/nixos/desktop/addons/hypridle/default.nix
@@ -0,0 +1,45 @@
+{
+ config,
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib) mkIf mkEnableOption;
+
+ cfg = config.${namespace}.desktop.addons.hypridle;
+
+ username = config.${namespace}.user.name;
+in
+{
+ options.${namespace}.desktop.addons.hypridle = {
+ enable = mkEnableOption "Enable HyprIdle";
+ };
+
+ config = mkIf cfg.enable {
+ snowfallorg.users.${username}.home.config = {
+ services.hypridle = {
+ enable = true;
+ settings = {
+ general = {
+ after_sleep_cmd = "hyprctl dispatch dpms on";
+ ignore_dbus_inhibit = false;
+ lock_cmd = "hyprlock";
+ };
+
+ listener = [
+ {
+ timeout = 900;
+ on-timeout = "loginctl lock-session";
+ }
+ {
+ timeout = 1200;
+ on-timeout = "hyprctl dispatch dpms off";
+ on-resume = "hyprctl dispatch dpms on";
+ }
+ ];
+ };
+ };
+ };
+ };
+}
diff --git a/modules/nixos/desktop/addons/hyprlock/hyprlock_preview.png b/modules/nixos/desktop/addons/hyprlock/hyprlock_preview.png
index 120de91..65071b1 100644
Binary files a/modules/nixos/desktop/addons/hyprlock/hyprlock_preview.png and b/modules/nixos/desktop/addons/hyprlock/hyprlock_preview.png differ
diff --git a/modules/nixos/desktop/addons/hyprpanel/default.nix b/modules/nixos/desktop/addons/hyprpanel/default.nix
new file mode 100644
index 0000000..32b62da
--- /dev/null
+++ b/modules/nixos/desktop/addons/hyprpanel/default.nix
@@ -0,0 +1,614 @@
+{
+ config,
+ lib,
+ namespace,
+ pkgs,
+ ...
+}:
+let
+ inherit (lib)
+ mkIf
+ mkEnableOption
+ mkMerge
+ mkOption
+ literalExpression
+ ;
+
+ cfg = config.${namespace}.desktop.addons.hyprpanel;
+ username = config.${namespace}.user.name;
+
+ settingsFormat = pkgs.formats.json { };
+
+ iconColor = "#242438";
+
+ light-cyan = "#73daca";
+ lightBlue = "#414868";
+ medium-blue = "#9aa5ce";
+ cyan-blue = "#7dcfff";
+ navy-blue = "#24283b";
+ dark-blue = "#1a1b26";
+ dark-blue-gray = "565f89";
+ dark-blue-yankees = "#272a3d";
+ blue-magenta = "#181825";
+
+ lightPurple = "#bb9af7";
+
+ lightRed = "#f7768e";
+ red = "#c0caf5";
+
+ lightGreen = "#9ece6a";
+ yellow = "#e0af68";
+
+ settings = {
+ tear = true;
+ scalingPriority = "hyprland";
+ font.name = "CodeNewRoman Nerd Font Mono";
+
+ bar = {
+ customModules = {
+ updates.pollingInterval = 1440000;
+ ram = {
+ labelType = "used/total";
+ icon = " ";
+ };
+ cpu = {
+ label = true;
+ leftClick = "kitty --hold btop";
+ icon = " ";
+ };
+ };
+ layouts = {
+ "0" = {
+ left = [
+ "workspaces"
+ ];
+ middle = [
+ "windowtitle"
+ ];
+ right = [
+ "clock"
+ ];
+ };
+ "1" = {
+ left = [
+ "dashboard"
+ "workspaces"
+ ];
+ middle = [
+ "windowtitle"
+ ];
+ right = [
+ "volume"
+ "bluetooth"
+ "battery"
+ "systray"
+ "cpu"
+ "ram"
+ "clock"
+ "notifications"
+ ];
+ };
+ };
+ workspaces = {
+ showAllActive = true;
+ show_icons = false;
+ numbered_active_indicator = "underline";
+ show_numbered = true;
+ showWsIcons = false;
+ showApplicationIcons = false;
+ hideUnoccupied = true;
+ };
+ launcher = {
+ icon = "";
+ rightClick = "hyprpanel -t settings-dialog";
+ };
+ scrollSpeed = 0;
+ windowtitle = {
+ class_name = false;
+ custom_title = false;
+ icon = false;
+ label = true;
+ title_map = [
+
+ ];
+ truncation = true;
+ };
+ network = {
+ label = false;
+ truncation = false;
+ };
+ clock.format = "%a %b %d %H:%M:%S";
+ notifications.show_total = true;
+ };
+
+ menus = {
+ clock.time.military = true;
+ dashboard = {
+ powermenu.avatar.image = "/home/cholli/Pictures/profile.png";
+
+ shortcuts.enabled = false;
+ directories.left = {
+ directory1.command = "kitty $HOME/Downloads";
+ directory3.command = "kitty $HOME/projects";
+ };
+
+ stats = {
+ enable_gpu = true;
+ enabled = false;
+ };
+ controls.enabled = false;
+ };
+ bluetooth = {
+ showBattery = true;
+ batteryState = "always";
+ };
+ transition = "crossfade";
+ };
+
+ theme = {
+ bar = {
+ floating = true;
+ outer_spacing = "0.2em";
+ buttons = {
+ enableBorders = true;
+
+ workspaces = {
+ enableBorder = false;
+ fontSize = "1.2em";
+ smartHighlight = false;
+ active = "#f7768e";
+ occupied = "#f7768e";
+ available = "#7dcfff";
+ hover = "#f7768e";
+ background = "#272a3d";
+ numbered_active_highlighted_text_color = "#181825";
+ numbered_active_underline_color = "#c678dd";
+ border = "#f7768e";
+ };
+ modules = {
+ power = {
+ icon = "#181825";
+ icon_background = "#f7768e";
+ background = "#272a3d";
+ border = "#f7768e";
+ };
+ ram = {
+ enableBorder = false;
+ spacing = "0.45em";
+ icon = "#181825";
+ icon_background = "#e0af68";
+ text = "#e0af68";
+ background = "#272a3d";
+ border = "#e0af68";
+ };
+ cpu = {
+ enableBorder = false;
+ background = "#272a3d";
+ icon = "#181825";
+ icon_background = "#f7768e";
+ text = "#f7768e";
+ border = "#f7768e";
+ };
+ submap = {
+ background = "#272a3d";
+ text = "#73daca";
+ border = "#73daca";
+ icon = "#181825";
+ icon_background = "#73daca";
+ };
+ };
+
+ style = "split";
+ icon = "#242438";
+ icon_background = "#bb9af7";
+ text = "#bb9af7";
+ hover = "#414868";
+ background = "#272a3d";
+ dashboard = {
+ enableBorder = false;
+ icon = "#272a3d";
+ background = "#e0af68";
+ border = "#e0af68";
+ };
+ volume = {
+ icon = "#272a3d";
+ text = "#f7768e";
+ background = "#272a3d";
+ icon_background = "#f7768e";
+ border = "#f7768e";
+ };
+ notifications = {
+ total = "#bb9af7";
+ icon = "#272a3d";
+ background = "#272a3d";
+ icon_background = "#bb9af7";
+ border = "#bb9af7";
+ };
+ clock = {
+ icon = "#272a3d";
+ text = "#f7768e";
+ background = "#272a3d";
+ icon_background = "#f7768e";
+ border = "#f7768e";
+ };
+ systray = {
+ background = "#272a3d";
+ border = "#414868";
+ customIcon = "#c0caf5";
+ };
+ bluetooth = {
+ icon = "#272a3d";
+ text = "#7dcfff";
+ background = "#272a3d";
+ icon_background = "#7dcfff";
+ border = "#7dcfff";
+ };
+ windowtitle = {
+ icon = "#272a3d";
+ text = "#f7768e";
+ background = "#272a3d";
+ icon_background = "#f7768e";
+ border = "#f7768e";
+ enableBorder = false;
+ };
+ radius = "0.3em";
+ borderSize = "0.0em";
+ padding_x = "0.7rem";
+ padding_y = "0.2rem";
+ };
+
+ menus = {
+ monochrome = false;
+ opacity = 95;
+ menu = {
+ dashboard = {
+ powermenu = {
+ shutdown = "#f7768e";
+ confirmation = {
+ deny = "#f7768e";
+ confirm = "#9ece6a";
+ button_text = "#1a1b26";
+ body = "#c0caf5";
+ label = "#bb9af7";
+ border = "#414868";
+ background = "#1a1b26";
+ card = "#24283b";
+ };
+ sleep = "#7dcfff";
+ logout = "#9ece6a";
+ restart = "#e0af68";
+ };
+ monitors = {
+ ram = {
+ label = "#e0af68";
+ bar = "#e0af68";
+ icon = "#e0af68";
+ };
+ cpu = {
+ label = "#f7768e";
+ bar = "#f7768e";
+ icon = "#f7768e";
+ };
+ bar_background = "#414868";
+ };
+ directories = {
+ right = {
+ bottom.color = "#bb9af7";
+ middle.color = "#bb9af7";
+ top.color = "#73daca";
+ };
+ left = {
+ bottom.color = "#f7768e";
+ middle.color = "#e0af68";
+ top.color = "#f7768e";
+ };
+ };
+ controls = {
+ input = {
+ text = "#1a1b26";
+ background = "#f7768e";
+ };
+ volume = {
+ text = "#1a1b26";
+ background = "#f7768e";
+ };
+ notifications = {
+ text = "#1a1b26";
+ background = "#e0af68";
+ };
+ bluetooth = {
+ text = "#1a1b26";
+ background = "#7dcfff";
+ };
+ disabled = "#414868";
+ };
+ profile.name = "#f7768e";
+ border.color = "#414868";
+ background.color = "#1a1b26";
+ card.color = "#24283b";
+ };
+ notifications = {
+ switch = {
+ puck = "#565f89";
+ disabled = "#565f89";
+ enabled = "#bb9af7";
+ };
+ clear = "#f7768e";
+ switch_divider = "#414868";
+ border = "#414868";
+ card = "#24283b";
+ background = "#1a1b26";
+ no_notifications_label = "#414868";
+ label = "#bb9af7";
+ scrollbar.color = "#bb9af7";
+ pager = {
+ button = "#bb9af7";
+ label = "#565f89";
+ background = "#1a1b26";
+ };
+ };
+ clock = {
+ text = "#c0caf5";
+ border.color = "#414868";
+ background.color = "#1a1b26";
+ card.color = "#24283b";
+
+ calendar = {
+ contextdays = "#414868";
+ days = "#c0caf5";
+ currentday = "#f7768e";
+ paginator = "#f7768e";
+ weekdays = "#f7768e";
+ yearmonth = "#73daca";
+ };
+ time = {
+ timeperiod = "#73daca";
+ time = "#f7768e";
+ };
+ };
+ systray = {
+ dropdownmenu.divider = "#24283b";
+ dropdownmenu.text = "#c0caf5";
+ dropdownmenu.background = "#1a1b26";
+ };
+ bluetooth = {
+ iconbutton = {
+ active = "#7dcfff";
+ passive = "#c0caf5";
+ };
+ icons = {
+ active = "#7dcfff";
+ passive = "#565f89";
+ };
+ listitems = {
+ active = "#7dcfff";
+ passive = "#c0caf5";
+ };
+ switch = {
+ puck = "#565f89";
+ disabled = "#565f89";
+ enabled = "#7dcfff";
+ };
+ switch_divider = "#414868";
+ status = "#565f89";
+ text = "#c0caf5";
+ label.color = "#7dcfff";
+ border.color = "#414868";
+ background.color = "#1a1b26";
+ card.color = "#24283b";
+ };
+ volume = {
+ text = "#c0caf5";
+ card.color = "#24283b";
+ label.color = "#f7768e";
+ input_slider = {
+ puck = "#414868";
+ backgroundhover = "#414868";
+ background = "#565f89";
+ primary = "#f7768e";
+ };
+ audio_slider = {
+ puck = "#414868";
+ backgroundhover = "#414868";
+ background = "#565f89";
+ primary = "#f7768e";
+ };
+ icons = {
+ active = "#f7768e";
+ passive = "#565f89";
+ };
+ iconbutton = {
+ active = "#f7768e";
+ passive = "#c0caf5";
+ };
+ listitems = {
+ active = "#f7768e";
+ passive = "#c0caf5";
+ };
+ border.color = "#414868";
+ background.color = "#1a1b26";
+ };
+ media = {
+ card.color = "#24283b";
+ slider = {
+ puck = "#565f89";
+ backgroundhover = "#414868";
+ background = "#565f89";
+ primary = "#f7768e";
+ };
+ buttons = {
+ text = "#1a1b26";
+ background = "#bb9af7";
+ enabled = "#73daca";
+ inactive = "#414868";
+ };
+ border.color = "#414868";
+ background.color = "#1a1b26";
+ album = "#f7768e";
+ artist = "#73daca";
+ song = "#bb9af7";
+ };
+ power = {
+ border.color = "#414868";
+ buttons = {
+ sleep = {
+ icon_background = "#7dcfff";
+ text = "#7dcfff";
+ background = "#24283b";
+ icon = "#1a1b26";
+ };
+ restart = {
+ text = "#e0af68";
+ icon_background = "#e0af68";
+ icon = "#1a1b26";
+ background = "#24283b";
+ };
+ shutdown = {
+ icon = "#1a1b26";
+ background = "#24283b";
+ icon_background = "#f7768e";
+ text = "#f7768e";
+ };
+ logout = {
+ icon = "#1a1b26";
+ background = "#24283b";
+ text = "#9ece6a";
+ icon_background = "#9ece6a";
+ };
+ };
+ background.color = "#1a1b26";
+ scaling = 90;
+ };
+ };
+ background = "#1a1b26";
+ text = "#c0caf5";
+ border.color = "#414868";
+ popover = {
+ text = "#bb9af7";
+ background = "#1a1b26";
+ border = "#1a1b26";
+ };
+ tooltip = {
+ text = "#c0caf5";
+ background = "#1a1b26";
+ };
+ dropdownmenu = {
+ divider = "#24283b";
+ text = "#c0caf5";
+ background = "#1a1b26";
+ };
+ slider = {
+ puck = "#565f89";
+ backgroundhover = "#414868";
+ background = "#565f89";
+ primary = "#bb9af7";
+ };
+ progressbar = {
+ background = "#414868";
+ foreground = "#bb9af7";
+ };
+ iconbuttons = {
+ active = "#bb9af7";
+ passive = "#c0caf5";
+ };
+ buttons = {
+ text = "#1a1b26";
+ disabled = "#565f89";
+ active = "#f7768e";
+ default = "#bb9af7";
+ };
+ switch = {
+ puck = "#565f89";
+ disabled = "#565f89";
+ enabled = "#bb9af7";
+ };
+ icons = {
+ active = "#bb9af7";
+ passive = "#414868";
+ };
+ listitems = {
+ active = "#bb9af7";
+ passive = "#c0caf5";
+ };
+ label = "#bb9af7";
+ feinttext = "#414868";
+ dimtext = "#414868";
+ cards = "#24283b";
+ check_radio_button.background = "#3b4261";
+ check_radio_button.active = "#bb9af7";
+ };
+ transparent = true;
+ background = "#1a1b26";
+ margin_sides = "0.0em";
+ location = "top";
+ };
+ osd = {
+ monitor = 1;
+ muted_zero = true;
+ label = "#bb9af7";
+ icon = "#1a1b26";
+ bar_overflow_color = "#f7768e";
+ bar_empty_color = "#414868";
+ bar_color = "#bb9af7";
+ icon_container = "#bb9af7";
+ bar_container = "#1a1b26";
+ };
+ notification = {
+ close_button.label = "#1a1b26";
+ close_button.background = "#f7768e";
+ labelicon = "#bb9af7";
+ text = "#c0caf5";
+ time = "#9aa5ce";
+ border = "#565f89";
+ label = "#bb9af7";
+ actions.text = "#24283b";
+ actions.background = "#bb9af7";
+ background = "#1a1b26";
+ };
+ font.size = "1.3rem";
+ };
+ notifications = {
+ monitor = 1;
+ active_monitor = false;
+ };
+ wallpaper = {
+ pywal = false;
+ image = "/home/cholli/Pictures/firewatch.jpg";
+ enable = false;
+ };
+ };
+in
+{
+ options.${namespace}.desktop.addons.hyprpanel = {
+ enable = mkEnableOption "Enable HyprIdle";
+ extraSettings = mkOption {
+ default = { };
+ inherit (settingsFormat) type;
+ description = ''
+ Additional Options to pass to hyprpanel
+ '';
+ example = literalExpression ''
+ {
+
+ }
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+
+ snowfallorg.users.${username}.home.config = {
+ wayland.windowManager.hyprland.settings.exec-once = [
+ "${pkgs.hyprpanel}/bin/hyprpanel"
+ ];
+ };
+
+ ${namespace}.home.file = {
+ ".cache/ags/hyprpanel/options_test.json" = {
+
+ # source = pkgs.formats.json.generate "options.json" settings;
+ text = builtins.toJSON settings;
+ };
+ };
+ };
+}
diff --git a/modules/nixos/desktop/addons/hyprpaper/default.nix b/modules/nixos/desktop/addons/hyprpaper/default.nix
new file mode 100644
index 0000000..5f19b72
--- /dev/null
+++ b/modules/nixos/desktop/addons/hyprpaper/default.nix
@@ -0,0 +1,41 @@
+{
+ config,
+ lib,
+ namespace,
+ ...
+}:
+let
+ inherit (lib) mkIf mkEnableOption;
+
+ cfg = config.${namespace}.desktop.addons.hyprpaper;
+
+ username = config.${namespace}.user.name;
+ picture-path = "/home/${username}/Pictures/firewatch.jpg";
+in
+{
+ options.${namespace}.desktop.addons.hyprpaper = {
+ enable = mkEnableOption "Enable Hyprpaper";
+ };
+
+ config = mkIf cfg.enable {
+ snowfallorg.users.${username}.home.config = {
+ home.file = {
+ # https://www.reddit.com/r/WidescreenWallpaper/comments/13hib3t/purple_firewatch_3840x1620/
+ "Pictures/firewatch.jpg".source = ./firewatch.jpg;
+ };
+
+ wayland.windowManager.hyprland.settings.exec-once = [
+ ''hyprctl hyprpaper wallpaper "DP-2,${picture-path}"''
+ ];
+
+ services.hyprpaper = {
+ enable = true;
+ settings = {
+ preload = [ picture-path ];
+ wallpaper = "DP-2,${picture-path}";
+ };
+ };
+ };
+
+ };
+}
diff --git a/modules/nixos/desktop/addons/hyprpaper/firewatch.jpg b/modules/nixos/desktop/addons/hyprpaper/firewatch.jpg
new file mode 100644
index 0000000..dd7aa6d
--- /dev/null
+++ b/modules/nixos/desktop/addons/hyprpaper/firewatch.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b39ad0b7074adcd91afbe9aeef10d48a3dc4c1ff28b1c397de812e876412595b
+size 1136218
diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix
index 090ab58..06bfffd 100644
--- a/modules/nixos/desktop/default.nix
+++ b/modules/nixos/desktop/default.nix
@@ -6,10 +6,17 @@
...
}:
let
+ inherit (lib) mkIf mkEnableOption;
user = config.${namespace}.user.name;
+
+ cfg = config.${namespace}.desktop.hyprland;
in
{
- config = {
+ options.${namespace}.desktop = {
+ enable = mkEnableOption "Whether to enable desktop theming";
+ };
+
+ config = mkIf cfg.enable {
${namespace}.home.extraOptions = {
dconf.settings = {
"org/gnome/desktop/interface" = {
diff --git a/modules/nixos/desktop/hyprland/default.nix b/modules/nixos/desktop/hyprland/default.nix
index 491332a..bbeef49 100644
--- a/modules/nixos/desktop/hyprland/default.nix
+++ b/modules/nixos/desktop/hyprland/default.nix
@@ -30,7 +30,7 @@ let
hyprctl dispatch workspace $running
else
# always open on w/space 4
- hyprctl dispatch workspace 4
+ hyprctl dispatch workspace 9
1password&
fi
'';
@@ -47,19 +47,30 @@ in
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
- polkit-kde-agent
+ # Auth Agent
+ hyprpolkitagent
+ # Notification daemon
+ libnotify
+
+ # Wayland Utilities
wl-clipboard
- wl-screenrec
wlr-randr
- grimblast
- xfce.thunar
- dunst
+ # Screenshot Utility
+ grimblast
+
+ # File Manager
+ xfce.thunar
+
+ # clean sddm theme
elegant-sddm
+ # json cli parser for bash script to focus 1password
jq
focus-1password
+
+ hyprpanel
];
programs = {
@@ -79,13 +90,18 @@ in
};
${namespace} = {
- desktop.addons = {
- waybar = enabled;
- rofi = {
- enable = true;
- package = pkgs.rofi-wayland-unwrapped;
+ desktop = {
+ enable = true;
+ addons = {
+ rofi = {
+ enable = true;
+ package = pkgs.rofi-wayland-unwrapped;
+ };
+ hypridle = enabled;
+ hyprlock = enabled;
+ hyprpanel = enabled;
+ hyprpaper = enabled;
};
- hyprlock = enabled;
};
nix.extra-substituters.${cachix-url} = {
@@ -108,20 +124,17 @@ in
];
exec-once = [
- "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
- "waybar"
- "dunst"
- "systemctl --user start plasma-polkit-agent"
+ "systemctl --user start hyprpolkitagent"
- "[workspace 3 silent] steam"
- "[workspace 2 silent] discord"
- "[workspace 4 silent] 1password"
+ "[workspace 2 silent] steam --disable-gpu-compositing" # nvidia pls let me have nice things
+ "[workspace 8 silent] discord --disable-gpu-compositing"
+ "[workspace 9 silent] 1password"
"[workspace 1 silent] zen"
];
windowrulev2 = [
#stean is a bit wierd, since it opens in multiple phases, so just move the last window to the workspace
- "workspace 3 silent, class:^(steam)$, title:^(Steam)"
+ "workspace 2 silent, class:^(steam)$, title:^(Steam)"
# make xwaylandvideobridge window invisible
"opacity 0.0 override, class:^(xwaylandvideobridge)$"
@@ -168,13 +181,16 @@ in
popups_ignorealpha = 0.2;
};
- drop_shadow = true;
- shadow_ignore_window = true;
- shadow_offset = "0 15";
- shadow_range = 100;
- shadow_render_power = 2;
- shadow_scale = 0.97;
- "col.shadow" = "rgba(00000055)";
+ shadow = {
+ enabled = true;
+ range = 100;
+ render_power = 2;
+ ignore_window = true;
+ color = "rgba(00000055)";
+ offset = "0 15";
+ scale = 0.97;
+ };
+
};
animations = {
diff --git a/modules/nixos/security/acme/default.nix b/modules/nixos/security/acme/default.nix
new file mode 100644
index 0000000..a574009
--- /dev/null
+++ b/modules/nixos/security/acme/default.nix
@@ -0,0 +1,75 @@
+{
+ config,
+ lib,
+ namespace,
+ pkgs,
+ ...
+}:
+with lib;
+with lib.${namespace};
+let
+ cfg = config.${namespace}.security.acme;
+in
+{
+ options.${namespace}.security.acme = with lib.types; {
+ enable = mkEnableOption "Enable sops (Default true)";
+ email = mkOpt str config.${namespace}.user.email "The email to use.";
+ sopsFile = mkOption {
+ type = lib.types.path;
+ default = lib.snowfall.fs.get-file "secrets/secrets.yaml";
+ description = "SecretFile";
+ };
+ domainname = mkOpt str "christophhollizeck.dev" "domainname to use";
+ staging = mkOpt bool false "Use staging server for testing or not";
+ };
+
+ config = mkIf cfg.enable {
+ sops = {
+ secrets = {
+ netcup_customer_number = {
+ inherit (cfg) sopsFile;
+ };
+
+ netcup_api_key = {
+ inherit (cfg) sopsFile;
+ };
+
+ netcup_api_password = {
+ inherit (cfg) sopsFile;
+ };
+ };
+
+ templates = {
+ "netcup.env" = {
+ content = ''
+ NETCUP_CUSTOMER_NUMBER=${config.sops.placeholder.netcup_customer_number}
+ NETCUP_API_KEY=${config.sops.placeholder.netcup_api_key}
+ NETCUP_API_PASSWORD=${config.sops.placeholder.netcup_api_password}
+ NETCUP_PROPAGATION_TIMEOUT=1200
+ '';
+ };
+ };
+
+ };
+
+ security.acme = {
+ acceptTerms = true;
+ defaults = {
+ inherit (cfg) email;
+
+ group = mkIf config.services.nginx.enable "nginx";
+ reloadServices = optional config.services.nginx.enable "nginx.service";
+
+ dnsProvider = "netcup";
+ environmentFile = config.sops.templates."netcup.env".path;
+ };
+
+ certs."${cfg.domainname}" = {
+ server = mkIf cfg.staging "https://acme-staging-v02.api.letsencrypt.org/directory";
+ dnsResolver = "1.1.1.1:53";
+ extraDomainNames = [ "*.${cfg.domainname}" ];
+ };
+ };
+
+ };
+}
diff --git a/modules/nixos/services/factorio-server/default.nix b/modules/nixos/services/factorio-server/default.nix
index 9e501e4..5faf5d0 100644
--- a/modules/nixos/services/factorio-server/default.nix
+++ b/modules/nixos/services/factorio-server/default.nix
@@ -8,30 +8,38 @@
with lib.${namespace};
let
cfg = config.${namespace}.services.factorio-server;
- inherit (lib) mkIf mkEnableOption;
+ inherit (lib) mkIf mkOption mkEnableOption;
in
{
options.${namespace}.services.factorio-server = {
enable = mkEnableOption "Enable Factorio Headless Server";
+ sopsFile = mkOption {
+ type = lib.types.path;
+ default = lib.snowfall.fs.get-file "secrets/secrets.yaml";
+ description = "SecretFile";
+ };
};
config = mkIf cfg.enable {
- environment.systemPackages = with pkgs; [ factorio-headless ];
+ environment.systemPackages = [ pkgs.factorio-headless ];
sops = {
secrets = {
factorio_token = {
restartUnits = [ "factorio.service" ];
+ inherit (cfg) sopsFile;
};
factorio_username = {
restartUnits = [ "factorio.service" ];
+ inherit (cfg) sopsFile;
};
factorio_game_password = {
restartUnits = [ "factorio.service" ];
+ inherit (cfg) sopsFile;
};
};
templates."extraSettingsFile.json".content = ''
{
- "name": "Alles Nix!",
+ "name": "SpaceAgeHolli",
"description": "Trying to run a factorio-headless-server on my nix system",
"tags": ["vanilla"],
"max_players": 10,
@@ -40,7 +48,6 @@ in
"autosave_slots": 5,
"ignore_player_limit_for_returning_players": true,
"username" : "${config.sops.placeholder.factorio_username}",
- "admins": ["${config.sops.placeholder.factorio_username}"],
"token": "${config.sops.placeholder.factorio_token}"
}
'';
@@ -53,8 +60,13 @@ in
public = true;
lan = true;
nonBlockingSaving = true;
- autosave-interval = 5;
- loadLatestSave = true;
+ autosave-interval = 15;
+ saveName = "SpaceAge";
+ admins = [
+ "daholli"
+ "galbrain"
+ "geigeabc"
+ ];
extraSettingsFile = config.sops.templates."extraSettingsFile.json".path;
};
};
diff --git a/modules/nixos/submodules/basics-wsl/default.nix b/modules/nixos/submodules/basics-wsl/default.nix
index a3c0891..80ff534 100644
--- a/modules/nixos/submodules/basics-wsl/default.nix
+++ b/modules/nixos/submodules/basics-wsl/default.nix
@@ -23,7 +23,7 @@ in
tree
ripgrep
fzf
- colorls
+ eza
wslu
wsl-open
diff --git a/modules/nixos/submodules/basics/default.nix b/modules/nixos/submodules/basics/default.nix
index 27ec758..bdc697b 100644
--- a/modules/nixos/submodules/basics/default.nix
+++ b/modules/nixos/submodules/basics/default.nix
@@ -13,7 +13,7 @@ let
in
{
options.${namespace}.submodules.basics = with types; {
- enable = mkBoolOpt false "Whether or not to enable basic configuration.";
+ enable = mkEnableOption "Whether or not to enable basic configuration.";
};
config = mkIf cfg.enable {
@@ -24,12 +24,12 @@ in
tree
ripgrep
fzf
- colorls
+ eza
#optional
pciutils
usbutils
- htop
+ btop
];
${namespace} = {
diff --git a/modules/nixos/system/boot/default.nix b/modules/nixos/system/boot/default.nix
index a824815..53759a1 100644
--- a/modules/nixos/system/boot/default.nix
+++ b/modules/nixos/system/boot/default.nix
@@ -17,7 +17,7 @@ in
config = mkIf cfg.enable {
boot = {
- kernelPackages = pkgs.linuxPackages_6_10;
+ kernelPackages = pkgs.linuxPackages_latest;
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
diff --git a/modules/nixos/tools/git/default.nix b/modules/nixos/tools/git/default.nix
index ad7eb11..8b37b71 100644
--- a/modules/nixos/tools/git/default.nix
+++ b/modules/nixos/tools/git/default.nix
@@ -24,7 +24,7 @@ in
environment.systemPackages = with pkgs; [
git
gitAndTools.gh
- gitbutler
+ # gitbutler
];
${namespace}.home.extraOptions = {
diff --git a/modules/nixos/user/default.nix b/modules/nixos/user/default.nix
index 94c70fb..62fb307 100644
--- a/modules/nixos/user/default.nix
+++ b/modules/nixos/user/default.nix
@@ -48,10 +48,22 @@ in
icon = mkOpt (nullOr package) defaultIcon "The profile picture to use for the user.";
extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned.";
extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.`.");
+ trustedPublicKeys = mkOption {
+ default = [ ];
+ type = nullOr (listOf str);
+ description = "Trusted public keys for this user for the machine";
+ };
};
config = {
- environment.systemPackages = with pkgs; [ ];
+ environment.systemPackages = [ ];
+
+ # remove default nix alias
+ environment.shellAliases = {
+ l = null;
+ ls = null;
+ ll = null;
+ };
programs.fish = enabled;
users.defaultUserShell = pkgs.fish;
@@ -85,6 +97,8 @@ in
# system to select).
uid = 1000;
+ openssh.authorizedKeys.keys = cfg.trustedPublicKeys;
+
extraGroups = [ "steamcmd" ] ++ cfg.extraGroups;
} // cfg.extraOptions;
};
diff --git a/overlays/discord/default.nix b/overlays/discord/default.nix
new file mode 100644
index 0000000..970b716
--- /dev/null
+++ b/overlays/discord/default.nix
@@ -0,0 +1,9 @@
+{ ... }:
+
+final: prev: {
+ discord = prev.discord.overrideAttrs (oldAttrs: {
+ commandLineArgs = ''
+ --disable-gpu-compositing
+ '';
+ });
+}
diff --git a/overlays/factorio-headless/default.nix b/overlays/factorio-headless/default.nix
new file mode 100644
index 0000000..98e4327
--- /dev/null
+++ b/overlays/factorio-headless/default.nix
@@ -0,0 +1,3 @@
+{ channels, ... }:
+
+final: prev: { inherit (channels.nixpkgs-latest-factorio) factorio-headless; }
diff --git a/overlays/pathofbuilding/default.nix b/overlays/pathofbuilding/default.nix
index 221979b..b738b0f 100644
--- a/overlays/pathofbuilding/default.nix
+++ b/overlays/pathofbuilding/default.nix
@@ -1,3 +1,3 @@
{ channels, ... }:
-final: prev: { inherit (channels.unstable) pobfrontend; }
+final: prev: { inherit (channels.nixpkgs-unstable) pobfrontend; }
diff --git a/overlays/steam/default.nix b/overlays/steam/default.nix
new file mode 100644
index 0000000..c517edf
--- /dev/null
+++ b/overlays/steam/default.nix
@@ -0,0 +1,9 @@
+{ ... }:
+
+final: prev: {
+ steam = prev.steam.overrideAttrs (oldAttrs: {
+ commandLineArgs = ''
+ --disable-gpu-compositing
+ '';
+ });
+}
diff --git a/overlays/teams-for-linux/default.nix b/overlays/teams-for-linux/default.nix
new file mode 100644
index 0000000..7bb7e2a
--- /dev/null
+++ b/overlays/teams-for-linux/default.nix
@@ -0,0 +1,9 @@
+{ ... }:
+
+final: prev: {
+ teams-for-linux = prev.teams-for-linux.overrideAttrs (oldAttrs: {
+ commandLineArgs = ''
+ --disable-gpu-compositing
+ '';
+ });
+}
diff --git a/secrets/secrets-loptland.yaml b/secrets/secrets-loptland.yaml
new file mode 100644
index 0000000..76030da
--- /dev/null
+++ b/secrets/secrets-loptland.yaml
@@ -0,0 +1,30 @@
+#ENC[AES256_GCM,data:Cgp+gOU81+rvdlY=,iv:8DxJxnCslDoEu0bxtlTjmNiAUCdiAV/8VYKTb4yqQ50=,tag:ZTkK7WCOBh1It6GuKPUXdg==,type:comment]
+factorio_username: ENC[AES256_GCM,data:egV5kXtAiw==,iv:Hay0PC2yol5FAJGcWxLkxzNdwpD1V4UfDDnkhsjvjVQ=,tag:QBDS6eAeOswQoHBoi4Gj6A==,type:str]
+factorio_token: ENC[AES256_GCM,data:whruEJQCNIqqfMA0A3yQdwwrzpIJBt815Lvex4Au,iv:hh3zZt+UxV9ltSHIAjpTRwtDvPgPU5APrB/1bXtKUkE=,tag:AgUmBYWp+Oyxm8O7yD8vlA==,type:str]
+factorio_game_password: ENC[AES256_GCM,data:Gu/p0+Sbd6Y=,iv:6AB1T3JdleiUnusU7hw/0wOFNSBsAsBgP2yD9FB7zXk=,tag:DMgD4csthynuBon+KNZtOw==,type:str]
+#ENC[AES256_GCM,data:15i2BBxM4iM=,iv:JV6Lsk8jUZl/eIJWkH/w5I2NraB9J9+0ggsENBGgbdI=,tag:HDwGheUv7dFIztQoJBjGmQ==,type:comment]
+forgejo_db_password: ENC[AES256_GCM,data:CFsvko1AXRymDBC6WiOBs98rvFM=,iv:Wemhu8URxA6HsWQyYcPSwJzuMP4myrDC3rU3GEDVt7c=,tag:6wcNlDFVdnjez8hzi4E2cw==,type:str]
+#ENC[AES256_GCM,data:nQnLBl7v,iv:HORr/Uvw4eUXfW5uS6rWr+6FkFF9bTNpMYGaRpVITRY=,tag:/r4n/xpqp7EPecGxDj4N+w==,type:comment]
+netcup_customer_number: ENC[AES256_GCM,data:pRooJa3O,iv:0U/ONcWa2eqcsT1UpgXmLpAvJndaU8zln2g1HMbBQYE=,tag:+pu8EBl/dnm6DoLAtrjZBQ==,type:str]
+netcup_api_key: ENC[AES256_GCM,data:nlkDz1VV2NIXxv/tIROWDHN9DLI0lVq9n9l2FlDwt+3H4G4gg6yCeZjGtR+pTCNfwio=,iv:x8HLL10ww52UJDkz7Yi02KBg7jbuLFHAlG0iMYDd8hk=,tag:pcuka4/Hu/QFIwS0b8GlxQ==,type:str]
+netcup_api_password: ENC[AES256_GCM,data:k2mdQp57x5ZTypRCHbVlq1fembJ0uj5D0rb72K5rac43p888y3TFyiYVuDTosxR66mo=,iv:0OhtKWD/LWeV5ZWN9fbPozebSxvaFRdSn1AkX97ffAM=,tag:uY6A4jBL/9mtGy7++Yvn0A==,type:str]
+sops:
+ kms: []
+ gcp_kms: []
+ azure_kv: []
+ hc_vault: []
+ age:
+ - recipient: age1amdd4hu6k0czf3mtlhd03yj3yzkdaynl7q5fdlqmjzpe9pwgxfjs3j0c85
+ enc: |
+ -----BEGIN AGE ENCRYPTED FILE-----
+ YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3NFlTd2hOTHBtUDhuT0lF
+ amtLclY2ZTN0SStZQjFSNkZUd1RmMkdJZ0dJCnB2WU04dk41Qk45aGphMW9GQVJ4
+ b2VWQVlOVFFLaGJWaU9FVU5ZUWtlRncKLS0tIGVPYW5DQnJMeW1qdWtINDNlQWFo
+ NmhrdXhpbVlmUFNsT1VaQjZyYkZkdzgKhL2BKXfPWNWUbFavpmtBQpnNEm/x0xH6
+ NsjiV05AcrqPmGjj2kjvTv4ULPSoHiHiC5McUMfFTYIrCJgNvUbmMg==
+ -----END AGE ENCRYPTED FILE-----
+ lastmodified: "2024-11-07T14:40:34Z"
+ mac: ENC[AES256_GCM,data:uk2AeOA9pnhekuofIjXavCGy9ZaO0ObprkvnGhJg5lPr/hyT9l7YcZtMQ7wckKDLS03I1hCAcNg0w/EmSUeU2+EHLb6Z1IUj3l0HBUPtPIJwJZifkrzp9iQwGwlK+i6nfREEgPGeuNMj/rnD67MECO4NRHTzGBzH7ZImoDpu0Us=,iv:ss8Q7i75UOQDMJfw4dQCT0qxPUGwfHizX0c/TUej+vc=,tag:iufeO6sfaToNcJg6E8tuxA==,type:str]
+ pgp: []
+ unencrypted_suffix: _unencrypted
+ version: 3.9.1
diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml
index 98be30a..630bfc8 100644
--- a/secrets/secrets.yaml
+++ b/secrets/secrets.yaml
@@ -1,7 +1,7 @@
#ENC[AES256_GCM,data:Y75QxOB7YrOA,iv:mZ2f288IG/pmlQRtCqdcz03dDTYMnnj50Vsk/BwTJ+c=,tag:gPHZgq091G4LYMan9R6z1w==,type:comment]
factorio_username: ENC[AES256_GCM,data:rI7vF0XlaQ==,iv:+d5dD+nawphw+g8zavFXUr87bewTL1d+fuFnYKuYJKc=,tag:B8/6I7zi0b6xo8TFsY35Ug==,type:str]
factorio_token: ENC[AES256_GCM,data:0JOQv4UGiz2j2KPEoNm2IuE3qt8XfKuVEBWJ2+fF,iv:EUc8vhrB5NcgFKO7xTCxG2PzUuFCJFIl1KB90NqCOXw=,tag:rCilwxD8sw+Ql5HzvcUEJQ==,type:str]
-factorio_game_password: ENC[AES256_GCM,data:wwmltZzhYlQ=,iv:2LPugIqfPLJ5PbdrVfI36+76pAVp5Rano4T6968OsKs=,tag:kRpWL4wYnm/X4SHYypzVyA==,type:str]
+factorio_game_password: ENC[AES256_GCM,data:xMpORLbom/w=,iv:ukkPL10vAcQKGGpjqKM58uIfJ3sRLhxUkFyf0JXJkvc=,tag:jw52z23utK7eHM9e2zZvig==,type:str]
nixpkgs_review_auth: ENC[AES256_GCM,data:4zd7nThKhMMQxuxVdGZFUyJJ3rDBC29h9ydGmjKBEFy9Lz5X9TCf3w==,iv:u3aasLXSqer50RZDvvwGr0mwEoyywWaMr6q9VhPZieg=,tag:/rfQ4LHfJsvFYH+4hBe4LQ==,type:str]
sops:
kms: []
@@ -18,8 +18,8 @@ sops:
TzdjVjVtWmxNNm96WHhXSGM4WjErMkEKoGtyn6M91h+ye8U/ltOuOQ74RUo/2R37
l5vR47FUyzilUliIK2PDUMXM/S3Yk3Zi6g3XL8OPd53X5I1UYUJmRw==
-----END AGE ENCRYPTED FILE-----
- lastmodified: "2024-09-06T19:21:22Z"
- mac: ENC[AES256_GCM,data:xgRgCRNtsoa3h7ss9uUyOVmGWoQqZ8+vSk0sNkhOeev1tB9qesTnkqNfRkilRyZPNen5xTV8iupvlB4wLVjODGDLueaimnOjWxrk8urSLPEbCzjLUsWuWiVANIkkyGWn0KH4mxr4pR0lt+Yy2JRKuzKGPYKYHWwnCg1saVCC2VE=,iv:iu86TvF8ur8RALGkJTgam35kJ4QRx6ruMBnj7o99A8k=,tag:AY/hCByZd1SNVIrWZ4qp4A==,type:str]
+ lastmodified: "2024-10-22T00:06:22Z"
+ mac: ENC[AES256_GCM,data:NFP/q1AwapApQ7osBUIIQRfwuD5CbZphZkxLo1BfnUG7q/TxLbUm7F1uDaHFx55ox7FrvBzm11k/A8njcOQtpmfnBGhwF+X6VUF+CvsnTStRk/4v1TiybFFODSPKVmsZvxKJS1cRnTmptBvDoDfztIvqk4m9XvuVZlYvK5VXQVA=,iv:z61xn9BYygcD5t/z0ZO7yUSS+yFOUNvmcSSx+c1RgAQ=,tag:u1/P68g2jemJhOloZHB7yA==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
- version: 3.9.0
+ version: 3.9.1
diff --git a/systems/x86_64-linux/loptland/default.nix b/systems/x86_64-linux/loptland/default.nix
new file mode 100644
index 0000000..92ae507
--- /dev/null
+++ b/systems/x86_64-linux/loptland/default.nix
@@ -0,0 +1,122 @@
+{
+ config,
+ lib,
+ namespace,
+ pkgs,
+ ...
+}:
+let
+ inherit (lib) mkIf;
+ inherit (lib.${namespace}) enabled;
+
+ domainName = "christophhollizeck.dev";
+ forgejoPort = 3000;
+
+ cfg.enableAcme = true;
+
+ sopsFile = lib.snowfall.fs.get-file "secrets/secrets-loptland.yaml";
+in
+{
+ imports = [ ./hardware.nix ];
+
+ environment.systemPackages = [ ];
+
+ sops = {
+ secrets = {
+ forgejo_db_password = {
+ inherit sopsFile;
+ };
+ };
+ };
+
+ services.openssh = {
+ enable = true;
+ settings = {
+ PasswordAuthentication = false;
+ KbdInteractiveAuthentication = false;
+ };
+ };
+
+ services.nginx = {
+ enable = true;
+ recommendedProxySettings = true;
+
+ virtualHosts = {
+ "git.${domainName}" = {
+ forceSSL = cfg.enableAcme;
+ useACMEHost = mkIf cfg.enableAcme domainName;
+
+ locations."/" = {
+ proxyPass = "http://localhost:${toString forgejoPort}/";
+ };
+ };
+
+ "${domainName}" = {
+ forceSSL = cfg.enableAcme;
+ useACMEHost = mkIf cfg.enableAcme domainName;
+
+ locations."/" = {
+ return = "404";
+ };
+ };
+ };
+ };
+
+ services.forgejo = {
+ enable = true;
+ database.type = "postgres";
+ lfs.enable = true;
+ database = {
+ passwordFile = config.sops.secrets.forgejo_db_password.path;
+ };
+
+ settings = {
+ server = {
+ DOMAIN = "git.${domainName}";
+ ROOT_URL = "http://git.${domainName}:${toString forgejoPort}";
+ HTTP_PORT = forgejoPort;
+ };
+
+ service.DISABLE_REGISTRATION = true;
+ };
+ };
+
+ networking.firewall.allowedTCPPorts = [
+ forgejoPort
+ 80
+ 443
+ ];
+
+ ${namespace} = {
+ submodules = {
+ basics = enabled;
+ };
+
+ services = {
+ factorio-server = {
+ enable = true;
+ inherit sopsFile;
+ };
+ };
+
+ security = {
+ acme = {
+ enable = cfg.enableAcme;
+ inherit sopsFile;
+ };
+ };
+
+ user.trustedPublicKeys = [
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHFrDiO5+vMfD5MimkzN32iw3MnSMLZ0mHvOrHVVmLD0"
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII4Pr7p0jizrvIl0UhcvrmL5SHRQQQWIcHLAnRFyUZS6"
+ ];
+ };
+
+ snowfallorg.users.${config.${namespace}.user.name}.home.config = {
+ programs.fish.shellInit = ''
+ eval $(op signin)
+ '';
+ };
+
+ system.stateVersion = "24.11";
+}
diff --git a/systems/x86_64-linux/loptland/hardware.nix b/systems/x86_64-linux/loptland/hardware.nix
new file mode 100644
index 0000000..6f1c5cb
--- /dev/null
+++ b/systems/x86_64-linux/loptland/hardware.nix
@@ -0,0 +1,42 @@
+{
+ config,
+ lib,
+ pkgs,
+ modulesPath,
+ ...
+}:
+
+{
+ imports = [
+ (modulesPath + "/profiles/qemu-guest.nix")
+ ];
+
+ boot.initrd.availableKernelModules = [
+ "ata_piix"
+ "uhci_hcd"
+ "virtio_pci"
+ "sr_mod"
+ "virtio_blk"
+ ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" = {
+ device = "/dev/disk/by-uuid/26b098dd-0a15-49c5-9998-75f43d17eb26";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" = {
+ device = "/dev/disk/by-uuid/30AB-7309";
+ fsType = "vfat";
+ options = [
+ "fmask=0077"
+ "dmask=0077"
+ ];
+ };
+
+ swapDevices = [ { device = "/dev/disk/by-uuid/b9bcb425-cb1c-40a1-89bb-d7fe6b421834"; } ];
+
+ networking.useDHCP = lib.mkDefault true;
+}
diff --git a/systems/x86_64-linux/yggdrasil/default.nix b/systems/x86_64-linux/yggdrasil/default.nix
index 341e809..7dfecfe 100644
--- a/systems/x86_64-linux/yggdrasil/default.nix
+++ b/systems/x86_64-linux/yggdrasil/default.nix
@@ -5,7 +5,7 @@
...
}:
let
- inherit (lib.${namespace}) enabled;
+ inherit (lib.${namespace}) enabled disabled;
in
{
imports = [ ./hardware.nix ];
@@ -21,6 +21,10 @@ in
virtualisation.waydroid = enabled;
+ programs.ssh.extraConfig = ''
+ AddressFamily inet
+ '';
+
${namespace} = {
archetypes = {
gaming.enable = true;
@@ -57,35 +61,32 @@ in
};
exec-once = [
- "hyprctl dispatch moveworkspacetomonitor 4 HDMI-A-1"
"xrandr --output DP-2 --primary"
"[workspace 1 silent] obsidian --disabled-gpu"
- "[workspace 4 silent] git-butler"
+ "[workspace 9 silent] git-butler"
];
workspace = [
"1, monitor:DP-2"
- "2, monitor:HDMI-A-1"
+ "2, monitor:DP-2"
"3, monitor:DP-2"
- "4, monitor:HDMI-A-1"
+ "4, monitor:DP-2"
+ "8, monitor:HDMI-A-1"
+ "9, monitor:HDMI-A-1"
];
windowrulev2 = [
- "workspace 2 silent, class:^(steam)$, title:^(Friends List)"
- "workspace 2 silent, class:^(discord)$, title:^(Discord)"
+ "workspace 8 silent, class:^(steam)$, title:^(Friends List)"
+ "workspace 8 silent, class:^(discord)$, title:^(Discord)"
];
};
};
services = {
- factorio-server = enabled;
+ factorio-server = disabled;
};
system = {
- autoUpgrade = {
- enable = true;
- time = "10:00";
- };
hardware = {
bluetooth = enabled;
gpu.nvidia = enabled;