Compare commits

...

20 commits

Author SHA1 Message Date
Christoph Hollizeck b8155bff9e
loptland: add ssh key of phone, make sure that fish loads op in terminal only session, without bricking homemanager 2024-11-08 00:14:39 +01:00
Christoph Hollizeck a0103c86d9
acme: fix typos 2024-11-07 22:33:27 +01:00
Christoph Hollizeck fdb4c024e4
op: autosignin in terminal only session 2024-11-07 22:22:14 +01:00
Christoph Hollizeck 5c542b9414
ssh: attempt to speed up connection to self hosted git but forcing ipv4 2024-11-07 22:14:22 +01:00
Christoph Hollizeck ed4b918da7
loptland: move acme to its own file 2024-11-07 21:36:01 +01:00
Christoph Hollizeck 32f138f927
loptland: nginx maybe this helps? 2024-11-06 20:11:50 +01:00
Christoph Hollizeck 8d6c10ccdf
loptland: I have no idea how nginx works, also need to read up on ACME and LetsEncrypt 2024-11-06 19:54:03 +01:00
Christoph Hollizeck aa08b78056
loptland: more sops configuration 2024-11-06 16:57:10 +01:00
Christoph Hollizeck 67c1b1f8e0
loptland: fix typo 2024-11-06 16:29:52 +01:00
Christoph Hollizeck 7132c558ef
loptland: move to separate secrets file 2024-11-06 16:20:04 +01:00
Christoph Hollizeck 9bde5f050c
forgejo: init very little config 2024-11-06 13:55:24 +01:00
Christoph Hollizeck a1c14b5d8c
change the way admins are configured 2024-11-05 14:49:08 +01:00
Christoph Hollizeck c06723f7ec
factorio-headless: removed from main PC since the server is now running 2024-11-05 09:27:46 +01:00
Christoph Hollizeck 9940376054
update flake 2024-11-04 23:51:24 +01:00
Christoph Hollizeck 8ffaac44eb
loptland enable factorio server 2024-11-04 23:18:11 +01:00
Christoph Hollizeck b694d6b081
add desktop refactors so dconf is disabled by default 2024-11-04 23:14:41 +01:00
Christoph Hollizeck 9e5b856a18
add home.nix 2024-11-04 23:05:29 +01:00
Christoph Hollizeck 48387d88d2
update hardware.nix 2024-11-04 22:10:21 +01:00
Christoph Hollizeck a1eb889f50
introduce new host 2024-11-04 21:23:24 +01:00
GitButler d69c9c2a10 GitButler Integration Commit
This is an integration commit for the virtual branches that GitButler is tracking.

Due to GitButler managing multiple virtual branches, you cannot switch back and
forth between git branches and virtual branches easily. 

If you switch to another branch, GitButler will need to be reinitialized.
If you commit on this branch, GitButler will throw it away.

Here are the branches that are currently applied:
 - factorio-latest (refs/gitbutler/factorio-latest)
   - flake.lock
   - flake.nix
   - modules/nixos/archetypes/gaming/default.nix
 - hyprpanel (refs/gitbutler/hyprpanel)
   branch head: acde84ab10891f923177d3dde85b826296a1b4bc
   - modules/nixos/desktop/addons/hyprpanel/options.json
   - modules/nixos/desktop/addons/hyprpanel/default.nix
   - modules/nixos/desktop/addons/hypridle/default.nix
 - fix hyprland nvidia issue (refs/gitbutler/fix-hyprland-nvidia-issue)
   branch head: 5158f2a21e773e01f3d4f296db87517bf167c7b7
For more information about what we're doing here, check out our docs:
https://docs.gitbutler.com/features/virtual-branches/integration-branch
2024-11-02 16:29:56 +01:00
20 changed files with 1266 additions and 227 deletions

View file

@ -5,3 +5,13 @@ creation_rules:
key_groups: key_groups:
- age: - age:
- *primary - *primary
- path_regex: secrets/secrets-yggdrasil.yaml$
key_groups:
- age:
- *primary
- path_regex: secrets/secrets-loptland.yaml$
key_groups:
- age:
- *primary

View file

@ -1,5 +1,24 @@
{ {
"nodes": { "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": { "aquamarine": {
"inputs": { "inputs": {
"hyprutils": [ "hyprutils": [
@ -20,11 +39,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1729527199, "lastModified": 1730968822,
"narHash": "sha256-D5/YksfRga8Akd04ZtIkuYSIOjXVrAzQIQBSeplokzU=", "narHash": "sha256-NocDjINsh6ismkhb0Xr6xPRksmhuB2WGf8ZmXMhxu7Y=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "aquamarine", "repo": "aquamarine",
"rev": "8d732fa8aff8b12ef2b1e2f00fc8153e41312b72", "rev": "a49bc3583ff223f426cb3526fdaa4bcaa247ec14",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -56,11 +75,11 @@
"rust-analyzer-src": "rust-analyzer-src" "rust-analyzer-src": "rust-analyzer-src"
}, },
"locked": { "locked": {
"lastModified": 1730097176, "lastModified": 1730961036,
"narHash": "sha256-ufvRff76Y19mkRsmx+mAnxKE9A9VaNWC2mVY6TwumOw=", "narHash": "sha256-nkho9Dq4WzyF4xr83UdxrlDS5Sm7ZKkPaqGVupLOpOI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "fenix", "repo": "fenix",
"rev": "482b57f3f27a9336e0fbc62fa99ee0f624ccf4d0", "rev": "9bf50cb857db8dba15528f3905e271d948cbff06",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -226,7 +245,7 @@
}, },
"flake-utils_2": { "flake-utils_2": {
"inputs": { "inputs": {
"systems": "systems_4" "systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1710146030,
@ -244,7 +263,7 @@
}, },
"flake-utils_3": { "flake-utils_3": {
"inputs": { "inputs": {
"systems": "systems_5" "systems": "systems_6"
}, },
"locked": { "locked": {
"lastModified": 1726560853, "lastModified": 1726560853,
@ -277,7 +296,7 @@
}, },
"flake-utils_5": { "flake-utils_5": {
"inputs": { "inputs": {
"systems": "systems_6" "systems": "systems_7"
}, },
"locked": { "locked": {
"lastModified": 1694529238, "lastModified": 1694529238,
@ -296,7 +315,7 @@
"gen-luarc": { "gen-luarc": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1718922730, "lastModified": 1718922730,
@ -360,11 +379,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1729690460, "lastModified": 1730790589,
"narHash": "sha256-x8qkGujBPuOefXPyjcaB8Ot0IYkQBy6O2ZYb8NrnB3k=", "narHash": "sha256-xJ6bQ4VmdTB7A+dMbmOMaZ8a6erB6rkZkB+yzqD7gd4=",
"owner": "helix-editor", "owner": "helix-editor",
"repo": "helix", "repo": "helix",
"rev": "101a74bf6edbbfdf9b0628a0bdbbc307ebe10ff2", "rev": "b53dafe326d51b7f64a1c52379e3d4150cd2991e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -380,11 +399,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1730016908, "lastModified": 1730837930,
"narHash": "sha256-bFCxJco7d8IgmjfNExNz9knP8wvwbXU4s/d53KOK6U0=", "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e83414058edd339148dc142a8437edb9450574c8", "rev": "2f607e07f3ac7e53541120536708e824acccfaa8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -457,11 +476,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1730072482, "lastModified": 1730969692,
"narHash": "sha256-3Aotvc0dFS9J2iDnrSVjjngdZcaD9ghfroVU3jl84Gk=", "narHash": "sha256-yHY98IWTLDz57TrseUxdh5QnpngcNCjNXTJ2XCeNhtk=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "6cf193e1662f6f750e964a3e174ae017246b4d48", "rev": "e58e97b0a38b8ccc87a4304c9e4e2b37c9966875",
"revCount": 5385, "revCount": 5425,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@ -489,11 +508,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1729596320, "lastModified": 1730755630,
"narHash": "sha256-sBPr6O2Ad916f+L7biAjmJVx4TLDITC4joKgeOT47V8=", "narHash": "sha256-IA5U8lHx/lnHwbx25dpPpeLbaALqNNjalYCf19tIoj0=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-plugins", "repo": "hyprland-plugins",
"rev": "4d7f0b5d8b952f31f7d2e29af22ab0a55ca5c219", "rev": "44859f877739c05d031fcab4a2991ec004fa9bc4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -593,11 +612,11 @@
"systems": "systems_3" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1730053985, "lastModified": 1730911842,
"narHash": "sha256-jh7PhejwT+XqkkYnpZ6K/Gkqy4tvjN7g/ZBTvlS+Q9Y=", "narHash": "sha256-stAVRv13iACAIJ6mheJOwZXWD24YDupyshaUDovVNi4=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlock", "repo": "hyprlock",
"rev": "edbecc87081756b45bdbea16b63e413473659dcd", "rev": "4fc133c96fa1ad2968cad44f8e9e9e923cd0381a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -606,6 +625,25 @@
"type": "github" "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": { "hyprutils": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -618,11 +656,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728941256, "lastModified": 1730968903,
"narHash": "sha256-WRypmcZ2Bw94lLmcmxYokVOHPJSZ7T06V49QZ4tkZeQ=", "narHash": "sha256-zFvzLXcSm0Ia4XI1SE4FQ9KE63hlGrRWhLtwMolWuR8=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprutils", "repo": "hyprutils",
"rev": "fd4be8b9ca932f7384e454bcd923c5451ef2aa85", "rev": "3ce0cde8709cdacbfba471f8e828433b58a561e9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -725,11 +763,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1730068391, "lastModified": 1730919458,
"narHash": "sha256-jlAGtfMuI8pUUoUmNkm2P/38pOtHZdcAf3Az8XQLAf4=", "narHash": "sha256-yMO0T0QJlmT/x4HEyvrCyigGrdYfIXX3e5gWqB64wLg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "6906ac67a1078cf950b8527341e229eeecb5bc30", "rev": "e1cc1f6483393634aee94514186d21a4871e78d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -747,11 +785,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1730106248, "lastModified": 1730453870,
"narHash": "sha256-xicJnAvJ/8nJ6Ojwz6tWk+EcMjcW+M9ozlvfgjFQ+UQ=", "narHash": "sha256-d+kIgz4BvTXb7emjSFV3zjNydGmLUmuluQjdBb51R9o=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NixOS-WSL", "repo": "NixOS-WSL",
"rev": "24ab2f9ad309b1bba89644116656139dde706833", "rev": "adb6bc4b661a43328752b4575be4968a4990c033",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -762,11 +800,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1729413321, "lastModified": 1730785428,
"narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -778,17 +816,17 @@
}, },
"nixpkgs-latest-factorio": { "nixpkgs-latest-factorio": {
"locked": { "locked": {
"lastModified": 1729881984, "lastModified": 1730638571,
"narHash": "sha256-GbM6MN8X46nlHFdwCPMS7VG50nI9hJ65FTofa09e6sY=", "narHash": "sha256-z9Wy1jmhFrABK3cEyiVmQtUwOuQW1YPwA8+HMnbEpnE=",
"owner": "Daholli", "owner": "Daholli",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "19493dc0ad16ffd5414ac9b4e12179d0e1b98468", "rev": "d941e9aa2d89f377d45516c5edd765fef15ea90a",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "Daholli", "owner": "Daholli",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "19493dc0ad16ffd5414ac9b4e12179d0e1b98468", "rev": "d941e9aa2d89f377d45516c5edd765fef15ea90a",
"type": "github" "type": "github"
} }
}, },
@ -806,11 +844,11 @@
}, },
"nixpkgs-master": { "nixpkgs-master": {
"locked": { "locked": {
"lastModified": 1730110089, "lastModified": 1731013087,
"narHash": "sha256-yfKsL/0ZMxmy8wE9lgNt5DMwUhgqhYUmKTR5Te6HF9A=", "narHash": "sha256-RYC/HjbCxras96cu169X3p/AzCQRBcVLLYwV7lb9KeE=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "730e5fa135993f57f2013d911ce5b98d020365f3", "rev": "febd04d099308693051236f860871410a34c2d6f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -822,11 +860,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1720386169, "lastModified": 1730741070,
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7", "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -838,11 +876,11 @@
}, },
"nixpkgs-stable_2": { "nixpkgs-stable_2": {
"locked": { "locked": {
"lastModified": 1729973466, "lastModified": 1730602179,
"narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=", "narHash": "sha256-efgLzQAWSzJuCLiCaQUCDu4NudNlHdg2NzGLX5GYaEY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "cd3e8833d70618c4eea8df06f95b364b016d4950", "rev": "3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -854,11 +892,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1729880355, "lastModified": 1730785428,
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=", "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a", "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -886,15 +924,15 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1718714799, "lastModified": 1725634671,
"narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=", "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
"owner": "nixos", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e", "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "NixOS",
"ref": "nixos-unstable", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
@ -918,11 +956,43 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1729951556, "lastModified": 1718714799,
"narHash": "sha256-bpb6r3GjzhNW8l+mWtRtLNg5PhJIae041sPyqcFNGb4=", "narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"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_7": {
"locked": {
"lastModified": 1730272153,
"narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4e0eec54db79d4d0909f45a88037210ff8eaffee", "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -932,13 +1002,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_6": { "nixpkgs_8": {
"locked": { "locked": {
"lastModified": 1729880355, "lastModified": 1730200266,
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=", "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a", "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -959,11 +1029,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1729104314, "lastModified": 1730814269,
"narHash": "sha256-pZRZsq5oCdJt3upZIU4aslS9XwFJ+/nVtALHIciX/BI=", "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6", "rev": "d70155fdc00df4628446352fc58adc640cd705c2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -982,11 +1052,12 @@
"hyprland": "hyprland", "hyprland": "hyprland",
"hyprland-plugins": "hyprland-plugins", "hyprland-plugins": "hyprland-plugins",
"hyprlock": "hyprlock", "hyprlock": "hyprlock",
"hyprpanel": "hyprpanel",
"kickstartnvim": "kickstartnvim", "kickstartnvim": "kickstartnvim",
"nix-ld": "nix-ld", "nix-ld": "nix-ld",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixos-wsl": "nixos-wsl", "nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_6",
"nixpkgs-latest-factorio": "nixpkgs-latest-factorio", "nixpkgs-latest-factorio": "nixpkgs-latest-factorio",
"nixpkgs-master": "nixpkgs-master", "nixpkgs-master": "nixpkgs-master",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
@ -999,11 +1070,11 @@
"rust-analyzer-src": { "rust-analyzer-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1730028316, "lastModified": 1730749868,
"narHash": "sha256-FsPsSjqnqMHBgDdM24DFLw4YOw0mFKYFJBcLaI6CvI8=", "narHash": "sha256-b8UMpLh61z6T4J1NObustAuFGoJiAKBTaPTrEf3Amts=",
"owner": "rust-lang", "owner": "rust-lang",
"repo": "rust-analyzer", "repo": "rust-analyzer",
"rev": "3b3a87fe9bd3f2a79942babc1d1e385b6805c384", "rev": "b51f9bc736dc0472481a47d7c05de2901323e543",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1089,11 +1160,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1719005984, "lastModified": 1730136121,
"narHash": "sha256-mpFl3Jv4fKnn+5znYXG6SsBjfXHJdRG5FEqNSPx0GLA=", "narHash": "sha256-tfVayj13Zw+zzOKrmJhnvBod7Hdb9ixBR6/4GUlyMA0=",
"owner": "snowfallorg", "owner": "snowfallorg",
"repo": "lib", "repo": "lib",
"rev": "c6238c83de101729c5de3a29586ba166a9a65622", "rev": "dd348182c1a010993e68004eada86cf0341fe2c4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1104,15 +1175,15 @@
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_7",
"nixpkgs-stable": "nixpkgs-stable_2" "nixpkgs-stable": "nixpkgs-stable_2"
}, },
"locked": { "locked": {
"lastModified": 1729999681, "lastModified": 1731008979,
"narHash": "sha256-qm0uCtM9bg97LeJTKQ8dqV/FvqRN+ompyW4GIJruLuw=", "narHash": "sha256-yN1NxvmqV8UltLkqYBWTeZNgpD/eyh/7LM58caHiEfE=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "1666d16426abe79af5c47b7c0efa82fd31bf4c56", "rev": "fe63071416471abdab06caa234122932a7c4b980",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1168,16 +1239,16 @@
}, },
"systems_4": { "systems_4": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1689347949,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"type": "github" "type": "github"
} }
}, },
@ -1211,6 +1282,21 @@
"type": "github" "type": "github"
} }
}, },
"systems_7": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"xdph": { "xdph": {
"inputs": { "inputs": {
"hyprland-protocols": [ "hyprland-protocols": [
@ -1239,11 +1325,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1728166987, "lastModified": 1730743262,
"narHash": "sha256-w6dVTguAn9zJ+7aPOhBQgDz8bn6YZ7b56cY8Kg5HJRI=", "narHash": "sha256-iTLqj3lU8kFehPm5tXpctzkD274t/k1nwSSq3qCWXeg=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "fb9c8d665af0588bb087f97d0f673ddf0d501787", "rev": "09b23cef06fe248e61cec8862c04b9bcb62f4b6d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1254,14 +1340,14 @@
}, },
"zen-browser": { "zen-browser": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_6" "nixpkgs": "nixpkgs_8"
}, },
"locked": { "locked": {
"lastModified": 1730084618, "lastModified": 1730444716,
"narHash": "sha256-gZyHBeo21uZPi7QzzRPlUo3te1HO+aNxYsRo+LzDokg=", "narHash": "sha256-WtqSpYQyG5ad+GK7B0ViDSl0NolHp7yM24TacUslBXE=",
"owner": "ch4og", "owner": "ch4og",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "f36474f335ea16534da68715d1f5ae27a5642c94", "rev": "d3c639ee7bff20f799f443e18fffa6331a71cd3a",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -7,7 +7,7 @@
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-master.url = "github:nixos/nixpkgs/master"; nixpkgs-master.url = "github:nixos/nixpkgs/master";
nixpkgs-latest-factorio.url = "github:Daholli/nixpkgs/19493dc0ad16ffd5414ac9b4e12179d0e1b98468"; nixpkgs-latest-factorio.url = "github:Daholli/nixpkgs/d941e9aa2d89f377d45516c5edd765fef15ea90a";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/master"; url = "github:nix-community/home-manager/master";

View file

@ -0,0 +1,22 @@
{
lib,
pkgs,
config,
osConfig ? { },
format ? "unknown",
...
}:
with lib.wyrdgard;
{
wyrdgard = {
apps = {
kitty = enabled;
};
tools = {
direnv = enabled;
};
};
home.stateVersion = "24.11";
}

View file

@ -18,7 +18,7 @@ let
in in
{ {
options.${namespace}.apps.cli-apps.helix = { 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 { config = mkIf cfg.enable {
@ -30,8 +30,7 @@ in
}; };
${namespace} = { ${namespace} = {
home = { home.extraOptions = {
extraOptions = {
programs.helix = { programs.helix = {
enable = true; enable = true;
package = helix-pkg; package = helix-pkg;
@ -128,9 +127,6 @@ in
]; ];
language-server = { language-server = {
nil = {
command = "${pkgs.nil}/bin/nil";
};
nixd = { nixd = {
command = "${pkgs.nixd}/bin/nixd"; command = "${pkgs.nixd}/bin/nixd";
}; };
@ -152,7 +148,6 @@ in
}; };
}; };
}; };
};
nix.extra-substituters.${cachix-url} = { nix.extra-substituters.${cachix-url} = {
key = cachix-key; key = cachix-key;

View file

@ -23,14 +23,15 @@ in
settings = { settings = {
general = { general = {
after_sleep_cmd = "hyprctl dispatch dpms on"; after_sleep_cmd = "hyprctl dispatch dpms on";
before_sleep_cmd = "loginctl lock-session";
ignore_dbus_inhibit = false; ignore_dbus_inhibit = false;
lock_cmd = "hyprlock"; lock_cmd = "pidof hyprlock || hyprlock";
}; };
listener = [ listener = [
{ {
timeout = 900; timeout = 60;
on-timeout = "hyprlock"; on-timeout = "loginctl lock-session";
} }
{ {
timeout = 1200; timeout = 1200;

View file

@ -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;
};
};
};
}

View file

@ -46,7 +46,7 @@
"bar.workspaces.numbered_active_indicator": "underline", "bar.workspaces.numbered_active_indicator": "underline",
"bar.scrollSpeed": 0, "bar.scrollSpeed": 0,
"menus.dashboard.powermenu.avatar.image": "/home/cholli/Pictures/profile.png", "menus.dashboard.powermenu.avatar.image": "/home/cholli/Pictures/profile.png",
"menus.dashboard.shortcuts.enabled": true, "menus.dashboard.shortcuts.enabled": false,
"menus.dashboard.directories.left.directory3.command": "bash -c \"xdg-open $HOME/projects/\"", "menus.dashboard.directories.left.directory3.command": "bash -c \"xdg-open $HOME/projects/\"",
"menus.dashboard.directories.left.directory1.command": "bash -c \"xdg-open $HOME/Downloads/\"", "menus.dashboard.directories.left.directory1.command": "bash -c \"xdg-open $HOME/Downloads/\"",
"menus.dashboard.stats.enable_gpu": true, "menus.dashboard.stats.enable_gpu": true,
@ -455,5 +455,6 @@
"bar.windowtitle.label": true, "bar.windowtitle.label": true,
"bar.windowtitle.title_map": [], "bar.windowtitle.title_map": [],
"bar.windowtitle.truncation": false, "bar.windowtitle.truncation": false,
"bar.workspaces.hideUnoccupied": true "bar.workspaces.hideUnoccupied": true,
"bar.launcher.rightClick": "hyprpanel -t settings-dialog"
} }

View file

@ -6,10 +6,17 @@
... ...
}: }:
let let
inherit (lib) mkIf mkEnableOption;
user = config.${namespace}.user.name; user = config.${namespace}.user.name;
cfg = config.${namespace}.desktop.hyprland;
in in
{ {
config = { options.${namespace}.desktop = {
enable = mkEnableOption "Whether to enable desktop theming";
};
config = mkIf cfg.enable {
${namespace}.home.extraOptions = { ${namespace}.home.extraOptions = {
dconf.settings = { dconf.settings = {
"org/gnome/desktop/interface" = { "org/gnome/desktop/interface" = {

View file

@ -55,7 +55,6 @@ in
# Wayland Utilities # Wayland Utilities
wl-clipboard wl-clipboard
wl-screenrec
wlr-randr wlr-randr
# Screenshot Utility # Screenshot Utility
@ -91,15 +90,19 @@ in
}; };
${namespace} = { ${namespace} = {
desktop.addons = { desktop = {
enable = true;
addons = {
rofi = { rofi = {
enable = true; enable = true;
package = pkgs.rofi-wayland-unwrapped; package = pkgs.rofi-wayland-unwrapped;
}; };
hypridle = enabled; hypridle = enabled;
hyprlock = enabled; hyprlock = enabled;
hyprpanel = enabled;
hyprpaper = enabled; hyprpaper = enabled;
}; };
};
nix.extra-substituters.${cachix-url} = { nix.extra-substituters.${cachix-url} = {
key = cachix-key; key = cachix-key;
@ -121,7 +124,6 @@ in
]; ];
exec-once = [ exec-once = [
"${pkgs.hyprpanel}/bin/hyprpanel"
"systemctl --user start hyprpolkitagent" "systemctl --user start hyprpolkitagent"
"[workspace 2 silent] steam --disable-gpu-compositing" # nvidia pls let me have nice things "[workspace 2 silent] steam --disable-gpu-compositing" # nvidia pls let me have nice things

View file

@ -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}" ];
};
};
};
}

View file

@ -8,25 +8,33 @@
with lib.${namespace}; with lib.${namespace};
let let
cfg = config.${namespace}.services.factorio-server; cfg = config.${namespace}.services.factorio-server;
inherit (lib) mkIf mkEnableOption; inherit (lib) mkIf mkOption mkEnableOption;
in in
{ {
options.${namespace}.services.factorio-server = { options.${namespace}.services.factorio-server = {
enable = mkEnableOption "Enable Factorio Headless 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 { config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ pkgs.factorio-headless ]; environment.systemPackages = [ pkgs.factorio-headless ];
sops = { sops = {
secrets = { secrets = {
factorio_token = { factorio_token = {
restartUnits = [ "factorio.service" ]; restartUnits = [ "factorio.service" ];
inherit (cfg) sopsFile;
}; };
factorio_username = { factorio_username = {
restartUnits = [ "factorio.service" ]; restartUnits = [ "factorio.service" ];
inherit (cfg) sopsFile;
}; };
factorio_game_password = { factorio_game_password = {
restartUnits = [ "factorio.service" ]; restartUnits = [ "factorio.service" ];
inherit (cfg) sopsFile;
}; };
}; };
templates."extraSettingsFile.json".content = '' templates."extraSettingsFile.json".content = ''
@ -40,7 +48,6 @@ in
"autosave_slots": 5, "autosave_slots": 5,
"ignore_player_limit_for_returning_players": true, "ignore_player_limit_for_returning_players": true,
"username" : "${config.sops.placeholder.factorio_username}", "username" : "${config.sops.placeholder.factorio_username}",
"admins": ["${config.sops.placeholder.factorio_username}"],
"token": "${config.sops.placeholder.factorio_token}" "token": "${config.sops.placeholder.factorio_token}"
} }
''; '';
@ -55,6 +62,11 @@ in
nonBlockingSaving = true; nonBlockingSaving = true;
autosave-interval = 15; autosave-interval = 15;
saveName = "SpaceAge"; saveName = "SpaceAge";
admins = [
"daholli"
"galbrain"
"geigeabc"
];
extraSettingsFile = config.sops.templates."extraSettingsFile.json".path; extraSettingsFile = config.sops.templates."extraSettingsFile.json".path;
}; };
}; };

View file

@ -13,7 +13,7 @@ let
in in
{ {
options.${namespace}.submodules.basics = with types; { 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 { config = mkIf cfg.enable {
@ -29,7 +29,7 @@ in
#optional #optional
pciutils pciutils
usbutils usbutils
htop btop
]; ];
${namespace} = { ${namespace} = {

View file

@ -32,5 +32,14 @@ in
}; };
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = [ "nvidia" ];
boot.kernelParams = [
"nvidia_drm.fbdev=1"
# TODO: remove after https://github.com/NVIDIA/open-gpu-kernel-modules/pull/692
# and similar are merged and build in nixpkgs-unstable.
# WARNING: this disables tty output and thus hides boot logs.
"initcall_blacklist=simpledrm_platform_driver_init"
];
}; };
} }

View file

@ -24,7 +24,7 @@ in
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
git git
gitAndTools.gh gitAndTools.gh
gitbutler # gitbutler
]; ];
${namespace}.home.extraOptions = { ${namespace}.home.extraOptions = {

View file

@ -48,6 +48,11 @@ in
icon = mkOpt (nullOr package) defaultIcon "The profile picture to use for the user."; icon = mkOpt (nullOr package) defaultIcon "The profile picture to use for the user.";
extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned."; extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned.";
extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.<name>`."); extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.<name>`.");
trustedPublicKeys = mkOption {
default = [ ];
type = nullOr (listOf str);
description = "Trusted public keys for this user for the machine";
};
}; };
config = { config = {
@ -92,6 +97,8 @@ in
# system to select). # system to select).
uid = 1000; uid = 1000;
openssh.authorizedKeys.keys = cfg.trustedPublicKeys;
extraGroups = [ "steamcmd" ] ++ cfg.extraGroups; extraGroups = [ "steamcmd" ] ++ cfg.extraGroups;
} // cfg.extraOptions; } // cfg.extraOptions;
}; };

View file

@ -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

View file

@ -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";
}

View file

@ -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;
}

View file

@ -5,7 +5,7 @@
... ...
}: }:
let let
inherit (lib.${namespace}) enabled; inherit (lib.${namespace}) enabled disabled;
in in
{ {
imports = [ ./hardware.nix ]; imports = [ ./hardware.nix ];
@ -21,6 +21,10 @@ in
virtualisation.waydroid = enabled; virtualisation.waydroid = enabled;
programs.ssh.extraConfig = ''
AddressFamily inet
'';
${namespace} = { ${namespace} = {
archetypes = { archetypes = {
gaming.enable = true; gaming.enable = true;
@ -79,7 +83,7 @@ in
}; };
services = { services = {
factorio-server = enabled; factorio-server = disabled;
}; };
system = { system = {