Merge branch 'zenix/master' into alpine/master

This commit is contained in:
Tristan 2025-01-18 00:25:15 +00:00
commit 2c406b36d3
38 changed files with 843 additions and 360 deletions

View file

@ -1,2 +1,3 @@
lib/words.txt
lib/emotes.txt
flake.lock

374
flake.lock generated
View file

@ -5,11 +5,11 @@
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1708890466,
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
"lastModified": 1732200724,
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "665b3c6748534eb766c777298721cece9453fdae",
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
"type": "github"
},
"original": {
@ -53,11 +53,11 @@
"base16-vim": {
"flake": false,
"locked": {
"lastModified": 1716150083,
"narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=",
"lastModified": 1731949548,
"narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=",
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d",
"rev": "61165b1632409bd55e530f3dbdd4477f011cadc6",
"type": "github"
},
"original": {
@ -74,11 +74,11 @@
]
},
"locked": {
"lastModified": 1722113426,
"narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=",
"lastModified": 1728330715,
"narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
"owner": "numtide",
"repo": "devshell",
"rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae",
"rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
"type": "github"
},
"original": {
@ -120,11 +120,11 @@
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1673956053,
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
@ -141,11 +141,11 @@
]
},
"locked": {
"lastModified": 1726153070,
"narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=",
"lastModified": 1733312601,
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a",
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github"
},
"original": {
@ -159,11 +159,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -180,11 +180,11 @@
]
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -196,11 +196,11 @@
"fromYaml": {
"flake": false,
"locked": {
"lastModified": 1689549921,
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
"lastModified": 1731966426,
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
"type": "github"
},
"original": {
@ -226,11 +226,11 @@
]
},
"locked": {
"lastModified": 1726745158,
"narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=",
"lastModified": 1734425854,
"narHash": "sha256-nzE5UbJ41aPEKf8R2ZFYtLkqPmF7EIUbNEdHMBLg0Ig=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74",
"rev": "0ddd26d0925f618c3a5d85a4fa5eb1e23a09491d",
"type": "github"
},
"original": {
@ -264,32 +264,50 @@
"gnome-shell": {
"flake": false,
"locked": {
"lastModified": 1713702291,
"narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=",
"lastModified": 1732369855,
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934",
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
"type": "github"
},
"original": {
"owner": "GNOME",
"ref": "46.1",
"ref": "47.2",
"repo": "gnome-shell",
"type": "github"
}
},
"hm-cosmic": {
"inputs": {
"home-manager": "home-manager",
"home-manager-cosmic": "home-manager-cosmic"
},
"locked": {
"lastModified": 1733104727,
"narHash": "sha256-2a4w7OxuncH/qh+eBou65v+Ow7ZH8CobfFId3ckSQdo=",
"owner": "tristanbeedell",
"repo": "hm-cosmic",
"rev": "8c7ae2855827101eff7e52dd320599a487c78936",
"type": "github"
},
"original": {
"owner": "tristanbeedell",
"ref": "master",
"repo": "hm-cosmic",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1727346017,
"narHash": "sha256-z7OCFXXxIseJhEHiCkkUOkYxD9jtLU8Kf5Q9WC0SjJ8=",
"lastModified": 1733085484,
"narHash": "sha256-dVmNuUajnU18oHzBQWZm1BQtANCHaqNuxTHZQ+GN0r8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c124568e1054a62c20fbe036155cc99237633327",
"rev": "c1fee8d4a60b89cae12b288ba9dbc608ff298163",
"type": "github"
},
"original": {
@ -301,14 +319,14 @@
},
"home-manager-cosmic": {
"inputs": {
"nixpkgs": "nixpkgs"
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1728250817,
"narHash": "sha256-OVHpUlNxHpQUe2Waav/MR+Z7fm6ft/w8SxWlvXv+AdU=",
"lastModified": 1733103810,
"narHash": "sha256-S1jGheeLQJPaY80+iFu7Iv4Az3BHmVlv8PxngnK8Aog=",
"owner": "tristanbeedell",
"repo": "home-manager",
"rev": "ce770a3e442b2105852a6f5f79f3645b4c64505c",
"rev": "efa4d272f6c2b14d4a3b67b0b1e4b38ae46e5588",
"type": "github"
},
"original": {
@ -319,6 +337,27 @@
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1734808199,
"narHash": "sha256-MxlUcLjE8xLbrI1SJ2B2jftlg4wdutEILa3fgqwA98I=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f342df3ad938f205a913973b832f52c12546aac6",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "master",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_3": {
"inputs": {
"nixpkgs": [
"nixvim",
@ -326,11 +365,11 @@
]
},
"locked": {
"lastModified": 1726985855,
"narHash": "sha256-NJPGK030Y3qETpWBhj9oobDQRbXdXOPxtu+YgGvZ84o=",
"lastModified": 1734622215,
"narHash": "sha256-OOfI0XhSJGHblfdNDhfnn8QnZxng63rWk9eeJ2tCbiI=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "04213d1ce4221f5d9b40bcee30706ce9a91d148d",
"rev": "1395379a7a36e40f2a76e7b9936cc52950baa1be",
"type": "github"
},
"original": {
@ -339,7 +378,7 @@
"type": "github"
}
},
"home-manager_3": {
"home-manager_4": {
"inputs": {
"nixpkgs": [
"stylix",
@ -347,11 +386,11 @@
]
},
"locked": {
"lastModified": 1724435763,
"narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=",
"lastModified": 1733085484,
"narHash": "sha256-dVmNuUajnU18oHzBQWZm1BQtANCHaqNuxTHZQ+GN0r8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be",
"rev": "c1fee8d4a60b89cae12b288ba9dbc608ff298163",
"type": "github"
},
"original": {
@ -360,6 +399,52 @@
"type": "github"
}
},
"ixx": {
"inputs": {
"flake-utils": [
"nixvim",
"nuschtosSearch",
"flake-utils"
],
"nixpkgs": [
"nixvim",
"nuschtosSearch",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729958008,
"narHash": "sha256-EiOq8jF4Z/zQe0QYVc3+qSKxRK//CFHMB84aYrYGwEs=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "9fd01aad037f345350eab2cd45e1946cc66da4eb",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"ref": "v0.0.6",
"repo": "ixx",
"type": "github"
}
},
"musnix": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1734127708,
"narHash": "sha256-fXDr93nc3zUDCGS5qhrXAtwBJfiI40jIdoMncLAzbUY=",
"owner": "musnix",
"repo": "musnix",
"rev": "0a2bbd1e2ec78ef268698eb682f39015c1f3ca1d",
"type": "github"
},
"original": {
"owner": "musnix",
"repo": "musnix",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
@ -368,11 +453,11 @@
]
},
"locked": {
"lastModified": 1727003835,
"narHash": "sha256-Cfllbt/ADfO8oxbT984MhPHR6FJBaglsr1SxtDGbpec=",
"lastModified": 1733570843,
"narHash": "sha256-sQJAxY1TYWD1UyibN/FnN97paTFuwBw3Vp3DNCyKsMk=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "bd7d1e3912d40f799c5c0f7e5820ec950f1e0b3d",
"rev": "a35b08d09efda83625bef267eb24347b446c80b8",
"type": "github"
},
"original": {
@ -384,18 +469,16 @@
"nixos-cosmic": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs": "nixpkgs_4",
"nixpkgs-stable": "nixpkgs-stable",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1727314564,
"narHash": "sha256-UE98O6EQYUiDp7rypkBfJG0XSz0c5FxkslyP+7Gskt8=",
"lastModified": 1734745015,
"narHash": "sha256-HGl0yR/qfGTO99NfiB5bqTe2nPKmD57opzB/TwhJSW0=",
"owner": "lilyinstarlight",
"repo": "nixos-cosmic",
"rev": "f2aa34f521da1d6335301fc1b58dde8ed779d632",
"rev": "1c922245aec471610533c7a225bf9c20e7002ff2",
"type": "github"
},
"original": {
@ -406,11 +489,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1722185531,
"narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=",
"lastModified": 1732837521,
"narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d",
"rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370",
"type": "github"
},
"original": {
@ -422,58 +505,90 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1727129439,
"narHash": "sha256-nPyrcFm6FSk7CxzVW4x2hu62aLDghNcv9dX6DF3dXw8=",
"lastModified": 1734600368,
"narHash": "sha256-nbG9TijTMcfr+au7ZVbKpAhMJzzE2nQBYmRvSdXUD8g=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "babc25a577c3310cce57c72d5bed70f4c3c3843a",
"rev": "b47fd6fa00c6afca88b8ee46cfdb00e104f50bca",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1725762081,
"narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=",
"lastModified": 1734529975,
"narHash": "sha256-ze3IJksru9dN0keqUxY0WNf8xrwfs8Ty/z9v/keyBbg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1727122398,
"narHash": "sha256-o8VBeCWHBxGd4kVMceIayf5GApqTavJbTa44Xcg5Rrk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "30439d93eb8b19861ccbe3e581abf97bdc91b093",
"rev": "72d11d40b9878a67c38f003c240c2d2e1811e72a",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"ref": "nixos-24.05",
"type": "indirect"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1729256560,
"narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1725534445,
"narHash": "sha256-Yd0FK9SkWy+ZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84=",
"lastModified": 1733392399,
"narHash": "sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG+cBns=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9bb1e7571aadf31ddb4af77fc64b2d59580f9a39",
"rev": "d0797a04b81caeae77bcff10a9dde78bc17f5661",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1734424634,
"narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1731763621,
"narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d",
"type": "github"
},
"original": {
@ -483,13 +598,13 @@
"type": "github"
}
},
"nixpkgs_4": {
"nixpkgs_6": {
"locked": {
"lastModified": 1725194671,
"narHash": "sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w+ROpMfuw=",
"lastModified": 1732238832,
"narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b833ff01a0d694b910daca6e2ff4a3f26dee478c",
"rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d",
"type": "github"
},
"original": {
@ -505,7 +620,7 @@
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"home-manager": "home-manager_2",
"home-manager": "home-manager_3",
"nix-darwin": "nix-darwin",
"nixpkgs": [
"nixpkgs"
@ -514,11 +629,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1727328717,
"narHash": "sha256-tGEVv5mFs38m6+60fNKlZn/6ucoOotfwn9FikXiYSlk=",
"lastModified": 1734798432,
"narHash": "sha256-JVU+WjrRZUJnUKQ/iXP9O8eQ0L3YkqV1DpFMS4kLZog=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "2ab8751b8be55accb78ca0ca58f1f4ff387001d7",
"rev": "6a4b4221c4ebf1140f73f8df769e97f1828d90fa",
"type": "github"
},
"original": {
@ -530,17 +645,18 @@
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils",
"ixx": "ixx",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1726995581,
"narHash": "sha256-lgsE/CTkZk9OIiFGEIrxXZQ7Feiv41dqlN7pEfTdgew=",
"lastModified": 1733773348,
"narHash": "sha256-Y47y+LesOCkJaLvj+dI/Oa6FAKj/T9sKVKDXLNsViPw=",
"owner": "NuschtOS",
"repo": "search",
"rev": "3b7dd61b365ca45380707453758a45f2e9977be3",
"rev": "3051be7f403bff1d1d380e4612f0c70675b44fc9",
"type": "github"
},
"original": {
@ -551,10 +667,15 @@
},
"root": {
"inputs": {
"home-manager": "home-manager",
"home-manager-cosmic": "home-manager-cosmic",
"hm-cosmic": "hm-cosmic",
"home-manager": "home-manager_2",
"musnix": "musnix",
"nixos-cosmic": "nixos-cosmic",
"nixpkgs": "nixpkgs_2",
"nixpkgs": [
"nixos-cosmic",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable_2",
"nixvim": "nixvim",
"sops-nix": "sops-nix",
"stylix": "stylix"
@ -568,11 +689,11 @@
]
},
"locked": {
"lastModified": 1727231386,
"narHash": "sha256-XLloPtQHKk/Tdt8t8zIb+JhmunlH3YB9Jz8RTlQ3N/4=",
"lastModified": 1734661750,
"narHash": "sha256-BI58NBdimxu1lnpOrG9XxBz7Cwqy+qIf99zunWofX5w=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "b5f76c3b09a8194889f5328a480fbea1a9115518",
"rev": "7d3d910d5fd575e6e8c5600d83d54e5c47273bfe",
"type": "github"
},
"original": {
@ -583,15 +704,14 @@
},
"sops-nix": {
"inputs": {
"nixpkgs": "nixpkgs_3",
"nixpkgs-stable": "nixpkgs-stable_2"
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1726524647,
"narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=",
"lastModified": 1734546875,
"narHash": "sha256-6OvJbqQ6qPpNw3CA+W8Myo5aaLhIJY/nNFDk3zMXLfM=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "e2d404a7ea599a013189aa42947f66cede0645c8",
"rev": "ed091321f4dd88afc28b5b4456e0a15bd8374b4d",
"type": "github"
},
"original": {
@ -609,19 +729,19 @@
"flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_2",
"gnome-shell": "gnome-shell",
"home-manager": "home-manager_3",
"nixpkgs": "nixpkgs_4",
"home-manager": "home-manager_4",
"nixpkgs": "nixpkgs_6",
"systems": "systems_2",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-tmux": "tinted-tmux"
},
"locked": {
"lastModified": 1727355527,
"narHash": "sha256-qFSPHeImI00fBzGTA94D66HMD+fJDkuz04WHp2Sg8eA=",
"lastModified": 1734531336,
"narHash": "sha256-BWwJTAiWmZudUdUbyets7e3zQfjvZYtkU51blBnUBjw=",
"owner": "danth",
"repo": "stylix",
"rev": "993fcabd83d1e0ee5ea038b87041593cc73c1ebe",
"rev": "a2d66f25478103ac9b4adc6d6713794f7005221e",
"type": "github"
},
"original": {
@ -663,43 +783,45 @@
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1696725948,
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
"lastModified": 1665001328,
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
"lastModified": 1716423189,
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
"rev": "eb39e141db14baef052893285df9f266df041ff8",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "eb39e141db14baef052893285df9f266df041ff8",
"type": "github"
}
},
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1696725902,
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
"lastModified": 1729501581,
"narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
"rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14",
"type": "github"
},
"original": {
@ -716,11 +838,11 @@
]
},
"locked": {
"lastModified": 1726734507,
"narHash": "sha256-VUH5O5AcOSxb0uL/m34dDkxFKP6WLQ6y4I1B4+N3L2w=",
"lastModified": 1734704479,
"narHash": "sha256-MMi74+WckoyEWBRcg/oaGRvXC9BVVxDZNRMpL+72wBI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "ee41a466c2255a3abe6bc50fc6be927cdee57a9f",
"rev": "65712f5af67234dad91a5a4baee986a8b62dbf8f",
"type": "github"
},
"original": {

View file

@ -1,17 +1,20 @@
{
description = "A flake using my config";
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
# nixpkgs.url = "nixpkgs/nixos-unstable";
musnix.url = "github:musnix/musnix";
nixpkgs.follows = "nixos-cosmic/nixpkgs";
nixpkgs-stable.url = "nixpkgs/nixos-24.05";
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager-cosmic.url = "github:tristanbeedell/home-manager/cosmic";
hm-cosmic.url = "github:tristanbeedell/hm-cosmic/master";
stylix.url = "github:danth/stylix";
sops-nix.url = "github:Mic92/sops-nix";
nixos-cosmic = {
url = "github:lilyinstarlight/nixos-cosmic";
inputs.nixpkgs.follows = "nixpkgs";
# inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
url = "github:nix-community/nixvim";
@ -36,9 +39,12 @@
./nixos/programs/cosmic.nix
./nixos/programs/gamer.nix
./nixos/programs/personal.nix
./nixos/services/musnix.nix
./nixos/workstation.nix
./nixos/programs/hyprland.nix
];
home-modules = [
./home/programs/mpd.nix
./home/programs/graphical.nix
./home/programs/gamer.nix
./home/programs/personal/.
@ -48,13 +54,14 @@
FCS-Tristan-Nixbook = mkConf {
nixos-modules = [
./hardware/fcs-tristan-nixbook.nix
# (auto-login "Hyprland")
# ./nixos/programs/hyprland.nix
./nixos/workstation.nix
./nixos/modules/work.nix
./nixos/programs/cosmic.nix
./nixos/programs/libvertd.nix
./nixos/programs/hyprland.nix
];
home-modules = [
./home/programs/mpd.nix
./home/programs/work.nix
./home/programs/graphical.nix
];

View file

@ -62,7 +62,6 @@ in {
"minfreespace=50G"
"fsname=mergerfs"
"category.create=mfs"
"cache.files=auto-all"
"dropcacheonclose=true"
];
};

View file

@ -6,7 +6,6 @@
...
}: let
user = config.user;
decrypt = import ../lib/decrypt.nix;
in {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
@ -24,7 +23,7 @@ in {
};
boot.initrd.luks.devices."usbkey" = {
device = "/dev/disk/by-id/usb-Generic_Flash_Disk_BCC97785-0:0";
device = "/dev/disk/by-label/usbkey1";
};
boot.initrd.luks.devices."cryptroot" = {
@ -32,7 +31,7 @@ in {
keyFileSize = 4096;
preOpenCommands = ''
mkdir -m 0755 -p /key
mount -n -t vfat -o ro /dev/mapper/usbkey /key
mount -n -o ro /dev/mapper/usbkey /key
'';
keyFile = "/key/keyfile";
preLVM = false;

View file

@ -6,7 +6,6 @@
...
}: let
user = config.user;
decrypt = import ../lib/decrypt.nix;
in {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
@ -20,7 +19,7 @@ in {
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/2dad5ed6-44cc-4d9d-9392-32afaa7b3909";
device = "/dev/mapper/cryptroot";
fsType = "btrfs";
options = ["subvol=@" "compress=zstd" "autodefrag"];
};
@ -32,30 +31,38 @@ in {
options = ["noatime"];
};
boot.initrd.postDeviceCommands = pkgs.lib.mkBefore (decrypt {
keydevice = "/dev/disk/by-id/usb-Generic_Flash_Disk_BCC97785-0:0";
keypartname = "usbkey";
});
boot.initrd.luks.devices."usbkey" = {
device = "/dev/disk/by-label/usbkey1";
};
boot.initrd.luks.devices."cryptroot" = {
device = "/dev/disk/by-uuid/cc0617df-8cbf-4618-abbc-df64c96de151";
keyFileSize = 4096;
preOpenCommands = ''
mkdir -m 0755 -p /key
mount -n -o ro /dev/mapper/usbkey /key
'';
keyFile = "/key/keyfile";
preLVM = false;
};
fileSystems."/home" = {
device = "/dev/disk/by-uuid/2dad5ed6-44cc-4d9d-9392-32afaa7b3909";
device = "/dev/mapper/cryptroot";
fsType = "btrfs";
options = ["subvol=@home" "compress=zstd" "autodefrag"];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/FE7E-0DE3";
device = "/dev/disk/by-label/boot";
fsType = "vfat";
};
swapDevices = [{device = "/dev/disk/by-uuid/da57b489-ab77-4830-b710-9f96cf43d053";}];
boot.plymouth.enable = true;
boot.initrd.verbose = false;
boot.consoleLogLevel = 1;
boot.kernelParams = ["quiet" "udev.log_level=3"];
swapDevices = [{device = "/dev/disk/by-label/swap";}];
# 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
@ -64,7 +71,7 @@ in {
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
networking.networkmanager.insertNameservers = ["1.1.1.1" "1.0.0.1"];
networking.networkmanager.appendNameservers = ["1.1.1.1" "1.0.0.1"];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;

View file

@ -37,9 +37,7 @@
yt-dlp
fastfetch
tree
ansible
ytfzf
lazygit
];
programs.zoxide.enable = true;

View file

@ -1,23 +1,30 @@
{
pkgs,
config,
lib,
...
}: let
inherit (config.lib.cosmic) Actions;
inherit (config.lib.cosmic) Actions mapBinds;
SpawnTerminal = name: pkg:
Actions.Spawn (pkgs.writeShellScriptBin name "${lib.getExe pkgs.alacritty} -e ${lib.getExe pkg}");
in {
programs.cosmic = {
enable = true;
input.asDefaults = true;
input.binds = {
input.binds = mapBinds {
# Navigation
Super. "h" = Actions.Focus "Left";
Super. "l" = Actions.Focus "Right";
Super. "j" = Actions.Focus "Down";
Super. "k" = Actions.Focus "Up";
Super. "u" = Actions.Focus "Out";
Super. "i" = Actions.Focus "In";
Super.Shift. "h" = Actions.Move "Left";
Super.Shift. "l" = Actions.Move "Right";
Super.Shift. "j" = Actions.Move "Down";
Super.Shift. "k" = Actions.Move "Up";
Super.Shift. "Right" = Actions.MoveToNextWorkspace;
Super.Shift. "Left" = Actions.MoveToPreviousWorkspace;
Super. "1" = Actions.Workspace 1;
Super. "2" = Actions.Workspace 2;
Super. "3" = Actions.Workspace 3;
@ -37,13 +44,21 @@ in {
# System
Super. "d" = Actions.Spawn config.programs.menu.drunCommand;
Super. "Return" = Actions.Spawn pkgs.alacritty;
Super. "e" = SpawnTerminal "aerc" config.programs.aerc.package;
Super. "o" = Actions.System "HomeFolder";
Super.Shift. "s" = Actions.System "Screenshot";
"XF86AudioRaiseVolume" = Actions.System "VolumeRaise";
"XF86AudioLowerVolume" = Actions.System "VolumeLower";
"XF86AudioPlay" = Actions.System "PlayPause";
"XF86AudioNext" = Actions.System "PlayNext";
"XF86AudioPrev" = Actions.System "PlayPrev";
"XF86MonBrightnessUp" = Actions.System "BrightnessUp";
"XF86MonBrightnessDown" = Actions.System "BrightnessDown";
};
background = {
displays = {
all = {
source = ../../../images/nier2.jpg;
source = lib.mkDefault config.stylix.image;
};
};
};
@ -53,13 +68,16 @@ in {
start = [
"com.system76.CosmicAppletWorkspaces"
];
center = [];
center = [
"com.system76.CosmicAppletMinimize"
];
end = [
"com.system76.CosmicAppletTime"
"com.system76.CosmicAppletTiling"
"com.system76.CosmicAppletAudio"
"com.system76.CosmicAppletNetwork"
"com.system76.CosmicAppletNotifications"
"com.system76.CosmicAppletMinimize"
"com.system76.CosmicAppletStatusArea"
"com.system76.CosmicAppletPower"
];
};
@ -69,13 +87,15 @@ in {
};
};
};
settings = {
"com.system76.CosmicComp".options = {
autotile = true;
active_hint = true;
focus_follows_cursor = true;
focus_follows_cursor_delay = 0;
cursor_follows_focus = true;
comp.settings = {
autotile = true;
active_hint = true;
focus_follows_cursor = true;
focus_follows_cursor_delay = 0;
cursor_follows_focus = true;
descale_xwayland = true;
workspaces = {
workspace_layout = "Horizontal";
};
};
};

View file

@ -23,7 +23,7 @@ in {
xdg.portal = {
enable = true;
configPackages = [pkgs.hyprland];
extraPortals = [pkgs.xdg-desktop-portal-gtk];
extraPortals = [pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-wlr];
};
services.hypridle = {
@ -52,7 +52,7 @@ in {
programs.hyprlock = {
enable = true;
settings = {
settings = lib.mkForce {
# https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/
general = {
hide_cursor = true;
@ -88,8 +88,9 @@ in {
enable = true;
systemd = {
enable = true;
variables = ["--all"];
# variables = ["--all"];
};
xwayland.enable = true;
settings = {
input = {
touchpad = {
@ -105,7 +106,6 @@ in {
};
decoration = {
rounding = 0;
drop_shadow = false;
};
bezier = [
"overshot, 0.05, 0.9, 0.1, 1.1"
@ -277,5 +277,10 @@ in {
enable = true;
};
programs.waybar.settings.mainBar.modules-left = ["hyprland/workspaces" "hyprland/window"];
programs.waybar = {
settings.mainBar.modules-left = ["hyprland/workspaces" "hyprland/window"];
systemd.target = "hyprland-session.target";
};
systemd.user.services.hypridle.Install.WantedBy = lib.mkForce ["hyprland-session.target"];
}

View file

@ -1,77 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib; let
cfg = config.roles.mpd;
terminal = config.programs.terminal;
termcmd = "${terminal}/bin/${terminal.pname}";
in {
options.roles.mpd = {
enable = mkEnableOption "setup mpd client";
host = mkOption {default = "192.168.1.2";};
};
config = mkIf cfg.enable {
programs.ncmpcpp = {
enable = true;
settings.mpd_host = cfg.host;
bindings = [
{
key = "j";
command = "scroll_down";
}
{
key = "k";
command = "scroll_up";
}
{
key = "l";
command = "next_column";
}
{
key = "h";
command = "previous_column";
}
{
key = "J";
command = ["select_item" "scroll_down"];
}
{
key = "K";
command = ["select_item" "scroll_up"];
}
];
};
services.mpd-mpris = {
enable = true;
mpd.host = cfg.host;
};
programs.waybar.settings.mainBar.mpd.server = cfg.host;
programs.scripts = [
{
name = "ncmpcpp";
text = ''
${termcmd} -e ${pkgs.ncmpcpp}/bin/ncmpcpp
'';
hotkeys = [{key = "M";}];
install = false;
}
];
systemd.user.services = {
snapclient = {
Unit = {
Description = "Snapclient";
};
Service = {
ExecStart = "${pkgs.snapcast}/bin/snapclient -h ${cfg.host}";
};
Install = {
WantedBy = ["graphical-session.target"];
};
};
};
};
}

View file

@ -12,15 +12,10 @@
gamescope
gamemode
mangohud
BeatSaberModManager
# BeatSaberModManager - out of date: https://github.com/NixOS/nixpkgs/pull/339370
protontricks
protonup-qt
oversteer
xboxdrv
# VR
# monado -- build is borked /:
openxr-loader
opencomposite
];
}

View file

@ -1,10 +1,21 @@
{pkgs, ...}: {
{
pkgs,
lib,
config,
...
}: {
programs.git = {
enable = true;
extraConfig = {
rerere.enabled = true;
rebase.updateRefs = true;
};
aliases = {
ui = "!lazygit";
graph = "log --oneline --all --graph";
amend = "commit --amend --no-edit";
sdiff = "diff --staged";
fpush = "push --force-with-lease";
t = "tag --annotate";
bclone = "!sh ${pkgs.writeShellScriptBin "bare-clone" ''
url=$1
@ -33,8 +44,12 @@
git fetch origin $opts
''}/bin/bare-clone";
};
delta = {
difftastic = {
enable = true;
};
};
programs.lazygit = {
enable = true;
};
}

View file

@ -9,7 +9,7 @@
# system
selectdefaultapplication
easyeffects
pavucontrol
pwvucontrol
helvum
# tools
@ -18,21 +18,31 @@
gimp
libreoffice
dbeaver-bin
drawio
zed-editor
# entertainment
libsForQt5.kasts
shortwave
freetube
youtube-music
# other
element-desktop-wayland
(makeDesktopItem {
name = "element-desktop-wayland";
desktopName = "Element";
exec = "${element-desktop-wayland}/bin/element-desktop";
})
brave
bitwarden
];
programs.obs-studio = {
enable = true;
plugins = [pkgs.obs-studio-plugins.wlrobs];
plugins = [
pkgs.obs-studio-plugins.wlrobs
pkgs.obs-studio-plugins.obs-pipewire-audio-capture
];
};
xdg.mimeApps.defaultApplications = {

70
home/programs/mpd.nix Normal file
View file

@ -0,0 +1,70 @@
{
lib,
pkgs,
config,
...
}:
let
terminal = config.programs.terminal;
termcmd = "${terminal}/bin/${terminal.pname}";
host = "alpine";
in {
programs.ncmpcpp = {
enable = true;
settings.mpd_host = host;
bindings = [
{
key = "j";
command = "scroll_down";
}
{
key = "k";
command = "scroll_up";
}
{
key = "l";
command = "next_column";
}
{
key = "h";
command = "previous_column";
}
{
key = "J";
command = ["select_item" "scroll_down"];
}
{
key = "K";
command = ["select_item" "scroll_up"];
}
];
};
services.mpd-mpris = {
enable = true;
mpd.host = host;
};
programs.waybar.settings.mainBar.mpd.server = host;
programs.scripts = [
{
name = "ncmpcpp";
text = ''
${termcmd} -e ${pkgs.ncmpcpp}/bin/ncmpcpp
'';
hotkeys = [{key = "M";}];
install = false;
}
];
systemd.user.services = {
snapclient = {
Unit = {
Description = "Snapclient";
};
Service = {
ExecStart = "${pkgs.snapcast}/bin/snapclient -h ${host}";
};
Install = {
WantedBy = ["graphical-session.target"];
};
};
};
}

View file

@ -1,6 +1,9 @@
{pkgs, ...}: {
programs.mpv = {
enable = true;
config = {
keep-open = true;
};
bindings = {
l = "seek 5";
h = "seek -5";

View file

@ -3,12 +3,12 @@
pkgs,
lib,
...
}: {
} @ input: {
programs.nixvim =
{
enable = true;
}
// (import ../../../lib/nixvim.nix {inherit pkgs;});
// (import ../../../lib/nixvim.nix input);
programs.vscode = {
extensions = [pkgs.vscode-extensions.asvetliakov.vscode-neovim];

View file

@ -1,7 +1,4 @@
{pkgs, ...}: {
imports = [
# ./kodi.nix
];
roles.email = {
enable = true;
email = "tristan@tristans.cloud";
@ -15,9 +12,6 @@
services.nextcloud-client.enable = true;
programs.nixvim.plugins = {
lsp = {
servers.gdscript.enable = true;
};
godot.enable = true;
dap = {
enable = true;
@ -38,9 +32,7 @@
home.packages = with pkgs; [
godot_4
ardour
blender
musescore
monero-gui
transmission-remote-gtk
krita

View file

@ -274,11 +274,13 @@ in {
text = ''
res=$(echo "lock
sleep
hibernate" | ${my-deps.menu})
hibernate
logout" | ${my-deps.menu})
case $res in
lock) ${my-deps.lock};;
sleep) systemctl suspend;;
hibernate) systemctl hibernate;;
logout) hyprctl dispatch exit;;
esac
'';
hotkeys = [

View file

@ -15,10 +15,17 @@ in {
email = "tristan.beedell@cryoserver.com";
terminal = false;
};
programs.git.extraConfig = {
"includeIf \"gitdir:~/Documents/personal/\"" = {
path = "~/Documents/personal/.gitconfig";
};
};
home.packages = [
pkgs.drawio
pkgs.thunderbird
pkgs.remmina
pkgs.postman
(import ../../lib/mkapp.nix "slack" {
inherit pkgs browser;
desktopName = "Slack";
@ -30,17 +37,19 @@ in {
desktopName = "Microsoft Teams";
})
pkgs.devcontainer
(pkgs.writeShellScriptBin "devcontainer-open" (let
jq = "${pkgs.jq}/bin/jq";
devcontainer = "${pkgs.devcontainer}/bin/devcontainer";
in ''
res=$(${devcontainer} up --workspace-folder .)
outcome=$(echo $res | ${jq} -r '.outcome')
[[ $outcome = "success" ]] || exit 1
containerId=$(echo $res | ${jq} -r '.containerId')
remoteWorkspaceFolder=$(echo $res | ${jq} -r '.remoteWorkspaceFolder')
docker exec -it --workdir=$remoteWorkspaceFolder $containerId bash
''))
(pkgs.writeShellScriptBin "devcontainer-open" (
let
jq = "${pkgs.jq}/bin/jq";
devcontainer = "${pkgs.devcontainer}/bin/devcontainer";
in ''
res=$(${devcontainer} up --workspace-folder .)
outcome=$(echo $res | ${jq} -r '.outcome')
[[ $outcome = "success" ]] || exit 1
containerId=$(echo $res | ${jq} -r '.containerId')
remoteWorkspaceFolder=$(echo $res | ${jq} -r '.remoteWorkspaceFolder')
docker exec -it --workdir=$remoteWorkspaceFolder $containerId bash
''
))
];
home.sessionVariables = {

View file

@ -1,30 +1,34 @@
{
pkgs,
# config,
config,
...
}: {
home.packages = with pkgs; [
openxr-loader
opencomposite
];
services.monado.enable = true;
systemd.user.services.monado.environment = {
STEAMVR_LH_ENABLE = "true";
XRT_COMPOSITOR_SCALE_PERCENTAGE = "200";
};
home.file.".config/openxr/1/openxr_monado.json" = {
source = "${pkgs.monado}/share/openxr/1/openxr_monado.json";
};
# home.file.".config/openvr/openvrpaths.vrpath" = {
# text = ''
# {
# "config" :
# [
# "${config.home.homeDirectory}/.local/share/Steam/config"
# ],
# "external_drivers" : null,
# "jsonid" : "vrpathreg",
# "log" :
# [
# "${config.home.homeDirectory}/.local/share/Steam/logs"
# ],
# "runtime" :
# [
# "${pkgs.opencomposite}/lib/opencomposite"
# ],
# "version" : 1
# }
# '';
# };
home.file.".config/openvr/openvrpaths.vrpath" = {
text = builtins.toJSON {
"config" = [
"${config.home.homeDirectory}/.local/share/Steam/config"
];
"external_drivers" = null;
"jsonid" = "vrpathreg";
"log" = [
"${config.home.homeDirectory}/.local/share/Steam/logs"
];
"runtime" = [
"${pkgs.opencomposite}/lib/opencomposite"
];
"version" = 1;
};
};
}

View file

@ -2,6 +2,7 @@
config,
pkgs,
lib,
stable-pkgs,
...
}: {
imports = [
@ -27,6 +28,8 @@
wl-clipboard
playerctl
quickemu
devenv
stable-pkgs.logseq
];
services.udiskie = {
@ -36,6 +39,7 @@
programs.rbw.settings.pinentry = pkgs.pinentry-gnome3;
# https://docs.pipewire.org/page_module_raop_discover.html
xdg.configFile."pipewire/pipewire.conf.d/raop-discover.conf".text = ''
context.modules = [
{
@ -44,6 +48,30 @@
}
]
'';
xdg.configFile."pipewire/pipewire.conf.d/raop-sink.conf".text = ''
context.modules = [
{ name = libpipewire-module-raop-sink
args = {
# Set the remote address to tunnel to
raop.ip = "127.0.0.1"
raop.port = 8190
raop.name = "my-raop-device"
raop.hostname = "My Service"
#raop.transport = "udp"
raop.encryption.type = "RSA"
#raop.audio.codec = "PCM"
#raop.password = "****"
#audio.format = "S16"
#audio.rate = 44100
#audio.channels = 2
#audio.position = [ FL FR ]
stream.props = {
# extra sink properties
}
}
}
]
'';
services.gnome-keyring.enable = true;
}

View file

@ -9,9 +9,15 @@
home-modules ? [],
}: let
inherit (inputs) home-manager nixpkgs sops-nix nixvim;
stable-pkgs = import inputs.nixpkgs-stable {
inherit system;
config.permittedInsecurePackages = [
"electron-27.3.11"
];
};
in
nixpkgs.lib.nixosSystem {
specialArgs = {inherit inputs;};
specialArgs = {inherit inputs stable-pkgs user userFullname;};
inherit system;
@ -24,6 +30,8 @@ in
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "bak";
extraSpecialArgs = {inherit stable-pkgs;};
users.${user}.imports =
home-modules
++ [

View file

@ -1,4 +1,19 @@
{pkgs, ...}: {
{
pkgs,
lib,
...
}: let
lua = cmd: {__raw = cmd;};
luaFunc = cmd:
lua ''
function ()
${cmd}
end'';
in {
colorschemes.base16 = {
enable = true;
colorscheme = "gruvbox-dark-hard";
};
globals = {
mapleader = " ";
};
@ -10,10 +25,10 @@
expandtab = true;
smartindent = true;
scrolloff = 4;
smoothscroll = true;
undofile = true;
undodir.__raw = ''vim.fn.expand("$HOME/.local/share/nvim/undo")'';
undodir = lua ''vim.fn.expand("$HOME/.local/share/nvim/undo")'';
list = true;
listchars = builtins.concatStringsSep "," [
"tab: >"
@ -22,8 +37,13 @@
"extends:>"
"precedes:<"
];
foldlevel = 2;
};
extraPlugins = [(pkgs.vimPlugins.actions-preview-nvim)];
extraPlugins = [
(pkgs.vimPlugins.actions-preview-nvim)
(pkgs.vimPlugins.vimwiki)
];
extraConfigLua = ''
require("actions-preview").setup {
highlight_command = {
@ -66,6 +86,14 @@
key = "<C-S-Tab>";
action = "<CMD>tabprev<CR>";
}
{
key = "<leader>bn";
action = "<CMD>bnext<CR>";
}
{
key = "<leader>bp";
action = "<CMD>bprevious<CR>";
}
{
key = "gl";
action = "g$";
@ -153,6 +181,68 @@
action = "";
options.desc = "Harpoon";
}
{
key = "<F5>";
action = luaFunc "require('dap').continue()";
options.desc = "DAP continue";
}
{
key = "<leader>dc";
action = luaFunc "require('dap').continue()";
options.desc = "DAP continue";
}
{
key = "<leader>db";
action = luaFunc "require('dap').toggle_breakpoint()";
options.desc = "DAP toggle breakpoint";
}
{
key = "<leader>dn";
action = luaFunc "require('dap').step_over()";
options.desc = "DAP step over";
}
{
key = "<leader>di";
action = luaFunc "require('dap').step_into()";
options.desc = "DAP step into";
}
{
key = "<leader>do";
action = luaFunc "require('dap').step_out()";
options.desc = "DAP step out";
}
{
key = "<leader>du";
action = luaFunc "require('dapui').toggle()";
options.desc = "DAP UI Toggle";
}
];
autoCmd = [
{
event = "BufWritePre";
pattern = "*.go";
# https://github.com/golang/tools/blob/master/gopls/doc/vim.md#imports-and-formatting
callback = luaFunc ''
local params = vim.lsp.util.make_range_params()
params.context = {only = {"source.organizeImports"}}
-- buf_request_sync defaults to a 1000ms timeout. Depending on your
-- machine and codebase, you may want longer. Add an additional
-- argument after params if you find that you have to write the file
-- twice for changes to be saved.
-- E.g., vim.lsp.buf_request_sync(0, "textDocument/codeAction", params, 3000)
local result = vim.lsp.buf_request_sync(0, "textDocument/codeAction", params)
for cid, res in pairs(result or {}) do
for _, r in pairs(res.result or {}) do
if r.edit then
local enc = (vim.lsp.get_client_by_id(cid) or {}).offset_encoding or "utf-16"
vim.lsp.util.apply_workspace_edit(r.edit, enc)
end
end
end
vim.lsp.buf.format({async = false})
'';
}
];
plugins = {
@ -186,9 +276,19 @@
lsp = {
enable = true;
servers = {
ts-ls.enable = true;
nil-ls.enable = true;
ts_ls.enable = true;
nixd = {
enable = true;
settings = {
nixpkgs.expr = ''import <nixpkgs> {}'';
options.zenix.expr = ''(builtins.getFlake "git+https://git.tristans.cloud/tristan/nix").nixosConfigurations.zenix.options'';
options.alpine.expr = ''(builtins.getFlake "git+https://git.tristans.cloud/tristan/nix").nixosConfigurations.alpine.options'';
formatting.command = [(lib.getExe pkgs.alejandra)];
};
};
yamlls.enable = true;
gopls.enable = true;
ansiblels.enable = true;
};
keymaps = {
lspBuf = {
@ -200,6 +300,17 @@
};
};
dap = {
enable = true;
extensions.dap-go = {
enable = true;
# tests.verbose = true; # ???
};
extensions.dap-ui = {
enable = true;
};
};
cmp = {
enable = true;
settings = {
@ -272,8 +383,28 @@
};
};
oil.enable = true;
oil = {
enable = true;
settings = {
keymaps = {
"<C-r>" = "actions.refresh";
"zh" = "actions.toggle_hidden";
};
view_options.show_hidden = true;
};
};
ts-autotag.enable = true;
guess-indent.enable = true;
codesnap = {
enable = true;
settings = {
has_line_number = true;
mac_window_bar = false;
save_path = "~/Pictures/Screenshots/";
watermark = "";
bg_padding = 5;
};
};
};
}

View file

@ -11,7 +11,7 @@ in {
nix = {
settings = {
experimental-features = ["nix-command" "flakes"];
experimental-features = ["nix-command" "flakes" "pipe-operators"];
};
settings.trusted-users = ["root" user];
@ -42,12 +42,6 @@ in {
}
];
};
networking.hosts = {
"100.65.29.110" = ["zenix"];
"100.106.241.122" = ["alpine" "tristans.cloud"];
"100.71.130.111" = ["fcs-tristan-nixbook"];
"100.69.60.83" = ["google-pixel-8"];
};
time.timeZone = lib.mkDefault "Europe/London";
@ -56,7 +50,10 @@ in {
useXkbConfig = true;
};
services.avahi.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
};
i18n.defaultLocale = lib.mkDefault "en_GB.UTF-8";
@ -93,6 +90,11 @@ in {
unzip
fzf
sops
lsof
nix-tree
nix-index
nh
jq
];
boot.kernel.sysctl = {

87
nixos/modules/podman.nix Normal file
View file

@ -0,0 +1,87 @@
{
lib,
pkgs,
config,
...
}: let
inherit (lib) mkOption types;
mkRunCommand = name: {
image,
command ? "",
environment ? {},
ports ? [],
volumes ? [],
envFile ? null,
...
}: ''
${pkgs.podman}/bin/podman run \
${toString (builtins.attrValues (builtins.mapAttrs (name: value: "-e ${name}='${value}'") environment))} \
${toString (builtins.map (mapping: "-p ${mapping}") ports)} \
${toString (builtins.map (mapping: "-v ${mapping}") volumes)} \
${
if builtins.isNull envFile
then ""
else "--env-file ${toString envFile}"
} \
--detach --replace \
--name ${name} \
${image} ${command}
'';
opts = {
config,
name,
...
}: {
options = {
image = mkOption {
type = types.str;
};
command = mkOption {
type = types.str;
default = "";
};
environment = mkOption {
type = types.attrsOf types.str;
default = {};
};
ports = mkOption {
type = types.listOf types.str;
default = [];
};
volumes = mkOption {
type = types.listOf types.str;
default = [];
};
envFile = mkOption {
type = types.nullOr types.path;
default = null;
};
};
};
mkService = name: config: {
enable = true;
wants = ["network-online.target"];
after = ["network-online.target"];
wantedBy = ["default.target"];
unitConfig = {
RequiresMountsFor = "/run/containers/storage";
};
serviceConfig = {
Environment = "PODMAN_SYSTEMD_UNIT=%n";
Restart = "on-failure";
TimeoutStopSec = 70;
ExecStart = mkRunCommand name config;
ExecStop = "${pkgs.podman}/bin/podman stop -t 10 ${name}";
ExecStopPost = "${pkgs.podman}/bin/podman stop -t 10 ${name}";
Type = "forking";
};
};
in {
options.podman = mkOption {
type = types.attrsOf (types.submodule opts);
default = {};
};
config = {
systemd.services = lib.mapAttrs mkService config.podman;
};
}

View file

@ -11,10 +11,13 @@ in {
# nonfree vscode required for dev containers
"vscode"
"steam-run"
"postman"
"drawio" # the creator had a hissyfit over a negative review: https://github.com/jgraph/drawio/discussions/4623
];
nixpkgs.config.permittedInsecurePackages = [
"openssl-1.1.1w" # required for mongodb
"electron-27.3.11"
];
networking = {

View file

@ -14,7 +14,7 @@
services.displayManager.cosmic-greeter.enable = true;
services.system76-scheduler.enable = true;
home-manager.users.${config.user}.imports = [
(import "${inputs.home-manager-cosmic}/modules/programs/cosmic/.")
(inputs.hm-cosmic.homeManagerModules.cosmic)
../../home/desktop/cosmic/.
];
}

View file

@ -6,23 +6,23 @@
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-unwrapped"
"steam-run"
"steam-original"
"osu-lazer"
];
programs.steam = {
enable = true;
extest.enable = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
gamescopeSession = {
enable = true;
args = ["-r" "144" "-O" "DP-1" "--rt"];
};
};
programs.gamescope = {
enable = true;
capSysNice = true;
};
programs.gamemode.enable = true;
services.monado.enable = true;
systemd.user.services.monado.environment = {
STEAMVR_LH_ENABLE = "true";
XRT_COMPOSITOR_SCALE_PERCENTAGE = "200";
};
}

14
nixos/programs/kodi.nix Normal file
View file

@ -0,0 +1,14 @@
{pkgs, ...}: {
services.xserver.desktopManager.kodi = {
enable = true;
package =
pkgs.kodi.withPackages
(exts:
with exts; [
jellyfin
steam-launcher
joystick
youtube
]);
};
}

View file

@ -0,0 +1,13 @@
{config, ...}: let
user = config.user;
in {
users.users.${user}.extraGroups = ["libvirtd" "kvm"];
virtualisation.libvirtd = {
enable = true;
nss = {
enable = true;
enableGuest = true;
};
};
programs.virt-manager.enable = true;
}

View file

@ -1,4 +1,4 @@
{
{pkgs, ...}: {
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {

View file

@ -2,6 +2,12 @@
inherit (config) sops;
inherit (sops) templates placeholder;
in {
nixpkgs.config.permittedInsecurePackages = [
"aspnetcore-runtime-6.0.36"
"aspnetcore-runtime-wrapped-6.0.36"
"dotnet-sdk-6.0.428"
"dotnet-sdk-wrapped-6.0.428"
];
users.groups.media = {};
services.jackett = {
enable = true;
@ -37,20 +43,21 @@ in {
ports = ["9091:9091"];
volumes = [
"/mnt/storage/downloads:/data"
"transmission-config:/config"
"/home/tristan/pods/transmission/config:/config"
"/mnt/storage/media/unsorted:/data/completed"
];
environmentFiles = [ templates."transmission/env".path ];
environment = {
PUID = "1000";
GUID = "1000";
SUBNET = "100.0.0.0/8";
LOCAL_NETWORK = "100.0.0.0/8";
};
privileged = true;
capabilities = {
"NET_ADMIN" = true;
"NET_RAW" = true;
"MKNOD" = true;
};
extraOptions = builtins.map (cap: "--cap-add=${cap}") [
"NET_ADMIN"
"NET_RAW"
"MKNOD"
];
};
sops.secrets = {
"transmission/auth/OPENVPN_PROVIDER" = {};

View file

@ -1,12 +1,14 @@
{config, ...}: {
nixpkgs.config.permittedInsecurePackages = [
"olm-3.2.16"
];
{config, ...}:
{
# TODO: totally borked for some reason. DB migration?
services.mautrix-whatsapp = {
enable = true;
registerToSynapse = true;
settings = {
appservice.database = {
type = "sqlite3";
uri = "/var/lib/mautrix-whatsapp/mautrix-whatsapp.db";
};
homeserver = {
address = "http://localhost:8008";
domain = "tristans.cloud";

24
nixos/services/musnix.nix Normal file
View file

@ -0,0 +1,24 @@
{ inputs, user, pkgs, lib, ... }: {
imports = [inputs.musnix.nixosModules.musnix];
users.users.${user}.extraGroups = ["audio"];
musnix = {
enable = true;
rtcqs.enable = true;
kernel.realtime = true;
};
environment.systemPackages = with pkgs; [
ardour
musescore
muse
helm
calf
qjackctl
sfizz
tap-plugins
x42-plugins
x42-gmsynth
carla
drumgizmo
distrho-ports
];
}

View file

@ -81,17 +81,13 @@ in {
maps
previewgenerator
deck
news
;
oidc_login = pkgs.fetchNextcloudApp {
sha256 = "sha256-DrbaKENMz2QJfbDKCMrNGEZYpUEvtcsiqw9WnveaPZA=";
url = "https://github.com/pulsejet/nextcloud-oidc-login/releases/download/v3.2.0/oidc_login.tar.gz";
license = "agpl3Only";
};
news = pkgs.fetchNextcloudApp {
sha256 = "sha256-jH1F/IZItlZEpsfgXhRojiYD6ZEVhsuRvz8Qs0Z3UFI=";
url = "https://github.com/nextcloud/news/releases/download/25.0.0-alpha9/news.tar.gz";
license = "agpl3Only";
};
};
maxUploadSize = "5G";
};

View file

@ -86,12 +86,6 @@ in {
};
};
services.matrix-sliding-sync = {
enable = true;
environmentFile = templates."synapse/sliding_sync_env".path;
settings.SYNCV3_SERVER = "https://${domain}";
};
services.nginx.virtualHosts = {
${domain} = {
locations."= /.well-known/matrix/server".extraConfig = mkWellKnown {
@ -99,7 +93,6 @@ in {
};
locations."= /.well-known/matrix/client".extraConfig = mkWellKnown {
"m.homeserver".base_url = "https://${fqdn}";
"org.matrix.msc3575.proxy"."url" = "https://${fqdn}";
};
locations."= /.well-known/matrix/support".extraConfig = mkWellKnown {
admins = [
@ -112,14 +105,12 @@ in {
};
locations."/_matrix".proxyPass = "http://localhost:${toString port}";
locations."/_synapse/client".proxyPass = "http://localhost:${toString port}";
locations."/_matrix/client/unstable/org.matrix.msc3575/sync".proxyPass = "http://${toString matrix-sliding-sync.settings.SYNCV3_BINDADDR}";
};
${fqdn} = {
enableACME = true;
forceSSL = true;
locations."/_matrix".proxyPass = "http://localhost:${toString port}";
locations."/_synapse/client".proxyPass = "http://localhost:${toString port}";
locations."/_matrix/client/unstable/org.matrix.msc3575/sync".proxyPass = "http://${toString matrix-sliding-sync.settings.SYNCV3_BINDADDR}";
};
};
}

View file

@ -13,15 +13,10 @@
hardware.opentabletdriver.enable = true;
programs.nm-applet.enable = true;
services.printing.enable = true;
services.dbus = {
enable = true;
packages = [pkgs.gcr];
};
programs.light.enable = true;
programs.dconf.enable = true;
hardware.bluetooth.enable = true;
@ -53,11 +48,12 @@
};
targets = {
gtk.enable = false; # fails to switch with cosmic overriding it (grr)
gnome.enable = false;
grub = {
useImage = true;
};
nixvim = {
transparentBackground.main = true;
enable = false;
};
};
};
@ -69,7 +65,7 @@
];
fonts.packages = with pkgs; [
nerdfonts
nerd-fonts.symbols-only
interalia
];

View file

@ -28,7 +28,7 @@ mail:
ssl: ENC[AES256_GCM,data:swCVBQ==,iv:Us4kZfQ2wIx/qJXDaPDuUNvGU2F+U8EtV21SPbTebe8=,tag:Zuc0y6aTyjQBe4ZV7zy3NA==,type:str]
transmission:
auth:
OPENVPN_PROVIDER: ENC[AES256_GCM,data:uk/rxQ==,iv:WycsUcM9qRW6ExylDK9kCD2PKT9XMijLBJXkYKUmhDI=,tag:AiBA+UVlKfMhpyV3MB9ZBA==,type:str]
OPENVPN_PROVIDER: ENC[AES256_GCM,data:cgYUsQ==,iv:KXddHlOwqbn97SmLkdRIDrqiAAihfXNpG64uD80UnKI=,tag:s6tkiawsfOOXV3ZMltL4MQ==,type:str]
OPENVPN_CONFIG: ENC[AES256_GCM,data:mHMLA2Rqte+aEGstKCan3fNPEqwb,iv:wvLx3rWNcDVek6bmXBu+39AlnXpviNNwCItLAWWVDzY=,tag:1ArWMperFmOFSCdehWibNg==,type:str]
OPENVPN_USERNAME: ENC[AES256_GCM,data:RQ+hGLE6YEgN/aaa2TLpkg==,iv:oG794WxGe0t1ZI0PyC45ZgCPA0Ar2m/dSVDdMYBKJvY=,tag:CGnEu8ds0s4aH4ImCrNWNQ==,type:str]
OPENVPN_PASSWORD: ENC[AES256_GCM,data:Jw==,iv:uGAaXFWfpSaeqY7yC9cR9iqblH3E3hudnrnIlOvdRCg=,tag:P1XJ2SBY82z9YZP9J/n5SA==,type:str]
@ -48,8 +48,8 @@ sops:
S3ZwcHhkdEEvY0pINDloand5S0NycHcKEpIt5EeIKhLQK7f74sWVN/x5gzh/Jq7x
UUN5QtysRbWVGnWRxdNB8LIMjDJY9jRojycdQfSNebaz5ZLjEp8dZQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-01-17T23:54:41Z"
mac: ENC[AES256_GCM,data:kX07sYwKyAu2ElYoBIuaVVryIGIUowxS4ZMxIoX9/aDQY9+yVrmaWzj1kmQNyTqoSBZyetDGQzNV3mMjgCpIQ2XjJdCB5lH4M5DOV63A3pwDwDeHSzzTrURY6xubeswl8o+2k+gxD0/oLLB9j+YZxb9F1oKQt2cK1dzOYPdtUL8=,iv:ftaeEg78WejtZM6J8BiahmsSbQub/5Kz/oLVU3nJhtA=,tag:eobu6KIZwltpC43qXpTVaQ==,type:str]
lastmodified: "2025-01-18T02:00:29Z"
mac: ENC[AES256_GCM,data:x3J0tRfNynM2qlB4YUUAUMYI/94opN1kJ1j0kOyeZ1GZHx+EA4dQZif4nPQOERo+5xRt8C4YXVDZEnCjD1TpQE6LYik0n0iY+84sY5fSr2SYiXzq2P72Tk7BzBklI9/zjndeJLJbydTJDMzOCvdEWIfHYZsHODnKXBO9pYwjAqU=,iv:z+QD93t72S2w0CqMV5sQk9oK9LMnQAxyaiExmqEcSp0=,tag:dbtyHUQ+n2EQvHEkQa7zrw==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.0
version: 3.9.2