Compare commits
87 commits
7d19c95472
...
9a11fd1b38
Author | SHA1 | Date | |
---|---|---|---|
Natsu Kagami | 9a11fd1b38 | ||
Natsu Kagami | 530a746260 | ||
Natsu Kagami | 8bd64fbe79 | ||
Natsu Kagami | 0f2686f9a7 | ||
Natsu Kagami | af7e118298 | ||
Natsu Kagami | 7018b23522 | ||
Natsu Kagami | bd2af0670d | ||
Natsu Kagami | a3d59d71ec | ||
Natsu Kagami | 58b72cbb8c | ||
Natsu Kagami | c488e5e05d | ||
Natsu Kagami | 59c25c883a | ||
Natsu Kagami | 567542d665 | ||
Natsu Kagami | 30ba277d46 | ||
Natsu Kagami | 2657e7f3fc | ||
Natsu Kagami | 527c6ba4e5 | ||
Natsu Kagami | 3b9f2d3dec | ||
Natsu Kagami | 7f1f963d5e | ||
Natsu Kagami | 9c64c4dca9 | ||
Natsu Kagami | c397c143e1 | ||
Natsu Kagami | 27e1fcf99b | ||
Natsu Kagami | edf38dc4e1 | ||
Natsu Kagami | 3affdb3174 | ||
Natsu Kagami | 41106623e8 | ||
Natsu Kagami | 47b96aee71 | ||
Natsu Kagami | 5426a7c526 | ||
Natsu Kagami | c16efcf256 | ||
Natsu Kagami | c59b47c1ce | ||
Natsu Kagami | ea7e32973a | ||
Natsu Kagami | 99b653229e | ||
Natsu Kagami | 5f61631957 | ||
Natsu Kagami | 54264260ed | ||
Natsu Kagami | 15a74c324f | ||
Natsu Kagami | e7be048163 | ||
Natsu Kagami | 3bae764ff5 | ||
Natsu Kagami | f323e92b48 | ||
Natsu Kagami | 506bcfb5e3 | ||
Natsu Kagami | 690f939c71 | ||
Natsu Kagami | 1c87a689e6 | ||
Natsu Kagami | 69200a098f | ||
Natsu Kagami | 89fa620591 | ||
Natsu Kagami | 40bc313429 | ||
Natsu Kagami | f2dfe30ff3 | ||
Natsu Kagami | 0d4bf856c3 | ||
Natsu Kagami | 5acc4d91a0 | ||
Natsu Kagami | 6e88c391f9 | ||
Natsu Kagami | 2326c903c0 | ||
Natsu Kagami | cc7d62745c | ||
Natsu Kagami | 23c2436ab6 | ||
Natsu Kagami | cbb496cb47 | ||
Natsu Kagami | c02946aba3 | ||
Natsu Kagami | d0943fd8b4 | ||
Natsu Kagami | 7a3f3e1b8c | ||
Natsu Kagami | a42ca31aed | ||
Natsu Kagami | f4c8297a55 | ||
Natsu Kagami | c7cdc4ff5e | ||
Natsu Kagami | 97a162786f | ||
Natsu Kagami | a6b28f8c05 | ||
Natsu Kagami | 37a712e117 | ||
Natsu Kagami | b46da01895 | ||
Natsu Kagami | 3be0332f7c | ||
Natsu Kagami | 989c7e64c6 | ||
Natsu Kagami | 0efe7f556a | ||
Natsu Kagami | 1f14b6b02a | ||
Natsu Kagami | aa3524840c | ||
Natsu Kagami | fc9898a5ec | ||
Natsu Kagami | 9f9c76d0d2 | ||
Natsu Kagami | 5d5609e5a9 | ||
Natsu Kagami | 2bbbf47ce2 | ||
Natsu Kagami | 3b78843f34 | ||
Natsu Kagami | 7d8d80c6a3 | ||
Natsu Kagami | 3ebdd014b8 | ||
Natsu Kagami | b1316346b9 | ||
Natsu Kagami | 37d8642ed9 | ||
Natsu Kagami | 74ad74af1f | ||
Natsu Kagami | db64c71a2a | ||
Natsu Kagami | f6044a11ba | ||
Natsu Kagami | 2fe1f71699 | ||
Natsu Kagami | eed4c25127 | ||
Natsu Kagami | 4ab9afd9c3 | ||
Natsu Kagami | 445c3fcc4c | ||
Natsu Kagami | 8eca740ad3 | ||
Natsu Kagami | 666478ad36 | ||
Natsu Kagami | 381520a013 | ||
Natsu Kagami | 07179e77e8 | ||
Natsu Kagami | 5681d080e5 | ||
Natsu Kagami | fff8f3042a | ||
Natsu Kagami | 1cba13a2e8 |
506
flake.lock
506
flake.lock
|
@ -52,21 +52,19 @@
|
|||
"flake-compat": "flake-compat_2",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nix-filter": "nix-filter",
|
||||
"nixpkgs": [
|
||||
"nixpkgs-unstable"
|
||||
]
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1714032154,
|
||||
"narHash": "sha256-BBBLL5bS0GE6xB20nXW8cjhB5VVXX51SkZ8WRJcBuUQ=",
|
||||
"lastModified": 1718214198,
|
||||
"narHash": "sha256-/qKPeE2Ptweaf+rHOvdW0TUDLwN9D93MMgDoU4fTzEA=",
|
||||
"owner": "famedly",
|
||||
"repo": "conduit",
|
||||
"rev": "c6a7563126e33407b7745ff4abd046f0dd042510",
|
||||
"rev": "7a5b8930134cf7ea5ff9880e6fa468b2b3e05c98",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "famedly",
|
||||
"ref": "next",
|
||||
"ref": "v0.8.0",
|
||||
"repo": "conduit",
|
||||
"type": "gitlab"
|
||||
}
|
||||
|
@ -119,7 +117,7 @@
|
|||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
|
@ -177,11 +175,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1707685877,
|
||||
"narHash": "sha256-XoXRS+5whotelr1rHiZle5t5hDg9kpguS5yk8c8qzOc=",
|
||||
"lastModified": 1718730147,
|
||||
"narHash": "sha256-QmD6B6FYpuoCqu6ZuPJH896ItNquDkn0ulQlOn4ykN8=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "2c653e4478476a52c6aa3ac0495e4dea7449ea0e",
|
||||
"rev": "32c21c29b034d0a93fdb2379d6fabc40fc3d0e6c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -214,15 +212,15 @@
|
|||
"deploy-rs": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_4",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs": "nixpkgs_6",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1695052866,
|
||||
"narHash": "sha256-agn7F9Oww4oU6nPiw+YiYI9Xb4vOOE73w8PAoBRP4AA=",
|
||||
"lastModified": 1715699772,
|
||||
"narHash": "sha256-sKhqIgucN5sI/7UQgBwsonzR4fONjfMr9OcHK/vPits=",
|
||||
"owner": "Serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "e3f41832680801d0ee9e2ed33eb63af398b090e9",
|
||||
"rev": "b3ea6f333f9057b77efd9091119ba67089399ced",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -234,14 +232,14 @@
|
|||
"dtth-phanpy": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_4",
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
"nixpkgs": "nixpkgs_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1716076912,
|
||||
"narHash": "sha256-QyHUMRe+VACVzNJF+LTqUoDoKyjWz7NVr+55swFQVL4=",
|
||||
"lastModified": 1719154855,
|
||||
"narHash": "sha256-uLV3PAVG+eZVnfVkRmHABGi7vRW/q8qvDafw3VzmFgk=",
|
||||
"ref": "refs/heads/dtth-fork",
|
||||
"rev": "7fa08d4b6d1cd7f988fcac367a73947e31bdb714",
|
||||
"revCount": 2710,
|
||||
"rev": "97978f4a6556e69b826e15f7d2c3c4079a1c1c47",
|
||||
"revCount": 2662,
|
||||
"type": "git",
|
||||
"url": "ssh://gitea@git.dtth.ch/nki/phanpy?branch=dtth-fork"
|
||||
},
|
||||
|
@ -250,31 +248,6 @@
|
|||
"url": "ssh://gitea@git.dtth.ch/nki/phanpy?branch=dtth-fork"
|
||||
}
|
||||
},
|
||||
"eza": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_5",
|
||||
"naersk": "naersk",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-overlay": "rust-overlay_2",
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694713496,
|
||||
"narHash": "sha256-vgjoDmWtLMP/dpBeydgBNZjSQRuvv0Fm/PcKKAIoIdc=",
|
||||
"owner": "eza-community",
|
||||
"repo": "eza",
|
||||
"rev": "6c61d1443755a458d802c9639ca83bc4ad64971a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "eza-community",
|
||||
"ref": "v0.12.0",
|
||||
"repo": "eza",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -348,11 +321,11 @@
|
|||
"flake-compat_4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1668681692,
|
||||
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -392,22 +365,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_7": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
|
@ -524,30 +481,15 @@
|
|||
}
|
||||
},
|
||||
"flake-utils_10": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_11": {
|
||||
"inputs": {
|
||||
"systems": "systems_8"
|
||||
"systems": "systems_9"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1705309234,
|
||||
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -594,7 +536,25 @@
|
|||
},
|
||||
"flake-utils_4": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_5": {
|
||||
"inputs": {
|
||||
"systems": "systems_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694529238,
|
||||
|
@ -610,27 +570,9 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_5": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1692799911,
|
||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_6": {
|
||||
"inputs": {
|
||||
"systems": "systems_5"
|
||||
"systems": "systems_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1681202837,
|
||||
|
@ -648,14 +590,14 @@
|
|||
},
|
||||
"flake-utils_7": {
|
||||
"inputs": {
|
||||
"systems": "systems_6"
|
||||
"systems": "systems_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694529238,
|
||||
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -666,14 +608,14 @@
|
|||
},
|
||||
"flake-utils_8": {
|
||||
"inputs": {
|
||||
"systems": "systems_7"
|
||||
"systems": "systems_8"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1681202837,
|
||||
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -684,11 +626,11 @@
|
|||
},
|
||||
"flake-utils_9": {
|
||||
"locked": {
|
||||
"lastModified": 1676283394,
|
||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -697,6 +639,21 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flakey-profile": {
|
||||
"locked": {
|
||||
"lastModified": 1712898590,
|
||||
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
|
||||
"owner": "lf-",
|
||||
"repo": "flakey-profile",
|
||||
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lf-",
|
||||
"repo": "flakey-profile",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
|
@ -800,16 +757,36 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710888565,
|
||||
"narHash": "sha256-s9Hi4RHhc6yut4EcYD50sZWRDKsugBJHSbON8KFwoTw=",
|
||||
"lastModified": 1716736833,
|
||||
"narHash": "sha256-rNObca6dm7Qs524O4st8VJH6pZ/Xe1gxl+Rx6mcWYo0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "f33900124c23c4eca5831b9b5eb32ea5894375ce",
|
||||
"rev": "a631666f5ec18271e86a5cde998cba68c33d9ac6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager-unstable": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs-unstable"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719037157,
|
||||
"narHash": "sha256-aOKd8+mhBsLQChCu1mn/W5ww79ta5cXVE59aJFrifM8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "cd886711998fe5d9ff7979fdd4b4cbd17b1f1511",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -817,11 +794,11 @@
|
|||
"kak-lsp": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1716147388,
|
||||
"narHash": "sha256-v23rgAQZkIdCXZTyyvGL9GqMZNbiDHziQIdMNctNvKE=",
|
||||
"lastModified": 1719761259,
|
||||
"narHash": "sha256-2cnjweEU/NgQffF2gav9b6EIXmV9TcSd7214FzW7ekY=",
|
||||
"owner": "kakoune-lsp",
|
||||
"repo": "kakoune-lsp",
|
||||
"rev": "384cc52ed75eaeed95503fa2f92f635968012847",
|
||||
"rev": "484b19c2e373988ee5ab9afc54ecd6383b8da9bc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -833,11 +810,11 @@
|
|||
"kakoune": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1716007386,
|
||||
"narHash": "sha256-1nYSVbvQ4tz1r8p7zCD6w/79haqpelb15qva9r3Fwew=",
|
||||
"lastModified": 1719405481,
|
||||
"narHash": "sha256-IkPZSkEJQixpylRGqLO330oZ50CS0Aq0JqMvU5B+Abo=",
|
||||
"owner": "mawww",
|
||||
"repo": "kakoune",
|
||||
"rev": "1bd50261c8c1c867f76e79f626dc571981f15bfd",
|
||||
"rev": "80fcfebca8c62ace6cf2af9487784486af07d2d5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -851,12 +828,12 @@
|
|||
"crane": "crane_4",
|
||||
"flake-compat": "flake-compat_5",
|
||||
"flake-parts": "flake-parts_4",
|
||||
"flake-utils": "flake-utils_8",
|
||||
"flake-utils": "flake-utils_6",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||
"rust-overlay": "rust-overlay_3"
|
||||
"rust-overlay": "rust-overlay_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1682802423,
|
||||
|
@ -873,42 +850,59 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mpd-mpris": {
|
||||
"lix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1720626042,
|
||||
"narHash": "sha256-f8k+BezKdJfmE+k7zgBJiohtS3VkkriycdXYsKOm3sc=",
|
||||
"rev": "2a4376be20d70feaa2b0e640c5041fb66ddc67ed",
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/2a4376be20d70feaa2b0e640c5041fb66ddc67ed.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/lix-project/lix/archive/2.90.0.tar.gz"
|
||||
}
|
||||
},
|
||||
"lix-module": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_9",
|
||||
"flake-utils": "flake-utils_7",
|
||||
"flakey-profile": "flakey-profile",
|
||||
"lix": "lix",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1693387424,
|
||||
"narHash": "sha256-TU+DLqZP3muRf24CN07Lppe0VWbZ3Xz+olsESMq2IaE=",
|
||||
"owner": "natsukagami",
|
||||
"repo": "mpd-mpris",
|
||||
"rev": "2fce108b7539f299aae563cb5218799ccb918397",
|
||||
"type": "github"
|
||||
"lastModified": 1720641669,
|
||||
"narHash": "sha256-yEO2cGNgzm9x/XxiDQI+WckSWnZX63R8aJLBRSXtYNE=",
|
||||
"rev": "5c48c833c15bb80d127a398a8c2484d42fdd8257",
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/5c48c833c15bb80d127a398a8c2484d42fdd8257.tar.gz"
|
||||
},
|
||||
"original": {
|
||||
"owner": "natsukagami",
|
||||
"repo": "mpd-mpris",
|
||||
"type": "github"
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"mpd-mpris": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_7"
|
||||
"flake-utils": "flake-utils_8",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694081375,
|
||||
"narHash": "sha256-vzJXOUnmkMCm3xw8yfPP5m8kypQ3BhAIRe4RRCWpzy8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "3f976d822b7b37fc6fb8e6f157c2dd05e7e94e89",
|
||||
"lastModified": 1717338947,
|
||||
"narHash": "sha256-5WN1l9ggyA/VlzRhOZZthfF2olBfKY6h0tvvMdhJOCQ=",
|
||||
"owner": "natsukagami",
|
||||
"repo": "mpd-mpris",
|
||||
"rev": "e764577519eaeb791c67605336a303888001c7dd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"owner": "natsukagami",
|
||||
"repo": "mpd-mpris",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
|
@ -930,20 +924,34 @@
|
|||
"nix-gaming": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_5",
|
||||
"nixpkgs": "nixpkgs_10"
|
||||
"nixpkgs": "nixpkgs_8"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709168939,
|
||||
"narHash": "sha256-btWt7NRsA8Hysgin5su77nIdmZZbxsKW5qqyj/bBlF0=",
|
||||
"lastModified": 1716686274,
|
||||
"narHash": "sha256-4JiRUWtoEMrfq38jG4O+NP6rcQIhKxEclnSkHvywnf0=",
|
||||
"owner": "fufexan",
|
||||
"repo": "nix-gaming",
|
||||
"rev": "22586cc4910284c9c7306f19dcd63ac0adbcbcc9",
|
||||
"rev": "83a47c12d3493f7eb876250d0298d1566a965ce4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "fufexan",
|
||||
"repo": "nix-gaming",
|
||||
"rev": "22586cc4910284c9c7306f19dcd63ac0adbcbcc9",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1719007440,
|
||||
"narHash": "sha256-ll9zg1P0W8cMk1Co1BOQOrICr9dDgUw+ZL3mGy5GnOg=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "e6d40db8924c3a663e1f76e0daed09510fea51c3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
|
@ -953,7 +961,7 @@
|
|||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-overlay": "rust-overlay_4"
|
||||
"rust-overlay": "rust-overlay_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1700436815,
|
||||
|
@ -1055,11 +1063,11 @@
|
|||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1716358718,
|
||||
"narHash": "sha256-NQbegJb2ZZnAqp2EJhWwTf6DrZXSpA6xZCEq+RGV1r0=",
|
||||
"lastModified": 1720750130,
|
||||
"narHash": "sha256-y2wc7CdK0vVSIbx7MdVoZzuMcUoLvZXm+pQf2RIr1OU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3f316d2a50699a78afe5e77ca486ad553169061e",
|
||||
"rev": "6794d064edc69918bb0fc0e0eda33ece324be17a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1071,15 +1079,15 @@
|
|||
},
|
||||
"nixpkgs_10": {
|
||||
"locked": {
|
||||
"lastModified": 1708751719,
|
||||
"narHash": "sha256-0uWOKSpXJXmXswOvDM5Vk3blB74apFB6rNGWV5IjoN0=",
|
||||
"owner": "NixOS",
|
||||
"lastModified": 1713128889,
|
||||
"narHash": "sha256-aB90ZqzosyRDpBh+rILIcyP5lao8SKz8Sr2PSWvZrzk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "f63ce824cd2f036216eb5f637dfef31e1a03ee89",
|
||||
"rev": "2748d22b45a99fb2deafa5f11c7531c212b2cefa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
|
@ -1087,27 +1095,11 @@
|
|||
},
|
||||
"nixpkgs_11": {
|
||||
"locked": {
|
||||
"lastModified": 1716218643,
|
||||
"narHash": "sha256-i/E7gzQybvcGAYDRGDl39WL6yVk30Je/NXypBz6/nmM=",
|
||||
"lastModified": 1718530797,
|
||||
"narHash": "sha256-pup6cYwtgvzDpvpSCFh1TEUjw2zkNpk8iolbKnyFmmU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a8695cbd09a7ecf3376bd62c798b9864d20f86ee",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-23.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_12": {
|
||||
"locked": {
|
||||
"lastModified": 1708118438,
|
||||
"narHash": "sha256-kk9/0nuVgA220FcqH/D2xaN6uGyHp/zoxPNUmPCMmEE=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "5863c27340ba4de8f83e7e3c023b9599c3cb3c80",
|
||||
"rev": "b60ebf54c15553b393d144357375ea956f89e9a9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1150,6 +1142,22 @@
|
|||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1718160348,
|
||||
"narHash": "sha256-9YrUjdztqi4Gz8n3mBuqvCkMo4ojrA6nASwyIKWMpus=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "57d6973abba7ea108bac64ae7629e7431e0199b6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1696261572,
|
||||
"narHash": "sha256-s8TtSYJ1LBpuITXjbPLUPyxzAKw35LhETcajJjCS5f0=",
|
||||
|
@ -1165,13 +1173,13 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1671417167,
|
||||
"narHash": "sha256-JkHam6WQOwZN1t2C2sbp1TqMv3TVRjzrdoejqfefwrM=",
|
||||
"lastModified": 1702272962,
|
||||
"narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "bb31220cca6d044baa6dc2715b07497a2a7c4bc7",
|
||||
"rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1181,13 +1189,13 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1711703276,
|
||||
"narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
|
||||
"lastModified": 1719075281,
|
||||
"narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=",
|
||||
"owner": "nixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
|
||||
"rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1197,26 +1205,13 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1688231357,
|
||||
"narHash": "sha256-ZOn16X5jZ6X5ror58gOJAxPfFLAQhZJ6nOUeS4tfFwo=",
|
||||
"path": "/nix/store/aw6kmwd8a02n2c1wysrfk2q31brlmqdz-source",
|
||||
"rev": "645ff62e09d294a30de823cb568e9c6d68e92606",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_8": {
|
||||
"locked": {
|
||||
"lastModified": 1681358109,
|
||||
"narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=",
|
||||
"lastModified": 1708751719,
|
||||
"narHash": "sha256-0uWOKSpXJXmXswOvDM5Vk3blB74apFB6rNGWV5IjoN0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9",
|
||||
"rev": "f63ce824cd2f036216eb5f637dfef31e1a03ee89",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1228,16 +1223,16 @@
|
|||
},
|
||||
"nixpkgs_9": {
|
||||
"locked": {
|
||||
"lastModified": 1691654369,
|
||||
"narHash": "sha256-gSILTEx1jRaJjwZxRlnu3ZwMn1FVNk80qlwiCX8kmpo=",
|
||||
"lastModified": 1720954236,
|
||||
"narHash": "sha256-1mEKHp4m9brvfQ0rjCca8P1WHpymK3TOr3v34ydv9bs=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ce5e4a6ef2e59d89a971bc434ca8ca222b9c7f5e",
|
||||
"rev": "53e81e790209e41f0c1efa9ff26ff2fd7ab35e27",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -1296,16 +1291,18 @@
|
|||
"darwin": "darwin",
|
||||
"deploy-rs": "deploy-rs",
|
||||
"dtth-phanpy": "dtth-phanpy",
|
||||
"eza": "eza",
|
||||
"flake-utils": "flake-utils_7",
|
||||
"flake-utils": "flake-utils_5",
|
||||
"home-manager": "home-manager",
|
||||
"home-manager-unstable": "home-manager-unstable",
|
||||
"kak-lsp": "kak-lsp",
|
||||
"kakoune": "kakoune",
|
||||
"lanzaboote": "lanzaboote",
|
||||
"lix-module": "lix-module",
|
||||
"mpd-mpris": "mpd-mpris",
|
||||
"nix-gaming": "nix-gaming",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixos-m1": "nixos-m1",
|
||||
"nixpkgs": "nixpkgs_11",
|
||||
"nixpkgs": "nixpkgs_9",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nur": "nur",
|
||||
"secrets": "secrets",
|
||||
|
@ -1357,25 +1354,6 @@
|
|||
}
|
||||
},
|
||||
"rust-overlay_2": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_6",
|
||||
"nixpkgs": "nixpkgs_8"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694484610,
|
||||
"narHash": "sha256-aeSDkp7fkAqtVjW3QUn7vq7BKNlFul/BiGgdv7rK+mA=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "c5b977a7e6a295697fa1f9c42174fd6313b38df4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay_3": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
"lanzaboote",
|
||||
|
@ -1400,7 +1378,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay_4": {
|
||||
"rust-overlay_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1686795910,
|
||||
|
@ -1416,9 +1394,27 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"scenefx": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_10"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1715160751,
|
||||
"narHash": "sha256-S8m7phTU7QYgAq4B0hjH5WdtTjHDcNVhYfPFdhbty+A=",
|
||||
"owner": "wlrfx",
|
||||
"repo": "scenefx",
|
||||
"rev": "2ec3505248e819191c37cb831197629f373326fb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "wlrfx",
|
||||
"repo": "scenefx",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"secrets": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_10"
|
||||
"flake-utils": "flake-utils_9"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1693981285,
|
||||
|
@ -1459,17 +1455,17 @@
|
|||
},
|
||||
"swayfx": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_7",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
],
|
||||
"scenefx": "scenefx"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1704454987,
|
||||
"narHash": "sha256-vGc23vf8C1WIdaUgEs3XqvCU1ag5soQKZnytUsCRpEw=",
|
||||
"lastModified": 1715273144,
|
||||
"narHash": "sha256-x8z/sjtJPojvaXiOUDvADiSU/QmSo8cqKQ1X4g+5dw4=",
|
||||
"owner": "WillPower3309",
|
||||
"repo": "swayfx",
|
||||
"rev": "f0ecffe593574593ec99c104fa12e4bfd593b0f2",
|
||||
"rev": "3c621dec7d653231f960d377fcb3ceeed55953e2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1598,31 +1594,31 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_9"
|
||||
},
|
||||
"systems_9": {
|
||||
"locked": {
|
||||
"lastModified": 1693817438,
|
||||
"narHash": "sha256-fg3+n4Ky1gCzDtPm0MomMTFw0YkH05Y8ojy5t7bkfHg=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "b8d3a059f5487d6767d07c3716386753e3132d9f",
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1634,15 +1630,15 @@
|
|||
"youmubot": {
|
||||
"inputs": {
|
||||
"crane": "crane_5",
|
||||
"flake-utils": "flake-utils_11",
|
||||
"nixpkgs": "nixpkgs_12"
|
||||
"flake-utils": "flake-utils_10",
|
||||
"nixpkgs": "nixpkgs_11"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1714147448,
|
||||
"narHash": "sha256-6NymqrvEknkVimWJoW/+ruyUE0gWmqAL00hSFU5qstY=",
|
||||
"lastModified": 1720930588,
|
||||
"narHash": "sha256-Ue3ZRLUU/VoN0SUOCcAwR5LZJac9UgaSA9To//rP7fU=",
|
||||
"owner": "natsukagami",
|
||||
"repo": "youmubot",
|
||||
"rev": "ea1c8d2cac7e59e6a8546bfb513f36aab24dc9e0",
|
||||
"rev": "dc02b4b7e280a8d5f129b5f43636407a2e4b96ea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
143
flake.nix
143
flake.nix
|
@ -2,12 +2,15 @@
|
|||
description = "nki's systems";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
||||
darwin.url = "github:lnl7/nix-darwin/master";
|
||||
darwin.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||
home-manager.url = "github:nix-community/home-manager/release-23.11";
|
||||
home-manager.url = "github:nix-community/home-manager/release-24.05";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
home-manager-unstable.url = "github:nix-community/home-manager";
|
||||
home-manager-unstable.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||
sops-nix.url = "github:Mic92/sops-nix";
|
||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||
sops-nix.inputs.nixpkgs-stable.follows = "nixpkgs";
|
||||
|
@ -24,6 +27,10 @@
|
|||
flake-utils.url = github:numtide/flake-utils;
|
||||
crane.url = github:ipetkov/crane;
|
||||
arion.url = github:hercules-ci/arion;
|
||||
lix-module = {
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# ---
|
||||
# Imported apps
|
||||
|
@ -37,13 +44,8 @@
|
|||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
dtth-phanpy.url = "git+ssh://gitea@git.dtth.ch/nki/phanpy?branch=dtth-fork";
|
||||
conduit = {
|
||||
url = gitlab:famedly/conduit/next;
|
||||
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||
};
|
||||
eza.url = github:eza-community/eza/v0.12.0;
|
||||
eza.inputs.nixpkgs.follows = "nixpkgs";
|
||||
nix-gaming.url = github:fufexan/nix-gaming/22586cc4910284c9c7306f19dcd63ac0adbcbcc9; # until we jump to 24.05
|
||||
conduit.url = "gitlab:famedly/conduit/v0.8.0";
|
||||
nix-gaming.url = github:fufexan/nix-gaming;
|
||||
|
||||
# --- Sources
|
||||
kakoune.url = github:mawww/kakoune;
|
||||
|
@ -70,23 +72,12 @@
|
|||
nixpkgsAsRegistry_ = stable: { lib, ... }: {
|
||||
imports = [ applyOverlays ];
|
||||
nix.registry.current-system.flake = self;
|
||||
nix.registry.nixpkgs.flake = stable;
|
||||
nix.registry.nixpkgs-unstable.flake = nixpkgs-unstable;
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nix.nixPath = [
|
||||
"nixpkgs=${nixpkgs}"
|
||||
nix.nixPath = lib.mkDefault [
|
||||
"nixpkgs-unstable=${nixpkgs-unstable}"
|
||||
"/nix/var/nix/profiles/per-user/root/channels"
|
||||
];
|
||||
# Binary Cache for Haskell.nix
|
||||
nix.settings.trusted-public-keys = [
|
||||
# "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
|
||||
];
|
||||
nix.settings.substituters = [
|
||||
# "https://cache.iog.io"
|
||||
];
|
||||
};
|
||||
nixpkgsAsRegistry = nixpkgsAsRegistry_ nixpkgs;
|
||||
|
||||
osuStable = { pkgs, ... }: {
|
||||
nix.settings = {
|
||||
|
@ -102,6 +93,7 @@
|
|||
(nixpkgsAsRegistry_ stable)
|
||||
./common.nix
|
||||
sops-nix.nixosModules.sops
|
||||
inputs.lix-module.nixosModules.default
|
||||
];
|
||||
};
|
||||
common-nixos = stable: { ... }: {
|
||||
|
@ -114,6 +106,35 @@
|
|||
];
|
||||
};
|
||||
|
||||
mkPersonalSystem = nixpkgs-module: system: { configuration
|
||||
, homeManagerUsers ? { }
|
||||
, extraModules ? [ ]
|
||||
, includeCommonModules ? true
|
||||
,
|
||||
}:
|
||||
let
|
||||
home-manager-module =
|
||||
if nixpkgs-module == inputs.nixpkgs then inputs.home-manager
|
||||
else if nixpkgs-module == inputs.nixpkgs-unstable then inputs.home-manager-unstable
|
||||
else builtins.abort "Unknown nixpkgs module, use `nixpkgs` or `nixpkgs-unstable`";
|
||||
in
|
||||
nixpkgs-module.lib.nixosSystem {
|
||||
inherit system;
|
||||
modules =
|
||||
(if includeCommonModules then [
|
||||
(common-nixos nixpkgs-module)
|
||||
] else [ ]) ++ [
|
||||
configuration
|
||||
# Home Manager
|
||||
home-manager-module.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users = homeManagerUsers;
|
||||
}
|
||||
] ++ extraModules;
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
overlays.default = lib.composeManyExtensions overlays;
|
||||
|
@ -137,29 +158,16 @@
|
|||
};
|
||||
|
||||
# Home configuration
|
||||
nixosConfigurations."kagamiPC" = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
(common-nixos nixpkgs)
|
||||
./nki-home/configuration.nix
|
||||
osuStable
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.nki = { ... }: {
|
||||
imports = [
|
||||
./home/kagami-pc-home.nix
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
nixosConfigurations."kagamiPC" = mkPersonalSystem nixpkgs-unstable "x86_64-linux" {
|
||||
configuration = ./nki-home/configuration.nix;
|
||||
homeManagerUsers.nki = import ./home/kagami-pc-home.nix;
|
||||
extraModules = [ osuStable ];
|
||||
};
|
||||
# yoga g8 configuration
|
||||
nixosConfigurations."nki-yoga-g8" = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
(common-nixos nixpkgs)
|
||||
nixosConfigurations."nki-yoga-g8" = mkPersonalSystem nixpkgs "x86_64-linux" {
|
||||
configuration = ./nki-yoga-g8/configuration.nix;
|
||||
homeManagerUsers.nki = import ./home/nki-x1c1.nix;
|
||||
extraModules = [
|
||||
inputs.lanzaboote.nixosModules.lanzaboote
|
||||
({ ... }: {
|
||||
# Sets up secure boot
|
||||
|
@ -169,21 +177,15 @@
|
|||
pkiBundle = "/etc/secureboot";
|
||||
};
|
||||
})
|
||||
./nki-yoga-g8/configuration.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.nki = import ./home/nki-x1c1.nix;
|
||||
}
|
||||
];
|
||||
};
|
||||
# framework configuration
|
||||
nixosConfigurations."nki-framework" = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
(common-nixos nixpkgs)
|
||||
nixosConfigurations."nki-framework" = mkPersonalSystem nixpkgs-unstable "x86_64-linux" {
|
||||
configuration = ./nki-framework/configuration.nix;
|
||||
homeManagerUsers.nki = import ./home/nki-framework.nix;
|
||||
extraModules = [
|
||||
inputs.lanzaboote.nixosModules.lanzaboote
|
||||
inputs.nixos-hardware.nixosModules.framework-13-7040-amd
|
||||
({ ... }: {
|
||||
# Sets up secure boot
|
||||
boot.loader.systemd-boot.enable = lib.mkForce false;
|
||||
|
@ -192,40 +194,21 @@
|
|||
pkiBundle = "/etc/secureboot";
|
||||
};
|
||||
})
|
||||
./nki-framework/configuration.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.nki = import ./home/nki-framework.nix;
|
||||
}
|
||||
];
|
||||
};
|
||||
# macbook nixos
|
||||
nixosConfigurations."kagami-air-m1" = inputs.nixpkgs.lib.nixosSystem rec {
|
||||
system = "aarch64-linux";
|
||||
modules = [
|
||||
(common-nixos inputs.nixpkgs)
|
||||
inputs.nixos-m1.nixosModules.apple-silicon-support
|
||||
./kagami-air-m1/configuration.nix
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.nki = import ./home/macbook-nixos.nix;
|
||||
}
|
||||
];
|
||||
nixosConfigurations."kagami-air-m1" = mkPersonalSystem nixpkgs "aarch64-linux" {
|
||||
configuration = ./kagami-air-m1/configuration.nix;
|
||||
homeManagerUsers.nki = import ./home/macbook-nixos.nix;
|
||||
extraModules = [ inputs.nixos-m1.nixosModules.apple-silicon-support ];
|
||||
};
|
||||
|
||||
# DigitalOcean node
|
||||
nixosConfigurations."nki-personal-do" = nixpkgs.lib.nixosSystem rec {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
(common-nixos nixpkgs)
|
||||
nixosConfigurations."nki-personal-do" = mkPersonalSystem nixpkgs "x86_64-linux" {
|
||||
configuration = ./nki-personal-do/configuration.nix;
|
||||
extraModules = [
|
||||
inputs.arion.nixosModules.arion
|
||||
./modules/my-tinc
|
||||
inputs.youmubot.nixosModules.default
|
||||
./nki-personal-do/configuration.nix
|
||||
inputs.secrets.nixosModules.nki-personal-do
|
||||
];
|
||||
};
|
||||
|
@ -240,8 +223,8 @@
|
|||
|
||||
# This is highly advised, and will prevent many possible mistakes
|
||||
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
||||
|
||||
} // (inputs.flake-utils.lib.eachDefaultSystem (system: {
|
||||
formatter = nixpkgs.legacyPackages.${system}.nixpkgs-fmt;
|
||||
}));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,36 +1,39 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
with lib; {
|
||||
with lib;
|
||||
let
|
||||
kwallet = { pkgs, lib, ... }: {
|
||||
home.packages = with pkgs; [ kdePackages.kwallet kdePackages.ksshaskpass ];
|
||||
home.sessionVariables = {
|
||||
# https://wiki.archlinux.org/title/KDE_Wallet#Using_the_KDE_Wallet_to_store_ssh_key_passphrases
|
||||
SSH_ASKPASS = lib.getExe pkgs.kdePackages.ksshaskpass;
|
||||
SSH_ASKPASS_REQUIRE = "prefer";
|
||||
};
|
||||
# Enable this for sway
|
||||
wayland.windowManager.sway.config.startup = [
|
||||
{ command = "${pkgs.kdePackages.kwallet-pam}/libexec/pam_kwallet_init"; }
|
||||
];
|
||||
# Automatic dbus activation
|
||||
xdg.dataFile."dbus-1/services/org.freedesktop.secrets.service".text = ''
|
||||
[D-BUS Service]
|
||||
Name=org.freedesktop.secrets
|
||||
Exec=${pkgs.kdePackages.kwallet}/bin/kwalletd6
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./modules/monitors.nix
|
||||
./modules/linux/graphical
|
||||
./modules/X11/xfce4-notifyd.nix
|
||||
./modules/programs/discord.nix
|
||||
kwallet
|
||||
];
|
||||
config = (mkIf pkgs.stdenv.isLinux {
|
||||
home.packages = with pkgs; [
|
||||
psmisc # killall and friends
|
||||
file # Query file type
|
||||
nix-output-monitor
|
||||
|
||||
pinentry-gnome
|
||||
|
||||
# Java stuff
|
||||
jdk21
|
||||
sbt
|
||||
];
|
||||
|
||||
## Gnome-keyring
|
||||
services.gnome-keyring = {
|
||||
enable = true;
|
||||
components = [ "pkcs11" "secrets" "ssh" ];
|
||||
};
|
||||
# services.gpg-agent.enable = true;
|
||||
# services.gpg-agent.pinentryFlavor = "curses";
|
||||
# services.gpg-agent.enableSshSupport = true;
|
||||
|
||||
# Git "safe-directory"
|
||||
programs.git.extraConfig.safe.directory = [
|
||||
"${config.home.homeDirectory}/.config/nixpkgs"
|
||||
pinentry-gnome3 # until pinentry-qt introduces caching
|
||||
];
|
||||
|
||||
systemd.user.startServices = "sd-switch";
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
let
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./kakoune/kak.nix
|
||||
|
@ -28,45 +26,15 @@ in
|
|||
|
||||
# Packages that are not in programs section
|
||||
home.packages = with pkgs; [
|
||||
# Build Tools
|
||||
## C++
|
||||
autoconf
|
||||
automake
|
||||
## SQL
|
||||
flyway
|
||||
## Go
|
||||
go # to be configured later
|
||||
## Rust
|
||||
rust-analyzer
|
||||
## JavaScript
|
||||
yarn
|
||||
## Nix
|
||||
cachix
|
||||
## Latex
|
||||
tectonic
|
||||
texlab
|
||||
## Typst
|
||||
typst
|
||||
## Python
|
||||
python3
|
||||
## Scala
|
||||
scala-cli
|
||||
|
||||
# Fonts
|
||||
fantasque-sans-mono
|
||||
## Get the nerd font symbols
|
||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||
|
||||
# CLI tools
|
||||
fd
|
||||
sd
|
||||
ripgrep
|
||||
fossil
|
||||
openssh
|
||||
tea # gitea CLI (gh-like)
|
||||
fx # JSON viewer
|
||||
glow # Markdown viewer
|
||||
## File Manager
|
||||
nnn
|
||||
nix-output-monitor # Nice nix output formatting
|
||||
## PDF Processors
|
||||
poppler_utils
|
||||
## htop replacement
|
||||
|
@ -78,13 +46,6 @@ in
|
|||
unzip
|
||||
zstd
|
||||
atool
|
||||
|
||||
## To do tunneling with cloudflare
|
||||
pkgs.cloudflared
|
||||
|
||||
# Databases
|
||||
postgresql
|
||||
mariadb
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
|
@ -116,7 +77,7 @@ in
|
|||
|
||||
eza = {
|
||||
enable = true;
|
||||
enableAliases = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
|
||||
fzf = {
|
||||
|
@ -148,6 +109,7 @@ in
|
|||
.envrc
|
||||
.kakrc
|
||||
''}";
|
||||
safe.directory = "*";
|
||||
merge.conflictstyle = "diff3";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,6 +1,34 @@
|
|||
{ config, options, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
bootDesktop = pkgs.writeScript "boot-desktop" ''
|
||||
#!/usr/bin/env fish
|
||||
|
||||
set -a PATH ${pkgs.gum}/bin
|
||||
|
||||
set -x GUM_CHOOSE_HEADER "Select the Desktop to boot into:"
|
||||
set CHOICES
|
||||
|
||||
if which sway &>/dev/null
|
||||
set -a CHOICES "sway"
|
||||
end
|
||||
if which startplasma-wayland &>/dev/null
|
||||
set -a CHOICES "KDE Plasma"
|
||||
end
|
||||
set -a CHOICES "None: continue to shell"
|
||||
|
||||
switch (gum choose $CHOICES)
|
||||
case "sway"
|
||||
systemctl --user unset-environment NIXOS_OZONE_WL
|
||||
exec sway
|
||||
case "KDE Plasma"
|
||||
exec ${pkgs.kdePackages.plasma-workspace}/libexec/plasma-dbus-run-session-if-needed startplasma-wayland
|
||||
case '*'
|
||||
exec fish -i
|
||||
end
|
||||
'';
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./tide
|
||||
|
@ -122,8 +150,8 @@ with lib;
|
|||
|
||||
interactiveShellInit = ''
|
||||
# Sway!
|
||||
if status --is-login; and which sway >/dev/null; and test -z $DISPLAY; and test (tty) = "/dev/tty1"
|
||||
read -P "Press enter to start sway..."; and exec sway
|
||||
if status --is-login; and test -z $DISPLAY; and test (tty) = "/dev/tty1"
|
||||
exec ${bootDesktop}
|
||||
end
|
||||
|
||||
function fish_greeting
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
# Enable X11 configuration
|
||||
linux.graphical.type = "wayland";
|
||||
linux.graphical.wallpaper = ./images/pixiv_18776904.png;
|
||||
linux.graphical.defaults.webBrowser = "librewolf.desktop";
|
||||
programs.my-sway.enable = true;
|
||||
programs.my-sway.fontSize = 15.0;
|
||||
programs.my-sway.enableLaptopBars = false;
|
||||
|
|
79
home/kakoune/catppuccin-latte.kak
Normal file
79
home/kakoune/catppuccin-latte.kak
Normal file
|
@ -0,0 +1,79 @@
|
|||
# Catppuccin theme for Kakoune
|
||||
|
||||
declare-option str rosewater "rgb:dc8a78"
|
||||
declare-option str flamingo "rgb:dd7878"
|
||||
declare-option str pink "rgb:ea76cb"
|
||||
declare-option str mauve "rgb:8839ef"
|
||||
declare-option str red "rgb:d20f39"
|
||||
declare-option str maroon "rgb:e64553"
|
||||
declare-option str peach "rgb:fe640b"
|
||||
declare-option str yellow "rgb:df8e1d"
|
||||
declare-option str green "rgb:40a02b"
|
||||
declare-option str teal "rgb:179299"
|
||||
declare-option str sky "rgb:04a5e5"
|
||||
declare-option str sapphire "rgb:209fb5"
|
||||
declare-option str blue "rgb:1e66f5"
|
||||
declare-option str lavender "rgb:7287fd"
|
||||
declare-option str text "rgb:4c4f69"
|
||||
declare-option str subtext1 "rgb:5c5f77"
|
||||
declare-option str subtext0 "rgb:6c6f85"
|
||||
declare-option str overlay2 "rgb:7c7f93"
|
||||
declare-option str overlay1 "rgb:8c8fa1"
|
||||
declare-option str overlay0 "rgb:9ca0b0"
|
||||
declare-option str surface2 "rgb:acb0be"
|
||||
declare-option str surface1 "rgb:bcc0cc"
|
||||
declare-option str surface0 "rgb:ccd0da"
|
||||
declare-option str base "rgb:eff1f5"
|
||||
declare-option str mantle "rgb:e6e9ef"
|
||||
declare-option str crust "rgb:dce0e8"
|
||||
|
||||
|
||||
set-face global title "%opt{text}+b"
|
||||
set-face global header "%opt{subtext0}+b"
|
||||
set-face global bold "%opt{maroon}+b"
|
||||
set-face global italic "%opt{maroon}+i"
|
||||
set-face global mono "%opt{green}"
|
||||
set-face global block "%opt{sapphire}"
|
||||
set-face global link "%opt{blue}"
|
||||
set-face global bullet "%opt{peach}"
|
||||
set-face global list "%opt{peach}"
|
||||
|
||||
set-face global Default "%opt{text},%opt{base}"
|
||||
set-face global PrimarySelection "%opt{text},%opt{surface2}"
|
||||
set-face global SecondarySelection "%opt{text},%opt{surface2}"
|
||||
set-face global PrimaryCursor "%opt{crust},%opt{rosewater}"
|
||||
set-face global SecondaryCursor "%opt{text},%opt{overlay0}"
|
||||
set-face global PrimaryCursorEol "%opt{surface2},%opt{lavender}"
|
||||
set-face global SecondaryCursorEol "%opt{surface2},%opt{overlay1}"
|
||||
set-face global LineNumbers "%opt{overlay1},%opt{base}"
|
||||
set-face global LineNumberCursor "%opt{rosewater},%opt{surface2}+b"
|
||||
set-face global LineNumbersWrapped "%opt{rosewater},%opt{surface2}+i"
|
||||
set-face global MenuForeground "%opt{text},%opt{surface1}+b"
|
||||
set-face global MenuBackground "%opt{text},%opt{surface0}"
|
||||
set-face global MenuInfo "%opt{crust},%opt{teal}"
|
||||
set-face global Information "%opt{crust},%opt{teal}"
|
||||
set-face global Error "%opt{crust},%opt{red}"
|
||||
set-face global StatusLine "%opt{text},%opt{mantle}"
|
||||
set-face global StatusLineMode "%opt{crust},%opt{yellow}"
|
||||
set-face global StatusLineInfo "%opt{crust},%opt{teal}"
|
||||
set-face global StatusLineValue "%opt{crust},%opt{yellow}"
|
||||
set-face global StatusCursor "%opt{crust},%opt{rosewater}"
|
||||
set-face global Prompt "%opt{teal},%opt{base}+b"
|
||||
set-face global MatchingChar "%opt{maroon},%opt{base}"
|
||||
set-face global Whitespace "%opt{overlay1},%opt{base}+f"
|
||||
set-face global WrapMarker "Whitespace"
|
||||
set-face global BufferPadding "%opt{base},%opt{base}"
|
||||
|
||||
set-face global value "%opt{peach}"
|
||||
set-face global type "%opt{blue}"
|
||||
set-face global variable "%opt{text}"
|
||||
set-face global module "%opt{maroon}"
|
||||
set-face global function "%opt{blue}"
|
||||
set-face global string "%opt{green}"
|
||||
set-face global keyword "%opt{mauve}"
|
||||
set-face global operator "%opt{sky}"
|
||||
set-face global attribute "%opt{green}"
|
||||
set-face global comment "%opt{overlay0}"
|
||||
set-face global documentation "comment"
|
||||
set-face global meta "%opt{yellow}"
|
||||
set-face global builtin "%opt{red}"
|
|
@ -1,23 +1,17 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
kak-lsp = pkgs.libs.crane.buildPackage {
|
||||
src = pkgs.sources.kak-lsp;
|
||||
buildInputs = (with pkgs;
|
||||
lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Security SystemConfiguration CoreServices ])
|
||||
) ++ (with pkgs; [ libiconv ]);
|
||||
};
|
||||
|
||||
kak-lsp-frontend = { pkgs, lib, ... }:
|
||||
let
|
||||
langserver = name: {
|
||||
name = "vscode-${name}-language-server";
|
||||
value = {
|
||||
args = [ "--stdio" ];
|
||||
command = "${pkgs.nodePackages.vscode-langservers-extracted}/bin/vscode-${name}-language-server";
|
||||
command = "vscode-${name}-language-server";
|
||||
filetypes = [ name ];
|
||||
roots = [ "package.json" ".git" ];
|
||||
};
|
||||
package = pkgs.nodePackages.vscode-langservers-extracted;
|
||||
};
|
||||
|
||||
tailwind = {
|
||||
|
@ -30,6 +24,7 @@ let
|
|||
validate = "warning";
|
||||
userLanguages.templ = "html";
|
||||
};
|
||||
package = pkgs.tailwindcss-language-server;
|
||||
};
|
||||
|
||||
templModule = { pkgs, lib, ... }: {
|
||||
|
@ -40,9 +35,9 @@ let
|
|||
args = [ "lsp" ];
|
||||
filetypes = [ "templ" ];
|
||||
roots = [ "go.mod" ".git" ];
|
||||
package = pkgs.unstable.templ;
|
||||
};
|
||||
|
||||
home.packages = [ pkgs.unstable.templ ];
|
||||
};
|
||||
|
||||
in
|
||||
|
@ -52,25 +47,27 @@ let
|
|||
programs.kak-lsp.languageServers = (builtins.listToAttrs (map langserver [ "html" "css" "json" ])) // {
|
||||
tailwindcss-language-server = tailwind;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nodePackages.vscode-langservers-extracted
|
||||
tailwindcss-language-server
|
||||
];
|
||||
};
|
||||
|
||||
ltexLsp = { pkgs, lib, ... }: {
|
||||
programs.kak-lsp.languageServers.ltex-ls = {
|
||||
command = "ltex-ls";
|
||||
args = [ "--log-file=/tmp" ];
|
||||
filetypes = [ "latex" "typst" ];
|
||||
roots = [ "main.tex" "main.typ" ".git" ];
|
||||
package = pkgs.ltex-ls;
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
imports = [ ../modules/programs/my-kakoune ./kaktex.nix kak-lsp-frontend ];
|
||||
imports = [ ../modules/programs/my-kakoune ./kaktex.nix kak-lsp-frontend ltexLsp ];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# ctags for peneira
|
||||
universal-ctags
|
||||
# tree-sitter for kak
|
||||
kak-tree-sitter
|
||||
# LSPs
|
||||
metals
|
||||
];
|
||||
|
||||
# xdg.configFile."kak-tree-sitter/config.toml".source = ./kak-tree-sitter.toml;
|
||||
|
@ -79,7 +76,6 @@ in
|
|||
programs.my-kakoune.enable = true;
|
||||
programs.my-kakoune.enable-fish-session = true;
|
||||
programs.kak-lsp.enable = true;
|
||||
programs.kak-lsp.package = kak-lsp;
|
||||
programs.kak-lsp.semanticTokens.additionalFaces = [
|
||||
# Typst
|
||||
{ face = "header"; token = "heading"; }
|
||||
|
@ -95,11 +91,18 @@ in
|
|||
{ face = "ts_markup_italic"; token = "text"; modifiers = [ "emph" ]; }
|
||||
];
|
||||
|
||||
programs.kak-lsp.languageServers.elixir-ls = {
|
||||
args = [ ];
|
||||
command = "elixir-ls";
|
||||
filetypes = [ "elixir" ];
|
||||
roots = [ "mix.exs" ];
|
||||
};
|
||||
programs.kak-lsp.languageServers.typescript-language-server = {
|
||||
args = [ "--stdio" ];
|
||||
command = "typescript-language-server";
|
||||
filetypes = [ "typescript" ];
|
||||
filetypes = [ "typescript" "javascript" ];
|
||||
roots = [ "package.json" ];
|
||||
package = pkgs.nodePackages.typescript-language-server;
|
||||
};
|
||||
programs.kak-lsp.languageServers.fsautocomplete = {
|
||||
args = [ "--adaptive-lsp-server-enabled" "--project-graph-enabled" "--source-text-factory" "RoslynSourceText" ];
|
||||
|
@ -127,6 +130,7 @@ in
|
|||
statusBarProvider = "log-message";
|
||||
compilerOptions = { overrideDefFormat = "unicode"; };
|
||||
};
|
||||
package = pkgs.metals;
|
||||
};
|
||||
programs.kak-lsp.languageServers.texlab = {
|
||||
command = "texlab";
|
||||
|
@ -147,9 +151,10 @@ in
|
|||
} else
|
||||
{
|
||||
executable = "${pkgs.zathura}/bin/zathura";
|
||||
args = [ "--synctex-forward" "%l:1:%f" "%p" "-x" "/home/nki/.bin/kaktex jump %{input} %{line}" ];
|
||||
args = [ "--synctex-forward" "%l:1:%f" "%p" "-x" "${./kaktex} jump %%{input} %%{line} %%{column}" ];
|
||||
});
|
||||
};
|
||||
package = pkgs.texlab;
|
||||
};
|
||||
programs.kak-lsp.languageServers.typst-lsp = {
|
||||
command = "typst-lsp";
|
||||
|
@ -164,6 +169,14 @@ in
|
|||
command = "marksman";
|
||||
filetypes = [ "markdown" ];
|
||||
roots = [ ".marksman.toml" ".git" ];
|
||||
package = pkgs.marksman;
|
||||
};
|
||||
programs.kak-lsp.languageServers.rust-analyzer = {
|
||||
args = [ ];
|
||||
command = "rust-analyzer";
|
||||
filetypes = [ "rust" ];
|
||||
roots = [ "Cargo.toml" ];
|
||||
package = pkgs.rust-analyzer;
|
||||
};
|
||||
|
||||
programs.my-kakoune.tree-sitter.extraAliases = {
|
||||
|
@ -188,8 +201,7 @@ in
|
|||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-go";
|
||||
rev = "v0.20.0";
|
||||
hash = "sha256-XUSXOTqUySShJ7gebnhObwaFllfIxEYIHN70/wpiJdw=";
|
||||
leaveDotGit = true;
|
||||
hash = "sha256-G7d8CHCyKDAb9j6ijRfHk/HlgPqSI+uvkuRIRRvjkHI=";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
@ -199,11 +211,7 @@ in
|
|||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-scala";
|
||||
rev = "70afdd5632d57dd63a960972ab25945e353a52f6";
|
||||
hash =
|
||||
if pkgs.stdenv.isDarwin
|
||||
then lib.fakeHash
|
||||
else "sha256-Q8KSI8H7+d/sUdSlcNAiOPn2THKk7SFqC3U7rLqSqtE=";
|
||||
leaveDotGit = true;
|
||||
hash = "sha256-bi0Lqo/Zs2Uaz1efuKAARpEDg5Hm59oUe7eSXgL1Wow=";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
@ -217,11 +225,7 @@ in
|
|||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-haskell";
|
||||
rev = "ba0bfb0e5d8e9e31c160d287878c6f26add3ec08";
|
||||
sha256 =
|
||||
if pkgs.stdenv.isDarwin
|
||||
then "sha256-lW3E4gSZV/m2RfofUqeiCu8KDz06YEvXbYKs8smXFi4="
|
||||
else "sha256-H5Z4vPTZCFxDCWguOB8oVSGPJyQonrD8FWAQZTYPG2U=";
|
||||
leaveDotGit = true;
|
||||
hash = "sha256-ZSOF0CLOn82GwU3xgvFefmh/AD2j5zz8I0t5YPwfan0=";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
@ -235,8 +239,7 @@ in
|
|||
owner = "ikatyang";
|
||||
repo = "tree-sitter-yaml";
|
||||
rev = "0e36bed171768908f331ff7dff9d956bae016efb";
|
||||
hash = "sha256-rN/a8dYffDQNuvnhNp/nfu0AzhYrR1ESACQbQWb/n5w=";
|
||||
leaveDotGit = true;
|
||||
hash = "sha256-bpiT3FraOZhJaoiFWAoVJX1O+plnIi8aXOW2LwyU23M=";
|
||||
};
|
||||
grammar.compile.args = [ "-c" "-fpic" "../scanner.cc" "../parser.c" "-I" ".." ];
|
||||
grammar.link.args = [ "-shared" "-fpic" "scanner.o" "parser.o" ];
|
||||
|
@ -246,8 +249,7 @@ in
|
|||
owner = "helix-editor";
|
||||
repo = "helix";
|
||||
rev = "dbd248fdfa680373d94fbc10094a160aafa0f7a7";
|
||||
hash = "sha256-dv/T8ROXmwEdjM71gza1RzF2HoINA7Zl2jmz63kCZyQ=";
|
||||
leaveDotGit = true;
|
||||
hash = "sha256-wk8qVUDFXhAOi1Ibc6iBMzDCXb6t+YiWZcTd0IJybqc=";
|
||||
};
|
||||
queries.path = "runtime/queries/yaml";
|
||||
};
|
||||
|
@ -258,27 +260,17 @@ in
|
|||
owner = "vrischmann";
|
||||
repo = "tree-sitter-templ";
|
||||
rev = "044ad200092170727650fa6d368df66a8da98f9d";
|
||||
hash = "sha256-umhemFnz/nLzkJk75wMoMAHT+Zs9MYOqWPoYQwoFu74=";
|
||||
leaveDotGit = true;
|
||||
hash = "sha256-hJuB3h5pp+LLfP0/7bAYH0uLVo+OQk5jpzJb3J9BNkY=";
|
||||
};
|
||||
in
|
||||
{
|
||||
grammar.src = src;
|
||||
queries.src = pkgs.runCommandLocal "templ-tree-sitter-queries" { } ''
|
||||
mkdir -p queries
|
||||
# copy most stuff from tree-sitter-templ
|
||||
install -m644 ${src}/queries/templ/* queries
|
||||
# override inherited files
|
||||
cat ${tree-sitter-go}/queries/highlights.scm ${src}/queries/templ/highlights.scm > queries/highlights.scm
|
||||
|
||||
mkdir -p $out/queries
|
||||
cp -r queries $out/queries/templ
|
||||
cd $out
|
||||
${lib.getExe pkgs.git} init
|
||||
${lib.getExe pkgs.git} config user.email "a@b.com"
|
||||
${lib.getExe pkgs.git} config user.name "a"
|
||||
${lib.getExe pkgs.git} add .
|
||||
${lib.getExe pkgs.git} commit -m "Just making a git commit"
|
||||
# copy most stuff from tree-sitter-templ
|
||||
install -m644 ${src}/queries/templ/* $out/queries
|
||||
# override inherited files
|
||||
cat ${tree-sitter-go}/queries/highlights.scm ${src}/queries/templ/highlights.scm > $out/queries/highlights.scm
|
||||
'';
|
||||
queries.path = "queries/templ";
|
||||
};
|
||||
|
@ -304,11 +296,11 @@ in
|
|||
'';
|
||||
|
||||
programs.my-kakoune.extraFaces = {
|
||||
Default = "%opt{white},%opt{background}";
|
||||
BufferPadding = "%opt{background},%opt{background}";
|
||||
MenuForeground = "blue,white+bF";
|
||||
MenuBackground = "bright-blue,white+F";
|
||||
Information = "bright-blue,white";
|
||||
Default = "%opt{text},%opt{base}";
|
||||
BufferPadding = "%opt{base},%opt{base}";
|
||||
MenuForeground = "%opt{blue},white+bF";
|
||||
MenuBackground = "%opt{sky},white+F";
|
||||
Information = "%opt{sky},white";
|
||||
# Markdown help color scheme
|
||||
InfoDefault = "Information";
|
||||
InfoBlock = "@block";
|
||||
|
@ -500,10 +492,7 @@ in
|
|||
}
|
||||
];
|
||||
programs.my-kakoune.themes = {
|
||||
catppuccin-latte = builtins.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/catppuccin/kakoune/f6d43770609433c45046632f1bb68d1395305dbb/colors/catppuccin_latte.kak";
|
||||
sha256 = "sha256:0ycvxs8hmsvd0zrpxiby16wzmapvmz6p34b6j343pc1girw6fi4i";
|
||||
};
|
||||
catppuccin-latte = ./catppuccin-latte.kak;
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
# Enable kak-tree-sitter
|
||||
eval %sh{ kak-tree-sitter --kakoune -d --server --with-text-objects }
|
||||
eval %sh{test -z "$WE_STARTED_KAK" && kak-tree-sitter --kakoune -d --server --init $kak_session}
|
||||
map global normal <c-t> ": enter-user-mode tree-sitter<ret>"
|
||||
## Set some color overrides
|
||||
set global kts_yellow "rgb:e2b75e"
|
||||
set global kts_teal "rgb:008080"
|
||||
set global kts_mauve "rgb:c264ff"
|
||||
set global kts_sky "rgb:6aa622"
|
||||
# ## Set some color overrides
|
||||
# set global kts_yellow "rgb:e2b75e"
|
||||
# set global kts_teal "rgb:008080"
|
||||
# set global kts_mauve "rgb:c264ff"
|
||||
# set global kts_sky "rgb:6aa622"
|
||||
# Color scheme
|
||||
colorscheme catppuccin-latte
|
||||
set global background default
|
||||
set global base "default"
|
||||
|
||||
# Set indentation guides
|
||||
add-highlighter global/indent-guides show-whitespaces -tab " " -spc " " -lf " " -nbsp " "
|
||||
|
@ -61,12 +61,8 @@ map global normal D ": delete-current-brackets<ret>"
|
|||
|
||||
# Tab sizes
|
||||
hook global InsertChar \t %{ exec -draft -itersel h@ }
|
||||
set global tabstop 4
|
||||
set global indentwidth 4
|
||||
hook global WinSetOption filetype=(c|cpp|haskell|nix|yaml) %{
|
||||
set global tabstop 2
|
||||
set global indentwidth 2
|
||||
}
|
||||
set global tabstop 2
|
||||
set global indentwidth 2
|
||||
|
||||
# Ctrl + a in insert mode = esc
|
||||
map global insert <c-a> '<esc>'
|
||||
|
@ -91,8 +87,9 @@ hook global InsertCompletionHide .* %{
|
|||
# Enable LSP
|
||||
try %{
|
||||
eval %sh{test -z "$WE_STARTED_KAK" && kak-lsp --kakoune -s $kak_session}
|
||||
set-option global lsp_cmd "kak-lsp -s %val{session}"
|
||||
}
|
||||
hook global WinSetOption filetype=(racket|rust|python|go|javascript|typescript|c|cpp|tex|latex|fsharp|ocaml|haskell|nix|scala|typst|html|css|json|markdown|templ) %{
|
||||
hook global WinSetOption filetype=(racket|rust|python|go|javascript|typescript|c|cpp|tex|latex|fsharp|ocaml|haskell|nix|scala|typst|html|css|json|markdown|templ|elixir) %{
|
||||
lsp-enable-window
|
||||
map window lsp N -docstring "Display the next message request" ": lsp-show-message-request-next<ret>"
|
||||
map window normal <c-l> ": enter-user-mode lsp<ret>"
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
function usage
|
||||
echo "Usage: "
|
||||
echo " kaktex set [client] [session]"
|
||||
echo " kaktex jump [file] [line]"
|
||||
echo " kaktex jump [file] [line] [column]"
|
||||
exit 1
|
||||
end
|
||||
|
||||
if test (count $argv) -ne 3
|
||||
if test (count $argv) -lt 3
|
||||
usage
|
||||
end
|
||||
|
||||
|
@ -19,7 +19,7 @@ switch $argv[1]
|
|||
echo "
|
||||
evaluate-commands -client $_kaktex_client %{
|
||||
evaluate-commands -try-client $_kaktex_client %{
|
||||
edit -- $argv[2] $argv[3]
|
||||
edit -existing -- $argv[2] $(math $argv[3] + 1) $(math $argv[4] + 1)
|
||||
}
|
||||
}
|
||||
" | kak -p $_kaktex_session
|
||||
|
|
|
@ -1,22 +1,12 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
kaktexScript = ./kaktex;
|
||||
in
|
||||
{
|
||||
# Create kak-tex executable
|
||||
home.file.kaktex = {
|
||||
source = kaktexScript;
|
||||
executable = true;
|
||||
target = ".bin/kaktex";
|
||||
};
|
||||
|
||||
# Source kaktex whenever we have a tex file
|
||||
programs.my-kakoune.rc = ''
|
||||
hook global WinSetOption filetype=(tex|latex) %{
|
||||
hook window WinDisplay '.*' %{
|
||||
eval %sh{
|
||||
${kaktexScript} set $kak_client $kak_session
|
||||
${./kaktex} set $kak_client $kak_session
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -97,7 +97,7 @@ in
|
|||
|
||||
home.file.".gnupg/gpg-agent.conf" = {
|
||||
text = ''
|
||||
pinentry-program ${pkgs.pinentry-gnome}/bin/pinentry-gnome3
|
||||
pinentry-program ${pkgs.pinentry-gnome3}/bin/pinentry-gnome3
|
||||
'';
|
||||
onChange = ''
|
||||
echo "Reloading gpg-agent"
|
||||
|
|
|
@ -5,7 +5,17 @@ let
|
|||
|
||||
vscode = with pkgs; if stdenv.isAarch64 then unstable.vscode else unstable.vscode-fhs;
|
||||
|
||||
alwaysStartup = with pkgs; [ ];
|
||||
wifi-indicator = pkgs.writeScriptBin "wifi-indicator" ''
|
||||
#!/usr/bin/env fish
|
||||
|
||||
set wifi_output (${lib.getExe pkgs.iw} wlan0 link | rg "SSID: (.+)" --replace '🛜 $1' | string trim)
|
||||
|
||||
if test -z $wifi_output
|
||||
echo "❌ not connected"
|
||||
else
|
||||
echo $wifi_output
|
||||
end
|
||||
'';
|
||||
in
|
||||
{
|
||||
imports = [ ./x11.nix ./wayland.nix ./alacritty.nix ];
|
||||
|
@ -23,11 +33,16 @@ in
|
|||
startup = mkOption {
|
||||
type = types.listOf types.package;
|
||||
description = "List of packages to include in ~/.config/autostart";
|
||||
default = [ ];
|
||||
default = with pkgs; [
|
||||
librewolf
|
||||
thunderbird
|
||||
vesktop
|
||||
premid
|
||||
];
|
||||
};
|
||||
defaults.webBrowser = mkOption {
|
||||
type = types.str;
|
||||
default = "firefox.desktop";
|
||||
default = "librewolf.desktop";
|
||||
description = "Desktop file of the default web browser";
|
||||
};
|
||||
};
|
||||
|
@ -42,46 +57,49 @@ in
|
|||
feh # For images?
|
||||
deluge # Torrent client
|
||||
pavucontrol # PulseAudio control panel
|
||||
firefox
|
||||
librewolf
|
||||
cinnamon.nemo # File manager
|
||||
thunderbird # Email
|
||||
sublime-music # For navidrome
|
||||
pkgs.unstable.cinny-desktop
|
||||
pkgs.unstable.gajim
|
||||
cinny-desktop
|
||||
gajim
|
||||
vivaldi
|
||||
# Note taking
|
||||
pkgs.unstable.logseq
|
||||
# Audio
|
||||
qpwgraph # Pipewire graph
|
||||
|
||||
# (if stdenv.isAarch64 then zotero else pkgs.unstable.zotero) // kinda fucked for now from CVE
|
||||
zotero_7
|
||||
libreoffice
|
||||
|
||||
mpv # for anki
|
||||
pkgs.unstable.anki-bin
|
||||
anki-bin
|
||||
|
||||
tdesktop
|
||||
whatsapp-for-linux
|
||||
obs-studio
|
||||
|
||||
librewolf
|
||||
|
||||
## CLI stuff
|
||||
dex # .desktop file management, startup
|
||||
# sct # Display color temperature
|
||||
xdg-utils # Open stuff
|
||||
wifi-indicator
|
||||
] ++ (if pkgs.stdenv.isAarch64 then [ ] else [
|
||||
gnome.cheese # Webcam check, expensive
|
||||
# Chat stuff
|
||||
unstable.slack
|
||||
slack
|
||||
]));
|
||||
|
||||
nki.programs.discord.enable = pkgs.stdenv.isx86_64;
|
||||
nki.programs.discord.package = (pkgs.callPackage pkgs.unstable.vesktop.override { stdenv = pkgs.gcc13Stdenv; }).overrideAttrs (attrs: {
|
||||
nativeBuildInputs = attrs.nativeBuildInputs ++ [ pkgs.nss_latest pkgs.makeWrapper ];
|
||||
postInstall = ''
|
||||
makeWrapper $out/bin/vesktop $out/bin/discord
|
||||
'';
|
||||
});
|
||||
nki.programs.discord.package = pkgs.vesktop;
|
||||
|
||||
# OBS
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
wlrobs
|
||||
input-overlay
|
||||
obs-pipewire-audio-capture
|
||||
];
|
||||
};
|
||||
|
||||
# Yellow light!
|
||||
services.wlsunset = {
|
||||
|
@ -149,10 +167,10 @@ in
|
|||
|
||||
# Text
|
||||
"text/plain" = [ "kakoune.desktop" ];
|
||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||
"application/pdf" = [ "okularApplication_pdf.desktop" ];
|
||||
|
||||
# Files
|
||||
"inode/directory" = [ "nemo.desktop" ];
|
||||
"inode/directory" = [ "dolphin.desktop" ];
|
||||
};
|
||||
|
||||
# Add one for kakoune
|
||||
|
@ -171,21 +189,36 @@ in
|
|||
## GTK
|
||||
gtk.enable = true;
|
||||
gtk.cursorTheme = { inherit (config.home.pointerCursor) package name size; };
|
||||
gtk.font.name = "system-ui";
|
||||
gtk.font.name = "IBM Plex Sans JP";
|
||||
gtk.font.size = 10;
|
||||
gtk.iconTheme = {
|
||||
package = pkgs.numix-icon-theme;
|
||||
name = "Numix";
|
||||
package = pkgs.kdePackages.breeze-icons;
|
||||
name = "breeze";
|
||||
};
|
||||
gtk.theme = {
|
||||
package = pkgs.numix-gtk-theme;
|
||||
name = "Numix";
|
||||
package = pkgs.kdePackages.breeze-gtk;
|
||||
name = "Breeze";
|
||||
};
|
||||
gtk.gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||
gtk.gtk2.extraConfig = ''
|
||||
gtk-enable-animations=1
|
||||
gtk-im-module="fcitx"
|
||||
gtk-theme-name="Numix"
|
||||
gtk-primary-button-warps-slider=1
|
||||
gtk-toolbar-style=3
|
||||
gtk-menu-images=1
|
||||
gtk-button-images=1
|
||||
gtk-sound-theme-name="ocean"
|
||||
gtk-icon-theme-name="breeze"
|
||||
'';
|
||||
gtk.gtk3.extraConfig.gtk-im-module = "fcitx";
|
||||
gtk.gtk4.extraConfig.gtk-im-module = "fcitx";
|
||||
## Qt
|
||||
qt.enable = true;
|
||||
qt.platformTheme = "gnome";
|
||||
qt.style.package = pkgs.adwaita-qt;
|
||||
qt.style.name = "adwaita";
|
||||
qt.platformTheme.name = "kde";
|
||||
qt.platformTheme.package = with pkgs.kdePackages; [ plasma-integration systemsettings ];
|
||||
qt.style.package = [ pkgs.kdePackages.breeze ];
|
||||
qt.style.name = "Breeze";
|
||||
|
||||
|
||||
xdg.configFile =
|
||||
|
@ -196,16 +229,14 @@ in
|
|||
source =
|
||||
let
|
||||
srcFile = pkgs.runCommand "${pkg.name}-startup" { } ''
|
||||
mkdir - p $out
|
||||
cp $
|
||||
(ls - d ${
|
||||
pkg}/share/applications/*.desktop | head -n 1) $out/${pkg.name}.desktop
|
||||
mkdir -p $out
|
||||
cp $(ls -d ${pkg}/share/applications/*.desktop | head -n 1) $out/${pkg.name}.desktop
|
||||
'';
|
||||
in
|
||||
"${srcFile}/${pkg.name}.desktop";
|
||||
};
|
||||
};
|
||||
autoStartup = listToAttrs (map f (cfg.startup ++ alwaysStartup));
|
||||
autoStartup = listToAttrs (map f cfg.startup);
|
||||
in
|
||||
autoStartup // {
|
||||
## Polkit UI
|
||||
|
|
|
@ -5,25 +5,13 @@ let
|
|||
swaync = pkgs.swaynotificationcenter;
|
||||
in
|
||||
with lib; mkIf (config.linux.graphical.type == "wayland") {
|
||||
home.packages = [ swaync ];
|
||||
wayland.windowManager.sway.config = {
|
||||
startup = [
|
||||
{ command = "swaync"; }
|
||||
];
|
||||
};
|
||||
xdg.configFile = {
|
||||
"swaync/config.json" = {
|
||||
text = builtins.toJSON {
|
||||
widgets = [ "inhibitors" "title" "dnd" "mpris" "notifications" ];
|
||||
scripts = { };
|
||||
};
|
||||
onChange = "swaync-client -R";
|
||||
};
|
||||
"swaync/style.css" = {
|
||||
source = ./swaync.css;
|
||||
onChange = "swaync-client -rs";
|
||||
};
|
||||
services.swaync = {
|
||||
enable = true;
|
||||
settings.widgets = [ "inhibitors" "title" "dnd" "mpris" "notifications" ];
|
||||
style = ./swaync.css;
|
||||
};
|
||||
systemd.user.services.swaync.Install.WantedBy = lib.mkForce [ "sway-session.target" ];
|
||||
systemd.user.services.swaync.Unit.PartOf = lib.mkForce [ "sway-session.target" ];
|
||||
|
||||
programs.my-sway.waybar = {
|
||||
extraSettings = {
|
||||
|
@ -57,10 +45,26 @@ let
|
|||
'';
|
||||
};
|
||||
};
|
||||
|
||||
plasmaModule = { pkgs, ... }: {
|
||||
home.packages = with pkgs.kdePackages; [
|
||||
discover
|
||||
kmail
|
||||
kontact
|
||||
akonadi
|
||||
kdepim-runtime
|
||||
kmail-account-wizard
|
||||
akonadi-import-wizard
|
||||
];
|
||||
xdg.configFile."plasma-workspace/env/wayland.sh".source = pkgs.writeScript "plasma-wayland-env.sh" ''
|
||||
export NIXOS_OZONE_WL=1
|
||||
'';
|
||||
xdg.dataFile."dbus-1/services/org.freedesktop.Notifications.service".source = "${pkgs.kdePackages.plasma-workspace}/share/dbus-1/services/org.kde.plasma.Notifications.service";
|
||||
};
|
||||
in
|
||||
with lib;
|
||||
{
|
||||
imports = [ notificationModule ];
|
||||
imports = [ notificationModule plasmaModule ];
|
||||
config = mkIf (config.linux.graphical.type == "wayland") {
|
||||
# Additional packages
|
||||
home.packages = with pkgs; [
|
||||
|
@ -75,6 +79,10 @@ with lib;
|
|||
'')
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
ANKI_WAYLAND = "1";
|
||||
};
|
||||
|
||||
# Notification system
|
||||
# services.dunst = {
|
||||
# enable = true;
|
||||
|
|
|
@ -35,24 +35,6 @@ let
|
|||
roots = [ "Setup.hs" "stack.yaml" "*.cabal" "package.yaml" ];
|
||||
settings_section = "haskell";
|
||||
};
|
||||
texlab = {
|
||||
command = "texlab";
|
||||
filetypes = [ "latex" ];
|
||||
roots = [ ".git" "main.tex" "all.tex" ];
|
||||
settings_section = "texlab";
|
||||
settings.texlab = {
|
||||
build.executable = "latexmk";
|
||||
build.args = [ "-pdf" "-shell-escape" "-interaction=nonstopmode" "-synctex=1" "%f" ];
|
||||
|
||||
build.forwardSearchAfter = true;
|
||||
build.onSave = true;
|
||||
|
||||
forwardSearch = {
|
||||
executable = "/Applications/Skim.app/Contents/SharedSupport/displayline";
|
||||
args = [ "-r" "-g" "%l" "%p" "%f" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
nil = {
|
||||
command = "${pkgs.nil}/bin/nil";
|
||||
filetypes = [ "nix" ];
|
||||
|
@ -67,12 +49,6 @@ let
|
|||
offset_encoding = "utf-8";
|
||||
roots = [ "requirements.txt" "setup.py" ".git" ".hg" ];
|
||||
};
|
||||
rust-analyzer = {
|
||||
args = [ ];
|
||||
command = "rust-analyzer";
|
||||
filetypes = [ "rust" ];
|
||||
roots = [ "Cargo.toml" ];
|
||||
};
|
||||
};
|
||||
semantic_tokens.faces = [
|
||||
## Items
|
||||
|
@ -143,10 +119,28 @@ let
|
|||
default = null;
|
||||
description = "Additional settings to be passed to the LSP server.";
|
||||
};
|
||||
package = mkOption {
|
||||
type = types.nullOr types.package;
|
||||
default = null;
|
||||
description = "The default package of the language server. Will be appended as the ending segments of the PATH to kak-lsp";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cfg = config.programs.kak-lsp;
|
||||
|
||||
serverPackages =
|
||||
filter (v: v != null)
|
||||
(lib.mapAttrsToList (_: serv: serv.package) cfg.languageServers);
|
||||
|
||||
wrappedPackage = pkgs.symlinkJoin {
|
||||
name = "kak-lsp-wrapped";
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
paths = [ cfg.package ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/kak-lsp --suffix PATH ":" ${lib.makeBinPath serverPackages}
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
options.programs.kak-lsp = {
|
||||
|
@ -193,29 +187,27 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = [ cfg.package ];
|
||||
config = mkIf cfg.enable
|
||||
{
|
||||
home.packages = [ wrappedPackage ];
|
||||
|
||||
# Configurations
|
||||
xdg.configFile."kak-lsp/kak-lsp.toml" = {
|
||||
source = pkgs.runCommand "config.toml"
|
||||
xdg.configFile."kak-lsp/kak-lsp.toml" =
|
||||
let
|
||||
toml = pkgs.formats.toml { };
|
||||
toLspConfig = lib.filterAttrsRecursive (n: v: n != "package" && v != null);
|
||||
in
|
||||
{
|
||||
source = toml.generate "config.toml"
|
||||
{
|
||||
buildInputs = [ pkgs.yj ];
|
||||
preferLocalBuild = true;
|
||||
} ''
|
||||
yj -jt -i \
|
||||
< ${
|
||||
pkgs.writeText "config.json" (builtins.toJSON {
|
||||
semantic_tokens.faces = cfg.semanticTokens.faces ++ cfg.semanticTokens.additionalFaces;
|
||||
server.timeout = cfg.serverTimeout;
|
||||
snippet_support = cfg.enableSnippets;
|
||||
verbosity = 255;
|
||||
language_server = lspConfig.language_servers // cfg.languageServers;
|
||||
language_server = toLspConfig (lspConfig.language_servers // cfg.languageServers);
|
||||
language_ids = lspConfig.language_ids // cfg.languageIds;
|
||||
})
|
||||
} \
|
||||
> $out
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -43,83 +43,96 @@ in
|
|||
};
|
||||
package = mkPackageOption pkgs "kak-tree-sitter" { };
|
||||
|
||||
features = {
|
||||
highlighting = mkOption {
|
||||
type = types.bool;
|
||||
description = "Enable highlighting";
|
||||
default = true;
|
||||
};
|
||||
text_objects = mkOption {
|
||||
type = types.bool;
|
||||
description = "Enable text objects";
|
||||
default = true;
|
||||
};
|
||||
};
|
||||
|
||||
highlighterGroups = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = {
|
||||
attribute = "@attribute";
|
||||
comment = "@comment";
|
||||
conceal = "%opt{kts_mauve}+i";
|
||||
constant = "%opt{kts_peach}";
|
||||
constant_builtin_boolean = "%opt{kts_sky}";
|
||||
constant_character = "%opt{kts_yellow}";
|
||||
constant_macro = "%opt{kts_mauve}";
|
||||
constant_numeric = "%opt{kts_peach}";
|
||||
constructor = "%opt{kts_sapphire}";
|
||||
diff_plus = "%opt{kts_green}";
|
||||
diff_minus = "%opt{kts_red}";
|
||||
diff_delta = "%opt{kts_blue}";
|
||||
diff_delta_moved = "%opt{kts_mauve}";
|
||||
error = "%opt{kts_red}+b";
|
||||
conceal = "%opt{mauve}+i";
|
||||
constant = "%opt{peach}";
|
||||
constant_builtin_boolean = "%opt{sky}";
|
||||
constant_character = "%opt{yellow}";
|
||||
constant_macro = "%opt{mauve}";
|
||||
constant_numeric = "%opt{peach}";
|
||||
constructor = "%opt{sapphire}";
|
||||
diff_plus = "%opt{green}";
|
||||
diff_minus = "%opt{red}";
|
||||
diff_delta = "%opt{blue}";
|
||||
diff_delta_moved = "%opt{mauve}";
|
||||
error = "%opt{red}+b";
|
||||
function = "@function";
|
||||
function_builtin = "@builtin";
|
||||
function_macro = "+i@ts_function";
|
||||
hint = "%opt{kts_blue}+b";
|
||||
info = "%opt{kts_green}+b";
|
||||
hint = "%opt{blue}+b";
|
||||
info = "%opt{green}+b";
|
||||
keyword = "keyword";
|
||||
keyword_conditional = "+i@ts_keyword";
|
||||
keyword_control_conditional = "+i@ts_keyword";
|
||||
keyword_control_directive = "+i@ts_keyword";
|
||||
keyword_control_import = "+i@ts_keyword";
|
||||
keyword_directive = "+i@ts_keyword";
|
||||
label = "%opt{kts_sapphire}+i";
|
||||
markup_bold = "%opt{kts_peach}+b";
|
||||
markup_heading = "%opt{kts_red}";
|
||||
markup_heading_1 = "%opt{kts_red}";
|
||||
markup_heading_2 = "%opt{kts_mauve}";
|
||||
markup_heading_3 = "%opt{kts_green}";
|
||||
markup_heading_4 = "%opt{kts_yellow}";
|
||||
markup_heading_5 = "%opt{kts_pink}";
|
||||
markup_heading_6 = "%opt{kts_teal}";
|
||||
markup_heading_marker = "%opt{kts_peach}+b";
|
||||
markup_italic = "%opt{kts_pink}+i";
|
||||
markup_list_checked = "%opt{kts_green}";
|
||||
markup_list_numbered = "%opt{kts_blue}+i";
|
||||
markup_list_unchecked = "%opt{kts_teal}";
|
||||
markup_list_unnumbered = "%opt{kts_mauve}";
|
||||
markup_link_label = "%opt{kts_blue}";
|
||||
markup_link_url = "%opt{kts_teal}+u";
|
||||
markup_link_uri = "%opt{kts_teal}+u";
|
||||
markup_link_text = "%opt{kts_blue}";
|
||||
markup_quote = "%opt{kts_gray1}";
|
||||
markup_raw = "%opt{kts_sky}";
|
||||
markup_raw_block = "%opt{kts_sky}";
|
||||
markup_raw_inline = "%opt{kts_green}";
|
||||
markup_strikethrough = "%opt{kts_gray1}+s";
|
||||
label = "%opt{sapphire}+i";
|
||||
markup_bold = "%opt{peach}+b";
|
||||
markup_heading = "%opt{red}";
|
||||
markup_heading_1 = "%opt{red}";
|
||||
markup_heading_2 = "%opt{mauve}";
|
||||
markup_heading_3 = "%opt{green}";
|
||||
markup_heading_4 = "%opt{yellow}";
|
||||
markup_heading_5 = "%opt{pink}";
|
||||
markup_heading_6 = "%opt{teal}";
|
||||
markup_heading_marker = "%opt{peach}+b";
|
||||
markup_italic = "%opt{pink}+i";
|
||||
markup_list_checked = "%opt{green}";
|
||||
markup_list_numbered = "%opt{blue}+i";
|
||||
markup_list_unchecked = "%opt{teal}";
|
||||
markup_list_unnumbered = "%opt{mauve}";
|
||||
markup_link_label = "%opt{blue}";
|
||||
markup_link_url = "%opt{teal}+u";
|
||||
markup_link_uri = "%opt{teal}+u";
|
||||
markup_link_text = "%opt{blue}";
|
||||
markup_quote = "%opt{crust}";
|
||||
markup_raw = "%opt{sky}";
|
||||
markup_raw_block = "%opt{sky}";
|
||||
markup_raw_inline = "%opt{green}";
|
||||
markup_strikethrough = "%opt{crust}+s";
|
||||
namespace = "@module";
|
||||
operator = "@operator";
|
||||
property = "%opt{kts_sky}";
|
||||
punctuation = "%opt{kts_overlay2}";
|
||||
punctuation_special = "%opt{kts_sky}";
|
||||
special = "%opt{kts_blue}";
|
||||
spell = "%opt{kts_mauve}";
|
||||
string = "%opt{kts_green}";
|
||||
string_regex = "%opt{kts_peach}";
|
||||
string_regexp = "%opt{kts_peach}";
|
||||
string_escape = "%opt{kts_mauve}";
|
||||
string_special = "%opt{kts_blue}";
|
||||
string_special_path = "%opt{kts_green}";
|
||||
string_special_symbol = "%opt{kts_mauve}";
|
||||
string_symbol = "%opt{kts_red}";
|
||||
tag = "%opt{kts_teal}";
|
||||
tag_error = "%opt{kts_red}";
|
||||
text_title = "%opt{kts_mauve}";
|
||||
type = "%opt{kts_yellow}";
|
||||
type_enum_variant = "%opt{kts_flamingo}";
|
||||
property = "%opt{sky}";
|
||||
punctuation = "%opt{overlay2}";
|
||||
punctuation_special = "%opt{sky}";
|
||||
special = "%opt{blue}";
|
||||
spell = "%opt{mauve}";
|
||||
string = "%opt{green}";
|
||||
string_regex = "%opt{peach}";
|
||||
string_regexp = "%opt{peach}";
|
||||
string_escape = "%opt{mauve}";
|
||||
string_special = "%opt{blue}";
|
||||
string_special_path = "%opt{green}";
|
||||
string_special_symbol = "%opt{mauve}";
|
||||
string_symbol = "%opt{red}";
|
||||
tag = "%opt{teal}";
|
||||
tag_error = "%opt{red}";
|
||||
text_title = "%opt{mauve}";
|
||||
type = "@type";
|
||||
type_enum_variant = "+i@ts_type";
|
||||
variable = "@variable";
|
||||
variable_builtin = "@builtin";
|
||||
variable_other_member = "%opt{kts_teal}";
|
||||
variable_parameter = "%opt{kts_maroon}+i";
|
||||
warning = "%opt{kts_peach}+b";
|
||||
variable_other_member = "%opt{teal}";
|
||||
variable_parameter = "+i@variable";
|
||||
warning = "%opt{peach}+b";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -174,8 +187,6 @@ in
|
|||
|
||||
config =
|
||||
let
|
||||
aliasedOnce = name: values: if asserts.assertMsg (builtins.length values 1) "face ${name} was aliased more than once: ${toString values}" then (builtins.head values) else [ ];
|
||||
|
||||
allGroups = attrsets.recursiveUpdate cfg.highlighterGroups cfg.extraHighlighterGroups;
|
||||
|
||||
aliases = attrsets.recursiveUpdate cfg.aliases cfg.extraAliases;
|
||||
|
@ -189,10 +200,24 @@ in
|
|||
|
||||
toml = pkgs.formats.toml { };
|
||||
|
||||
srcName = src: lib.removePrefix "/nix/store/" src.outPath;
|
||||
mkGitRepo = src: pkgs.runCommandLocal "${src.name}-git" { } ''
|
||||
cp -r --no-preserve=all ${src} $out
|
||||
cd $out
|
||||
if ! test -d $out/.git; then
|
||||
${lib.getExe pkgs.git} init -b ${srcName src}
|
||||
${lib.getExe pkgs.git} config user.email "a@b.com"
|
||||
${lib.getExe pkgs.git} config user.name "a"
|
||||
${lib.getExe pkgs.git} add .
|
||||
${lib.getExe pkgs.git} commit -m "Just making a git commit"
|
||||
fi
|
||||
'';
|
||||
|
||||
toLanguageConf = name: lang: with lang; {
|
||||
grammar = {
|
||||
inherit (grammar) path;
|
||||
url = "${grammar.src}";
|
||||
source.git.url = "${mkGitRepo grammar.src}";
|
||||
source.git.pin = "${srcName grammar.src}";
|
||||
compile = grammar.compile.command;
|
||||
compile_args = grammar.compile.args;
|
||||
compile_flags = grammar.compile.flags;
|
||||
|
@ -201,7 +226,8 @@ in
|
|||
link_flags = grammar.link.flags;
|
||||
};
|
||||
queries = {
|
||||
url = "${queries.src}";
|
||||
source.git.url = "${mkGitRepo queries.src}";
|
||||
source.git.pin = "${srcName queries.src}";
|
||||
path = if queries.path == null then "runtime/queries/${name}" else queries.path;
|
||||
};
|
||||
};
|
||||
|
@ -220,18 +246,13 @@ in
|
|||
xdg.configFile."kak-tree-sitter/config.toml" = {
|
||||
source = toml.generate "config.toml" {
|
||||
highlight.groups = builtins.map toScm (builtins.attrNames allGroups ++ builtins.attrNames aliases);
|
||||
|
||||
features = cfg.features;
|
||||
language = builtins.mapAttrs toLanguageConf cfg.languages;
|
||||
};
|
||||
|
||||
onChange =
|
||||
let
|
||||
buildCmd = lang: "${cfg.package}/bin/ktsctl -fci ${lang}";
|
||||
buildAll = strings.concatMapStringsSep "\n" buildCmd (builtins.attrNames cfg.languages);
|
||||
in
|
||||
''
|
||||
# Rebuild languages
|
||||
${buildAll}
|
||||
onChange = ''
|
||||
export PATH=$PATH:${lib.getBin pkgs.gcc}
|
||||
${cfg.package}/bin/ktsctl sync -a
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
|
@ -93,6 +93,18 @@ with lib;
|
|||
## Hints
|
||||
"${cfg.cmd}+shift+p>n" = "kitten hints --type=linenum --linenum-action=tab kak {path} +{line}";
|
||||
};
|
||||
|
||||
extraConfig =
|
||||
let
|
||||
# Nerd Fonts glyph map
|
||||
glyphMap = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/Sharparam/dotfiles/main/kitty/.config/kitty/font-nerd-symbols.conf";
|
||||
hash = "sha256-1OaDWLC3y8ASD2ttRWWgPEpRnfKXu6H6vS3cFVpzT0o=";
|
||||
};
|
||||
in
|
||||
''
|
||||
include ${glyphMap}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, lib, options, config, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.programs.my-sway;
|
||||
|
@ -45,6 +45,12 @@ let
|
|||
${pkgs.grim}/bin/grim -g (${pkgs.slurp}/bin/slurp) - | ${pkgs.swappy}/bin/swappy -f -
|
||||
'';
|
||||
|
||||
rofi-rbw-script = pkgs.writeShellApplication {
|
||||
name = "rofi-rbw-script";
|
||||
runtimeInputs = with pkgs; [ rofi wtype rofi-rbw ];
|
||||
text = "rofi-rbw";
|
||||
};
|
||||
|
||||
ignored-devices = [ "Surface_Headphones" ];
|
||||
playerctl = "${pkgs.playerctl}/bin/playerctl --ignore-player=${strings.concatStringsSep "," ignored-devices}";
|
||||
|
||||
|
@ -78,11 +84,6 @@ in
|
|||
description = "The command for the browser";
|
||||
default = "${pkgs.firefox-wayland}/bin/firefox";
|
||||
};
|
||||
discord = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = "The command for discord";
|
||||
default = "${config.nki.programs.discord.package}/bin/discord";
|
||||
};
|
||||
|
||||
lockCmd = mkOption {
|
||||
type = types.str;
|
||||
|
@ -124,7 +125,16 @@ in
|
|||
config.wayland.windowManager.sway = mkIf cfg.enable {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
systemd.variables = options.wayland.windowManager.sway.systemd.variables.default ++ [
|
||||
"PATH" # for portals
|
||||
"XDG_DATA_DIRS" # For extra icons
|
||||
"XDG_DATA_HOME" # For extra icons
|
||||
];
|
||||
systemd.extraCommands = options.wayland.windowManager.sway.systemd.extraCommands.default ++ [
|
||||
"systemctl --user restart xdg-desktop-portal.service"
|
||||
];
|
||||
|
||||
checkConfig = false; # Not working atm
|
||||
config = {
|
||||
### Inputs
|
||||
#
|
||||
|
@ -155,16 +165,9 @@ in
|
|||
{ command = "${pkgs.dex}/bin/dex -ae sway"; }
|
||||
# Waybar
|
||||
{ command = "systemctl --user restart waybar"; always = true; }
|
||||
# Startup programs
|
||||
{ command = "${cfg.browser}"; }
|
||||
{ command = "thunderbird"; }
|
||||
] ++ (if cfg.discord != null then [
|
||||
{ command = "${cfg.discord}"; }
|
||||
] ++ lib.lists.optional
|
||||
(!pkgs.stdenv.isAarch64)
|
||||
(
|
||||
{ command = "${pkgs.unstable.premid}/bin/premid"; }
|
||||
) else [ ]);
|
||||
# IME
|
||||
{ command = "fcitx5"; }
|
||||
];
|
||||
|
||||
### Keybindings
|
||||
#
|
||||
|
@ -217,6 +220,7 @@ in
|
|||
# Launcher
|
||||
"${mod}+space" = "exec rofi -show drun";
|
||||
"${mod}+tab" = "exec ${./rofi-window.py}";
|
||||
"${mod}+shift+p" = "exec ${lib.getExe rofi-rbw-script}";
|
||||
} // {
|
||||
## Splits
|
||||
"${mod}+v" = "split v";
|
||||
|
@ -312,6 +316,7 @@ in
|
|||
let
|
||||
criterias = [
|
||||
{ app_id = ".*float.*"; }
|
||||
{ app_id = "org\\.freedesktop\\.impl\\.portal\\.desktop\\..*"; }
|
||||
{ class = ".*float.*"; }
|
||||
{ title = "Extension: .*Bitwarden.*"; }
|
||||
];
|
||||
|
@ -341,16 +346,18 @@ in
|
|||
swaynag.enable = true;
|
||||
# Environment Variables
|
||||
extraSessionCommands = ''
|
||||
export MOZ_ENABLE_WAYLAND=1
|
||||
export SDL_VIDEODRIVER=wayland
|
||||
export QT_QPA_PLATFORM=wayland
|
||||
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
||||
# export NIXOS_OZONE_WL=1 # Yeah this fucks up IMEs
|
||||
export QT_IM_MODULE=fcitx
|
||||
export GTK_IM_MODULE=fcitx # Til text-input is merged
|
||||
# export NIXOS_OZONE_WL=1 # Until text-input is merged
|
||||
|
||||
'' + (if config.services.gnome-keyring.enable then ''
|
||||
# gnome-keyring
|
||||
if type gnome-keyring-daemon >/dev/null; then
|
||||
eval `gnome-keyring-daemon`
|
||||
export SSH_AUTH_SOCK
|
||||
fi
|
||||
'' else "");
|
||||
# Extra
|
||||
wrapperFeatures.base = true;
|
||||
|
@ -383,18 +390,13 @@ in
|
|||
'' + ''
|
||||
# Enable portal stuff
|
||||
exec ${pkgs.writeShellScript "start-portals.sh" ''
|
||||
# Import the WAYLAND_DISPLAY env var from sway into the systemd user session.
|
||||
dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
|
||||
|
||||
# Stop any services that are running, so that they receive the new env var when they restart.
|
||||
systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
|
||||
systemctl --user start pipewire-media-session
|
||||
''}
|
||||
'';
|
||||
};
|
||||
|
||||
config.services.swayidle = mkIf cfg.enable {
|
||||
enable = true;
|
||||
systemdTarget = "sway-session.target";
|
||||
timeouts = [
|
||||
# Lock after 15 minutes of idle
|
||||
# { timeout = 15 * 60; command = cfg.lockCmd; }
|
||||
|
@ -459,8 +461,9 @@ in
|
|||
spacing = 10;
|
||||
};
|
||||
"clock" = {
|
||||
format = "{:📅 %Y-%m-%d | 🕰️ %H:%M [%Z]}";
|
||||
tooltip-format = "\n<span size='9pt' font='Noto Sans Mono CJK JP'>{calendar}</span>";
|
||||
# format = "{:📅 %Y-%m-%d | 🕰️ %H:%M [%Z]}";
|
||||
format = "📅 {0:%Y-%m-%d} |️ 🕰️ {0:%H:%M [%Z]}";
|
||||
tooltip-format = "\n<span size='9pt' font_family='Noto Sans Mono CJK JP'>{calendar}</span>";
|
||||
timezones = [
|
||||
"Europe/Zurich"
|
||||
"America/Toronto"
|
||||
|
@ -477,7 +480,7 @@ in
|
|||
months = "<span color='#ffead3'><b>{}</b></span>";
|
||||
days = "<span color='#ecc6d9'><b>{}</b></span>";
|
||||
weeks = "<span color='#99ffdd'><b>W{}</b></span>";
|
||||
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
||||
weekdays = "<span color='#ffcc66'><b>日 月 火 水 木 金 土</b></span>"; # See https://github.com/Alexays/Waybar/issues/3132
|
||||
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
|
||||
};
|
||||
};
|
||||
|
@ -602,6 +605,7 @@ in
|
|||
mkIf cfg.enable {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
systemd.target = "sway-session.target";
|
||||
settings = cfg.waybar.makeBars barWith;
|
||||
style = ''
|
||||
* {
|
||||
|
@ -768,7 +772,7 @@ in
|
|||
};
|
||||
config.home.packages = mkIf cfg.enable (with pkgs; [
|
||||
# Needed for QT_QPA_PLATFORM
|
||||
qt5.qtwayland
|
||||
kdePackages.qtwayland
|
||||
# For waybar
|
||||
font-awesome
|
||||
]);
|
||||
|
|
|
@ -27,6 +27,7 @@ let
|
|||
in
|
||||
{
|
||||
home.packages = [ osu-pkg ];
|
||||
xdg.mimeApps.defaultApplications."x-scheme-handler/osu" = "osu!.desktop";
|
||||
# home.packages = [ pkgs.osu-lazer ];
|
||||
}
|
||||
|
||||
|
|
|
@ -12,8 +12,8 @@ let
|
|||
images = {
|
||||
postgresql = mkImage {
|
||||
imageName = "postgres";
|
||||
finalImageTag = "12-alpine";
|
||||
imageDigest = "sha256:f52ffee699232c84d820c35c28656363f4fda6a3e3e934b83f4e5e1898e2bdfa";
|
||||
finalImageTag = "16-alpine";
|
||||
imageDigest = "sha256:b40547ea0c7bcb401d8f11c6a233ebe65e2067e5966e54ccf9b03c5f01c2957c";
|
||||
};
|
||||
redis = mkImage {
|
||||
imageName = "redis";
|
||||
|
|
|
@ -17,6 +17,7 @@ index d218dbc1f..24c0505e3 100644
|
|||
/**
|
||||
* The product name
|
||||
*/
|
||||
@Public
|
||||
- public APP_NAME = "Outline";
|
||||
+ public APP_NAME = "DTTH Wiki";
|
||||
|
||||
|
|
|
@ -50,6 +50,14 @@ let
|
|||
environment.systemPackages = with pkgs; [ piper ];
|
||||
};
|
||||
|
||||
kwallet = { pkgs, lib, ... }: mkIf cfg.enable {
|
||||
environment.systemPackages = [ pkgs.kdePackages.kwallet ];
|
||||
services.dbus.packages = [ pkgs.kdePackages.kwallet ];
|
||||
xdg.portal = {
|
||||
extraPortals = [ pkgs.kdePackages.kwallet ];
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation = { pkgs, ... }: mkIf cfg.enable {
|
||||
virtualisation.podman = {
|
||||
enable = true;
|
||||
|
@ -96,7 +104,7 @@ let
|
|||
};
|
||||
in
|
||||
{
|
||||
imports = with modules; [ adb ios wlr logitech virtualisation accounts rt-audio ];
|
||||
imports = with modules; [ adb ios wlr logitech kwallet virtualisation accounts rt-audio ];
|
||||
|
||||
options.common.linux = {
|
||||
enable = mkOption {
|
||||
|
@ -119,7 +127,7 @@ in
|
|||
dnsServers = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = "DNS server list";
|
||||
default = [ "8.8.8.8" "8.8.4.4" ];
|
||||
default = [ "1.1.1.1" "2606:4700:4700:1111" ];
|
||||
};
|
||||
networks = mkOption {
|
||||
type = types.attrsOf (types.submodule {
|
||||
|
@ -156,7 +164,7 @@ in
|
|||
loader.timeout = 60;
|
||||
loader.systemd-boot.enable = true;
|
||||
loader.efi.canTouchEfiVariables = true;
|
||||
supportedFilesystems = [ "ntfs" ];
|
||||
supportedFilesystems.ntfs = true;
|
||||
};
|
||||
boot.initrd.systemd.enable = builtins.length (builtins.attrNames (cfg.luksDevices)) > 0;
|
||||
# LUKS devices
|
||||
|
@ -214,6 +222,7 @@ in
|
|||
];
|
||||
shell = pkgs.fish;
|
||||
};
|
||||
nix.settings.trusted-users = [ "root" cfg.username ];
|
||||
|
||||
## Network configuration
|
||||
systemd.network.enable = true;
|
||||
|
@ -249,6 +258,7 @@ in
|
|||
# Input methods (only fcitx5 works reliably on Wayland)
|
||||
i18n.inputMethod = {
|
||||
enabled = "fcitx5";
|
||||
fcitx5.waylandFrontend = true;
|
||||
fcitx5.addons = with pkgs; [
|
||||
fcitx5-mozc
|
||||
fcitx5-unikey
|
||||
|
@ -271,7 +281,7 @@ in
|
|||
libsForQt5.qtkeychain
|
||||
|
||||
## Wayland
|
||||
qt5.qtwayland
|
||||
kdePackages.qtwayland
|
||||
];
|
||||
# Add a reliable terminal
|
||||
programs.fish.enable = true;
|
||||
|
@ -285,19 +295,14 @@ in
|
|||
# Gaming! (not for ARM64)
|
||||
programs.steam.enable = !pkgs.stdenv.isAarch64;
|
||||
hardware.opengl.enable = true;
|
||||
hardware.opengl.driSupport = true;
|
||||
hardware.opengl.driSupport32Bit = !pkgs.stdenv.isAarch64; # For 32 bit applications
|
||||
|
||||
## Services
|
||||
# gnome-keyring for storing keys
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
# OpenSSH so you can SSH to me
|
||||
services.openssh.enable = true;
|
||||
# PAM
|
||||
security.pam.services.login.enableKwallet = true;
|
||||
security.pam.services.login.enableGnomeKeyring = true;
|
||||
security.pam.services.lightdm.enableKwallet = true;
|
||||
security.pam.services.lightdm.enableGnomeKeyring = true;
|
||||
security.pam.services.swaylock = { };
|
||||
# Printers
|
||||
services.printing.enable = true;
|
||||
|
@ -305,12 +310,11 @@ in
|
|||
xdg.portal = {
|
||||
enable = true;
|
||||
wlr.enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
# gtk portal needed to make gtk apps happy
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||
extraPortals = [ pkgs.kdePackages.xdg-desktop-portal-kde pkgs.xdg-desktop-portal-gtk ];
|
||||
|
||||
config.common.default = [ "gtk" ];
|
||||
config.common."org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ];
|
||||
config.sway.default = [ "wlr" "gtk" ];
|
||||
config.sway.default = [ "wlr" "kde" "kwallet" ];
|
||||
};
|
||||
# D-Bus
|
||||
services.dbus.packages = with pkgs; [ gcr ];
|
||||
|
|
|
@ -1,29 +1,11 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
noto-fonts-emoji-blob-bin =
|
||||
let
|
||||
pname = "noto-fonts-emoji-blob-bin";
|
||||
version = "15.0";
|
||||
in
|
||||
pkgs.fetchurl {
|
||||
name = "${pname}-${version}";
|
||||
url = "https://github.com/C1710/blobmoji/releases/download/v${version}/Blobmoji.ttf";
|
||||
sha256 = "sha256-n5yVk2w9x7UVrMe0Ho6nwu1Z9E/ktjo1UHdHKStoJWc=";
|
||||
|
||||
downloadToTemp = true;
|
||||
recursiveHash = true;
|
||||
postFetch = ''
|
||||
install -Dm 444 $downloadedFile $out/share/fonts/blobmoji/Blobmoji.ttf
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [ ./mounting.nix ];
|
||||
# Fonts
|
||||
config.fonts = {
|
||||
packages = with pkgs; [
|
||||
packages = with pkgs; mkForce [
|
||||
noto-fonts-emoji-blob-bin
|
||||
ibm-plex
|
||||
(nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; })
|
||||
|
@ -31,15 +13,17 @@ in
|
|||
noto-fonts-cjk
|
||||
merriweather
|
||||
corefonts
|
||||
font-awesome
|
||||
hack-font # for Plasma
|
||||
];
|
||||
} // (if pkgs.stdenv.isLinux then {
|
||||
enableDefaultPackages = false;
|
||||
fontconfig = {
|
||||
defaultFonts = {
|
||||
emoji = lib.mkBefore [ "Blobmoji" ];
|
||||
serif = lib.mkBefore [ "IBM Plex Serif" "IBM Plex Sans JP" "IBM Plex Sans KR" ];
|
||||
sansSerif = lib.mkBefore [ "IBM Plex Sans" "IBM Plex Sans JP" "IBM Plex Sans KR" ];
|
||||
monospace = lib.mkBefore [ "IBM Plex Mono" ];
|
||||
serif = lib.mkBefore [ "IBM Plex Serif" "IBM Plex Sans JP" "IBM Plex Sans KR" "Blobmoji" ];
|
||||
sansSerif = lib.mkBefore [ "IBM Plex Sans" "IBM Plex Sans JP" "IBM Plex Sans KR" "Blobmoji" ];
|
||||
monospace = lib.mkBefore [ "IBM Plex Mono" "Font Awesome 6 Free" "Symbols Nerd Font" "Blobmoji" "IBM Plex Sans JP" ];
|
||||
};
|
||||
localConf = ''
|
||||
<?xml version="1.0"?>
|
||||
|
@ -51,6 +35,7 @@ in
|
|||
<family>IBM Plex Sans</family>
|
||||
<family>IBM Plex Sans JP</family>
|
||||
<family>IBM Plex Sans KR</family>
|
||||
<family>Blobmoji</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
</fontconfig>
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.nki.services.pam;
|
||||
in
|
||||
{
|
||||
options.nki.services.pam.enableGnomeKeyring = mkEnableOption "Enable gnome-keyring on login";
|
||||
config = mkIf cfg.enableGnomeKeyring {
|
||||
security.pam.services.login.enableGnomeKeyring = true;
|
||||
# security.pam.services.login.gnupg.enable = true;
|
||||
};
|
||||
}
|
|
@ -13,9 +13,14 @@
|
|||
../modules/personal/fonts
|
||||
# Encrypted DNS
|
||||
../modules/services/edns
|
||||
# Wireless card
|
||||
./wireless.nix
|
||||
];
|
||||
|
||||
services.xserver.desktopManager.plasma5.enable = true;
|
||||
# services.xserver.enable = true;
|
||||
# services.xserver.displayManager.sddm.enable = true;
|
||||
# services.xserver.displayManager.sddm.wayland.enable = true;
|
||||
services.xserver.desktopManager.plasma6.enable = true;
|
||||
|
||||
# Power Management
|
||||
services.upower = {
|
||||
|
|
13
nki-framework/wireless.nix
Normal file
13
nki-framework/wireless.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ pkgs, lib, ... }: {
|
||||
environment.systemPackages = with pkgs; [ iw ];
|
||||
# Disable power_save on boot
|
||||
services.udev.packages = [
|
||||
(pkgs.writeTextFile {
|
||||
name = "udev_disable_wifi_power_save";
|
||||
destination = "/etc/udev/rules.d/10-wifi-power_save.rules";
|
||||
text = ''
|
||||
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wl*", RUN+="${lib.getExe pkgs.iw} dev $name set power_save off"
|
||||
'';
|
||||
})
|
||||
];
|
||||
}
|
|
@ -24,6 +24,9 @@ with lib;
|
|||
# Kernel
|
||||
boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_stable;
|
||||
|
||||
# Plasma!
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
|
||||
## Encryption
|
||||
# Kernel modules needed for mounting USB VFAT devices in initrd stage
|
||||
|
|
|
@ -64,7 +64,6 @@
|
|||
};
|
||||
|
||||
nix = {
|
||||
package = pkgs.nixUnstable;
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
'';
|
||||
|
|
|
@ -9,11 +9,28 @@ let
|
|||
|
||||
signingKey = "0x3681E15E5C14A241";
|
||||
|
||||
catppuccinThemes = builtins.fetchurl {
|
||||
url = "https://github.com/catppuccin/gitea/releases/download/v0.2.1/catppuccin-gitea.tar.gz";
|
||||
sha256 = "sha256:18l67whffayrgylsf5j6g7sj95anjcjl0cy7fzqn1wrm0gg2xns0";
|
||||
catppuccinThemes = pkgs.fetchurl {
|
||||
url = "https://github.com/catppuccin/gitea/releases/download/v0.4.1/catppuccin-gitea.tar.gz";
|
||||
hash = "sha256-/P4fLvswitlfeaKaUykrEKvjbNpw5Q/nzGQ/GZaLyUI=";
|
||||
};
|
||||
themes = strings.concatStringsSep "," [
|
||||
staticDir = pkgs.runCommandLocal "forgejo-static" { } ''
|
||||
mkdir -p $out
|
||||
tmp=$(mktemp -d)
|
||||
cp -r ${config.services.forgejo.package.data}/* $tmp
|
||||
chmod -R +w $tmp
|
||||
|
||||
# Copy icons
|
||||
install -m 0644 ${./gitea/img}/* $tmp/public/assets/img
|
||||
|
||||
# Copy the themes
|
||||
env PATH=${pkgs.gzip}/bin:${pkgs.gnutar}/bin:$PATH \
|
||||
tar -xvf ${catppuccinThemes} -C $tmp/public/assets/css
|
||||
|
||||
cp -r $tmp/* $out
|
||||
'';
|
||||
|
||||
default-themes = "forgejo-auto, forgejo-light, forgejo-dark, gitea-auto, gitea-light, gitea-dark, forgejo-auto-deuteranopia-protanopia, forgejo-light-deuteranopia-protanopia, forgejo-dark-deuteranopia-protanopia, forgejo-auto-tritanopia, forgejo-light-tritanopia, forgejo-dark-tritanopia";
|
||||
themes = strings.concatStringsSep ", " [
|
||||
"catppuccin-macchiato-green"
|
||||
"catppuccin-mocha-teal"
|
||||
"catppuccin-macchiato-sky"
|
||||
|
@ -73,6 +90,13 @@ let
|
|||
];
|
||||
in
|
||||
{
|
||||
users.users.${user} = {
|
||||
home = config.services.forgejo.stateDir;
|
||||
useDefaultShell = true;
|
||||
isSystemUser = true;
|
||||
group = user;
|
||||
};
|
||||
users.groups.${user} = { };
|
||||
sops.secrets."gitea/signing-key".owner = user;
|
||||
sops.secrets."gitea/mailer-password".owner = user;
|
||||
# database
|
||||
|
@ -83,9 +107,9 @@ in
|
|||
noCloudflare = true;
|
||||
};
|
||||
|
||||
systemd.services.gitea.requires = [ "postgresql.service" ];
|
||||
systemd.services.forgejo.requires = [ "postgresql.service" ];
|
||||
|
||||
services.gitea = {
|
||||
services.forgejo = {
|
||||
enable = true;
|
||||
|
||||
inherit user;
|
||||
|
@ -98,6 +122,7 @@ in
|
|||
ROOT_URL = "https://${host}/";
|
||||
HTTP_ADDRESS = "127.0.0.1";
|
||||
HTTP_PORT = port;
|
||||
STATIC_ROOT_PATH = staticDir;
|
||||
};
|
||||
repository = {
|
||||
DEFAULT_PRIVATE = "private";
|
||||
|
@ -114,7 +139,7 @@ in
|
|||
SIGNING_NAME = "DTTHGit";
|
||||
SIGNING_EMAIL = "dtth-gitea@nkagami.me";
|
||||
};
|
||||
ui.THEMES = "auto,gitea,arc-green," + themes;
|
||||
ui.THEMES = default-themes + "," + themes;
|
||||
"ui.meta" = {
|
||||
AUTHOR = "DTTHgit - Gitea instance for GTTH";
|
||||
DESCRIPTION = "DTTHGit is a custom Gitea instance hosted for DTTH members only.";
|
||||
|
@ -175,7 +200,7 @@ in
|
|||
};
|
||||
|
||||
# Set up gpg signing key
|
||||
systemd.services.gitea = {
|
||||
systemd.services.forgejo = {
|
||||
path = with pkgs; [ gnupg ];
|
||||
environment.GNUPGHOME = "${config.services.gitea.stateDir}/.gnupg";
|
||||
# https://github.com/NixOS/nixpkgs/commit/93c1d370db28ad4573fb9890c90164ba55391ce7
|
||||
|
@ -191,15 +216,6 @@ in
|
|||
echo "trusted-key ${signingKey}" >> ${config.services.gitea.stateDir}/.gnupg/gpg.conf
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy icons
|
||||
mkdir -p ${config.services.gitea.stateDir}/custom/public/img
|
||||
install -m 0644 ${./gitea/img}/* ${config.services.gitea.stateDir}/custom/public/img
|
||||
|
||||
# Copy the themes
|
||||
mkdir -p ${config.services.gitea.stateDir}/custom/public/css
|
||||
env PATH=${pkgs.gzip}/bin:${pkgs.gnutar}/bin:$PATH \
|
||||
tar -xvf ${catppuccinThemes} -C ${config.services.gitea.stateDir}/custom/public/css/
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -28,7 +28,6 @@ in
|
|||
cloud.traefik.hosts.invidious = { host = "invi.dtth.ch"; port = 61191; };
|
||||
services.invidious = {
|
||||
enable = true;
|
||||
package = pkgs.unstable.invidious;
|
||||
domain = "invi.dtth.ch";
|
||||
port = 61191;
|
||||
extraSettingsFile = config.sops.secrets.invidious.path;
|
||||
|
|
|
@ -30,7 +30,7 @@ miniflux:
|
|||
oidc-client-secret: ENC[AES256_GCM,data:lvPFzc1ZXOTArs6VfFzJmKjW7pFpWU1XMCzHfUWC8WRq3CTvd6iQSwnGgBmUtHtDJCF1un/32fOaqBtSeMkgt5nkd/j8fLhTrTZyo8hJV2l1p16RBC2C0+igQh8PMah1Yp+V4zTMd5UKYMPkK9Iwb/tJ5zXeqQ20LvmGk+E7lCCVrnyyJrJNwr310mzYaUmpRz9/1AEM,iv:+9yhwYxnB5zPSRjX9o3PRvBpq4hM45jNF3acqT6lSJc=,tag:yMTWbxHlTZgg4XxNjfc8wQ==,type:str]
|
||||
pocket-consumer-key: ENC[AES256_GCM,data:NXY9Y8rFlzCVVG3ATUL/u7Sj6Im1RU/D16toUOLcIfKvddBjlu+QddKXWfLKppV1BQZ0,iv:nf3gkm098UhpZOgMbOdyG1FYVcl5G0gxoI6RTsZ1r14=,tag:bMOYwtFwUJ4SFornsWo8ig==,type:str]
|
||||
admin-creds: ENC[AES256_GCM,data:cBCwwRZR0B8nH7XLxHVZCThqmnUI6ZHFp3wH9TjdRbBTmySjPqU526ltn3lRQtopgqQ0IOuneTztXJ+wfqmLUABV6xlLBkXD7VX6Mf43RtIDyHL+UC56eIdn3xeawGsIjnta,iv:DOwHUL64ufLS7FbvnJCPxPYwMJF1pMPqjx78vltm9IY=,tag:A2Fpk4rI0/WK0jFtTlGhaA==,type:str]
|
||||
writefreely-dtth: ENC[AES256_GCM,data:Q2b3eCr5GLLyBMrGlTUSIuMN/vZXmMZV8T56+t7RjcoHQmEVDKGwPGgka4jf/yO9Nf6TdGB7iiXft+XK3t74XdnzTCTYYVFzFsv49eZDKpTeaR6pKcbesfJYyqOcHIuatQz/orQ1X6Ext9Xf9aBStY4GV6ticLpvdW3GtHzchMPuMm8vY8A8DYNH/kLGb96aHpQ53paKkckeDWcbDyCulUU=,iv:G4TNJ4vY6qo4iOrEBmsf6hHJWAqbl3t8JAyDIZ1lUUg=,tag:HEknuS+MjBBFbkpDEIRUfw==,type:str]
|
||||
writefreely-oauth-secret: ENC[AES256_GCM,data:UTeJMo4MMLcPUL6RlSfNzluMs4Hu5iKkav3oH16Q0TvEhxCKMU1SkXgLAjbpjx5OidXKLXGc72kGQcVJegvWjfhVGH6eoDQiizyHSwznRyA4pGNhlJKm3w0tKKRzVJZjBKQgjQ6gODyeU7SdI6g0jK42t3Sm91404erRMOoKyZo=,iv:FQx/XE7FGhHhiKG7d4LfgIXQZq+nj9tvKgY6SRiZbXY=,tag:5rfCeM/yYFNukY4/CqOJ3g==,type:str]
|
||||
matrix-synapse-dtth:
|
||||
oidc-config: ENC[AES256_GCM,data:06lv5ejqnQ1jBAhCBxXY3nNulXFnDt/S2ycma9+hlG6mSMGfRfIcfDZfKOfUUuV2uMI7ix4r0QdM3351VucvnWCZZlXz5YpVgNg1YZDvtSQxe3SJqKj/y3u+nYbPPIRgACiFpiajBeEvS/evIT8+Ty3myDVPHovYkuCb0U1eD3/xGK38lx6+H3Cjk3LyszMg1EwXdkDjbcDVYDhSEelkB9rWXH1vw5qNZOzGgIoYEe6ppMmPZjpUM9jyounuF/+FzLbkWz6YvY4zWD5fND5fFdT4AA1e1jzCLQIsaVZ8N6co5lwzfBfydLosEy+h/COv1wzvfXiEjNi4f+2Ol7kSu4+G3u3V6EcqTyVjj38oTLaAx1cG9pnPmAc/zTUCmepITAWysvuzIVd8gwde1CheANLp1WnQrAAKJiHv/6bxPoi0ROu0BpQqupU9XUcTXRysuTjBH5/ABjlvk8lTiFi8Ryt7KzC23kPWf541B8BO/yfpmq8mheMz1AYm+fkTZOqKgkfm4NStN58oiYn6NEyWpuaAx7DEUgO/MIrIKXfTzGCT++33Cnr41fLSqWgqIUhBxd9P1s3cYk942UxC2VdKf1qq6IGZK4iq8T1FUoXqmTnjEfwvTm2hDkZqwEdvkKZUolKvnsZL44KRBow/LMGGsDDFoOMsMT9MqE2fBGOudTnHncs3I/T7eEDnHH+z+60Axo6mKGwmaHRHeqeiV4OIrPmM5X8uUIWvKoNsY3UvL/VgKA2Zh7wm8irB0rgcaKDW6QMmJIxqd3RK9WwmOT4hPy/SC5nm1ZRlag/f+H6q+WOtEaK+,iv:5pYzz4QzKHVhHh+YFnerD5Q2S93stqBKILM2sxD23Fc=,tag:V0rVa/nTH3hv77Z8KOQOiw==,type:str]
|
||||
appservice-discord: ENC[AES256_GCM,data:lAAEa6ltXi29+POrG87bMAvv8du3DiGYl8f7npqW0ga3YgrvofgYnC8QJUyznIQ3Ye9yWxzjzaClu7viFgkN0yIXlpENIOcSTrdlMgg5mdJ8f9elltp/VPiwVimubPa8QnpLNRy/NAEVpDFygw9VOM+Fu203M/pofK0qX6NfO9PeQGma1iKQeMKrV/6RwjF+70rnTMEhO0PCyTl2PEwZiDtkxgI7Yyl37p8bUuJ4YZ5MhZN94lODb+toPaN29BZT4q23VrJmxiW3VEeJj+tEmx4X+KeCO5AArtPl9YOkoRt/uSRKljsf109AIiclRj0wITqOx/QL2qntFuAidxTm8MoJQ6eoq/bwQp/BUpPubIMeY+z2b8XIgZGZSPZMdaObvaqDFdMLq7GW61GxYKFgNxHYA4uhndbE5VDNkcFkw4FEC5x40fwqGaunmqvAdb3p4I9EhlQ28e5S+hX1FFrMHjsJWlnjSySDRjCodJMtep19J+qVVgyf5A==,iv:PBo7+OSqBGxI7DzUpclcGWEFwTpcNqySRJzqHu7medU=,tag:fi06xru3e92WfqOJxHXd2w==,type:str]
|
||||
|
@ -73,8 +73,8 @@ sops:
|
|||
by9kZFlTRVdCZFkxYTVVb0RIRk8zUlkKCqMw9oL9RaYBV5Hhy3o8Nm5xmGrPH8Sd
|
||||
hv36sxRFFNZT/DCKaHaSRbT3mfpBZSTXJt1dgl4nZe6whH54t/1KmA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-04-18T20:44:57Z"
|
||||
mac: ENC[AES256_GCM,data:S8Z9P8gJIdjKZPHq3LEO0w1wxm6KsDYWB/Bb+JqoeuI0QyNzXqpfKtbthxtLisJJFcnS/ngnPjafVu6bG95ywjprfuB4o69l7PMd8rC4rZm38pG/pjw2tXYef+B3iuE2ZV7Y/7hXHhTd3ZPu8/ALD8kczTuZd+xFVsgTZu+F2F8=,iv:aFj0v+NB/NnnsReG234wmhyAhqkhADk7Ndpi/TaVNEg=,tag:7YlcGy68YACs+K10lMMohA==,type:str]
|
||||
lastmodified: "2024-06-11T20:55:31Z"
|
||||
mac: ENC[AES256_GCM,data:IdpNGX3E2TwGnmHhc7HXPjBEaYC7jO1dnEHQGoVra+scnKO66nt6uD2wK91G2wvdp2ekkR4qnF9/NYbpOt2vbzyaZG0xMHTr1w1Y5oqxzbTUned9sWjpsL2lCHpg4FQ+dImim05N76Qcna7gC5Y9wyh78/eB177SJ5mTEnyZhwE=,iv:3kjluCoHIMEQOTuDJbQZJWl3BLWzp/UqcC8jmlkVyDE=,tag:nmqkhmqXKB5/LKX7RpQB6g==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.8.1
|
||||
|
|
|
@ -11,7 +11,7 @@ in
|
|||
# traefik
|
||||
cloud.traefik.hosts.writefreely-dtth = { inherit host port; };
|
||||
|
||||
sops.secrets."writefreely-dtth" = { owner = user; };
|
||||
sops.secrets."writefreely-oauth-secret" = { owner = user; };
|
||||
|
||||
users.users.${user} = {
|
||||
isSystemUser = true;
|
||||
|
@ -53,22 +53,24 @@ in
|
|||
monetization = false;
|
||||
};
|
||||
|
||||
"oauth.generic" = {
|
||||
client_id = "rpoTTr2Wz0h4EgOSCHe0G85O8DCQDMup7JW9U9fV";
|
||||
host = "https://auth.dtth.ch";
|
||||
display_name = "DTTH";
|
||||
token_endpoint = "/application/o/token/";
|
||||
inspect_endpoint = "/application/o/userinfo/";
|
||||
auth_endpoint = "/application/o/authorize/";
|
||||
scope = "email openid profile";
|
||||
map_user_id = "nickname";
|
||||
map_username = "preferred_username";
|
||||
map_display_name = "name";
|
||||
allow_registration = true;
|
||||
};
|
||||
"oauth.generic" = { };
|
||||
};
|
||||
|
||||
oauth = {
|
||||
enable = true;
|
||||
clientId = "rpoTTr2Wz0h4EgOSCHe0G85O8DCQDMup7JW9U9fV";
|
||||
clientSecretFile = config.sops.secrets."writefreely-oauth-secret".path;
|
||||
host = "https://auth.dtth.ch";
|
||||
displayName = "DTTH";
|
||||
tokenEndpoint = "/application/o/token/";
|
||||
inspectEndpoint = "/application/o/userinfo/";
|
||||
authEndpoint = "/application/o/authorize/";
|
||||
scopes = [ "email" "openid" "profile" ];
|
||||
mapUserId = "nickname";
|
||||
mapUsername = "preferred_username";
|
||||
mapDisplayName = "name";
|
||||
};
|
||||
|
||||
extraSettingsFile = config.sops.secrets."writefreely-dtth".path;
|
||||
|
||||
database.type = "sqlite3";
|
||||
|
||||
|
|
|
@ -15,8 +15,7 @@ let
|
|||
if value == true then "true" else "false"
|
||||
else
|
||||
toString value);
|
||||
in
|
||||
"${key} = ${value'}";
|
||||
in "${key} = ${value'}";
|
||||
};
|
||||
|
||||
cfg = config.nki.services.writefreely;
|
||||
|
@ -32,8 +31,7 @@ let
|
|||
host = cfg.settings.app.host or "${hostProtocol}://${cfg.host}";
|
||||
};
|
||||
|
||||
database =
|
||||
if cfg.database.type == "sqlite3" then {
|
||||
database = if cfg.database.type == "sqlite3" then {
|
||||
type = "sqlite3";
|
||||
filename = cfg.settings.database.filename or "writefreely.db";
|
||||
database = cfg.database.name;
|
||||
|
@ -58,6 +56,24 @@ let
|
|||
cfg.settings.server.pages_parent_dir or cfg.package.src;
|
||||
keys_parent_dir = cfg.settings.server.keys_parent_dir or cfg.stateDir;
|
||||
};
|
||||
|
||||
"oauth.generic" = cfg.settings."oauth.generic" or { } // (if cfg.oauth.enable then {
|
||||
client_id = cfg.oauth.clientId;
|
||||
client_secret = "#oauth_client_secret#";
|
||||
host = cfg.oauth.host;
|
||||
display_name = cfg.oauth.displayName;
|
||||
callback_proxy = cfg.oauth.callbackProxy;
|
||||
callback_proxy_api = cfg.oauth.callbackProxyApi;
|
||||
token_endpoint = cfg.oauth.tokenEndpoint;
|
||||
inspect_endpoint = cfg.oauth.inspectEndpoint;
|
||||
auth_endpoint = cfg.oauth.authEndpoint;
|
||||
scope = lib.concatStringsSep " " cfg.oauth.scopes;
|
||||
allow_disconnect = cfg.oauth.allowDisconnect;
|
||||
map_user_id = cfg.oauth.mapUserId;
|
||||
map_username = cfg.oauth.mapUsername;
|
||||
map_display_name = cfg.oauth.mapDisplayName;
|
||||
map_email = cfg.oauth.mapEmail;
|
||||
} else { });
|
||||
};
|
||||
|
||||
configFile = format.generate "config.ini" settings;
|
||||
|
@ -91,10 +107,14 @@ let
|
|||
optionalString (cfg.database.passwordFile != null)
|
||||
"$(head -n1 ${cfg.database.passwordFile})"
|
||||
}
|
||||
oauth_client_secret=${
|
||||
optionalString cfg.oauth.enable
|
||||
"$(head -n1 ${cfg.oauth.clientSecretFile})"
|
||||
}
|
||||
|
||||
install -m 0660 ${configFile} '${cfg.stateDir}/config.ini'
|
||||
cp -f ${configFile} '${cfg.stateDir}/config.ini'
|
||||
sed -e "s,#dbpass#,$db_pass,g" -i '${cfg.stateDir}/config.ini'
|
||||
${if cfg.extraSettingsFile != null then "cat ${cfg.extraSettingsFile} >> ${cfg.stateDir}/config.ini" else ""}
|
||||
sed -e "s,#oauth_client_secret#,$oauth_client_secret,g" -i '${cfg.stateDir}/config.ini'
|
||||
chmod 440 '${cfg.stateDir}/config.ini'
|
||||
|
||||
${text}
|
||||
|
@ -123,7 +143,7 @@ let
|
|||
withConfigFile ''
|
||||
query () {
|
||||
local result=$(${sqlite}/bin/sqlite3 \
|
||||
'${cfg.stateDir}/${settings.database.filename}'
|
||||
'${cfg.stateDir}/${settings.database.filename}' \
|
||||
"$1" \
|
||||
)
|
||||
|
||||
|
@ -132,53 +152,46 @@ let
|
|||
|
||||
${text}
|
||||
'';
|
||||
in
|
||||
{
|
||||
in {
|
||||
options.nki.services.writefreely = {
|
||||
enable =
|
||||
lib.mkEnableOption (lib.mdDoc "Writefreely, build a digital writing community");
|
||||
lib.mkEnableOption "Writefreely, build a digital writing community";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.writefreely;
|
||||
defaultText = lib.literalExpression "pkgs.writefreely";
|
||||
description = lib.mdDoc "Writefreely package to use.";
|
||||
description = "Writefreely package to use.";
|
||||
};
|
||||
|
||||
stateDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/writefreely";
|
||||
description = lib.mdDoc "The state directory where keys and data are stored.";
|
||||
description = "The state directory where keys and data are stored.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "writefreely";
|
||||
description = lib.mdDoc "User under which Writefreely is ran.";
|
||||
description = "User under which Writefreely is ran.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "writefreely";
|
||||
description = lib.mdDoc "Group under which Writefreely is ran.";
|
||||
description = "Group under which Writefreely is ran.";
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = lib.mdDoc "The public host name to serve.";
|
||||
description = "The public host name to serve.";
|
||||
example = "example.com";
|
||||
};
|
||||
|
||||
extraSettingsFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = lib.mdDoc "Additional configs to be appended to the config file";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
Writefreely configuration ({file}`config.ini`). Refer to
|
||||
<https://writefreely.org/docs/latest/admin/config>
|
||||
for details.
|
||||
|
@ -192,7 +205,7 @@ in
|
|||
theme = mkOption {
|
||||
type = types.str;
|
||||
default = "write";
|
||||
description = lib.mdDoc "The theme to apply.";
|
||||
description = "The theme to apply.";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -201,7 +214,7 @@ in
|
|||
type = types.port;
|
||||
default = if cfg.nginx.enable then 18080 else 80;
|
||||
defaultText = "80";
|
||||
description = lib.mdDoc "The port WriteFreely should listen on.";
|
||||
description = "The port WriteFreely should listen on.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -212,74 +225,158 @@ in
|
|||
type = mkOption {
|
||||
type = types.enum [ "sqlite3" "mysql" ];
|
||||
default = "sqlite3";
|
||||
description = lib.mdDoc "The database provider to use.";
|
||||
description = "The database provider to use.";
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
default = "writefreely";
|
||||
description = lib.mdDoc "The name of the database to store data in.";
|
||||
description = "The name of the database to store data in.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = if cfg.database.type == "mysql" then "writefreely" else null;
|
||||
defaultText = "writefreely";
|
||||
description = lib.mdDoc "The database user to connect as.";
|
||||
description = "The database user to connect as.";
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = lib.mdDoc "The file to load the database password from.";
|
||||
description = "The file to load the database password from.";
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = lib.mdDoc "The database host to connect to.";
|
||||
description = "The database host to connect to.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 3306;
|
||||
description = lib.mdDoc "The port used when connecting to the database host.";
|
||||
description = "The port used when connecting to the database host.";
|
||||
};
|
||||
|
||||
tls = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description =
|
||||
lib.mdDoc "Whether or not TLS should be used for the database connection.";
|
||||
description = "Whether or not TLS should be used for the database connection.";
|
||||
};
|
||||
|
||||
migrate = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description =
|
||||
lib.mdDoc "Whether or not to automatically run migrations on startup.";
|
||||
description = "Whether or not to automatically run migrations on startup.";
|
||||
};
|
||||
|
||||
createLocally = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
When {option}`services.writefreely.database.type` is set to
|
||||
`"mysql"`, this option will enable the MySQL service locally.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
oauth = {
|
||||
enable = lib.mkEnableOption "Enable generic OAuth authentication";
|
||||
clientId = mkOption {
|
||||
type = types.str;
|
||||
description = "The client ID associated with WriteFreely in the OAuth provider application.";
|
||||
};
|
||||
clientSecretFile = mkOption {
|
||||
type = types.str;
|
||||
description = "The file to load the OAuth client secret from.";
|
||||
};
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
description = "The base url of the OAuth provider application, including the protocol.";
|
||||
example = "https://example.com";
|
||||
};
|
||||
displayName = mkOption {
|
||||
type = types.str;
|
||||
description = "The human-readable name of the OAuth service that appears on the login button, will appear as `Log in with [display_name]`.";
|
||||
};
|
||||
|
||||
callbackProxy = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "The url of an inbound proxy that sits in front of the default `/oauth/callback/generic` endpoint. Use if you want the OAuth callback to be somewhere other than that generic location. Default is blank.";
|
||||
example = "https://example.com/whatever/path";
|
||||
};
|
||||
callbackProxyApi = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "The url of an outbound proxy to send your OAuth requests through. Default is blank.";
|
||||
example = "https://my-proxy.example.com";
|
||||
};
|
||||
|
||||
tokenEndpoint = mkOption {
|
||||
type = types.str;
|
||||
description = "The API endpoint of the OAuth provider implementation to obtain an access token by presenting an authorization grant or refresh token. This is a fragment of a url, appended to host as described above.";
|
||||
example = "/oauth/token";
|
||||
};
|
||||
inspectEndpoint = mkOption {
|
||||
type = types.str;
|
||||
description = "The API endpoint of the OAuth provider that returns basic user info given their authentication information. This is a fragment of a url, appended to host as described above.";
|
||||
example = "/oauth/userinfo";
|
||||
};
|
||||
authEndpoint = mkOption {
|
||||
type = types.str;
|
||||
description = "The API endpoint of the OAuth provider that returns an authorization grant. This is a fragment of a url, appended to host as described above.";
|
||||
example = "public";
|
||||
};
|
||||
|
||||
scopes = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ "read_user" ];
|
||||
description = "A scope or set of scopes required by some OAuth providers. This will usually be blank in this config file, and is set to `read_user` by default.";
|
||||
};
|
||||
allowDisconnect = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether or not an individual user is allowed to disconnect this OAuth provider from their account.";
|
||||
};
|
||||
|
||||
mapUserId = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
defaultText = "<none>";
|
||||
description = "Use this User ID key in the provider's user info, instead of the default key (user_id).";
|
||||
};
|
||||
mapUsername = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
defaultText = "<none>";
|
||||
description = "Use this Username key in the provider's user info, instead of the default key (username)";
|
||||
};
|
||||
mapDisplayName = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
defaultText = "<none>";
|
||||
description = "Use this Display Name key in the provider's user info, instead of the default key (*none*)";
|
||||
};
|
||||
mapEmail = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
defaultText = "<none>";
|
||||
description = "Use this Email key in the provider's user info, instead of the default key (email)";
|
||||
};
|
||||
};
|
||||
|
||||
admin = {
|
||||
name = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
description = lib.mdDoc "The name of the first admin user.";
|
||||
description = "The name of the first admin user.";
|
||||
default = null;
|
||||
};
|
||||
|
||||
initialPasswordFile = mkOption {
|
||||
type = types.path;
|
||||
description = lib.mdDoc ''
|
||||
description = ''
|
||||
Path to a file containing the initial password for the admin user.
|
||||
If not provided, the default password will be set to `nixos`.
|
||||
'';
|
||||
|
@ -292,14 +389,13 @@ in
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description =
|
||||
lib.mdDoc "Whether or not to enable and configure nginx as a proxy for WriteFreely.";
|
||||
description = "Whether or not to enable and configure nginx as a proxy for WriteFreely.";
|
||||
};
|
||||
|
||||
forceSSL = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc "Whether or not to force the use of SSL.";
|
||||
description = "Whether or not to force the use of SSL.";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -307,8 +403,7 @@ in
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description =
|
||||
lib.mdDoc "Whether or not to automatically fetch and configure SSL certs.";
|
||||
description = "Whether or not to automatically fetch and configure SSL certs.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -344,11 +439,12 @@ in
|
|||
optionalAttrs (cfg.group == "writefreely") { writefreely = { }; };
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules =
|
||||
[ "d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group} - -" ];
|
||||
systemd.tmpfiles.settings."10-writefreely".${cfg.stateDir}.d = {
|
||||
inherit (cfg) user group;
|
||||
mode = "0750";
|
||||
};
|
||||
|
||||
systemd.services.writefreely = {
|
||||
path = with pkgs; [ openssl ];
|
||||
after = [ "network.target" ]
|
||||
++ optional isSqlite "writefreely-sqlite-init.service"
|
||||
++ optional isMysql "writefreely-mysql-init.service"
|
||||
|
@ -393,8 +489,7 @@ in
|
|||
cfg.admin.initialPasswordFile;
|
||||
};
|
||||
|
||||
script =
|
||||
let
|
||||
script = let
|
||||
migrateDatabase = optionalString cfg.database.migrate ''
|
||||
${cfg.package}/bin/writefreely -c '${cfg.stateDir}/config.ini' db migrate
|
||||
'';
|
||||
|
@ -406,8 +501,7 @@ in
|
|||
${cfg.package}/bin/writefreely -c '${cfg.stateDir}/config.ini' --create-admin ${cfg.admin.name}:$admin_pass
|
||||
fi
|
||||
'';
|
||||
in
|
||||
withSqlite ''
|
||||
in withSqlite ''
|
||||
if ! test -f '${settings.database.filename}'; then
|
||||
${cfg.package}/bin/writefreely -c '${cfg.stateDir}/config.ini' db init
|
||||
fi
|
||||
|
@ -432,8 +526,7 @@ in
|
|||
cfg.admin.initialPasswordFile;
|
||||
};
|
||||
|
||||
script =
|
||||
let
|
||||
script = let
|
||||
updateUser = optionalString isMysqlLocal ''
|
||||
# WriteFreely currently *requires* a password for authentication, so we
|
||||
# need to update the user in MySQL accordingly. By default MySQL users
|
||||
|
@ -452,8 +545,7 @@ in
|
|||
${cfg.package}/bin/writefreely -c '${cfg.stateDir}/config.ini' --create-admin ${cfg.admin.name}:$admin_pass
|
||||
fi
|
||||
'';
|
||||
in
|
||||
withMysql ''
|
||||
in withMysql ''
|
||||
${updateUser}
|
||||
|
||||
if [[ $(query "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '${cfg.database.name}'") == 0 ]]; then
|
||||
|
@ -497,4 +589,3 @@ in
|
|||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
# Fonts
|
||||
../modules/personal/fonts
|
||||
# Some PAM stuff
|
||||
../modules/services/pam/gnome-keyring.nix
|
||||
../modules/services/swaylock.nix
|
||||
];
|
||||
# Use the latest kernel
|
||||
|
@ -116,9 +115,6 @@
|
|||
pciutils
|
||||
];
|
||||
|
||||
# Gnome-keyring is useful
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
|
||||
## Environment variables
|
||||
environment.variables = {
|
||||
# Input method overrides
|
||||
|
@ -145,7 +141,6 @@
|
|||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
nki.services.pam.enableGnomeKeyring = true;
|
||||
services.input-remapper.enable = true;
|
||||
services.swaylock.enable = true;
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
../modules/services/edns
|
||||
];
|
||||
|
||||
services.xserver.desktopManager.plasma5.enable = true;
|
||||
services.xserver.desktopManager.plasma6.enable = true;
|
||||
|
||||
# Power Management
|
||||
services.upower = {
|
||||
|
|
61
overlay.nix
61
overlay.nix
|
@ -5,14 +5,12 @@ let
|
|||
x86 = import nixpkgs-unstable { system = prev.system; config.allowUnsupportedSystem = true; };
|
||||
};
|
||||
overlay-needs-unstable = final: prev: {
|
||||
# override some packages that needs unstable that cannot be changed in the setup.
|
||||
nix-direnv = prev.unstable.nix-direnv;
|
||||
|
||||
# Typst updates really quickly.
|
||||
typst = final.unstable.typst;
|
||||
typst-lsp = final.unstable.typst-lsp;
|
||||
|
||||
peertube = final.unstable.peertube;
|
||||
# Until 0.35 is in
|
||||
kitty = final.unstable.kitty;
|
||||
};
|
||||
overlay-imported = final: prev: {
|
||||
sway = prev.sway.override { sway-unwrapped = final.swayfx-unwrapped; };
|
||||
|
@ -26,7 +24,7 @@ let
|
|||
|
||||
overlay-versioning = final: prev: {
|
||||
gotosocial = prev.gotosocial.overrideAttrs (attrs: rec {
|
||||
version = "0.15.0";
|
||||
version = "0.16.0";
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
|
@ -36,13 +34,13 @@ let
|
|||
|
||||
web-assets = final.fetchurl {
|
||||
url = "https://github.com/superseriousbusiness/gotosocial/releases/download/v${version}/gotosocial_${version}_web-assets.tar.gz";
|
||||
hash = "sha256-vrSdFIdBcfj6+sxtvv1s/Mu85I1mKxjyUYS902oLKk4=";
|
||||
hash = "sha256-aZQpd5KvoZvXEMVzGbWrtGsc+P1JStjZ6U5mX6q7Vb0=";
|
||||
};
|
||||
src = final.fetchFromGitHub {
|
||||
owner = "superseriousbusiness";
|
||||
repo = "gotosocial";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-z0iETddkw4C2R6ig9ZO8MTvhuWnmQ37/6q3oZ4WAzd4=";
|
||||
hash = "sha256-QoG09+jmq5e5vxDVtkhY35098W/9B1HsYTuUnz43LV4=";
|
||||
};
|
||||
postInstall = ''
|
||||
tar xf ${web-assets}
|
||||
|
@ -61,14 +59,53 @@ let
|
|||
# patches in the original package was already applied
|
||||
];
|
||||
});
|
||||
|
||||
swayfx-unwrapped = prev.swayfx-unwrapped.overrideAttrs (attrs: {
|
||||
patches = (attrs.patches or [ ]) ++ [
|
||||
(final.fetchurl {
|
||||
url = "https://patch-diff.githubusercontent.com/raw/WillPower3309/swayfx/pull/315.patch";
|
||||
hash = "sha256-zamOLHUjlzRs8PytPTAzEsdzgVtK+HVziHgrhwPcB+E=";
|
||||
})
|
||||
];
|
||||
});
|
||||
|
||||
librewolf = (prev.librewolf.override {
|
||||
nativeMessagingHosts = with final; [ kdePackages.plasma-browser-integration ];
|
||||
});
|
||||
|
||||
# Add desktop file to premid
|
||||
premid = final.symlinkJoin {
|
||||
name = prev.premid.name;
|
||||
paths = [
|
||||
prev.premid
|
||||
(final.makeDesktopItem {
|
||||
name = prev.premid.name;
|
||||
desktopName = "PreMID";
|
||||
exec = "${final.lib.getExe prev.premid} --no-sandbox %U";
|
||||
icon = "premid";
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
overlay-libs = final: prev: {
|
||||
libs.crane = inputs.crane.lib.${prev.system};
|
||||
libs.crane = inputs.crane.mkLib final;
|
||||
};
|
||||
|
||||
overlay-packages = final: prev: {
|
||||
kak-tree-sitter = final.callPackage ./packages/common/kak-tree-sitter.nix { rustPlatform = final.unstable.rustPlatform; };
|
||||
|
||||
kak-lsp =
|
||||
let
|
||||
src = inputs.kak-lsp;
|
||||
cargoArtifacts = final.libs.crane.buildDepsOnly { inherit src; };
|
||||
in
|
||||
final.libs.crane.buildPackage {
|
||||
inherit src cargoArtifacts;
|
||||
buildInputs = (with final;
|
||||
lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ Security SystemConfiguration CoreServices ])
|
||||
) ++ (with final; [ libiconv ]);
|
||||
};
|
||||
};
|
||||
|
||||
overlay-aarch64-linux = final: prev:
|
||||
|
@ -102,6 +139,10 @@ let
|
|||
overlay-asahi = inputs.nixos-m1.overlays.default;
|
||||
in
|
||||
[
|
||||
inputs.swayfx.overlays.default
|
||||
inputs.mpd-mpris.overlays.default
|
||||
inputs.youmubot.overlays.default
|
||||
|
||||
(import ./overlays/openrazer)
|
||||
overlay-unstable
|
||||
overlay-needs-unstable
|
||||
|
@ -115,10 +156,6 @@ in
|
|||
|
||||
(import ./packages/common)
|
||||
|
||||
inputs.mpd-mpris.overlays.default
|
||||
inputs.swayfx.overlays.default
|
||||
inputs.youmubot.overlays.default
|
||||
|
||||
# Bug fixes
|
||||
] # we assign the overlay created before to the overlays of nixpkgs.
|
||||
|
||||
|
|
|
@ -1,20 +1,41 @@
|
|||
{ lib, rustPlatform, fetchFromGitHub, symlinkJoin, clang, git, ... }:
|
||||
{ lib, rustPlatform, fetchFromSourcehut, symlinkJoin, clang, git, writeText, ... }:
|
||||
let
|
||||
src = fetchFromGitHub {
|
||||
owner = "phaazon";
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~hadronized";
|
||||
repo = "kak-tree-sitter";
|
||||
rev = "61cce127ca03e3c969df1ff46f41074a3c69be31";
|
||||
hash = "sha256-wcgc1L6Y6obLTIonWLJzNK72fWW8oJ0yMEfGotCg5b8=";
|
||||
rev = "kak-tree-sitter-v1.1.2";
|
||||
hash = "sha256-wBWfSyR8LGtug/mCD0bJ4lbdN3trIA/03AnCxZoEOSA=";
|
||||
};
|
||||
|
||||
kak-tree-sitter = rustPlatform.buildRustPackage rec {
|
||||
kak-tree-sitter = rustPlatform.buildRustPackage {
|
||||
inherit src;
|
||||
pname = "kak-tree-sitter";
|
||||
version = "0.5.5-${lib.substring 0 6 src.rev}";
|
||||
cargoHash = "sha256-Ozzcn4k+1Q+50zxCy9Flvv8vZKNcAesrHT/izVAgn54=";
|
||||
version = "1.1.2";
|
||||
cargoHash = "sha256-OQPUWqJAts8DbFNSsC/CmMCbuZ9TVxRTR05O7oiodKI=";
|
||||
cargoBuildOptions = [ "--package" "kak-tree-sitter" "--package" "ktsctl" ];
|
||||
|
||||
nativeBuildInputs = [ clang git ];
|
||||
|
||||
patches = [
|
||||
# Allow absolute-path style repos
|
||||
(writeText "resources.patch" ''
|
||||
diff --git a/ktsctl/src/resources.rs b/ktsctl/src/resources.rs
|
||||
index f1da3ff..ac89345 100644
|
||||
--- a/ktsctl/src/resources.rs
|
||||
+++ b/ktsctl/src/resources.rs
|
||||
@@ -48,7 +48,8 @@ impl Resources {
|
||||
url
|
||||
.trim_start_matches("http")
|
||||
.trim_start_matches('s')
|
||||
- .trim_start_matches("://"),
|
||||
+ .trim_start_matches(":/")
|
||||
+ .trim_start_matches("/"),
|
||||
);
|
||||
|
||||
self.runtime_dir.join("sources").join(url_dir)
|
||||
'')
|
||||
];
|
||||
};
|
||||
in
|
||||
kak-tree-sitter
|
||||
|
||||
|
|
Loading…
Reference in a new issue