Compare commits

..

No commits in common. "main" and "gnome-pass-search-provider" have entirely different histories.

125 changed files with 1444 additions and 2317 deletions

View file

@ -1,28 +0,0 @@
keys:
- &lelgenio-gpg 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
- &lelgenio-ssh age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
- &monolith-ssh age1ecyynwv93lfu7crjjp8l47defv07quzfzaktwurpep7jc9eha5pscg7lrw
- &phantom-ssh age1m4mqcd2kmuhfr8a22rvh02c68jkakhdfmuqgtusuv0czk4jvna7sz79p3y
creation_rules:
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
key_groups:
- pgp:
- *lelgenio-gpg
age:
- *lelgenio-ssh
- *monolith-ssh
- path_regex: secrets/monolith/[^/]+\.(yaml|json|env|ini)$
key_groups:
- pgp:
- *lelgenio-gpg
age:
- *lelgenio-ssh
- *monolith-ssh
- path_regex: secrets/phantom/[^/]+\.(yaml|json|env|ini)$
key_groups:
- pgp:
- *lelgenio-gpg
age:
- *lelgenio-ssh
- *phantom-ssh

View file

@ -28,11 +28,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1736955230, "lastModified": 1718371084,
"narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=", "narHash": "sha256-abpBi61mg0g+lFFU0zY4C6oP6fBwPzbHPKBGw676xsA=",
"owner": "ryantm", "owner": "ryantm",
"repo": "agenix", "repo": "agenix",
"rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c", "rev": "3a56735779db467538fb2e577eda28a9daacaca6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -57,38 +57,6 @@
"type": "gitlab" "type": "gitlab"
} }
}, },
"catboy-spinner": {
"flake": false,
"locked": {
"lastModified": 1728098748,
"narHash": "sha256-FHM/a+wqctmg1LXf/XB6TcXowL0Wzbq1kSCGVnxGgL8=",
"ref": "refs/heads/main",
"rev": "c6fc11b0900826508f6a766c65cf92e0c7c4eab9",
"revCount": 4,
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/catboy-spinner"
},
"original": {
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/catboy-spinner"
}
},
"contador-da-viagem": {
"flake": false,
"locked": {
"lastModified": 1742610036,
"narHash": "sha256-sY1iheemazmIVJAnoFtut6cN7HX/C5OMDY54UrmCoqE=",
"ref": "refs/heads/main",
"rev": "efe5ac4a16de7f78824ac89dc987ef635afa5267",
"revCount": 4,
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/contador-da-viagem"
},
"original": {
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/contador-da-viagem"
}
},
"crane": { "crane": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@ -114,27 +82,6 @@
} }
}, },
"crane_2": { "crane_2": {
"inputs": {
"nixpkgs": [
"made-you-look",
"nixpkgs"
]
},
"locked": {
"lastModified": 1718730147,
"narHash": "sha256-QmD6B6FYpuoCqu6ZuPJH896ItNquDkn0ulQlOn4ykN8=",
"owner": "ipetkov",
"repo": "crane",
"rev": "32c21c29b034d0a93fdb2379d6fabc40fc3d0e6c",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"crane_3": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"warthunder-leak-counter", "warthunder-leak-counter",
@ -182,7 +129,9 @@
"advisory-db": "advisory-db", "advisory-db": "advisory-db",
"crane": "crane", "crane": "crane",
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1693509848, "lastModified": 1693509848,
@ -202,7 +151,9 @@
"inputs": { "inputs": {
"fenix": "fenix", "fenix": "fenix",
"flake-utils": "flake-utils_3", "flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_2" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1659395338, "lastModified": 1659395338,
@ -225,11 +176,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1741786315, "lastModified": 1719451710,
"narHash": "sha256-VT65AE2syHVj6v/DGB496bqBnu1PXrrzwlw07/Zpllc=", "narHash": "sha256-h+bFEQHQ46pBkEsOXbxmmY6QNPPGrgpDbNlHtAKG49M=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de", "rev": "8767dbf5d723b1b6834f4d09b217da7c31580d58",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -238,20 +189,40 @@
"type": "github" "type": "github"
} }
}, },
"dzgui": {
"flake": false,
"locked": {
"lastModified": 1702780245,
"narHash": "sha256-cdW5LN2Q7eYW8xIqKPQfeYPd7e6VdJGaoA9NMHesCrE=",
"owner": "aclist",
"repo": "dztui",
"rev": "28323f3edb8fa747dc559d1939ccdd7729e4e3a1",
"type": "github"
},
"original": {
"owner": "aclist",
"repo": "dztui",
"type": "github"
}
},
"dzgui-nix": { "dzgui-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_3" "dzgui": "dzgui",
"nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1742179690, "lastModified": 1702850463,
"narHash": "sha256-s/q3OWRe5m7kwDcAs1BhJEj6aHc5bsBxRnLP7DM77xE=", "narHash": "sha256-qR/c/GjsLUzrCyHN/Q9nnClduf6OqTg26S1AFYKPzxA=",
"owner": "lelgenio", "owner": "lelgenio",
"repo": "dzgui-nix", "repo": "dzgui-nix",
"rev": "a6d68720c932ac26d549b24f17c776bd2aeb73b4", "rev": "2ed6515b27d8186b9fedfe1dcaf861f07e796a0d",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "lelgenio", "owner": "lelgenio",
"ref": "dzgui-4.1.0",
"repo": "dzgui-nix", "repo": "dzgui-nix",
"type": "github" "type": "github"
} }
@ -295,6 +266,36 @@
} }
}, },
"flake-compat_2": { "flake-compat_2": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_4": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1696426674, "lastModified": 1696426674,
@ -328,6 +329,24 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils_4"
},
"locked": {
"lastModified": 1696331477,
"narHash": "sha256-YkbRa/1wQWdWkVJ01JvV+75KIdM37UErqKgTf0L54Fk=",
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "bfc53579db89de750b25b0c5e7af299e0c06d7d3",
"type": "github"
},
"original": {
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"type": "github"
}
},
"flake-utils_2": { "flake-utils_2": {
"inputs": { "inputs": {
"systems": "systems_3" "systems": "systems_3"
@ -363,14 +382,14 @@
}, },
"flake-utils_4": { "flake-utils_4": {
"inputs": { "inputs": {
"systems": "systems_4" "systems": "systems_5"
}, },
"locked": { "locked": {
"lastModified": 1681202837, "lastModified": 1694529238,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401", "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -381,7 +400,7 @@
}, },
"flake-utils_5": { "flake-utils_5": {
"inputs": { "inputs": {
"systems": "systems_5" "systems": "systems_7"
}, },
"locked": { "locked": {
"lastModified": 1681202837, "lastModified": 1681202837,
@ -399,7 +418,7 @@
}, },
"flake-utils_6": { "flake-utils_6": {
"inputs": { "inputs": {
"systems": "systems_6" "systems": "systems_8"
}, },
"locked": { "locked": {
"lastModified": 1681202837, "lastModified": 1681202837,
@ -417,7 +436,7 @@
}, },
"flake-utils_7": { "flake-utils_7": {
"inputs": { "inputs": {
"systems": "systems_7" "systems": "systems_9"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1710146030,
@ -433,22 +452,6 @@
"type": "github" "type": "github"
} }
}, },
"hello-fonts": {
"flake": false,
"locked": {
"lastModified": 1728232065,
"narHash": "sha256-1DUW1YqZALPFxBM7HYcNZiCZQvMqUiJ1m04NU4IIe3I=",
"ref": "refs/heads/main",
"rev": "10f7485fea930bb45e97fbda0cd68f199a7e8f59",
"revCount": 1,
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/hello-fonts"
},
"original": {
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/hello-fonts"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -456,40 +459,20 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1742655702, "lastModified": 1718530513,
"narHash": "sha256-jbqlw4sPArFtNtA1s3kLg7/A4fzP4GLk9bGbtUJg0JQ=", "narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "0948aeedc296f964140d9429223c7e4a0702a1ff", "rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.11", "ref": "release-24.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
}, },
"made-you-look": {
"inputs": {
"crane": "crane_2",
"flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1728159958,
"narHash": "sha256-r/h/ch70KfOQ8moftDhHagu3WajglaqU+hrEzUtTM1Y=",
"ref": "refs/heads/main",
"rev": "96e978aa2f414d4b92b78e7ae975d7ff7db95a91",
"revCount": 3,
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/made-you-look"
},
"original": {
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/made-you-look"
}
},
"nix-index-database": { "nix-index-database": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -497,11 +480,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1742701275, "lastModified": 1719111455,
"narHash": "sha256-AulwPVrS9859t+eJ61v24wH/nfBEIDSXYxlRo3fL/SA=", "narHash": "sha256-rnIxHx+fLpydjMQsbpZ21kblUr/lMqSaAtMA4+qMMEE=",
"owner": "Mic92", "owner": "Mic92",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "36dc43cb50d5d20f90a28d53abb33a32b0a2aae6", "rev": "4293f532d0107dfb7e6f8b34a0421dc8111320e6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -510,185 +493,118 @@
"type": "github" "type": "github"
} }
}, },
"nix-software-center": {
"inputs": {
"nixos-appstream-data": "nixos-appstream-data",
"nixpkgs": [
"nixpkgs"
],
"utils": "utils"
},
"locked": {
"lastModified": 1714856183,
"narHash": "sha256-Ue7xV+rZqImux4DDj3VMla4LIH2g8VeXbTJwgvX7wOo=",
"owner": "vlinkz",
"repo": "nix-software-center",
"rev": "b9e0f53536e1e94e7d8c3cda3c6866b3f9d01386",
"type": "github"
},
"original": {
"owner": "vlinkz",
"repo": "nix-software-center",
"type": "github"
}
},
"nixos-appstream-data": {
"inputs": {
"flake-utils": [
"nix-software-center",
"utils"
],
"nixpkgs": [
"nix-software-center",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712858390,
"narHash": "sha256-XE7gr+zU3N4SHPAhsgk8cVAFp1iBg+Lxxp3y4dUF1vE=",
"owner": "korfuri",
"repo": "nixos-appstream-data",
"rev": "0465d42a4433faa63b7a5eb0b8d397937c9fc13a",
"type": "github"
},
"original": {
"owner": "korfuri",
"ref": "flake",
"repo": "nixos-appstream-data",
"type": "github"
}
},
"nixos-conf-editor": {
"inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": [
"nixpkgs"
],
"snowfall-lib": "snowfall-lib"
},
"locked": {
"lastModified": 1707338010,
"narHash": "sha256-UtLeZzDdk96sLTRcWsGrkWCslNUDytrGe0VmOTB/iig=",
"owner": "vlinkz",
"repo": "nixos-conf-editor",
"rev": "27b5e92f580f794c690093503869aab242f075ab",
"type": "github"
},
"original": {
"owner": "vlinkz",
"repo": "nixos-conf-editor",
"type": "github"
}
},
"nixos-mailserver": { "nixos-mailserver": {
"inputs": { "inputs": {
"blobs": "blobs", "blobs": "blobs",
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_4",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-24_11": "nixpkgs-24_11" "nixpkgs-24_05": [
"nixpkgs"
],
"utils": "utils_2"
}, },
"locked": { "locked": {
"lastModified": 1742413977, "lastModified": 1718084203,
"narHash": "sha256-NkhM9GVu3HL+MiXtGD0TjuPCQ4GFVJPBZ8KyI2cFDGU=", "narHash": "sha256-Cx1xoVfSMv1XDLgKg08CUd1EoTYWB45VmB9XIQzhmzI=",
"owner": "simple-nixos-mailserver", "owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver", "repo": "nixos-mailserver",
"rev": "b4fbffe79c00f19be94b86b4144ff67541613659", "rev": "29916981e7b3b5782dc5085ad18490113f8ff63b",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
"owner": "simple-nixos-mailserver", "owner": "simple-nixos-mailserver",
"ref": "master", "ref": "nixos-24.05",
"repo": "nixos-mailserver", "repo": "nixos-mailserver",
"type": "gitlab" "type": "gitlab"
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1684425776, "lastModified": 1719253556,
"narHash": "sha256-eXzSIXkzXa9EecoDF9xCsoim0vd++8dvYU7QOuQMO8A=", "narHash": "sha256-A/76RFUVxZ/7Y8+OMVL1Lc8LRhBxZ8ZE2bpMnvZ1VpY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8dc174d8b768893172eb3e52008f10f48dfbd5cf", "rev": "fc07dc3bdf2956ddd64f24612ea7fc894933eb2e",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-24_11": {
"locked": {
"lastModified": 1734083684,
"narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
"ref": "nixos-24.11", "ref": "nixos-24.05",
"type": "indirect" "type": "indirect"
} }
}, },
"nixpkgs-unstable": {
"locked": {
"lastModified": 1743095683,
"narHash": "sha256-gWd4urRoLRe8GLVC/3rYRae1h+xfQzt09xOfb0PaHSk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5e5402ecbcb27af32284d4a62553c019a3a49ea6",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1659219666,
"narHash": "sha256-pzYr5fokQPHv7CmUXioOhhzDy/XyWOIXP4LZvv/T7Mk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7b9be38c7250b22d829ab6effdee90d5e40c6e5c",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1732812356,
"narHash": "sha256-LNcgjOLArRlx2W6XSi0yc0xwLjrK3KF9LxAMqUgFDgw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "581d7e4d23b91daf2afa0005a5d3d01d6a8884fe",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixpkgs-unstable",
"type": "indirect"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1719010183,
"narHash": "sha256-8HMWaqpyjbVeEsmy/A2H6VFtW/Wr71vkPLnpTiAXu+8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0f620ca71fa69abb411a6c78739a9b171a0a95a6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1742937945,
"narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-24.11",
"type": "indirect"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1735554305,
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1719010183,
"narHash": "sha256-8HMWaqpyjbVeEsmy/A2H6VFtW/Wr71vkPLnpTiAXu+8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0f620ca71fa69abb411a6c78739a9b171a0a95a6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1714091391,
"narHash": "sha256-68n3GBvlm1MIeJXadPzQ3v8Y9sIW3zmv8gI5w5sliC8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4c86138ce486d601d956a165e2f7a0fc029a03c1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"plymouth-themes": { "plymouth-themes": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -708,11 +624,11 @@
"ranger-icons": { "ranger-icons": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1736375293, "lastModified": 1713564482,
"narHash": "sha256-ck53eG+mGIQ706sUnEHbJ6vY1/LYnRcpq94JXzwnGTQ=", "narHash": "sha256-sijO9leDXgnjgcVlh5fKYalhjOupwFMRyH0xh2g/rEQ=",
"owner": "alexanderjeurissen", "owner": "alexanderjeurissen",
"repo": "ranger_devicons", "repo": "ranger_devicons",
"rev": "f227f212e14996fbb366f945ec3ecaf5dc5f44b0", "rev": "a8d626485ca83719e1d8d5e32289cd96a097c861",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -724,29 +640,21 @@
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"catboy-spinner": "catboy-spinner",
"contador-da-viagem": "contador-da-viagem",
"demoji": "demoji", "demoji": "demoji",
"dhist": "dhist", "dhist": "dhist",
"disko": "disko", "disko": "disko",
"dzgui-nix": "dzgui-nix", "dzgui-nix": "dzgui-nix",
"hello-fonts": "hello-fonts",
"home-manager": "home-manager", "home-manager": "home-manager",
"made-you-look": "made-you-look",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nix-software-center": "nix-software-center",
"nixos-conf-editor": "nixos-conf-editor",
"nixos-mailserver": "nixos-mailserver", "nixos-mailserver": "nixos-mailserver",
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"plymouth-themes": "plymouth-themes", "plymouth-themes": "plymouth-themes",
"ranger-icons": "ranger-icons", "ranger-icons": "ranger-icons",
"sops-nix": "sops-nix",
"tlauncher": "tlauncher", "tlauncher": "tlauncher",
"tomater": "tomater",
"treefmt-nix": "treefmt-nix",
"vpsadminos": "vpsadminos",
"warthunder-leak-counter": "warthunder-leak-counter", "warthunder-leak-counter": "warthunder-leak-counter",
"wl-crosshair": "wl-crosshair", "wl-crosshair": "wl-crosshair"
"youre-wrong": "youre-wrong"
} }
}, },
"rust-analyzer-src": { "rust-analyzer-src": {
@ -793,23 +701,26 @@
"type": "github" "type": "github"
} }
}, },
"sops-nix": { "snowfall-lib": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_3",
"flake-utils-plus": "flake-utils-plus",
"nixpkgs": [ "nixpkgs": [
"nixos-conf-editor",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1742700801, "lastModified": 1696432959,
"narHash": "sha256-ZGlpUDsuBdeZeTNgoMv+aw0ByXT2J3wkYw9kJwkAS4M=", "narHash": "sha256-oJQZv2MYyJaVyVJY5IeevzqpGvMGKu5pZcCCJvb+xjc=",
"owner": "Mic92", "owner": "snowfallorg",
"repo": "sops-nix", "repo": "lib",
"rev": "67566fe68a8bed2a7b1175fdfb0697ed22ae8852", "rev": "92803a029b5314d4436a8d9311d8707b71d9f0b6",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "Mic92", "owner": "snowfallorg",
"repo": "sops-nix", "repo": "lib",
"type": "github" "type": "github"
} }
}, },
@ -918,6 +829,36 @@
"type": "github" "type": "github"
} }
}, },
"systems_8": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_9": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tlauncher": { "tlauncher": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_5", "flake-utils": "flake-utils_5",
@ -926,11 +867,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1734044605, "lastModified": 1684504342,
"narHash": "sha256-CeCYv3JFJIySSf2eX9ceEOF1FqNGeJnzEuO5f+OvioQ=", "narHash": "sha256-rJ0eH7BuPizvXPc+LjVtovse4gWEuxP2WiyNdXjPNL4=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "6a68f2cda0aa2fbb399a4c43b445e8c1a2df0634", "rev": "add4df7220bd0b85177a1938c02b60c966c5eb71",
"revCount": 4, "revCount": 3,
"type": "git", "type": "git",
"url": "https://git.lelgenio.xyz/lelgenio/tlauncher-nix" "url": "https://git.lelgenio.xyz/lelgenio/tlauncher-nix"
}, },
@ -939,60 +880,49 @@
"url": "https://git.lelgenio.xyz/lelgenio/tlauncher-nix" "url": "https://git.lelgenio.xyz/lelgenio/tlauncher-nix"
} }
}, },
"tomater": { "utils": {
"flake": false,
"locked": {
"lastModified": 1728089744,
"narHash": "sha256-WOz/qUKyao7lM2qcwqqcJDw4jI8mUJL6kNUNm0sxPKk=",
"ref": "refs/heads/main",
"rev": "efff561c745514a7874e3f5de95307a74efc7df9",
"revCount": 1,
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/tomater"
},
"original": {
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/tomater"
}
},
"treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_6" "systems": "systems_4"
}, },
"locked": { "locked": {
"lastModified": 1743081648, "lastModified": 1689068808,
"narHash": "sha256-WRAylyYptt6OX5eCEBWyTwOEqEtD6zt33rlUkr6u3cE=", "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "flake-utils",
"rev": "29a3d7b768c70addce17af0869f6e2bd8f5be4b7", "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "flake-utils",
"type": "github" "type": "github"
} }
}, },
"vpsadminos": { "utils_2": {
"inputs": {
"systems": "systems_6"
},
"locked": { "locked": {
"lastModified": 1743047409, "lastModified": 1709126324,
"narHash": "sha256-WTUW2GZqHknVwEbzF/TeX2eg52414gfl6hXloDDwEsQ=", "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
"owner": "vpsfreecz", "owner": "numtide",
"repo": "vpsadminos", "repo": "flake-utils",
"rev": "cf9324b9ff855172bd9de8aa3b8215071c4a0c6f", "rev": "d465f4819400de7c8d874d50b982301f28a84605",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "vpsfreecz", "owner": "numtide",
"repo": "vpsadminos", "repo": "flake-utils",
"type": "github" "type": "github"
} }
}, },
"warthunder-leak-counter": { "warthunder-leak-counter": {
"inputs": { "inputs": {
"crane": "crane_3", "crane": "crane_2",
"flake-utils": "flake-utils_6", "flake-utils": "flake-utils_6",
"nixpkgs": "nixpkgs_7" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1719076817, "lastModified": 1719076817,
@ -1011,7 +941,9 @@
"wl-crosshair": { "wl-crosshair": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_7", "flake-utils": "flake-utils_7",
"nixpkgs": "nixpkgs_8" "nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1715216838, "lastModified": 1715216838,
@ -1026,22 +958,6 @@
"repo": "wl-crosshair", "repo": "wl-crosshair",
"type": "github" "type": "github"
} }
},
"youre-wrong": {
"flake": false,
"locked": {
"lastModified": 1728228087,
"narHash": "sha256-W40rQbQAo3lGrKlfenSA8JaGwZMSx/X4lP71enQtK7Y=",
"ref": "refs/heads/main",
"rev": "64e7876233e99ad7223cae29688374a1c1ff569a",
"revCount": 2,
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/youre-wrong"
},
"original": {
"type": "git",
"url": "https://git.lelgenio.com/lelgenio/youre-wrong"
}
} }
}, },
"root": "root", "root": "root",

126
flake.nix
View file

@ -1,14 +1,10 @@
{ {
description = "My system config"; description = "My system config";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-24.11"; nixpkgs.url = "nixpkgs/nixos-24.05";
nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; home-manager.url = "github:nix-community/home-manager/release-24.05";
home-manager.url = "github:nix-community/home-manager/release-24.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
vpsadminos.url = "github:vpsfreecz/vpsadminos";
nix-index-database = { nix-index-database = {
url = "github:Mic92/nix-index-database"; url = "github:Mic92/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -26,55 +22,51 @@
inputs.home-manager.follows = "home-manager"; inputs.home-manager.follows = "home-manager";
}; };
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-mailserver = { nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master"; url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-24_05.follows = "nixpkgs";
}; };
dzgui-nix.url = "github:lelgenio/dzgui-nix"; dzgui-nix = {
url = "github:lelgenio/dzgui-nix/dzgui-4.1.0";
inputs.nixpkgs.follows = "nixpkgs";
};
tlauncher = { tlauncher = {
url = "git+https://git.lelgenio.xyz/lelgenio/tlauncher-nix"; url = "git+https://git.lelgenio.xyz/lelgenio/tlauncher-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
disko = { disko.url = "github:nix-community/disko";
url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs";
# my stuff
dhist = {
url = "github:lelgenio/dhist";
inputs.nixpkgs.follows = "nixpkgs";
};
demoji = {
url = "github:lelgenio/demoji";
inputs.nixpkgs.follows = "nixpkgs";
};
wl-crosshair = {
url = "github:lelgenio/wl-crosshair";
inputs.nixpkgs.follows = "nixpkgs";
};
warthunder-leak-counter = {
url = "git+https://git.lelgenio.com/lelgenio/warthunder-leak-counter";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
treefmt-nix.url = "github:numtide/treefmt-nix"; # gnome stuff
nixos-conf-editor = {
# my stuff url = "github:vlinkz/nixos-conf-editor";
dhist.url = "github:lelgenio/dhist"; inputs.nixpkgs.follows = "nixpkgs";
demoji.url = "github:lelgenio/demoji";
wl-crosshair.url = "github:lelgenio/wl-crosshair";
warthunder-leak-counter.url = "git+https://git.lelgenio.com/lelgenio/warthunder-leak-counter";
made-you-look.url = "git+https://git.lelgenio.com/lelgenio/made-you-look";
contador-da-viagem = {
url = "git+https://git.lelgenio.com/lelgenio/contador-da-viagem";
flake = false;
}; };
catboy-spinner = { nix-software-center = {
url = "git+https://git.lelgenio.com/lelgenio/catboy-spinner"; url = "github:vlinkz/nix-software-center";
flake = false; inputs.nixpkgs.follows = "nixpkgs";
};
tomater = {
url = "git+https://git.lelgenio.com/lelgenio/tomater";
flake = false;
};
youre-wrong = {
url = "git+https://git.lelgenio.com/lelgenio/youre-wrong";
flake = false;
};
hello-fonts = {
url = "git+https://git.lelgenio.com/lelgenio/hello-fonts";
flake = false;
}; };
}; };
outputs = outputs =
@ -105,33 +97,24 @@
{ nixpkgs.pkgs = pkgs; } { nixpkgs.pkgs = pkgs; }
./system/configuration.nix ./system/configuration.nix
./system/secrets.nix ./system/secrets.nix
./system/sops.nix
./system/greetd.nix ./system/greetd.nix
{ login-manager.greetd.enable = desktop == "sway"; } { login-manager.greetd.enable = desktop == "sway"; }
inputs.agenix.nixosModules.default inputs.agenix.nixosModules.default
inputs.sops-nix.nixosModules.default inputs.dzgui-nix.nixosModules.default
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
inputs.disko.nixosModules.disko inputs.disko.nixosModules.disko
( {
{ config, ... }: home-manager.useGlobalPkgs = true;
{ home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true; home-manager.users.lelgenio = import ./user/home.nix;
home-manager.useUserPackages = true; home-manager.backupFileExtension = "bkp";
home-manager.users.lelgenio = { # Optionally, use home-manager.extraSpecialArgs to pass
my = config.my; # arguments to home.nix
imports = [ home-manager.extraSpecialArgs = {
./user/home.nix inherit inputs;
]; };
}; }
home-manager.backupFileExtension = "bkp";
# Optionally, use home-manager.extraSpecialArgs to pass
# arguments to home.nix
home-manager.extraSpecialArgs = {
inherit inputs;
};
}
)
] ]
++ lib.optional (desktop == "gnome") ./system/gnome.nix ++ lib.optional (desktop == "gnome") ./system/gnome.nix
++ lib.optional (desktop == "kde") ./system/kde.nix; ++ lib.optional (desktop == "kde") ./system/kde.nix;
@ -150,15 +133,23 @@
modules = [ modules = [
./hosts/monolith ./hosts/monolith
./system/monolith-gitlab-runner.nix ./system/monolith-gitlab-runner.nix
./system/monolith-bitbucket-runner.nix
./system/monolith-forgejo-runner.nix ./system/monolith-forgejo-runner.nix
./system/nix-serve.nix ./system/nix-serve.nix
./system/steam.nix
] ++ common_modules;
};
rainbow = lib.nixosSystem {
inherit system specialArgs;
modules = [
./hosts/rainbow
./system/rainbow-gitlab-runner.nix
] ++ common_modules; ] ++ common_modules;
}; };
double-rainbow = lib.nixosSystem { double-rainbow = lib.nixosSystem {
inherit system specialArgs; inherit system specialArgs;
modules = [ modules = [
./hosts/double-rainbow.nix ./hosts/double-rainbow.nix
./system/rainbow-gitlab-runner.nix
] ++ common_modules; ] ++ common_modules;
}; };
pixie = lib.nixosSystem { pixie = lib.nixosSystem {
@ -169,16 +160,14 @@
++ [ ++ [
{ {
packages.media-packages.enable = lib.mkOverride 0 false; packages.media-packages.enable = lib.mkOverride 0 false;
programs.steam.enable = lib.mkOverride 0 false;
services.flatpak.enable = lib.mkOverride 0 false; services.flatpak.enable = lib.mkOverride 0 false;
} }
]; ];
}; };
phantom = lib.nixosSystem { phantom = lib.nixosSystem {
inherit system specialArgs; inherit system specialArgs;
modules = [ modules = [ ./hosts/phantom ];
{ nixpkgs.pkgs = pkgs; }
./hosts/phantom
];
}; };
}; };
@ -195,7 +184,6 @@
packages.${system} = pkgs // packages; packages.${system} = pkgs // packages;
# formatter.${system} = pkgs.nixfmt-rfc-style; formatter.${system} = pkgs.nixfmt-rfc-style;
formatter.${system} = (inputs.treefmt-nix.lib.evalModule pkgs ./treefmt.nix).config.build.wrapper;
}; };
} }

View file

@ -19,8 +19,6 @@ in
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
my.nix-ld.enable = true;
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"xhci_pci" "xhci_pci"
"ahci" "ahci"
@ -39,15 +37,14 @@ in
options = [ "subvol=@" ] ++ btrfs_options ++ btrfs_ssd; options = [ "subvol=@" ] ++ btrfs_options ++ btrfs_ssd;
}; };
boot.initrd.luks.devices."luks-d6573cf8-25f0-4ffc-8046-ac3a4db1e964".device = boot.initrd.luks.devices."luks-d6573cf8-25f0-4ffc-8046-ac3a4db1e964".device = "/dev/disk/by-uuid/d6573cf8-25f0-4ffc-8046-ac3a4db1e964";
"/dev/disk/by-uuid/d6573cf8-25f0-4ffc-8046-ac3a4db1e964";
fileSystems."/boot" = { fileSystems."/boot" = {
device = "/dev/disk/by-uuid/97EB-7DB5"; device = "/dev/disk/by-uuid/97EB-7DB5";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = [ { device = "/swapfile"; } ]; swapDevices = [ ];
services.udev.extraRules = '' services.udev.extraRules = ''
# Force all disks to use mq-deadline scheduler # Force all disks to use mq-deadline scheduler

View file

@ -1,39 +0,0 @@
{ pkgs, lib, ... }:
let
undervoltGpu = pkgs.writeShellScript "undervolt-gpu" ''
set -xe
cd $1
echo "manual" > power_dpm_force_performance_level
echo "1" > pp_power_profile_mode
test -e pp_od_clk_voltage
echo "vo -120" > pp_od_clk_voltage
echo "c" > pp_od_clk_voltage
'';
in
{
boot.initrd.kernelModules = [ "amdgpu" ];
boot.kernelParams = [
"video=DP-1:1920x1080@144"
];
systemd.services.amd-fan-control = {
script = ''
${lib.getExe pkgs.amd-fan-control} /sys/class/drm/card1/device 60 90 0 80
'';
serviceConfig = {
Restart = "always";
RestartSec = 10;
};
wantedBy = [ "multi-user.target" ];
};
hardware.graphics.enable32Bit = true;
hardware.graphics.extraPackages = with pkgs; [
libva
];
services.udev.extraRules = ''
ACTION=="add", SUBSYSTEM=="hwmon", ATTR{name}=="amdgpu", ATTR{power1_cap}="186000000", RUN+="${undervoltGpu} %S%p/device"
'';
}

View file

@ -23,8 +23,6 @@ in
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
./partition.nix ./partition.nix
./amdgpu.nix
./factorio-server.nix
]; ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"nvme" "nvme"
@ -35,29 +33,47 @@ in
"sd_mod" "sd_mod"
]; ];
hardware.opentabletdriver = { hardware.opentabletdriver.enable = true;
enable = true;
# TODO: remove this once otd gets updated
package = pkgs.unstable.opentabletdriver;
};
my.gaming.enable = true;
my.nix-ld.enable = true;
boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ];
boot.initrd.kernelModules = [ "amdgpu" ]; boot.initrd.kernelModules = [ "amdgpu" ];
boot.kernelModules = [ boot.kernelModules = [
"kvm-amd" "kvm-amd"
"amdgpu" "amdgpu"
"zenpower" "zenpower"
]; ];
boot.kernelParams = [
"amdgpu.dcdebugmask=0x10" # amdgpu undervolting bug
"video=DP-1:1920x1080@144"
];
systemd.sleep.extraConfig = '' systemd.sleep.extraConfig = ''
HibernateDelaySec=30s HibernateDelaySec=30s
SuspendState=mem SuspendState=mem
''; '';
hardware.opengl.driSupport = true;
# # For 32 bit applications
hardware.opengl.driSupport32Bit = true;
hardware.opengl.extraPackages = with pkgs; [
libva
libvdpau
vaapiVdpau
rocm-opencl-icd
rocm-opencl-runtime
rocmPackages.rocm-smi
];
boot.kernelPackages = pkgs.linuxPackages_6_1;
programs.corectrl = {
enable = true;
gpuOverclock = {
enable = true;
ppfeaturemask = "0xffffffff";
};
};
fileSystems."/mnt/old" = { fileSystems."/mnt/old" = {
device = "/dev/disk/by-label/BTRFS_ROOT"; device = "/dev/disk/by-label/BTRFS_ROOT";
fsType = "btrfs"; fsType = "btrfs";
@ -120,11 +136,11 @@ in
"nofail" "nofail"
] ++ btrfs_options; ] ++ btrfs_options;
}; };
fileSystems."/home/lelgenio/.local/mount/old" = { # fileSystems."/home/lelgenio/.local/mount/bigboy" = {
device = "/dev/disk/by-label/BTRFS_ROOT"; # device = "/dev/disk/by-label/BTRFS_BIGBOY";
fsType = "btrfs"; # fsType = "btrfs";
options = [ "nofail" ] ++ btrfs_options ++ btrfs_ssd; # options = [ "nofail" ] ++ btrfs_options ++ btrfs_ssd;
}; # };
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's
@ -136,8 +152,6 @@ in
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
networking.hostName = "monolith"; # Define your hostname. networking.hostName = "monolith"; # Define your hostname.
virtualisation.virtualbox.host.enable = true;
services.udev.extraRules = '' services.udev.extraRules = ''
# Fix broken suspend with Logitech USB dongle # Fix broken suspend with Logitech USB dongle
# `lsusb | grep Logitech` will return "vendor:product" # `lsusb | grep Logitech` will return "vendor:product"

View file

@ -1,50 +0,0 @@
{
config,
pkgs,
lib,
...
}:
{
services.factorio = {
enable = true;
package = pkgs.factorio-headless; # I override this in ./pkgs
public = true;
lan = true;
openFirewall = true;
admins = [ "lelgenio" ];
extraSettingsFile = config.age.secrets.factorio-settings.path;
};
systemd.services.factorio = {
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
};
systemd.services.factorio-backup-save = {
description = "Backup factorio saves";
script = ''
FILENAME="space-age-$(date --iso=seconds | tr ':' '_').zip"
${lib.getExe pkgs.rsync} \
-av \
--chown=lelgenio \
/var/lib/factorio/saves/default.zip \
~lelgenio/Documentos/GameSaves/factorio_saves/$FILENAME
'';
serviceConfig.Type = "oneshot";
wantedBy = [ "multi-user.target" ];
};
systemd.timers.factorio-backup-save = {
timerConfig = {
OnCalendar = "*-*-* 18:00:00";
Persistent = true;
Unit = "factorio-backup-save.service";
};
wantedBy = [ "timers.target" ];
};
age.secrets.factorio-settings = {
file = ../../secrets/factorio-settings.age;
mode = "777";
};
}

View file

@ -1,26 +0,0 @@
{ pkgs, ... }:
{
users.users.davikiwi = {
isNormalUser = true;
description = "Davi";
hashedPassword = "$y$j9T$0e/rczjOVCy7PuwC3pG0V/$gTHZhfO4wQSlFvbDyfghbCnGI2uDI0a52zSrQ/yOA5A";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGgZDBnj+gVMHqoNvjpx2T/HqnxUDbLPshu+t7301gXd Davi@DESKTOP-EVHFGJ9"
];
extraGroups = [ "docker" ];
packages = with pkgs; [
(pkgs.python3.withPackages (python-pkgs: [
python-pkgs.pip
python-pkgs.wheel
]))
];
};
services.nginx.virtualHosts."davikiwi.lelgenio.com" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:24618";
};
};
}

View file

@ -2,20 +2,15 @@
config, config,
pkgs, pkgs,
inputs, inputs,
lib,
... ...
}: }:
{ {
imports = [ imports = [
inputs.vpsadminos.nixosConfigurations.container ./vpsadminos.nix
inputs.agenix.nixosModules.default inputs.agenix.nixosModules.default
inputs.sops-nix.nixosModules.default
../../system/sops.nix
../../system/nix.nix ../../system/nix.nix
./hardware-config.nix ./hardware-config.nix
./mastodon.nix ./mastodon.nix
./lemmy.nix
./nextcloud.nix ./nextcloud.nix
./nginx.nix ./nginx.nix
./syncthing.nix ./syncthing.nix
@ -23,9 +18,7 @@
./writefreely.nix ./writefreely.nix
./email.nix ./email.nix
./forgejo.nix ./forgejo.nix
./invidious.nix ./warthunder-leak-counter.nix
./davi.nix
./goofs.nix
]; ];
networking.hostName = "phantom"; networking.hostName = "phantom";
@ -61,27 +54,6 @@
identityPaths = [ "/root/.ssh/id_rsa" ]; identityPaths = [ "/root/.ssh/id_rsa" ];
}; };
sops = {
secrets.hello = { };
defaultSopsFile = lib.mkForce ../../secrets/phantom/default.yaml;
};
environment.etc."teste-sops" = {
text = config.sops.secrets.hello.path;
};
virtualisation.docker = {
enable = true;
daemon.settings = {
# needed by bitbucket runner ???
log-driver = "json-file";
log-opts = {
max-size = "10m";
max-file = "3";
};
};
};
nix.settings = { nix.settings = {
cores = 1; cores = 1;
max-jobs = 1; max-jobs = 1;

View file

@ -13,6 +13,9 @@ in
virtualHosts.${cfg.settings.server.DOMAIN} = { virtualHosts.${cfg.settings.server.DOMAIN} = {
forceSSL = true; forceSSL = true;
enableACME = true; enableACME = true;
extraConfig = ''
client_max_body_size 512M;
'';
locations."/".proxyPass = "http://localhost:${toString srv.HTTP_PORT}"; locations."/".proxyPass = "http://localhost:${toString srv.HTTP_PORT}";
}; };
}; };
@ -27,9 +30,6 @@ in
ENABLED = true; ENABLED = true;
DEFAULT_ACTIONS_URL = "github"; DEFAULT_ACTIONS_URL = "github";
}; };
repository = {
ENABLE_PUSH_CREATE_USER = true;
};
server = { server = {
DOMAIN = "git.lelgenio.com"; DOMAIN = "git.lelgenio.com";
HTTP_PORT = 3000; HTTP_PORT = 3000;
@ -37,7 +37,7 @@ in
}; };
mailer = { mailer = {
ENABLED = true; ENABLED = true;
SMTP_ADDR = "lelgenio.com"; SMTP_ADDR = "mail.lelgenio.com";
FROM = "noreply@git.lelgenio.com"; FROM = "noreply@git.lelgenio.com";
USER = "noreply@git.lelgenio.com"; USER = "noreply@git.lelgenio.com";
}; };

View file

@ -1,51 +0,0 @@
{ inputs, config, ... }:
{
imports = [
inputs.warthunder-leak-counter.nixosModules.default
inputs.made-you-look.nixosModules.default
];
services.warthunder-leak-counter.enable = true;
services.nginx.virtualHosts."warthunder-leak-counter.lelgenio.com" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.warthunder-leak-counter.port}";
};
};
services.made-you-look.enable = true;
services.nginx.virtualHosts."coolest-thing-ever.lelgenio.com" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.made-you-look.port}";
};
};
services.nginx.virtualHosts."catboy-spinner.lelgenio.com" = {
enableACME = true;
forceSSL = true;
root = inputs.catboy-spinner;
};
services.nginx.virtualHosts."tomater.lelgenio.com" = {
enableACME = true;
forceSSL = true;
root = inputs.tomater;
};
services.nginx.virtualHosts."youre-wrong.lelgenio.com" = {
enableACME = true;
forceSSL = true;
root = inputs.youre-wrong;
};
services.nginx.virtualHosts."hello-fonts.lelgenio.com" = {
enableACME = true;
forceSSL = true;
root = inputs.hello-fonts;
};
services.nginx.virtualHosts."contador-da-viagem.lelgenio.com" = {
enableACME = true;
forceSSL = true;
root = inputs.contador-da-viagem;
};
}

View file

@ -1,15 +1,10 @@
{ {
fileSystems."/var/lib/syncthing-data" = { config,
device = "172.16.130.7:/nas/5749/syncthinng_data"; pkgs,
fsType = "nfs"; inputs,
options = [ "nofail" ]; ...
}; }:
fileSystems."/var/lib/mastodon" = { {
device = "172.16.131.19:/nas/5749/mastodon";
fsType = "nfs";
options = [ "nofail" ];
};
swapDevices = [ swapDevices = [
{ {
device = "/swap/swapfile"; device = "/swap/swapfile";

View file

@ -1,40 +0,0 @@
{
inputs,
pkgs,
config,
...
}:
{
# Replace with unstable, since 24.05 does not have sig-helper
disabledModules = [ "services/web-apps/invidious.nix" ];
imports = [ (inputs.nixpkgs-unstable + "/nixos/modules/services/web-apps/invidious.nix") ];
services.invidious = {
enable = true;
domain = "invidious.lelgenio.com";
nginx.enable = true;
port = 10601;
http3-ytproxy.enable = true;
sig-helper = {
enable = true;
package = pkgs.unstable.inv-sig-helper;
};
# {
# "visitor_data": "...",
# "po_token": "..."
# }
extraSettingsFile = config.age.secrets.phantom-invidious-settings.path;
settings = {
force_resolve = "ipv6";
db = {
user = "invidious";
dbname = "invidious";
};
};
};
age.secrets.phantom-invidious-settings = {
file = ../../secrets/phantom-invidious-settings.age;
mode = "666";
};
}

View file

@ -1,18 +0,0 @@
{ pkgs, ... }:
{
services.lemmy = {
enable = true;
settings = {
hostname = "lemmy.lelgenio.com";
};
database.createLocally = true;
nginx.enable = true;
};
services.pict-rs.package = pkgs.pict-rs;
services.nginx.virtualHosts."lemmy.lelgenio.com" = {
enableACME = true;
forceSSL = true;
};
}

View file

@ -7,7 +7,7 @@
{ {
services.nextcloud = { services.nextcloud = {
enable = true; enable = true;
package = pkgs.nextcloud30; package = pkgs.nextcloud29;
hostName = "cloud.lelgenio.com"; hostName = "cloud.lelgenio.com";
https = true; https = true;
config = { config = {

View file

@ -11,7 +11,6 @@
recommendedTlsSettings = true; recommendedTlsSettings = true;
recommendedOptimisation = true; recommendedOptimisation = true;
recommendedGzipSettings = true; recommendedGzipSettings = true;
clientMaxBodySize = "512M";
}; };
# Redirect *lelgenio.xyz -> *lelgenio.com # Redirect *lelgenio.xyz -> *lelgenio.com

View file

@ -40,7 +40,6 @@
]; ];
initialHashedPassword = "$y$j9T$E3aBBSSq0Gma8hZD9L7ov0$iCGDW4fqrXWfHO0qodBYYgMFA9CpIraoklHcPbJJrM3"; initialHashedPassword = "$y$j9T$E3aBBSSq0Gma8hZD9L7ov0$iCGDW4fqrXWfHO0qodBYYgMFA9CpIraoklHcPbJJrM3";
}; };
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
programs.fish.enable = true; programs.fish.enable = true;

View file

@ -0,0 +1,76 @@
# This file provides compatibility for NixOS to run in a container on vpsAdminOS
# hosts.
#
# If you're experiencing issues, try updating this file to the latest version
# from vpsAdminOS repository:
#
# https://github.com/vpsfreecz/vpsadminos/blob/staging/os/lib/nixos-container/vpsadminos.nix
{
config,
pkgs,
lib,
...
}:
with lib;
let
nameservers = [
"1.1.1.1"
"2606:4700:4700::1111"
];
in
{
networking.nameservers = mkDefault nameservers;
services.resolved = mkDefault { fallbackDns = nameservers; };
networking.dhcpcd.extraConfig = "noipv4ll";
systemd.services.systemd-sysctl.enable = false;
systemd.services.systemd-oomd.enable = false;
systemd.sockets."systemd-journald-audit".enable = false;
systemd.mounts = [
{
where = "/sys/kernel/debug";
enable = false;
}
];
systemd.services.rpc-gssd.enable = false;
# Due to our restrictions in /sys, the default systemd-udev-trigger fails
# on accessing PCI devices, etc. Override it to match only network devices.
# In addition, boot.isContainer prevents systemd-udev-trigger.service from
# being enabled at all, so add it explicitly.
systemd.additionalUpstreamSystemUnits = [ "systemd-udev-trigger.service" ];
systemd.services.systemd-udev-trigger.serviceConfig.ExecStart = [
""
"-udevadm trigger --subsystem-match=net --action=add"
];
boot.isContainer = true;
boot.enableContainers = mkDefault true;
boot.loader.initScript.enable = true;
boot.specialFileSystems."/run/keys".fsType = mkForce "tmpfs";
boot.systemdExecutable = mkDefault "/run/current-system/systemd/lib/systemd/systemd systemd.unified_cgroup_hierarchy=0";
# Overrides for <nixpkgs/nixos/modules/virtualisation/container-config.nix>
documentation.enable = mkOverride 500 true;
documentation.nixos.enable = mkOverride 500 true;
networking.useHostResolvConf = mkOverride 500 false;
services.openssh.startWhenNeeded = mkOverride 500 false;
# Bring up the network, /ifcfg.{add,del} are supplied by the vpsAdminOS host
systemd.services.networking-setup = {
description = "Load network configuration provided by the vpsAdminOS host";
before = [ "network.target" ];
wantedBy = [ "network.target" ];
after = [ "network-pre.target" ];
path = [ pkgs.iproute2 ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.bash}/bin/bash /ifcfg.add";
ExecStop = "${pkgs.bash}/bin/bash /ifcfg.del";
};
unitConfig.ConditionPathExists = "/ifcfg.add";
restartIfChanged = false;
};
}

View file

@ -0,0 +1,19 @@
{
inputs,
pkgs,
config,
...
}:
{
imports = [ inputs.warthunder-leak-counter.nixosModules.default ];
services.warthunder-leak-counter.enable = true;
services.nginx.virtualHosts."warthunder-leak-counter.lelgenio.com" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.warthunder-leak-counter.port}";
};
};
}

85
hosts/rainbow/default.nix Normal file
View file

@ -0,0 +1,85 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
let
btrfs_options = [
"compress=zstd:3"
"noatime"
"x-systemd.device-timeout=0"
];
btrfs_ssd = [
"ssd"
"discard=async"
];
in
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"usb_storage"
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [ "i915" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-label/BTRFS_ROOT";
fsType = "btrfs";
options = [ "subvol=@nixos" ] ++ btrfs_options ++ btrfs_ssd;
};
boot.initrd.luks.devices = {
"main" = {
bypassWorkqueues = true;
device = "/dev/disk/by-label/CRYPT_ROOT";
};
};
fileSystems."/home" = {
device = "/dev/disk/by-label/BTRFS_ROOT";
fsType = "btrfs";
options = [ "subvol=@home" ] ++ btrfs_options ++ btrfs_ssd;
};
boot.loader.efi.efiSysMountPoint = "/boot/efi";
fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/DC3B-5753";
fsType = "vfat";
};
fileSystems."/swap" = {
device = "/dev/disk/by-label/BTRFS_ROOT";
fsType = "btrfs";
options = [ "subvol=@swap" ] ++ btrfs_ssd;
};
swapDevices = [
{
device = "/swap/swapfile";
size = (1024 * 8);
}
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
networking.hostName = "rainbow"; # Define your hostname.
}

View file

@ -2,7 +2,6 @@
rec { rec {
all = [ all = [
scripts scripts
unstable
themes themes
new-packages new-packages
patches patches
@ -12,10 +11,6 @@ rec {
scripts = (import ../scripts); scripts = (import ../scripts);
unstable = final: prev: {
unstable = import inputs.nixpkgs-unstable { inherit (final) system config; };
};
themes = ( themes = (
final: prev: { final: prev: {
papirus_red = (final.papirus-icon-theme.override { color = "red"; }); papirus_red = (final.papirus-icon-theme.override { color = "red"; });

View file

@ -0,0 +1,64 @@
{
lib,
mkYarnPackage,
fetchFromGitHub,
fetchYarnDeps,
testers,
writeText,
runCommand,
blade-formatter,
}:
mkYarnPackage rec {
pname = "blade-formatter";
version = "1.38.2";
src = fetchFromGitHub {
owner = "shufo";
repo = pname;
rev = "v${version}";
hash = "sha256-JvILLw7Yp4g/dSsYtZ2ylmlXfS9t+2KADlBrYOJWTpg=";
};
packageJSON = ./package.json;
offlineCache = fetchYarnDeps {
yarnLock = "${src}/yarn.lock";
hash = "sha256-UFDxw3fYMzSUhZw+TCEh/dN7OioKI75LzKSnEwGPKDA=";
};
postBuild = "yarn build";
passthru.tests = {
version = testers.testVersion {
package = blade-formatter;
command = "blade-formatter --version";
};
simple = testers.testEqualContents {
assertion = "blade-formatter formats a basic blade file";
expected = writeText "expected" ''
@if (true)
Hello world!
@endif
'';
actual =
runCommand "actual"
{
nativeBuildInputs = [ blade-formatter ];
base = writeText "base" ''
@if( true ) Hello world! @endif
'';
}
''
blade-formatter $base > $out
'';
};
};
meta = with lib; {
description = "Laravel Blade template formatter";
homepage = "https://github.com/shufo/blade-formatter";
license = licenses.mit;
maintainers = with maintainers; [ lelgenio ];
};
}

120
pkgs/blade-formatter/package.json Executable file
View file

@ -0,0 +1,120 @@
{
"name": "blade-formatter",
"engines": {
"node": ">= 14.0.0"
},
"keywords": [
"php",
"formatter",
"laravel"
],
"version": "1.38.2",
"description": "An opinionated blade template formatter for Laravel",
"main": "./dist/bundle.cjs",
"types": "./dist/types/main.d.ts",
"type": "module",
"exports": {
".": {
"import": "./dist/bundle.js",
"require": "./dist/bundle.cjs",
"default": "./dist/bundle.js"
},
"./*": "./*"
},
"scripts": {
"build": "cross-env NODE_ENV=production node esbuild.js && cross-env NODE_ENV=production ESM_BUILD=true node esbuild.js",
"prepublish": "tsc src/main.ts --declaration --emitDeclarationOnly --outDir ./dist/types || true",
"watch": "node esbuild.js",
"test": "yarn run build && node --experimental-vm-modules node_modules/.bin/jest",
"lint": "eslint src -c .eslintrc.json --ext ts",
"fix": "prettier {src,__tests__}/**/*.ts --write",
"check_formatted": "prettier **/*.ts -c",
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
"prepare": "husky install",
"bin": "cross-env ./bin/blade-formatter.cjs"
},
"bin": {
"blade-formatter": "bin/blade-formatter.cjs"
},
"author": "Shuhei Hayashibara",
"license": "MIT",
"dependencies": {
"@prettier/plugin-php": "^0.19.7",
"@shufo/tailwindcss-class-sorter": "3.0.1",
"aigle": "^1.14.1",
"ajv": "^8.9.0",
"chalk": "^4.1.0",
"concat-stream": "^2.0.0",
"detect-indent": "^6.0.0",
"find-config": "^1.0.0",
"glob": "^8.0.1",
"html-attribute-sorter": "^0.4.3",
"ignore": "^5.1.8",
"js-beautify": "^1.14.8",
"lodash": "^4.17.19",
"php-parser": "3.1.5",
"prettier": "^2.2.0",
"tailwindcss": "^3.1.8",
"vscode-oniguruma": "1.7.0",
"vscode-textmate": "^7.0.1",
"xregexp": "^5.0.1",
"yargs": "^17.3.1"
},
"devDependencies": {
"@babel/core": "^7.6.4",
"@babel/plugin-transform-modules-commonjs": "^7.16.5",
"@babel/preset-env": "^7.13.12",
"@babel/preset-typescript": "^7.16.5",
"@types/concat-stream": "^2.0.0",
"@types/find-config": "^1.0.1",
"@types/fs-extra": "^11.0.0",
"@types/glob": "^8.0.0",
"@types/jest": "^29.0.0",
"@types/js-beautify": "^1.13.3",
"@types/lodash": "^4.14.178",
"@types/mocha": "^10.0.0",
"@types/node": "^18.0.0",
"@types/xregexp": "^4.4.0",
"@typescript-eslint/eslint-plugin": "^5.8.1",
"@typescript-eslint/parser": "^5.8.1",
"app-root-path": "^3.0.0",
"babel-jest": "^29.0.0",
"codecov": "^3.8.3",
"cross-env": "^7.0.3",
"esbuild": "^0.19.0",
"esbuild-node-externals": "^1.4.1",
"eslint": "^8.5.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-prettier": "^9.0.0",
"eslint-import-resolver-typescript": "^3.0.0",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-jest": "^26.0.0",
"eslint-plugin-prettier": "^5.0.0",
"fs-extra": "^11.0.0",
"husky": "^8.0.0",
"jest": "^29.0.0",
"lint-staged": ">=10",
"source-map-loader": "^4.0.0",
"ts-jest": "^29.0.0",
"ts-loader": "^9.2.6",
"ts-migrate": "^0.1.27",
"ts-node": "^10.4.0",
"typescript": "^5.0.0"
},
"repository": {
"type": "git",
"url": "https://github.com/shufo/blade-formatter.git"
},
"files": [
"dist",
"src",
"bin",
"wasm",
"syntaxes",
"CHANGELOG.md"
],
"lint-staged": {
"*.ts": "yarn run fix"
}
}

View file

@ -2,13 +2,11 @@
# You can build them using 'nix build .#example' or (legacy) 'nix-build -A example' # You can build them using 'nix build .#example' or (legacy) 'nix-build -A example'
{ pkgs, inputs }: { pkgs, inputs }:
rec { {
blade-formatter = pkgs.callPackage ./blade-formatter { };
cargo-checkmate = pkgs.callPackage ./cargo-checkmate.nix { }; cargo-checkmate = pkgs.callPackage ./cargo-checkmate.nix { };
lipsum = pkgs.callPackage ./lipsum.nix { }; lipsum = pkgs.callPackage ./lipsum.nix { };
emmet-cli = pkgs.callPackage ./emmet-cli.nix { }; emmet-cli = pkgs.callPackage ./emmet-cli.nix { };
material-wifi-icons = pkgs.callPackage ./material-wifi-icons.nix { }; material-wifi-icons = pkgs.callPackage ./material-wifi-icons.nix { };
gnome-pass-search-provider = pkgs.callPackage ./gnome-pass-search-provider.nix { }; gnome-pass-search-provider = pkgs.callPackage ./gnome-pass-search-provider.nix { };
factorio-headless = pkgs.callPackage ./factorio-headless {
inherit (pkgs.unstable) factorio-headless;
};
} }

View file

@ -1,10 +0,0 @@
{ factorio-headless, pkgs }:
factorio-headless.overrideAttrs (_: rec {
version = "2.0.39";
src = pkgs.fetchurl {
name = "factorio_headless_x64-${version}.tar.xz";
url = "https://www.factorio.com/get-download/${version}/headless/linux64";
hash = "sha256-D4o9DkN5e1/02LhdfDNLCVo/B9mqf4Cx6H+Uk5qT3zQ=";
};
})

View file

@ -1,14 +0,0 @@
#!/bin/sh
set -xe
cd "$(dirname $0)"
current_version="$(rg '^.*?version\s*=\s*"(.+)".*?$' --replace '$1' ./default.nix)"
current_hash="$(rg '^.*?hash\s*=\s*"(.+)".*?$' --replace '$1' ./default.nix)"
new_version="$(curl https://factorio.com/api/latest-releases | jq -r .stable.headless)"
new_hash="$(nix-hash --to-sri --type sha256 $(nix-prefetch-url --type sha256 https://www.factorio.com/get-download/${new_version}/headless/linux64))"
sd --fixed-strings "$current_version" "$new_version" ./default.nix
sd --fixed-strings "$current_hash" "$new_hash" ./default.nix

View file

@ -5,6 +5,7 @@
wrapGAppsHook, wrapGAppsHook,
gtk3, gtk3,
gobject-introspection, gobject-introspection,
gnome,
}: }:
let let

0
scripts/_diffr Executable file → Normal file
View file

View file

@ -1,33 +0,0 @@
#!/bin/sh
# Create the DOCKER-USER chain if it doesn't exist
iptables -N DOCKER-USER || true
# Flush existing rules in the DOCKER-USER chain
iptables -F DOCKER-USER
# Get all external network interfaces
interfaces=$(
ip -o -f inet addr show |
awk '{print $2}' |
grep -E '^(enp|eth|wlan|wlp)' |
sort -u
)
for iface in $interfaces; do
# Allow traffic from LAN
iptables -A DOCKER-USER -i "$iface" -s 127.0.0.1 -j ACCEPT
iptables -A DOCKER-USER -i "$iface" -s 10.0.0.0/8 -j ACCEPT
iptables -A DOCKER-USER -i "$iface" -s 192.168.0.0/16 -j ACCEPT
# Allow established and related connections
iptables -A DOCKER-USER -i "$iface" -m state --state RELATED,ESTABLISHED -j ACCEPT
# Drop all other traffic
iptables -A DOCKER-USER -i "$iface" -j DROP
echo "iptables rules have been set up for interface: $iface"
done
# Return to the previous chain
iptables -A DOCKER-USER -j RETURN

0
scripts/_sway_idle_toggle Executable file → Normal file
View file

View file

@ -1,86 +0,0 @@
#!/usr/bin/env bash
set -e
DEVICE="$1" # eg: /sys/class/drm/card1/device
HWMON=$(echo "$DEVICE"/hwmon/hwmon*)
exit() {
echo "Setting controll to auto" >&2
echo 2 > "$HWMON/pwm1_enable"
}
trap exit EXIT INT
bail() {
echo "Error: $@" >&2
echo "Exiting..." >&2
exit 1
}
if ! [ -d "$HWMON" ]; then
bail "Invalid HWMON"
fi
TEMP_INPUT="$HWMON/temp2_input"
if ! [ -f $TEMP_INPUT ]; then
bail "Invalid TEMP_INPUT"
fi
TEMP_MIN="$2"
TEMP_MAX="$3"
if [ -z "$TEMP_MIN" ];then
bail "No minimum temperature provided"
fi
if [ -z "$TEMP_MAX" ];then
bail "No maximum temperature provided"
fi
PWM_MIN_PCT="$4"
PWM_MAX_PCT="$5"
if [ -z "$PWM_MIN_PCT" ];then
bail "No minimum fan speed % not provided"
fi
if [ -z "$PWM_MAX_PCT" ];then
bail "No maximum fan speed % not provided"
fi
PWM_MIN="$(( $PWM_MIN_PCT * 255 / 100))"
PWM_MAX="$(( $PWM_MAX_PCT * 255 / 100))"
echo "Running..." >&2
echo "TEMP_MIN=$TEMP_MIN°C"
echo "TEMP_MAX=$TEMP_MAX°C"
echo "FAN_MIN=$PWM_MIN_PCT%"
echo "FAN_MAX=$PWM_MAX_PCT%"
echo 1 > "$HWMON/pwm1_enable"
PREV=0
while true; do
TEMPERATURE_RAW=$(cat "$TEMP_INPUT")
TEMPERATURE="$(( $TEMPERATURE_RAW / 1000 ))"
# Remap from a number between 60_000..90_000 to 0..255
PWM=$(( ($TEMPERATURE - $TEMP_MIN) * $PWM_MAX / ($TEMP_MAX - $TEMP_MIN) ))
if [ "$PWM" -gt $PWM_MAX ]; then
PWM=$PWM_MAX
elif [ "$PWM" -lt $PWM_MIN ]; then
PWM=$PWM_MIN
fi
AVG="$(( ($PWM * 20 + $PREV * 80) / 100 ))"
echo "$AVG"
echo "$AVG" > "$HWMON/pwm1"
PREV="$AVG"
sleep .1s
done

27
scripts/auto_connect_gamepad Executable file
View file

@ -0,0 +1,27 @@
#!/bin/sh
list_paired_controllers() {
bluetoothctl devices Paired | grep -i 'controller' | cut -d' ' -f2
}
count_connected_controllers() {
bluetoothctl devices Connected | grep -i 'controller' | wc -l
}
try_to_connect_to_all_controllers() {
list_paired_controllers | while read paired_controller; do
echo "Trying to connect to controller $paired_controller"
bluetoothctl connect "$paired_controller"
done
}
while true; do
echo "looping"
if test "$(count_connected_controllers)" -ne 0 ; then
echo "there is a controller connected, not attempting to connect to any other"
sleep 10s
continue
fi
sleep 1s
try_to_connect_to_all_controllers
done

0
scripts/bmenu Executable file → Normal file
View file

0
scripts/br Executable file → Normal file
View file

View file

@ -1,38 +0,0 @@
#!/bin/sh
set -e
CONTROLLER=$(find /sys/class/power_supply -maxdepth 1 -name '*controller*' || true)
if test -z "$CONTROLLER"; then
echo
exit 0
fi
CAPACITY=$(cat "$CONTROLLER/capacity")
echo -n '󰊴'
if test "$CAPACITY" -ge 90; then
echo '󰁹'
elif test "$CAPACITY" -ge 90; then
echo '󰂂'
elif test "$CAPACITY" -ge 80; then
echo '󰂁'
elif test "$CAPACITY" -ge 70; then
echo '󰂀'
elif test "$CAPACITY" -ge 60; then
echo '󰁿'
elif test "$CAPACITY" -ge 50; then
echo '󰁾'
elif test "$CAPACITY" -ge 40; then
echo '󰁽'
elif test "$CAPACITY" -ge 30; then
echo '󰁼'
elif test "$CAPACITY" -ge 20; then
echo '󰁻'
elif test "$CAPACITY" -ge 10; then
echo '󰁺'
else
echo '󰂎'
fi

View file

@ -1,33 +1,34 @@
( (
final: prev: final: prev:
with prev;
let let
lib = prev.lib; import_script = (_: path: import (path) { inherit pkgs lib; });
create_script = (
importScript = (_: path: import (path) { inherit (final) pkgs lib; });
wrapScript =
name: text: runtimeInputs: name: text: runtimeInputs:
final.runCommand name let
{ script_body = pkgs.writeTextFile {
nativeBuildInputs = [ final.makeWrapper ]; inherit name;
meta.mainProgram = name; executable = true;
} text = ''
'' ${builtins.readFile text}
mkdir -p $out/bin '';
cp ${text} $out/bin/${name} };
wrapProgram $out/bin/${name} \ in
--suffix PATH : ${lib.makeBinPath runtimeInputs} (pkgs.writeShellApplication {
''; inherit name runtimeInputs;
createScripts = lib.mapAttrs (name: deps: wrapScript name ./${name} deps); text = ''exec ${script_body} "$@"'';
checkPhase = "";
})
);
create_scripts = lib.mapAttrs (name: deps: create_script name ./${name} deps);
myPass = final.pass.withExtensions (ex: with ex; [ pass-otp ]); pass = pkgs.pass.withExtensions (ex: with ex; [ pass-otp ]);
in in
with final; create_scripts {
createScripts {
amd-fan-control = [ bash ];
br = [ ]; br = [ ];
bmenu = [ bmenu = [
bemenu final.bemenu
dhist final.dhist
fish fish
j4-dmenu-desktop j4-dmenu-desktop
jq jq
@ -43,21 +44,21 @@
fish fish
]; ];
_diffr = [ diffr ]; _diffr = [ diffr ];
_thunar-terminal = [ terminal ]; _thunar-terminal = [ final.terminal ];
_sway_idle_toggle = [ swayidle ]; _sway_idle_toggle = [ final.swayidle ];
kak-pager = [ kak-pager = [
fish fish
_diffr final._diffr
]; ];
kak-man-pager = [ kak-pager ]; kak-man-pager = [ final.kak-pager ];
helix-pager = [ helix-pager = [
fish fish
_diffr final._diffr
]; ];
helix-man-pager = [ helix-pager ]; helix-man-pager = [ final.helix-pager ];
musmenu = [ musmenu = [
mpc-cli mpc-cli
wdmenu final.wdmenu
trash-cli trash-cli
xdg-user-dirs xdg-user-dirs
libnotify libnotify
@ -70,12 +71,11 @@
pass-export = [ pass-export = [
pass2csv pass2csv
gnupg gnupg
sd
]; ];
wpass = [ wpass = [
wdmenu final.wdmenu
fd fd
myPass pass
sd sd
wl-clipboard wl-clipboard
wtype wtype
@ -96,7 +96,7 @@
pulse_sink = [ pulse_sink = [
pulseaudio pulseaudio
pamixer pamixer
wdmenu final.wdmenu
]; ];
color_picker = [ color_picker = [
grim grim
@ -108,13 +108,13 @@
dzadd = [ dzadd = [
procps procps
libnotify libnotify
wdmenu final.wdmenu
jq jq
mpv mpv
pqiv pqiv
python3Packages.deemix python3Packages.deemix
mpc-cli mpc-cli
mpdDup final.mpdDup
]; ];
mpdDup = [ mpdDup = [
mpc-cli mpc-cli
@ -125,27 +125,14 @@
zbar zbar
wl-clipboard wl-clipboard
]; ];
git_clean_remote_deleted = [ auto_connect_gamepad = [
git bluez
coreutils
gnugrep gnugrep
gawk
findutils
];
pint-fmt = [ ];
powerplay-led-idle = [
bash
libinput
libratbag
];
controller-battery = [ ];
_docker-block-external-connections = [
iptables
gawk
gnugrep
iproute2
]; ];
vrr-fullscreen = [ ];
} }
// lib.mapAttrs importScript { // lib.mapAttrs import_script {
wdmenu = ./wdmenu.nix; wdmenu = ./wdmenu.nix;
wlauncher = ./wlauncher.nix; wlauncher = ./wlauncher.nix;
_gpg-unlock = ./_gpg-unlock.nix; _gpg-unlock = ./_gpg-unlock.nix;

View file

@ -1,6 +0,0 @@
#!/bin/sh
git branch -vv \
| grep ': gone]' \
| awk '{print $1}' \
| xargs git branch -D

0
scripts/helix-pager Executable file → Normal file
View file

0
scripts/kak-pager Executable file → Normal file
View file

View file

@ -8,6 +8,3 @@ pass2csv "$PASSWORD_STORE_DIR" "$HOME/passwords.csv" \
-f User '(user|login)(:\s*)?' \ -f User '(user|login)(:\s*)?' \
-f TOTP 'otpauth(:)?' \ -f TOTP 'otpauth(:)?' \
-f URL 'url(:\s*)?' -f URL 'url(:\s*)?'
# Fix TOTP format for keepass
sd '"//totp/.*?secret=(.*?)(&.*?)?"' '"$1"' "$HOME/passwords.csv"

View file

@ -1,7 +0,0 @@
#!/bin/sh
file="$(mktemp)"
cat - >"$file"
./vendor/bin/pint --quiet "$file"
cat "$file"
rm "$file"

0
scripts/playerctl-status Executable file → Normal file
View file

View file

@ -1,79 +0,0 @@
#!/usr/bin/env bash
set -e
# Constants
SECONDS_UNTIL_FADE=$(( 1 * 60))
SECONDS_UNTIL_OFF=$(( 6 * 60))
COLOR_ON=ff0000
COLOR_FADE=880000
COLOR_OFF=000000
# Logging
if [[ "$1" = "debug" ]]; then
echo "Running with debugging" >&2
DEBUG="true"
SECONDS_UNTIL_FADE=$(( 3 ))
SECONDS_UNTIL_OFF=$(( 5 ))
fi
log() {
if [[ "$DEBUG" = "true" ]]; then
echo "$@" >&2
fi
}
# Implementation
main() {
CURRENT_STATE="UNKNOWN"
LAST_POINTER_MOTION="$(date +%s)"
if [ "$(ratbagctl list | wc -l)" -ne 1 ]; then
echo "Not exactly one device found, exiting..."
exit 1
fi
DEVICE="$(ratbagctl list | cut -d: -f1)"
while true; do
while read line; do
LAST_POINTER_MOTION="$(date +%s)"
break
done < <(
timeout 5s \
libinput debug-events \
| grep POINTER_MOTION
)
TIME_SINCE_LAST=$(( "$(date +%s)" - "$LAST_POINTER_MOTION" ))
log "Last pointer motion was $TIME_SINCE_LAST seconds ago"
if [ "$TIME_SINCE_LAST" -gt "$SECONDS_UNTIL_OFF" ]; then
setState OFF "$COLOR_OFF"
elif [ "$TIME_SINCE_LAST" -gt "$SECONDS_UNTIL_FADE" ]; then
setState FADE "$COLOR_FADE"
else
setState ON "$COLOR_ON"
fi
done
}
setState() {
STATE="$1"
COLOR="$2"
MODE="$3"
if [[ "$STATE" = "$CURRENT_STATE" ]]; then
log "Already in $STATE state"
return
fi
log "Changing state to $STATE"
CURRENT_STATE="$STATE"
ratbagctl "$DEVICE" led 0 set mode on
ratbagctl "$DEVICE" led 0 set color "$COLOR"
}
main

0
scripts/pulse_sink Executable file → Normal file
View file

0
scripts/screenshotsh Executable file → Normal file
View file

0
scripts/showkeys Executable file → Normal file
View file

0
scripts/terminal Executable file → Normal file
View file

28
scripts/vrr-fullscreen Executable file
View file

@ -0,0 +1,28 @@
#!/usr/bin/env bash
# List of supported outputs for VRR
output_vrr_whitelist=(
"DP-1"
"DP-2"
)
# Toggle VRR for fullscreened apps in prespecified displays to avoid stutters while in desktop
swaymsg -t subscribe -m '[ "window" ]' | while read window_json; do
window_event=$(echo ${window_json} | jq -r '.change')
# Process only focus change and fullscreen toggle
if [[ $window_event = "focus" || $window_event = "fullscreen_mode" ]]; then
output_json=$(swaymsg -t get_outputs | jq -r '.[] | select(.focused == true)')
output_name=$(echo ${output_json} | jq -r '.name')
# Use only VRR in whitelisted outputs
if [[ ${output_vrr_whitelist[*]} =~ ${output_name} ]]; then
output_vrr_status=$(echo ${output_json} | jq -r '.adaptive_sync_status')
window_fullscreen_status=$(echo ${window_json} | jq -r '.container.fullscreen_mode')
# Only update output if nesseccary to avoid flickering
[[ $output_vrr_status = "disabled" && $window_fullscreen_status = "1" ]] && swaymsg output "${output_name}" adaptive_sync 1
[[ $output_vrr_status = "enabled" && $window_fullscreen_status = "0" ]] && swaymsg output "${output_name}" adaptive_sync 0
fi
fi
done

0
scripts/wl-copy-file Executable file → Normal file
View file

0
scripts/wpass Executable file → Normal file
View file

Binary file not shown.

View file

@ -1,55 +0,0 @@
forgejo-runners:
git.lelgenio.com-default: ENC[AES256_GCM,data:sEfpBZvgQUkyXPWY4RI0RPJWUbsYK/RGqiYJ5wDSVY9a0EYenyt96QYq6815evq2iQ==,iv:rSWnCOdhfKH4TM9R0/IParYd9laYhWxR+iUhgkVvqfc=,tag:mBcSH/oGDMBgBScvCdn3Zg==,type:str]
gitlab-runners:
thoreb-telemetria-nix: ENC[AES256_GCM,data:zrZvG4be08ulpo7itbrprKK5csCMLvzZjrszfMw1XiJP0FyRTUd9nHgHpbAzbjj2KyT7kKngoZAyengvaTEhkT9sUi1pdGnvajAH8BDDOD0g4LJIHFl4,iv:3bSsTzU7gHx+MchuPg9kmb5xEDugmGPje8Jw74NpRJI=,tag:zffRr77lWbyLt7o/mywb5A==,type:str]
thoreb-itinerario-nix: ENC[AES256_GCM,data:UdAAD0V895sFoEYR56sCG2LlpZugJ0K/nwkTygzWOnbTSmBRAcIQ8qVFPZGw+K+XMSLiCyio6Jp7k8AYP0K1VYm+6aEP3OkqR9FCLQTJgXo=,iv:UGUby50BYkn13OzItk6zZmxc5+SnbZZa4bebQHIow2A=,tag:LjDg3deWwdH2T71EtPo6jA==,type:str]
docker-images-token: ENC[AES256_GCM,data:GGB/KSkjdAyhFKEspAh91ItbqEDf7K/LZSGSn+Jp7SxRfXpDzHIiMD8XJ9PTkGLeQGN4ug1i2nTYPS7d/P5OALWDU+1NPiV9nPdG0w7GERfu4g==,iv:6roabdOKX9xFMf0hWlECd73+943R+hFLos0e2dOpzns=,tag:LrASFc4DtN7aQ+3oOW/p/w==,type:str]
bitbucket-runners:
wopus-runner-1: ENC[AES256_GCM,data:gtH0T5n8qMYpvSv5ciN8+ScGlFDf9xE0FTxNP97vT/qsOCcaItTE+5P+DFcWw46onLED+1c+u0sArFbEsT3f8lyco9b+0l99uOQAxLZQzAXYH8zGye1UnwUtytkci2PHu5c8kTpIWHXyZ1IOYNGWkermeab57ANzOkM1LbkHyAjS6VTh0I60LfAOdHOw5FDFL8d1d9oWxLloOe9USLPqHjC023EpCUT2YuyHoPCTpBu8Kb/2HfV0wkAKaB3dvVrKwXCj+bfP6+bjQ3uMzVO/7jxPmnSGBfvyZ+Hlg5goJ6bSAqQWmnPPnQ96FgQfe8su5ML9qNIp9/7eNiL6Rv6Vhxe0hHbE5wsZ/58grcg/LrugeWJvUJ9THhwcTwO8Pkvwlq0XM9seUY2NV+LCK3bLQ4IWDjWkU1IHg6+nihTcvl1iD6UIGMgqGoB/v05WVzHb+GcE2fFuSuhVHfa5RMyboELOJoFrqZiXGhY=,iv:ZakLafxYQCDd1Zw8T83Xfj+YwAQKna9LC6ognJqtifA=,tag:bwBObfdMIvJfRrOG04NtxA==,type:str]
wopus-runner-2: ENC[AES256_GCM,data:gg8merZMFbf396hdJY7zmKQndT3GzB7NeGZAs3C0au8Zd7OFAg9vcQcFcxNA3kZGJZqmFTR/ycWJwhYr9fhlfFuPhDynVvgJAqoYtvC2MUDiOMD/d3DlfwFjQ6cOGTrvFuY1kkgSFb4OFdrVC1eiTDrGygFmYnYcqTKn/t5Ttqi+cHZNzFzVzdVLvaLCYxltM5g45zn+fXYxYwCfqyb32/M1XTnnwIGiataGxEX5oWhVV4zqeLO4ZIYPSby5AVvIMJ/zqvqaeVVY52GLDcTKrj3thbZxMQLWN3/lOA0uYhi3L/WM8Gx+JMEIbSICcuT7QXu4w4PA+opcx9GnsMCK2/egzS+cNPJ4vGZCdVD/jh6A9zVEJAgXdsHXNXFHmMPt7DcgrCQiub62og4kBY4G/Rcg4UN7sb3v3qyBpGbCGHGRjCFc+wdHpom0yDOG2cwcqfN49pC2R7Ag2BisFQ/5A+DPmKnvGG3kt9s=,iv:5g5XiDecYqi4JNRkZubgPJECBQdZ6rBeojgFe6Etebk=,tag:HRy5bFSbfxKTb5e13lGtgg==,type:str]
wopus-runner-3: ENC[AES256_GCM,data:f9pLYR8t51HtPpLyXysIVaDAhxDrmktJH93E7rb7imtKwK7hRhR8usnvHTcknLfD7BMvStAIYefdGt19u7PrQu6vqc19bEcNbnK5OH4KBP6+X47oMgBYtbIGXH+t3dSDt22fSIoppTwdX7/Kf4vqesfN8K7EunETvFR86oyyKdy15mvXr0XUO4us4HZjnIOBEnOm1P/V8hk5JcCpRuo+8ZYmBe5gzq5pTnqnYlPE1EovM7eDMg72J7ev07h50qvySrAqmNiqDcXfTPQ2TzuHx3XxAYqFybf1L6P9OnLB6RDAlpoFJ0h8dSg2tzC2+amYsBP0UIBK/ZhWvvAjpX+MZrTASjenh/tefDcNdbsXDOr7A4i/261z4rC0r+97INglCN1N/SZg51iBHiRAVV1zibDLfioR5+eBIykWAtjILMoYU+zOcr0E8K0I9jQGMtpnYmvHJqV0DVcdfZpJptrPUUy+lQ/iZVcPpLs=,iv:grzvVsfpUzywjNE4jvTxXKG3TYajrvSsQgfOgtafvIo=,tag:K1B6crN0ckLk0EYBtGHDkw==,type:str]
wopus-runner-4: ENC[AES256_GCM,data:D1Zq0BtPuACnutAbUcj3gYSMLuIZcMuqc/1mEFmitEG0tBFMWhkabS+8lXcp8sb1DM0LTDMEwgMB9FVyFb670MKQNEncqQtaNJtY1BxS3SolovDAM/I+i6YGvd4X8jX99d+7ZNR6xGBWJ/dW8rz4QnIM8Eh3FDOqaFa/ltfyPKP9IZ2uZi67C/n8Q/OSdgMQkt+QxhgJfSghE1iruPwxyGlqv+E4SZNI/fQQMjX0Lh7z02ms58yyMtjO71YbukV/JXFRsdJrqY2wfH/6NlZbsKideoSxluBRVqmbW6KQd7dUT819KbOSu9CFdgThtVCU8qiv3jbAbn8D5xRy4AAOEfSqRLXJoj7otCqr47R/8+0BdS3aztFBjL3lDmprMWZ4+LD55fvczfpxUF9ox1mhcjIvCvZJJL06XsST1XRXa7i2fr4/a/XhCmQgIzar5IYxSC9OjuHp6jLsTaY3ZUgid5W1L1n8uWSmA98=,iv:O9caRG//brERiIhuMrsFdTz6TnPY0rdQnvHEu0P42yM=,tag:hrmwLX/CRhZfammJ2nfTPw==,type:str]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlaFFtOHRBNjZqOXJOV1Bk
SXRhZTdNWklKaTZST2JhU3VFLzBGSWY0QlMwCldwS1hhMDEyZDAxWUlRRXZtTWts
Ti9IOUR2OFdGYkJ4cFRsV0lkbWJvb1EKLS0tIEJUS1ZCZ1M4ZUs5cDhiam5JaEk1
U1VjNFprNHZWeDhwU3owRXh0MlBFYkUKHPgxz9/w3+JEtOljfyWBPSshfFlVWVys
f15yxlAeWIZVEGqoau7DegVdZiYYIJR2dFBXV1RkKbAwLrbUxAQidg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1ecyynwv93lfu7crjjp8l47defv07quzfzaktwurpep7jc9eha5pscg7lrw
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5OWk0cTJ4d25Qd0hrdkFD
a2Fzd1lrMDREclkvRmxUSjFpYXZvRGs2Rm13Cm5aRVZDWE5ZUVR1K2hkZkdKWjYw
K3lKNndBNGFveGVGVWplaHA0MVlYUG8KLS0tIFlVeXhCTGJGUm1HK2RCSFg1RnI3
aFVxcDFhaGdYekRWRVFIWnRsZndtZFkKgsvxOFHOcO306Z9FkucA1fDOpZA8N1/h
jYmIgcKTFgWoSCvux67lK30jFsYp7sm5z6WxxDYsGcoQ/+pxoUX2jQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-03-07T21:28:04Z"
mac: ENC[AES256_GCM,data:4lOafZQ6PP38CByulzA/J86sw+TpQhj40s1lTRXqUtpt72yH8nQK8dXpw0dNYvDBtDpKRvNTHZubzalEua6n2lCQL7rsZ2+fo6FJ4ht2Kb70dddDcWEyrfyZQ2FaKC5L/QjqM0SbIfPszNvyQ8wIaOoMfNJBis5QOjRSGDAcJm8=,iv:LLT0oJW+3KNe1nKphCK0c5FPIuh8GfnDrvNDCFhP4NM=,tag:rPbVY7L1qxNc3aCfv77FAg==,type:str]
pgp:
- created_at: "2025-03-07T22:49:16Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQEMAzy6JxafzLr5AQgAjwQqdeESOfrOuCjfjALdoy3AnNYC+slusdlra58CoRu6
YFDAivwPHJBRiuVy43Lo7SWnKXMKvLOry589GBY3JGjNV5U1cPWBhMlTubYZmZWl
iel8Bvw4IF5JksMIvLFdDgexLN7wETzzZP9S8750BCgpSrncrw1k/dUedhv5HUjo
N10x6BPjPSmgolA8uxsISHLAUrKcQoeaWvcZFU1ofKywq08HgIySphy6z3Gmv3Qs
86saZp1rFm5+qHkrDRgL6Oe3Xx30jVkzn9MHPWzZCDPCEvYGJgXX34NGzbX+/nd3
JB9XkT2YTFi4BLhdHY3EE7e9//PJc5G9RVDZyAF1e9JeAXH2yR5blXbogoy+VMnS
Yn74Uvs+fnYFTDOiuequro5i0uAyxtrCx8fdfwjuh+9SC5p3N2cBv2eT7zLQwQHi
czHlwxmpi/dMB/u83fR4FzuCUt98VXiezIC4yGn25g==
=Yqqx
-----END PGP MESSAGE-----
fp: 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
unencrypted_suffix: _unencrypted
version: 3.9.4-unstable

View file

@ -1,16 +0,0 @@
age-encryption.org/v1
-> ssh-rsa BwwxHg
iTcgtxF1IxopbtF+aw7V8IQfH7tWiMk9lE/eWlVHVjeaRvER5W6Y3xZNOFCjtbqY
VwEyV6ibfZ4GJt1jRu2icEH/AnLUJFFGQnxu/K/rtoZ3tqSIk9WCBv3aPo4oZRiU
uaaxi2gD8qo1RLyl/Ij7Djw4i/isUOO1EON5sgx1d39k6qUD4Mak0DSU4EtGdTsr
OaxDAc0kAxhxZQOUH/QlKa0HLonaFcy1LHqvttOcw3UZuZnaYfZiPlcqe3USS9cm
96aIC5cS9pHr4JFrqRYvfpla2TY5jlCB/xBGw3KjGEIQoBPXSsJZA6BCMZyp00++
tdfS2aomt9HFmb1wZDS0jWAxkVF6nXXBbolFVih+58h0nYLljtHIQ3SizRoXY459
x3JE9NReHp2OO3SlIeO03Kv8YMBvj7nSSd1C1PMpu+hJ/eCXi1WQxD6QY+40muk6
KhqE3PZ8BCY2b+VpywUF5gVH28mo3jscqAzhf2dZ3SQlzldI+hFyKPxTdAqkfUOH
--- cinb+wzjVfTkpfm1CtFIFaepwoQVCj1MquB5rAC45Ew
¾
6
ZCþHS0 7ïº ÖóýE¼X* Àqb=üOßíÛÉwu¥¤³­Pºþ¹ Ùçǖѳ/£ómvòÞ×Ë2VœÄ«
ÁŠxvç[“£µ£±”ÌA~ evdÓåÙ0¢Œni³1Ò¹Qý„"í@Ù¹§ÞÔ{KpÐ:åϵuµsÊÎBñò(X…r[ÂQVg¢Tš¤°ðœîËï@Ä*ÇõÿíB «<>.§¯žhE鲟èÐë­÷½¥Žûzlz|kã`l8´Mcch<63>îáZ`ƒ ?yeoƒ+ÈM-:/–À**ìè¦ÊcŸÎZD¡2Ñá¼é&·÷¾Ç¢ ¹£e¤ï*Hnç"Þ~+|ua(û6óËJ

View file

@ -1,54 +0,0 @@
hello: ENC[AES256_GCM,data:UJAAdOL7wzQ1LduTyW+XK2NtXyw/u/Yz28Bmd7OoBe41FVLKwVfvdI1nAwYuNQ==,iv:7kPT2HF5T498bUJ9hUlz5Ez/jn1g7YIUVbJOTW/CHhQ=,tag:KJhJPg8AStyW4roEbEUJ2g==,type:str]
example_key: ENC[AES256_GCM,data:DcLN+C1BQ6WZg5fRiA==,iv:JC3GTWn4a4RekAHdOQB3YV5+eGa4cUK1JjyTPe8eNHY=,tag:W9CV4rsgHuXyqpWpUxlIQg==,type:str]
#ENC[AES256_GCM,data:RjdYJNz6qGfbsU/AiBeLlQ==,iv:LjRzSjBXp44cGSqUUfRDNLC9cW4Vd7lfsqDWINt31VA=,tag:NzVm1h9CVKE2XXt300aR/g==,type:comment]
example_array:
- ENC[AES256_GCM,data:K9j/t8MDibYO8Frhu1M=,iv:YnrxRnJJwTH6DJC6Bv/d1NUnX2ZPFwsjoji7L1Z+d7s=,tag:Dm7xCUlnjKdXHCuk8lwY8w==,type:str]
- ENC[AES256_GCM,data:0g6ACJzEHBtukwQYYTY=,iv:xLBJWfOYkX7Y28N01CX2+d5QOr9VGAhInH6pa1hNSGE=,tag:tCkCigo4yhi6YKVMe3Z3lQ==,type:str]
example_number: ENC[AES256_GCM,data:R+/m/QVBH9/3DA==,iv:FumBUj97ICrRQmyh5fg8Gu9Lba9oITD1pdsr1I/PCf0=,tag:hguw1gpPI3w64fG1WLnJqA==,type:float]
example_booleans:
- ENC[AES256_GCM,data:VvI5ag==,iv:koMzyWcua75sK19vuk65oywCD61lMyH3xUwue8LTqy4=,tag:2ym1M0FTwevLm7wefTUWAw==,type:bool]
- ENC[AES256_GCM,data:lFEC/S8=,iv:cJWbnmseP/AqJzyORM+VI5y7rK8axVeh7EXoLP7mT/Q=,tag:BaS5HyecokdLCq+LzQxGkg==,type:bool]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpSXhsMHQvb0NyUXRkRDE3
TjVjb2orQktDMGs4U2JUS3hWdmtMdnhuYnhBCi9VU1RVblZPaW14VGxMcjM0N20z
R1pOdUJZc1ZGcjBsTnNaZGhleVR6L1kKLS0tIE5vQkFhVXd0R3ZQSzZkNmVqN1Vj
NERXdlJhVHF0NWpNT29CNlRid2NYMVUKxg7kbP6dOZDUz0uxdC45DZCAa6GQTQ1x
nIb7lvPW4xFIb0bOZuvc7cAbHjf4So+8zvA0MM4mkTmIDpnwGD5Clg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1m4mqcd2kmuhfr8a22rvh02c68jkakhdfmuqgtusuv0czk4jvna7sz79p3y
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrcTJGVmZUenNwYVNjRFlU
VXNBeDdpVFVtSTN5TG9VN0Q1WjRFbjlHd0Z3CjFsU1BsNkZ1a1ZkY2lva3lBUWZ3
YUpqeEo0Tys1bDk0TEpwQTJ2U29kbjgKLS0tIFJDYWpNemY4NXZ0MkM0YWNldDBE
RU1HSUhldHpzeURaUWQvcjBCQ3pMY2cKYL87Njs4e68zu5AXKNF/hxiB3HduS8wz
o0kmGI58DZx17+Cdipw0ab9a9wiu9C9Fn+LaiCcdM/ESXtS79RzdbQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-03-05T22:27:18Z"
mac: ENC[AES256_GCM,data:WSopSnWZ+uOllywd7difaZtJcfxkL7eIf9Kr3GajZKO0+rP6pEHIS+5AbXZy6oKRlCLUPecY/WXFvk3//akpvvXHbf6Jp4fQ/YSuTcYKRQupbDBpOXSlc33QyRl6oEyiMOjxMxa2N2tmq8dmA0NbF9wSDMa5a4eNDoiL5T/sUZ8=,iv:QqbVRApzFF6q24rk8KfKuthj656nEczD9Si4INj+N9A=,tag:tMRNYo+u/jIQ6iX3KqKJdA==,type:str]
pgp:
- created_at: "2025-03-07T22:49:19Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQEMAzy6JxafzLr5AQf/Zw+EB0lFpbul4KmHL3ndbhQCHzhkMgG6vEyj7EpjHQxE
nwf9kRrTcRh9YdrgR+5PFRnFJ8+L+gZhk+V/GaEPcEUyskOX/YGTSp1u6pXKGEem
TGojrIx0WwcmeCZUn+qCehbC7ZU64NDDmb7VeWnRkMbboU6UVooHUub88VsbnYw2
XXtXh4G8isrbyAKzUyypnJnEVbKlVqPOL67BYczjyBqMYc1JVLmBy6nP+sv6q/yo
QyDzlunmZtu52dwAL0L6wJF+novLr4W9cso4K5UVv2sp5M8gucuiY2obiB3vNfgO
q9GZTlMWnyDGflM1w+tzpZ/Ke+sM4dSy3cXpZd+MFNJeAaBJ1owjolb4tPUXlt+W
cJ+SFLWxzH8MsPb+Hfxrt8PPCcv67uch/k50PLYs/V/EM59+mgEJe5LY4rMbUSFw
REGL3LA6Cnkl2bUeHlfG7XlztHd/ehmZM2RPKof+Qw==
=htZl
-----END PGP MESSAGE-----
fp: 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
unencrypted_suffix: _unencrypted
version: 3.9.4-unstable

View file

@ -2,6 +2,9 @@ let
main_ssh_public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxR/w+38b2lX90yNBqhq3mUmkn1WGu6GAPhN1tVp2ZjYRJNV/+5gWCnTtOWYtDx35HmK/spQ2Qy8X9ttkzORa24fysNx1Iqn/TiXhD7eIJjbGPnrOpIKTkW5/uB3SD/P5NBSa06//BaqJU4sBlG79hoXRpod052hQtdpTVDiMCIV+iboWPKqopmJJfWdBtVnHXs9rep0htPRExxGslImFk7Z6xjcaHyCpIQZPlOGf+sGsmUU7jRqzvZFV8ucIdbnAlMHrU4pepNFhuraESyZVTa/bi9sw0iozXp5Q5+5thMebEslmT1Z771kI4sieDy+O4r8c0Sx2/VY1UAzcpq1faggc3YB01MTh+tiEC6xdMvZLrQGL1NBWjHleMyL53GU5ERluC0vXJF3Hv3BGGBDfXWbrEm5n06DHr2apRVJGC0LwiQ7Woud1X4V4X1pKSusxCVMjT2lmcOwV6YhKhB2sowJc1OdMx4+tL0UWE+YKSZgBHfolwk6ml0F4EO9nnUHc= lelgenio@i15"; main_ssh_public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxR/w+38b2lX90yNBqhq3mUmkn1WGu6GAPhN1tVp2ZjYRJNV/+5gWCnTtOWYtDx35HmK/spQ2Qy8X9ttkzORa24fysNx1Iqn/TiXhD7eIJjbGPnrOpIKTkW5/uB3SD/P5NBSa06//BaqJU4sBlG79hoXRpod052hQtdpTVDiMCIV+iboWPKqopmJJfWdBtVnHXs9rep0htPRExxGslImFk7Z6xjcaHyCpIQZPlOGf+sGsmUU7jRqzvZFV8ucIdbnAlMHrU4pepNFhuraESyZVTa/bi9sw0iozXp5Q5+5thMebEslmT1Z771kI4sieDy+O4r8c0Sx2/VY1UAzcpq1faggc3YB01MTh+tiEC6xdMvZLrQGL1NBWjHleMyL53GU5ERluC0vXJF3Hv3BGGBDfXWbrEm5n06DHr2apRVJGC0LwiQ7Woud1X4V4X1pKSusxCVMjT2lmcOwV6YhKhB2sowJc1OdMx4+tL0UWE+YKSZgBHfolwk6ml0F4EO9nnUHc= lelgenio@i15";
in in
{ {
"rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.age".publicKeys = [
main_ssh_public_key
];
"monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.age".publicKeys = [ "monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.age".publicKeys = [
main_ssh_public_key main_ssh_public_key
]; ];
@ -9,11 +12,9 @@ in
"monolith-forgejo-runner-token.age".publicKeys = [ main_ssh_public_key ]; "monolith-forgejo-runner-token.age".publicKeys = [ main_ssh_public_key ];
"lelgenio-cachix.age".publicKeys = [ main_ssh_public_key ]; "lelgenio-cachix.age".publicKeys = [ main_ssh_public_key ];
"monolith-nix-serve-privkey.age".publicKeys = [ main_ssh_public_key ]; "monolith-nix-serve-privkey.age".publicKeys = [ main_ssh_public_key ];
"factorio-settings.age".publicKeys = [ main_ssh_public_key ];
"phantom-nextcloud.age".publicKeys = [ main_ssh_public_key ]; "phantom-nextcloud.age".publicKeys = [ main_ssh_public_key ];
"phantom-writefreely.age".publicKeys = [ main_ssh_public_key ]; "phantom-writefreely.age".publicKeys = [ main_ssh_public_key ];
"phantom-renawiki.age".publicKeys = [ main_ssh_public_key ]; "phantom-renawiki.age".publicKeys = [ main_ssh_public_key ];
"phantom-forgejo-mailer-password.age".publicKeys = [ main_ssh_public_key ]; "phantom-forgejo-mailer-password.age".publicKeys = [ main_ssh_public_key ];
"phantom-mastodon-mailer-password.age".publicKeys = [ main_ssh_public_key ]; "phantom-mastodon-mailer-password.age".publicKeys = [ main_ssh_public_key ];
"phantom-invidious-settings.age".publicKeys = [ main_ssh_public_key ];
} }

View file

@ -1,55 +0,0 @@
hello: ENC[AES256_GCM,data:ADXdQUkrnh9lDrsHyInYsPBo21u/mIAH47KhGQsxuz5OshT6CoK+89CILEi9tQ==,iv:b/rnM77z69+pVO3kxQZxI2YzTCRiBwwO5fhcwCB2/CI=,tag:A0FOXIfgIkJawV3QhlJPWQ==,type:str]
example_key: ENC[AES256_GCM,data:gXXl6hhdYNLC1Grmyw==,iv:miSL7Wdewd5zs4A86/r8OW6gK+PGZJ+gaqZRHHxvZos=,tag:Ty+IaoXdMSEThNPRjwhqTA==,type:str]
#ENC[AES256_GCM,data:FLhydTaiOqLRFk+ZrgGx9Q==,iv:TqhX2ylJKFQjdOpmwCER1+gRe4iR+I0hkVkNnYH4ESo=,tag:1BSk9TKqTma4MVUMswwmog==,type:comment]
example_array:
- ENC[AES256_GCM,data:1sIEL3xGDAygUKoodBA=,iv:1DumVv8vDvhT/K0jXM1vHdrFTE7dIxqqjS8CIpWdnc8=,tag:WSs+3a816zVOaGCTElxgFQ==,type:str]
- ENC[AES256_GCM,data:tFi1czQnVgX/nlWrJrs=,iv:isH65ldilVe3EjsKNP/dOKgtWZtHQPw364fPHBI+LEw=,tag:Ka5ywriFptKg3+lIHPEIyA==,type:str]
example_number: ENC[AES256_GCM,data:sxSM8a9oAp+u6g==,iv:KRLfIxZuBsnK+QE4mqm3pyhJmE7Fsd4ykJA++KrOnEQ=,tag:F5EkVUzw06ulr5jZvlTJdg==,type:float]
example_booleans:
- ENC[AES256_GCM,data:PDts2Q==,iv:qtfKg5gmUw2aERJe3gfT15Pk7mWocXwKdJhAzSic1o0=,tag:gn1sWsgt9ihYF8bHAkAQwQ==,type:bool]
- ENC[AES256_GCM,data:o9as7T0=,iv:YXyTB2X9PmTsOd37+BAp2xnT/+Yzyajcn5y1GE1O5rE=,tag:hyXA43jpyAbgH2hg1ivloQ==,type:bool]
sops:
shamir_threshold: 1
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age1zrgu7w8059xydagm60phnffghvfe9h2ca58cx8qwagqpyfuvs9fqw79c8h
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvUURIQmZvSVp3aXlFT0RR
VHVBR0drN2JyV1hNUk5sakxGRXl6SEJuOUUwClQ1Q1lRZTR5R3Z4dlZyb29OaTNW
UVcwV3h6UlhtZkg2aFhrUUtIT0tQRmsKLS0tIDlnckhHWXRKcmRwTGUzdHZxWEVh
a3ZSWk0wNm1raXdMYXdKY1hDd2dZWUEK+IFU/9vsHu70XbSJ7sKqFncrZO3NAH8/
X/XF1VUmIuDfQZYJsDa4HaXe52xvDWTw3/4frG9HutEI2NcvvRpxlw==
-----END AGE ENCRYPTED FILE-----
- recipient: age1ecyynwv93lfu7crjjp8l47defv07quzfzaktwurpep7jc9eha5pscg7lrw
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNRGxFWXJVcDZOdzVxaFJG
LzdhN3JKaFhPOVBlblRPNWpDdERPaWhDNkM0CmcvUGxNQ09tNTJndWZTdjFia2pl
RnNWQ0ZKSFhEN0FNbVZlKzlFUlh5QTgKLS0tIFkwc1pJajlyOGNHSTdaM3FQZWFK
NUJpRDlLNXlGOTNBbVRTU0ZMVkhqdUUK1koXmGDGTKoNx1wp4c9EknY9LQ5a7dQP
Zx6OzvtpsxL6KGjH7BeNNcm2zOR4YqnklLq09UsPHElz2upJQzECAQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-03-07T22:49:01Z"
mac: ENC[AES256_GCM,data:yma+7wtzVjCzlLOVpqiicjQ9YN1ttzoh8CpcAtjdtVl6gu7/3FXUKYyAWJd+1NUUpK7vN435gOq9/nsig0FRrn0Hgq0+cjFUGS6+6+SPmL97eFvti89gCOeIFhPvBnJQYJLiyVkUcBek4xW+vnt6UgrTy+sD9AT3KHdBlfu3pzY=,iv:ioswFO5KDAL3Bv7MI8V0aWXXxZZIz1M1PyMUbIMnCRI=,tag:5fUBtqz9J2qvY4fUT2ueoQ==,type:str]
pgp:
- created_at: "2025-03-07T22:49:20Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQEMAzy6JxafzLr5AQf/Xok7aBMNT6W3LV2Ekx/ccxEZaZ0aVNKHE9aFTz5kBSpu
cXVohu5mEgeXr++HbrsCI821/gfchQ1yzVSLJsSrmZdJ586c3a7pWx2Eo4pcngmy
vb5UWtTBNogABnLz4iTjVQYLjZeNcNhkzW6s3m9PiaX3AvJP9irPcmwIyYpzd9pt
hngnBsdTis52fmvZ6+wOuMyTZU0Iksknom1De8xqgR5ZuO0Vitt19RGbpVhx96AC
t1CUkb5WMFTdpbCFORa/ta9Z7UcKxXTAPsfPkPVG9DnHQ1jSmsJWPDQZxoIJLHuH
SVV+qfRGndOo9fjExCInX6I5wBlrHrdpGtL7VLczV9JeAXYlMJwH63eOyi8hxxtr
KfTJEIALC25uFhoK8bmr30yVZe7thUPMXfht+R5dlHne7+FcBb4k7YLpeN/M40me
CSKk+9YaG7gQIdrfvEXlHSPCPppcKev6ZUspHewhmQ==
=IMON
-----END PGP MESSAGE-----
fp: 0FECE8316E74BA6F44EFC21A2F8F21CE8721456B
unencrypted_suffix: _unencrypted
version: 3.9.4

View file

@ -1,18 +1,6 @@
{ lib, ... }: { lib, ... }:
{ {
options = { options = {
my = { my = lib.mkOption { };
themes = lib.mkOption { };
key = lib.mkOption { };
theme = lib.mkOption { };
accent = lib.mkOption { };
font = lib.mkOption { };
username = lib.mkOption { type = lib.types.str; };
mail = lib.mkOption { };
dmenu = lib.mkOption { type = lib.types.str; };
desktop = lib.mkOption { type = lib.types.str; };
browser = lib.mkOption { type = lib.types.str; };
editor = lib.mkOption { type = lib.types.str; };
};
}; };
} }

24
switch
View file

@ -1,25 +1,13 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail
nix fmt nix fmt
git --no-pager diff git --no-pager diff
run() { sudo nice ionice \
nixos-rebuild \ nixos-rebuild \
switch \ switch \
--use-remote-sudo \ --verbose \
--print-build-logs \ --print-build-logs \
--flake .# \ --flake .# \
"$@" $@
}
if which nom >/dev/null; then
run --verbose \
--log-format internal-json \
"$@" \
|& nom --json
else
run "$@"
fi

View file

@ -1,17 +0,0 @@
{
config,
pkgs,
lib,
...
}:
{
options.my.android.enable = lib.mkEnableOption { };
config = lib.mkIf config.my.android.enable {
# Open kde connect ports
programs.kdeconnect.enable = true;
programs.adb.enable = true;
services.udev.packages = [ pkgs.android-udev-rules ];
};
}

View file

@ -6,7 +6,7 @@
settings = { settings = {
General = { General = {
DiscoverableTimeout = 0; DiscoverableTimeout = 0;
Discoverable = true; # Discoverable = true;
AlwaysPairable = true; AlwaysPairable = true;
}; };
Policy = { Policy = {

View file

@ -2,6 +2,7 @@
config, config,
pkgs, pkgs,
lib, lib,
inputs,
... ...
}: }:
{ {

18
system/cachix.nix Normal file
View file

@ -0,0 +1,18 @@
{
pkgs,
lib,
config,
...
}:
{
services.cachix-watch-store = {
enable = true;
cacheName = "lelgenio";
cachixTokenFile = config.age.secrets.lelgenio-cachix.path;
};
systemd.services.cachix-watch-store-agent = {
serviceConfig.TimeoutStopSec = 3;
# If we don't do this, cachix tends to timeout
serviceConfig.KillMode = lib.mkForce "control-group";
};
}

View file

@ -1,11 +1,16 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ pkgs, config, ... }: {
config,
pkgs,
inputs,
...
}:
{ {
imports = [ imports = [
./android.nix ./gamemode.nix
./gaming.nix ./cachix.nix
./media-packages.nix ./media-packages.nix
./boot.nix ./boot.nix
./thunar.nix ./thunar.nix
@ -13,32 +18,31 @@
./fonts.nix ./fonts.nix
./sound.nix ./sound.nix
./bluetooth.nix ./bluetooth.nix
./mouse.nix
./locale.nix ./locale.nix
./users.nix ./users.nix
./containers.nix ./containers.nix
./nix-ld.nix
./network.nix ./network.nix
../settings ../settings
]; ];
my = import ../user/variables.nix // { my = import ../user/variables.nix;
android.enable = true;
media-packages.enable = true;
containers.enable = true;
};
zramSwap.enable = true; zramSwap.enable = true;
programs.adb.enable = true;
services.udev.packages = [ pkgs.android-udev-rules ];
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled default in most desktopManager).
services.libinput.enable = true; services.libinput.enable = true;
packages.media-packages.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pavucontrol pavucontrol
glib # gsettings glib # gsettings
usbutils usbutils
adwaita-icon-theme # default gnome cursors # dracula-theme # gtk theme
gnome3.adwaita-icon-theme # default gnome cursors
]; ];
services.geoclue2.enable = true; services.geoclue2.enable = true;

View file

@ -1,40 +1,20 @@
{ pkgs, ... }:
{ {
pkgs, services.flatpak.enable = true;
lib,
config,
...
}:
{
options.my.containers.enable = lib.mkEnableOption { };
config = lib.mkIf config.my.containers.enable { virtualisation.docker = {
services.flatpak.enable = true; enable = true;
programs.appimage.enable = true; autoPrune = {
virtualisation.docker = {
enable = true; enable = true;
autoPrune = { dates = "monthly";
enable = true; flags = [
dates = "monthly"; "--all"
flags = [ "--volumes"
"--all" ];
"--volumes"
];
};
daemon.settings = {
# needed by bitbucket runner ???
log-driver = "json-file";
log-opts = {
max-size = "10m";
max-file = "3";
};
};
}; };
networking.firewall.extraCommands = lib.getExe pkgs._docker-block-external-connections;
programs.extra-container.enable = true;
programs.firejail.enable = true;
}; };
programs.extra-container.enable = true;
programs.firejail.enable = true;
} }

View file

@ -3,7 +3,7 @@
fonts.enableDefaultPackages = true; fonts.enableDefaultPackages = true;
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
noto-fonts noto-fonts
noto-fonts-cjk-sans noto-fonts-cjk
noto-fonts-emoji noto-fonts-emoji
nerdfonts_fira_hack nerdfonts_fira_hack
]; ];

27
system/gamemode.nix Normal file
View file

@ -0,0 +1,27 @@
{
config,
pkgs,
inputs,
...
}:
{
programs.gamemode.enable = true;
programs.gamemode.enableRenice = true;
programs.gamemode.settings = {
general = {
renice = 10;
};
# Warning: GPU optimisations have the potential to damage hardware
gpu = {
apply_gpu_optimisations = "accept-responsibility";
gpu_device = 0;
amd_performance_level = "high";
};
custom = {
start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
};
};
}

View file

@ -1,71 +0,0 @@
{
config,
pkgs,
lib,
inputs,
...
}:
{
options.my.gaming.enable = lib.mkEnableOption { };
config = lib.mkIf config.my.gaming.enable {
programs.steam.enable = true;
programs.steam.extraPackages =
config.fonts.packages
++ (with pkgs; [
capitaine-cursors
bibata-cursors
mangohud
xdg-user-dirs
gamescope
# gamescope compatibility??
xorg.libXcursor
xorg.libXi
xorg.libXinerama
xorg.libXScrnSaver
libpng
libpulseaudio
libvorbis
stdenv.cc.cc.lib
libkrb5
keyutils
]);
environment.systemPackages = with pkgs; [
protontricks
bottles
inputs.dzgui-nix.packages.${pkgs.system}.default
];
programs.gamemode = {
enable = true;
enableRenice = true;
settings = {
general = {
renice = 10;
};
# Warning: GPU optimisations have the potential to damage hardware
gpu = {
apply_gpu_optimisations = "accept-responsibility";
gpu_device = 0;
amd_performance_level = "high";
};
custom = {
start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
};
};
};
programs.corectrl = {
enable = true;
gpuOverclock = {
enable = true;
ppfeaturemask = "0xffffffff";
};
};
};
}

View file

@ -1,11 +1,11 @@
{ pkgs, lib, ... }: { pkgs, lib, ... }:
{ {
mkNixRunner = mkNixRunner =
authenticationTokenConfigFile: with lib; rec { registrationConfigFile: with lib; rec {
# File should contain at least these two variables: # File should contain at least these two variables:
# `CI_SERVER_URL` # `CI_SERVER_URL`
# `REGISTRATION_TOKEN` # `REGISTRATION_TOKEN`
inherit authenticationTokenConfigFile; # 2 inherit registrationConfigFile; # 2
dockerImage = "alpine:3.18.2"; dockerImage = "alpine:3.18.2";
dockerAllowedImages = [ dockerImage ]; dockerAllowedImages = [ dockerImage ];
dockerVolumes = [ dockerVolumes = [
@ -47,5 +47,6 @@
PATH = "/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/bin:/sbin:/usr/bin:/usr/sbin"; PATH = "/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:/bin:/sbin:/usr/bin:/usr/sbin";
NIX_SSL_CERT_FILE = "/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt"; NIX_SSL_CERT_FILE = "/nix/var/nix/profiles/default/etc/ssl/certs/ca-bundle.crt";
}; };
tagList = [ "nix" ];
}; };
} }

View file

@ -5,10 +5,10 @@
... ...
}: }:
let let
cfg = config.my.media-packages; cfg = config.packages.media-packages;
in in
{ {
options.my.media-packages = { options.packages.media-packages = {
enable = lib.mkEnableOption "media packages"; enable = lib.mkEnableOption "media packages";
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
@ -23,7 +23,6 @@ in
gimp gimp
inkscape inkscape
krita krita
kdePackages.breeze
kdePackages.kdenlive kdePackages.kdenlive
pitivi pitivi
blender-hip blender-hip

View file

@ -1,50 +0,0 @@
{
config,
pkgs,
...
}:
let
mkRunner = secret: {
image = "docker-public.packages.atlassian.com/sox/atlassian/bitbucket-pipelines-runner:latest";
volumes = [
"/tmp:/tmp"
"/var/run/docker.sock:/var/run/docker.sock"
"/var/lib/docker/containers:/var/lib/docker/containers:ro"
];
environmentFiles = [ secret ];
};
secretConf = {
sopsFile = ../secrets/monolith/default.yaml;
};
in
{
virtualisation.docker = {
enable = true;
daemon.settings = {
# needed by bitbucket runner ???
log-driver = "json-file";
log-opts = {
max-size = "10m";
max-file = "3";
};
};
};
virtualisation.oci-containers.backend = "docker";
virtualisation.oci-containers.containers = {
bitbucket-runner-1 = mkRunner config.sops.secrets."bitbucket-runners/wopus-runner-1".path;
bitbucket-runner-2 = mkRunner config.sops.secrets."bitbucket-runners/wopus-runner-2".path;
bitbucket-runner-3 = mkRunner config.sops.secrets."bitbucket-runners/wopus-runner-3".path;
bitbucket-runner-4 = mkRunner config.sops.secrets."bitbucket-runners/wopus-runner-4".path;
};
sops.secrets = {
"bitbucket-runners/wopus-runner-1" = secretConf;
"bitbucket-runners/wopus-runner-2" = secretConf;
"bitbucket-runners/wopus-runner-3" = secretConf;
"bitbucket-runners/wopus-runner-4" = secretConf;
};
}

View file

@ -1,6 +1,7 @@
{ {
config, config,
pkgs, pkgs,
lib,
... ...
}: }:
let let
@ -11,33 +12,25 @@ in
virtualisation.docker.enable = true; virtualisation.docker.enable = true;
services.gitlab-runner = { services.gitlab-runner = {
enable = true; enable = true;
settings.concurrent = 12; settings.concurrent = 4;
services = { services = {
# ci_test = {
# registrationConfigFile = "/srv/gitlab-runner/env/ci_test";
# dockerImage = "debian";
# dockerPrivileged = true;
# };
thoreb_builder = {
registrationConfigFile =
config.age.secrets.monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.path;
dockerImage = "debian";
dockerPrivileged = true;
};
# runner for building in docker via host's nix-daemon # runner for building in docker via host's nix-daemon
# nix store will be readable in runner, might be insecure # nix store will be readable in runner, might be insecure
thoreb-telemetria-nix = mkNixRunner config.sops.secrets."gitlab-runners/thoreb-telemetria-nix".path; thoreb-telemetria-nix = mkNixRunner config.age.secrets.gitlab-runner-thoreb-telemetria-registrationConfigFile.path;
thoreb-itinerario-nix = mkNixRunner config.sops.secrets."gitlab-runners/thoreb-itinerario-nix".path; thoreb-itinerario-nix = mkNixRunner config.age.secrets.monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.path;
default = {
# File should contain at least these two variables:
# `CI_SERVER_URL`
# `CI_SERVER_TOKEN`
authenticationTokenConfigFile = config.sops.secrets."gitlab-runners/docker-images-token".path;
dockerImage = "debian:stable";
};
}; };
}; };
systemd.services.gitlab-runner.serviceConfig.Nice = 10; systemd.services.gitlab-runner.serviceConfig.Nice = 10;
sops.secrets = {
"gitlab-runners/thoreb-telemetria-nix" = {
sopsFile = ../secrets/monolith/default.yaml;
};
"gitlab-runners/thoreb-itinerario-nix" = {
sopsFile = ../secrets/monolith/default.yaml;
};
"gitlab-runners/docker-images-token" = {
sopsFile = ../secrets/monolith/default.yaml;
};
};
} }

View file

@ -1,15 +0,0 @@
{
# Allow configuring Logitech Peripherals
services.ratbagd.enable = true;
# Sway does not undersand high resolution scroll wheels
# I don't need this, so I disable it
environment.etc."libinput/local-overrides.quirks".text = ''
[Logitech G502 X PLUS]
MatchUdevType=mouse
MatchBus=usb
MatchVendor=0x046D
MatchProduct=0x4099
AttrEventCode=-REL_WHEEL_HI_RES
'';
}

View file

@ -6,14 +6,11 @@
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking # Enable networking
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
# Open kde connect ports
networking.firewall = { programs.kdeconnect.enable = true;
enable = true;
logRefusedConnections = false;
};
# Enable CUPS to print documents. # Enable CUPS to print documents.
services.printing.enable = true; # services.printing.enable = true;
security.rtkit.enable = true; security.rtkit.enable = true;
services.openssh = { services.openssh = {
@ -25,13 +22,4 @@
KbdInteractiveAuthentication = false; KbdInteractiveAuthentication = false;
}; };
}; };
# Workaround for nm-wait-online hanging??
# Ref: https://github.com/NixOS/nixpkgs/issues/180175
systemd.services.NetworkManager-wait-online = {
serviceConfig.ExecStart = [
""
"${pkgs.networkmanager}/bin/nm-online -q"
];
};
} }

View file

@ -1,21 +0,0 @@
{
pkgs,
lib,
config,
...
}:
{
options.my.nix-ld.enable = lib.mkEnableOption { };
config = lib.mkIf (config.my.nix-ld.enable) {
programs.nix-ld = {
enable = true;
libraries =
with pkgs;
# run appimages + linux games natively
[ fuse ]
++ (appimageTools.defaultFhsEnvArgs.multiPkgs pkgs)
++ (appimageTools.defaultFhsEnvArgs.targetPkgs pkgs);
};
};
}

View file

@ -44,7 +44,7 @@ in
]; ];
}; };
extraOptions = '' extraOptions = ''
experimental-features = nix-command flakes experimental-features = nix-command flakes repl-flake
''; '';
}; };
} }

View file

@ -0,0 +1,34 @@
{
config,
pkgs,
lib,
...
}:
let
inherit (pkgs.callPackage ./gitlab-runner.nix { }) mkNixRunner;
in
{
boot.kernel.sysctl."net.ipv4.ip_forward" = true;
virtualisation.docker.enable = true;
services.gitlab-runner = {
enable = true;
settings.concurrent = 1;
services = {
# ci_test = {
# registrationConfigFile = "/srv/gitlab-runner/env/ci_test";
# dockerImage = "debian";
# dockerPrivileged = true;
# };
thoreb_builder = {
registrationConfigFile =
config.age.secrets.rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.path;
dockerImage = "debian";
dockerPrivileged = true;
};
thoreb-telemetria-nix = mkNixRunner config.age.secrets.gitlab-runner-thoreb-telemetria-registrationConfigFile.path;
thoreb-itinerario-nix = mkNixRunner config.age.secrets.rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.path;
};
};
systemd.services.gitlab-runner.serviceConfig.Nice = 10;
}

View file

@ -1,4 +1,4 @@
{ pkgs, config, ... }: { pkgs, ... }:
{ {
age = { age = {
identityPaths = [ "/root/.ssh/id_rsa" ]; identityPaths = [ "/root/.ssh/id_rsa" ];
@ -6,6 +6,7 @@
secrets.monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.file = ../secrets/monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.age; secrets.monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.file = ../secrets/monolith-gitlab-runner-thoreb-itinerario-registrationConfigFile.age;
secrets.gitlab-runner-thoreb-telemetria-registrationConfigFile.file = ../secrets/gitlab-runner-thoreb-telemetria-registrationConfigFile.age; secrets.gitlab-runner-thoreb-telemetria-registrationConfigFile.file = ../secrets/gitlab-runner-thoreb-telemetria-registrationConfigFile.age;
secrets.monolith-forgejo-runner-token.file = ../secrets/monolith-forgejo-runner-token.age; secrets.monolith-forgejo-runner-token.file = ../secrets/monolith-forgejo-runner-token.age;
secrets.rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.file = ../secrets/rainbow-gitlab-runner-thoreb-itinerario-registrationConfigFile.age;
secrets.monolith-nix-serve-privkey.file = ../secrets/monolith-nix-serve-privkey.age; secrets.monolith-nix-serve-privkey.file = ../secrets/monolith-nix-serve-privkey.age;
secrets.phantom-forgejo-mailer-password.file = ../secrets/phantom-forgejo-mailer-password.age; secrets.phantom-forgejo-mailer-password.file = ../secrets/phantom-forgejo-mailer-password.age;
}; };

View file

@ -1,15 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
sops
gnupg
];
sops = {
defaultSopsFile = ../secrets/test.yaml;
age.sshKeyPaths = [
"/etc/ssh/ssh_host_ed25519_key"
"/home/lelgenio/.ssh/id_ed25519"
];
};
}

View file

@ -1,5 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
sound.enable = true;
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;
services.pipewire = { services.pipewire = {
enable = true; enable = true;

33
system/steam.nix Normal file
View file

@ -0,0 +1,33 @@
{
config,
pkgs,
inputs,
...
}:
{
programs.steam.enable = true;
programs.steam.package = pkgs.steam.override {
extraLibraries =
pkgs:
with config.hardware.opengl;
if pkgs.hostPlatform.is64bit then
[ package ] ++ extraPackages
else
[ package32 ] ++ extraPackages32;
extraPkgs =
pkgs: with pkgs; [
capitaine-cursors
bibata-cursors
mangohud
xdg-user-dirs
];
};
environment.systemPackages = with pkgs; [
protontricks
bottles
];
programs.dzgui.enable = true;
programs.dzgui.package = inputs.dzgui-nix.packages.${pkgs.system}.default;
}

View file

@ -1,8 +0,0 @@
{ pkgs, ... }:
{
projectRootFile = "flake.nix";
programs.nixfmt.enable = true;
programs.nixfmt.package = pkgs.nixfmt-rfc-style;
settings.on-unmatched = "debug";
}

View file

@ -116,12 +116,6 @@ in
mode = "Vi|~Search"; mode = "Vi|~Search";
action = "SearchNext"; action = "SearchNext";
} }
{
key = lib.toUpper key.next;
mods = "Shift";
mode = "Vi|~Search";
action = "SearchPrevious";
}
{ {
key = "Up"; key = "Up";
mods = "Control|Shift"; mods = "Control|Shift";

View file

@ -9,15 +9,15 @@
wayland.windowManager.sway = { wayland.windowManager.sway = {
extraConfig = '' extraConfig = ''
exec thunderbird exec thunderbird
exec discordcanary exec vesktop
exec telegram-desktop exec telegram-desktop
''; '';
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
tdesktop tdesktop
discord-canary vesktop
thunderbird thunderbird
element-desktop element-desktop-wayland
]; ];
} }

26
user/controller.nix Normal file
View file

@ -0,0 +1,26 @@
{ pkgs, lib, ... }:
{
systemd.user.services = {
autoconnect-gamepad = {
Unit = {
Description = "Attempt to connect to game controllers";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
};
Service = {
ExecStart = lib.getExe pkgs.auto_connect_gamepad;
};
Install = {
WantedBy = [ "sway-session.target" ];
};
};
};
xdg.desktopEntries = {
disconnect-controller = {
name = "Disconnect Controller";
exec = "bluetoothctl disconnect 84:30:95:97:1A:79";
terminal = false;
};
};
}

View file

@ -1,9 +0,0 @@
{ lib, ... }:
{
options.my = {
nix-ld.enable = lib.mkEnableOption { };
android.enable = lib.mkEnableOption { };
media-packages.enable = lib.mkEnableOption { };
containers.enable = lib.mkEnableOption { };
};
}

View file

@ -2,22 +2,15 @@
config, config,
pkgs, pkgs,
lib, lib,
font,
... ...
}: }:
let let
inherit (config.my) desktop; inherit (config.my) desktop browser;
inherit (config.my.theme) color; bugfixedFirefox = pkgs.firefox-esr-unwrapped // {
bugfixedFirefox = pkgs.firefox-devedition-unwrapped // {
requireSigning = false; requireSigning = false;
allowAddonSideload = true; allowAddonSideload = true;
}; };
swayCustomization = ''
#titlebar { display: none !important; }
#TabsToolbar { display: none !important; }
#sidebar-header { display: none !important; }
'';
in in
{ {
config = { config = {
@ -42,8 +35,8 @@ in
}) })
(pkgs.fetchFirefoxAddon { (pkgs.fetchFirefoxAddon {
name = "ublock-origin"; name = "ublock-origin";
url = "https://addons.mozilla.org/firefox/downloads/file/4290466/ublock_origin-1.58.0.xpi"; url = "https://addons.mozilla.org/firefox/downloads/file/4198829/ublock_origin-1.54.0.xpi";
hash = "sha256-RwxWmUpxdNshV4rc5ZixWKXcCXDIfFz+iJrGMr0wheo="; hash = "sha256-l5cWCQgZFxD/CFhTa6bcKeytmSPDCyrW0+XjcddZ5E0=";
}) })
(pkgs.fetchFirefoxAddon { (pkgs.fetchFirefoxAddon {
name = "user_agent_string_switcher"; name = "user_agent_string_switcher";
@ -63,11 +56,21 @@ in
hash = "sha256-lKLX6IWWtliRdH1Ig33rVEB4DVfbeuMw0dfUPV/mSSI="; hash = "sha256-lKLX6IWWtliRdH1Ig33rVEB4DVfbeuMw0dfUPV/mSSI=";
}) })
(pkgs.fetchFirefoxAddon { (pkgs.fetchFirefoxAddon {
name = "invidious_redirect"; name = "unhook";
url = "https://addons.mozilla.org/firefox/downloads/file/4292924/invidious_redirect_2-1.16.xpi"; url = "https://addons.mozilla.org/firefox/downloads/file/4050795/youtube_recommended_videos-1.6.2.xpi";
hash = "sha256-ApCc+MNmW9Wd/5seV6npePQVEaszT/rhD9EB7HGiUb8="; hash = "sha256-xMuglNassZb9WqjfEGg6WeuhMACRuYqQor+iX1dEdsE=";
})
(pkgs.fetchFirefoxAddon {
name = "return_youtube_dislikes";
url = "https://addons.mozilla.org/firefox/downloads/file/4208483/return_youtube_dislikes-3.0.0.14.xpi";
hash = "sha256-oxqyNUmEa36rkqCU6S34NJBHtIu9gH8GnRKAg8Oyf2E=";
}) })
(pkgs.fetchFirefoxAddon {
name = "mastodon_simplified_federation";
url = "https://addons.mozilla.org/firefox/downloads/file/4215691/mastodon_simplified_federation-2.2.xpi";
hash = "sha256-4iU25chpjsdsMTPaa0yQOTWc9V9q1qFz6YV0lYtNjLA=";
})
(pkgs.fetchFirefoxAddon { (pkgs.fetchFirefoxAddon {
name = "substitoot"; name = "substitoot";
url = "https://addons.mozilla.org/firefox/downloads/file/4236602/substitoot-0.7.2.0.xpi"; url = "https://addons.mozilla.org/firefox/downloads/file/4236602/substitoot-0.7.2.0.xpi";
@ -88,7 +91,7 @@ in
]; ];
}; };
profiles = { profiles = {
dev-edition-default = { main = {
isDefault = true; isDefault = true;
search.force = true; search.force = true;
search.default = "DuckDuckGo"; search.default = "DuckDuckGo";
@ -109,11 +112,13 @@ in
"media.rdd-vpx.enabled" = true; "media.rdd-vpx.enabled" = true;
"media.rdd-wav.enabled" = true; "media.rdd-wav.enabled" = true;
"media.av1.enabled" = true; "media.av1.enabled" = false;
"media.ffmpeg.vaapi-drm-display.enabled" = true; "media.ffmpeg.vaapi-drm-display.enabled" = true;
"media.ffmpeg.vaapi.enabled" = true; "media.ffmpeg.vaapi.enabled" = true;
"media.ffvpx.enabled" = true; "media.ffvpx.enabled" = true;
"gfx.webrender.all" = true;
# Enable installing non signed extensions # Enable installing non signed extensions
"extensions.langpacks.signatures.required" = false; "extensions.langpacks.signatures.required" = false;
"xpinstall.signatures.required" = false; "xpinstall.signatures.required" = false;
@ -124,16 +129,9 @@ in
"devtools.chrome.enabled" = true; "devtools.chrome.enabled" = true;
"devtools.debugger.remote-enabled" = true; "devtools.debugger.remote-enabled" = true;
}; };
userChrome = '' userChrome = lib.mkIf (desktop == "sway") ''
${lib.optionalString (desktop == "sway") swayCustomization} #titlebar { display: none !important; }
#sidebar-header { display: none !important; }
#sidebar-main {
background-color: ${color.bg};
}
#tabbrowser-tabbox {
outline-width: 0 !important;
}
''; '';
}; };
}; };
@ -143,5 +141,9 @@ in
exec firefox exec firefox
''; '';
}; };
home.sessionVariables = {
MOZ_ENABLE_WAYLAND = "1";
MOZ_DISABLE_RDD_SANDBOX = "1";
};
}; };
} }

View file

@ -6,12 +6,9 @@
}: }:
let let
inherit (config.my) accent editor desktop; inherit (config.my) accent editor desktop;
cfg = config.my.fish;
in in
{ {
options.my.fish.enable = lib.mkEnableOption { }; config = {
config = lib.mkIf cfg.enable {
programs.fish = { programs.fish = {
enable = true; enable = true;
shellInit = '' shellInit = ''
@ -39,6 +36,7 @@ in
shellAliases = { shellAliases = {
rm = "trash"; rm = "trash";
tree = "eza -T"; tree = "eza -T";
kys = "shutdown now";
}; };
shellAbbrs = { shellAbbrs = {
off = "shutdown now"; off = "shutdown now";
@ -53,7 +51,7 @@ in
c = "cargo"; c = "cargo";
# system # system
sv = "sudo systemct"; sv = "sudo systemct";
suv = "systemct --user"; suv = "sudo systemct --user";
# docker abbrs # docker abbrs
d = "docker"; d = "docker";
dc = "docker-compose"; dc = "docker-compose";

View file

@ -51,7 +51,6 @@ end
function _fish_prompt_git_unpushed_branches function _fish_prompt_git_unpushed_branches
timeout 5s git log \ timeout 5s git log \
--branches \ --branches \
--decorate-refs-exclude=refs/tags \
--simplify-by-decoration \ --simplify-by-decoration \
--not \ --not \
--remotes \ --remotes \
@ -104,29 +103,29 @@ function fish_git_prompt
_fish_prompt_warn "init" _fish_prompt_warn "init"
end end
# if we have at least one commit git rev-parse HEAD -- &>/dev/null
if git rev-parse HEAD -- &>/dev/null or return
# print a "↑" if ahead of origin
test 0 -ne (git log --oneline "$git_remote_branch"..HEAD -- | wc -l)
and set -f _git_sync_ahead '↑'
# print a "↓" if behind of origin # print a "↑" if ahead of origin
test 0 -lt (git log --oneline HEAD.."$git_remote_branch" -- | wc -l) test 0 -ne (git log --oneline "$git_remote_branch"..HEAD -- | wc -l)
and set -l _git_sync_behind '↓' and set -f _git_sync_ahead '↑'
if set -q _git_sync_ahead _git_sync_behind # print a "↓" if behind of origin
_fish_prompt_normal '⇅' test 0 -lt (git log --oneline HEAD.."$git_remote_branch" -- | wc -l)
else if set -q _git_sync_ahead and set -l _git_sync_behind '↓'
_fish_prompt_normal '↑'
else if set -q _git_sync_behind
_fish_prompt_normal '↓'
end
if test -n "$git_log_unpushed" if set -q _git_sync_ahead _git_sync_behind
and not string match -qr "$git_branch" "$git_log_unpushed" _fish_prompt_normal '⇅'
_fish_prompt_normal '↻' else if set -q _git_sync_ahead
_fish_prompt_warn $git_log_unpushed[1] _fish_prompt_normal '↑'
end else if set -q _git_sync_behind
_fish_prompt_normal '↓'
end
if test -n "$git_log_unpushed"
and not string match -qr "$git_branch" "$git_log_unpushed"
_fish_prompt_normal '↻'
_fish_prompt_warn $git_log_unpushed[1]
end end
############################################################ ############################################################

View file

@ -2,10 +2,16 @@
config, config,
pkgs, pkgs,
lib, lib,
inputs,
... ...
}: }:
let let
inherit (config.my) theme accent; inherit (config.my)
key
theme
accent
font
;
inherit (theme) color; inherit (theme) color;
colors = { colors = {

View file

@ -1,24 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.my.gaming;
in
{
options.my.gaming.enable = lib.mkEnableOption { };
config = lib.mkIf cfg.enable {
my.mangohud.enable = true;
home.packages = with pkgs; [
# lutris-unwrapped
# steam # It's enabled in the system config
tlauncher
gamescope
glxinfo
vulkan-tools
];
};
}

View file

@ -16,46 +16,17 @@ in
user = { user = {
name = username; name = username;
email = mail.personal.user; email = mail.personal.user;
signingkey = "2F8F21CE8721456B";
}; };
init.defaultBranch = "main"; init.defaultBranch = "main";
core = { commit.verbose = true;
fsmonitor = true; push.autoSetupRemote = true;
untrackedCache = true;
};
commit = {
verbose = true;
gpgsign = true;
};
fetch = {
prune = true;
pruneTags = true;
all = true;
};
push = {
autoSetupRemote = true;
default = "simple";
followTags = true;
};
pull.rebase = true; pull.rebase = true;
tag.sort = "version:refname"; merge.conflictStyle = "diff3";
merge.conflictStyle = "zdiff3"; rerere.enabled = true;
rerere = {
enabled = true;
autoupdate = true;
};
branch.sort = "-committerdate";
diff = {
algorithm = "histogram";
colorMoved = "plain";
mnemonicPrefix = true;
renames = true;
};
rebase = { rebase = {
abbreviateCommands = true; abbreviateCommands = true;
autoSquash = true; autoSquash = true;
autoStash = true; autoStash = true;
updateRefs = true;
}; };
pager = { pager = {
log = "${pkgs._diffr}/bin/_diffr | ${pkgs.kak-pager}/bin/kak-pager"; log = "${pkgs._diffr}/bin/_diffr | ${pkgs.kak-pager}/bin/kak-pager";
@ -65,16 +36,8 @@ in
alias = { alias = {
graph = "log --graph --oneline --branches"; graph = "log --graph --oneline --branches";
root = "rev-parse --show-toplevel"; root = "rev-parse --show-toplevel";
clean-deleted-remotes = "!" + (lib.getExe pkgs.git_clean_remote_deleted);
}; };
}; };
}; };
home.packages = with pkgs; [
git_clean_remote_deleted
gh
glab
];
}; };
} }

View file

@ -10,7 +10,7 @@ lib.mkIf (config.my.desktop == "gnome") {
home.pointerCursor = { home.pointerCursor = {
name = "Adwaita"; name = "Adwaita";
size = 24; size = 24;
package = pkgs.adwaita-icon-theme; package = pkgs.gnome.adwaita-icon-theme;
gtk.enable = true; gtk.enable = true;
}; };
@ -28,14 +28,16 @@ lib.mkIf (config.my.desktop == "gnome") {
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
inputs.nixos-conf-editor.packages.${pkgs.system}.nixos-conf-editor
inputs.nix-software-center.packages.${pkgs.system}.nix-software-center
adw-gtk3 adw-gtk3
newsflash newsflash
foliate foliate
amberol amberol
pitivi pitivi
keepassxc gnome-passwordsafe
menulibre
libsForQt5.qt5ct libsForQt5.qt5ct
libsForQt5.qtstyleplugin-kvantum libsForQt5.qtstyleplugin-kvantum
@ -43,7 +45,11 @@ lib.mkIf (config.my.desktop == "gnome") {
qt6Packages.qtstyleplugin-kvantum qt6Packages.qtstyleplugin-kvantum
]; ];
services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome; home.sessionVariables = {
QT_QPA_PLATFORMTHEME = "qt5ct";
};
services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
xdg.defaultApplications = { xdg.defaultApplications = {
enable = lib.mkForce false; enable = lib.mkForce false;

View file

@ -7,13 +7,9 @@
let let
inherit (config.my) accent theme editor; inherit (config.my) accent theme editor;
inherit (theme) color; inherit (theme) color;
cfg = config.my.helix;
in in
{ {
options.my.helix.enable = lib.mkEnableOption "Enable helix config"; config = {
config = lib.mkIf cfg.enable {
programs.helix = { programs.helix = {
enable = true; enable = true;
settings = { settings = {

View file

@ -1,28 +0,0 @@
{ pkgs, lib, ... }:
{
programs.home-manager.enable = true;
systemd.user.services.home-manager-expire = {
Unit = {
Description = "Remove old home-manager generations";
};
Service = {
Type = "oneshot";
ExecStart = pkgs.writeShellScript "home-manager-expire" ''
${lib.getExe pkgs.home-manager} expire-generations 7d
'';
};
};
systemd.user.timers.home-manager-expire = {
Unit = {
Description = "Remove old home-manager generations";
};
Timer = {
OnCalendar = "daily";
Unit = "home-manager-expire.service";
};
Install = {
WantedBy = [ "timers.target" ];
};
};
}

View file

@ -8,8 +8,7 @@
}: }:
{ {
imports = [ imports = [
./dummy.nix ./controller.nix
./home-manager.nix
./waybar ./waybar
./helix.nix ./helix.nix
./kakoune ./kakoune
@ -23,7 +22,6 @@
./rofi.nix ./rofi.nix
./mpv.nix ./mpv.nix
./mangohud.nix ./mangohud.nix
./gaming.nix
./pipewire.nix ./pipewire.nix
./mimeapps.nix ./mimeapps.nix
./desktop-entries.nix ./desktop-entries.nix
@ -44,23 +42,21 @@
./xdg-dirs.nix ./xdg-dirs.nix
inputs.nix-index-database.hmModules.nix-index inputs.nix-index-database.hmModules.nix-index
../settings ../settings
./powerplay-led-idle.nix
./rm-target.nix
]; ];
my = import ./variables.nix // { my = import ./variables.nix;
sway.enable = true;
pass.enable = true;
fish.enable = true;
};
# Home Manager needs a bit of information about you and the # Home Manager needs a bit of information about you and the
# paths it should manage. # paths it should manage.
home.username = "lelgenio"; home.username = "lelgenio";
home.homeDirectory = "/home/lelgenio"; home.homeDirectory = "/home/lelgenio";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
home.packages = with pkgs; [ home.packages = with pkgs; [
terminal # home-manager
terminal # see flake.nix
pulse_sink pulse_sink
pulseaudio pulseaudio
@ -81,22 +77,30 @@
comma comma
# System monitors # System monitors
(btop.override { rocmSupport = true; }) (btop.override { cudaSupport = true; })
amdgpu_top amdgpu_top
inxi inxi
dmidecode dmidecode
ncdu
## text manipulation ## text manipulation
sd sd
ripgrep ripgrep
translate-shell translate-shell
lipsum lipsum
python3Packages.python-slugify
par par
mate.engrampa mate.engrampa
# gnome.nautilus # gnome.nautilus
## games
# lutris-unwrapped
# steam # It's enabled in the system config
tlauncher
gamescope
glxinfo
vulkan-tools
## Theming ## Theming
orchis_theme_compact orchis_theme_compact
papirus_red papirus_red
@ -106,6 +110,7 @@
## Network ## Network
speedtest-cli speedtest-cli
nmap nmap
httpie
miniupnpc miniupnpc
deluge deluge
nicotine-plus nicotine-plus
@ -117,6 +122,7 @@
# rustup # rustup
docker-compose docker-compose
gnumake
mariadb mariadb
nodePackages.intelephense nodePackages.intelephense
@ -126,10 +132,8 @@
clang-tools # c/c++ lsp server clang-tools # c/c++ lsp server
rust-analyzer # rust analyzer rust-analyzer # rust analyzer
unstable.blade-formatter blade-formatter
nixfmt-rfc-style nixfmt-rfc-style
nix-output-monitor
]; ];
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
@ -169,6 +173,30 @@
exec nicotine exec nicotine
''; '';
systemd.user.services.rm-target = {
Unit = {
Description = "Remove directories named 'target'";
};
Service = {
Type = "oneshot";
ExecStart = pkgs.writeShellScript "rm-target" ''
sudo ${pkgs.fd}/bin/fd -td -u '^\.?target$' "$HOME" -x rm -vrf --
'';
};
};
systemd.user.timers.rm-target = {
Unit = {
Description = "Remove directories named 'target'";
};
Timer = {
OnCalendar = "weekly";
Unit = "rm-target.service";
};
Install = {
WantedBy = [ "timers.target" ];
};
};
# This value determines the Home Manager release that your # This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage # configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards # when a new Home Manager release introduces backwards

View file

@ -114,112 +114,3 @@ with colors;
Hint = "blue"; Hint = "blue";
} }
)) ))
+ ''
# Color palette
declare-option str red "red"
declare-option str mauve "magenta"
declare-option str maroon "rgb:ee99a0"
declare-option str pink "rgb:f5bde6"
declare-option str cyan "cyan"
declare-option str yellow "yellow"
declare-option str green "green"
declare-option str white "white"
declare-option str blue "blue"
declare-option str sky "rgb:91d7e3"
declare-option str lavender "rgb:b7bdf8"
declare-option str black1 "rgb:202020"
declare-option str black2 "rgb:272727"
declare-option str black3 "rgb:3a3a3a"
declare-option str orange ${orange}
declare-option str teal "rgb:8bd5ca"
declare-option str flamingo "rgb:f0c6c6"
declare-option str gray0 "rgb:606060"
declare-option str gray1 "rgb:737373"
declare-option str bright_red "%opt{red}+b"
declare-option str bright_green "%opt{green}+b"
declare-option str bright_yellow "%opt{yellow}+b"
declare-option str bright_blue "%opt{blue}+b"
declare-option str bright_cyan "%opt{cyan}+b"
declare-option str foreground %opt{white}
declare-option str background %opt{black2}
declare-option str overlay0 "rgb:878787"
declare-option str overlay1 "rgb:9a9a9a"
# Tree-sitter (<https://git.sr.ht/~hadronized/kak-tree-sitter>)
set-face global ts_attribute "%opt{cyan}"
set-face global ts_comment "%opt{overlay0}+i"
set-face global ts_conceal "%opt{mauve}+i"
set-face global ts_constant "%opt{orange}"
set-face global ts_constant_builtin_boolean "%opt{sky}"
set-face global ts_constant_character "%opt{yellow}"
set-face global ts_constant_macro "%opt{mauve}"
set-face global ts_constructor "%opt{cyan}"
set-face global ts_diff_plus "%opt{green}"
set-face global ts_diff_minus "%opt{red}"
set-face global ts_diff_delta "%opt{blue}"
set-face global ts_diff_delta_moved "%opt{mauve}"
set-face global ts_error "%opt{red}+b"
set-face global ts_function "%opt{blue}"
set-face global ts_function_builtin "%opt{blue}+i"
set-face global ts_function_macro "%opt{mauve}"
set-face global ts_hint "%opt{blue}+b"
set-face global ts_info "%opt{green}+b"
set-face global ts_keyword "%opt{mauve}"
set-face global ts_keyword_conditional "%opt{mauve}+i"
set-face global ts_keyword_control_conditional "%opt{mauve}+i"
set-face global ts_keyword_control_directive "%opt{mauve}+i"
set-face global ts_keyword_control_import "%opt{mauve}+i"
set-face global ts_keyword_directive "%opt{mauve}+i"
set-face global ts_keyword_storage "%opt{mauve}"
set-face global ts_keyword_storage_modifier "%opt{mauve}"
set-face global ts_keyword_storage_modifier_mut "%opt{mauve}"
set-face global ts_keyword_storage_modifier_ref "%opt{teal}"
set-face global ts_label "%opt{cyan}+i"
set-face global ts_markup_bold "%opt{orange}+b"
set-face global ts_markup_heading "%opt{red}"
set-face global ts_markup_heading_1 "%opt{red}"
set-face global ts_markup_heading_2 "%opt{mauve}"
set-face global ts_markup_heading_3 "%opt{green}"
set-face global ts_markup_heading_4 "%opt{yellow}"
set-face global ts_markup_heading_5 "%opt{pink}"
set-face global ts_markup_heading_6 "%opt{teal}"
set-face global ts_markup_heading_marker "%opt{orange}+b"
set-face global ts_markup_italic "%opt{pink}+i"
set-face global ts_markup_list_checked "%opt{green}"
set-face global ts_markup_list_numbered "%opt{blue}+i"
set-face global ts_markup_list_unchecked "%opt{teal}"
set-face global ts_markup_list_unnumbered "%opt{mauve}"
set-face global ts_markup_link_label "%opt{blue}"
set-face global ts_markup_link_url "%opt{teal}+u"
set-face global ts_markup_link_uri "%opt{teal}+u"
set-face global ts_markup_link_text "%opt{blue}"
set-face global ts_markup_quote "%opt{gray1}"
set-face global ts_markup_raw "%opt{green}"
set-face global ts_markup_strikethrough "%opt{gray1}+s"
set-face global ts_namespace "%opt{blue}+i"
set-face global ts_operator "%opt{sky}"
set-face global ts_property "%opt{sky}"
set-face global ts_punctuation "%opt{overlay1}"
set-face global ts_punctuation_special "%opt{sky}"
set-face global ts_special "%opt{blue}"
set-face global ts_spell "%opt{mauve}"
set-face global ts_string "%opt{green}"
set-face global ts_string_regex "%opt{orange}"
set-face global ts_string_regexp "%opt{orange}"
set-face global ts_string_escape "%opt{mauve}"
set-face global ts_string_special "%opt{blue}"
set-face global ts_string_special_path "%opt{orange}"
set-face global ts_string_special_symbol "%opt{mauve}"
set-face global ts_string_symbol "%opt{red}"
set-face global ts_tag "%opt{mauve}"
set-face global ts_tag_error "%opt{red}"
set-face global ts_text "%opt{white}"
set-face global ts_text_title "%opt{mauve}"
set-face global ts_type "%opt{yellow}"
set-face global ts_type_enum_variant "%opt{flamingo}"
set-face global ts_variable "%opt{blue}"
set-face global ts_variable_builtin "%opt{red}"
set-face global ts_variable_other_member "%opt{teal}"
set-face global ts_variable_parameter "%opt{maroon}+i"
set-face global ts_warning "%opt{orange}+b"
''

View file

@ -6,6 +6,7 @@
}: }:
let let
inherit (config.my) inherit (config.my)
key
dmenu dmenu
editor editor
theme theme
@ -16,7 +17,6 @@ let
inherit (pkgs.kakouneUtils) buildKakounePlugin; inherit (pkgs.kakouneUtils) buildKakounePlugin;
in in
{ {
imports = [ ./kak-tree-sitter.nix ];
config = { config = {
programs.kakoune = { programs.kakoune = {
enable = true; enable = true;
@ -82,9 +82,6 @@ in
rev = "1cc6baeb14b773916eb9209469aa77b3cfa67a0a"; rev = "1cc6baeb14b773916eb9209469aa77b3cfa67a0a";
sha256 = "sha256-3PLxG9UtT0MMSibvTviXQIgTH3rApZ3WSbNCEH3c7HE="; sha256 = "sha256-3PLxG9UtT0MMSibvTviXQIgTH3rApZ3WSbNCEH3c7HE=";
}; };
buildInputs = with pkgs; [
python3Minimal
];
}) })
]; ];
extraConfig = extraConfig =
@ -103,9 +100,6 @@ in
) )
) )
+ '' + ''
try %{
eval %sh{ kak-tree-sitter -vvvv -dks --init $kak_session }
}
set global scrolloff 10,20 set global scrolloff 10,20
set global autoreload yes set global autoreload yes
@ -124,19 +118,16 @@ in
home.file = { home.file = {
".config/kak-lsp/kak-lsp.toml".source = ./kak-lsp.toml; ".config/kak-lsp/kak-lsp.toml".source = ./kak-lsp.toml;
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
terminal terminal
ranger ranger
bmenu bmenu
kak-lsp kak-lsp
kak-tree-sitter
kak-pager kak-pager
kak-man-pager kak-man-pager
emmet-cli emmet-cli
nodePackages.prettier nodePackages.prettier
pint-fmt
aspell aspell
aspellDicts.en aspellDicts.en

View file

@ -15,14 +15,6 @@ hook global WinSetOption filetype=nix %{
set buffer formatcmd 'nixfmt' set buffer formatcmd 'nixfmt'
} }
hook global BufCreate .*\.json %{
set buffer formatcmd 'prettier --parser json'
}
hook global BufCreate .*\.ya?ml %{
set buffer formatcmd 'prettier --parser yaml'
}
hook global BufCreate .*\.html %{ hook global BufCreate .*\.html %{
set buffer formatcmd 'prettier --parser html' set buffer formatcmd 'prettier --parser html'
} }
@ -38,18 +30,10 @@ hook global WinSetOption filetype=angular %[
add-highlighter buffer/angular ref html add-highlighter buffer/angular ref html
] ]
hook global BufCreate .*\.php %{
set buffer formatcmd 'pint-fmt'
}
hook global BufCreate .*\.js %{ hook global BufCreate .*\.js %{
set buffer formatcmd 'prettier --parser babel' set buffer formatcmd 'prettier --parser babel'
} }
hook global BufCreate .*\.scss %{
set buffer formatcmd 'prettier --parser scss'
}
hook global BufCreate .*\.vue %{ hook global BufCreate .*\.vue %{
set buffer formatcmd 'prettier --parser vue' set buffer formatcmd 'prettier --parser vue'
hook buffer InsertCompletionHide { hook buffer InsertCompletionHide {

Some files were not shown because too many files have changed in this diff Show more