Compare commits
10 commits
Author | SHA1 | Date | |
---|---|---|---|
4c09acde73 | |||
931380d698 | |||
ad403bad0a | |||
50eacc53ee | |||
44a4ac95a9 | |||
c6a0a4f631 | |||
dacc41068b | |||
32771cf392 | |||
7539811ce3 | |||
c6100f63d7 |
71 changed files with 1208 additions and 400 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
secrets.nix
|
secrets.nix
|
||||||
|
result
|
||||||
|
|
366
flake.lock
generated
366
flake.lock
generated
|
@ -16,20 +16,42 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"colmena": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nix-github-actions": "nix-github-actions",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"stable": "stable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731527002,
|
||||||
|
"narHash": "sha256-dI9I6suECoIAmbS4xcrqF8r2pbmed8WWm5LIF1yWPw8=",
|
||||||
|
"owner": "zhaofengli",
|
||||||
|
"repo": "colmena",
|
||||||
|
"rev": "e3ad42138015fcdf2524518dd564a13145c72ea1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "zhaofengli",
|
||||||
|
"repo": "colmena",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"firefox-addons": {
|
"firefox-addons": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"dir": "/pkgs/firefox-addons",
|
"dir": "/pkgs/firefox-addons",
|
||||||
"lastModified": 1733875367,
|
"lastModified": 1734648163,
|
||||||
"narHash": "sha256-eBMHOM1KvbK8dTrM4N8ytNl8NeJF4lLyoPBRae1CqKs=",
|
"narHash": "sha256-AK7nqONfzyxUzqVVeRoniO6NRv4SaxPrXwuyY8jtCXs=",
|
||||||
"owner": "rycee",
|
"owner": "rycee",
|
||||||
"repo": "nur-expressions",
|
"repo": "nur-expressions",
|
||||||
"rev": "bda0131e0a7b6b5b687f5ffd8a8622054e7c444d",
|
"rev": "2b5a7eb2719b146f6308dfa51c9a1c4b03d965a3",
|
||||||
"type": "gitlab"
|
"type": "gitlab"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -42,7 +64,7 @@
|
||||||
"firefox-nightly": {
|
"firefox-nightly": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"cachix": "cachix",
|
"cachix": "cachix",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat_2",
|
||||||
"lib-aggregate": "lib-aggregate",
|
"lib-aggregate": "lib-aggregate",
|
||||||
"mozilla": "mozilla",
|
"mozilla": "mozilla",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -50,11 +72,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733834155,
|
"lastModified": 1734743419,
|
||||||
"narHash": "sha256-5A7EfzSmdApKmfHGtGZ4NQvMEpI/NI6VIzTNq9sUH4E=",
|
"narHash": "sha256-MAl+QDhPVXypYKjLZ6WU5JLY8VjGt4lecdmwCkBwMN8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "flake-firefox-nightly",
|
"repo": "flake-firefox-nightly",
|
||||||
"rev": "f0ab3cfa3607e08169b1d87e63fe9b1e5a57f515",
|
"rev": "dfb2631ee449ba3df206cb8f1d9558f242851e0b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -64,6 +86,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1650374568,
|
||||||
|
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717312683,
|
"lastModified": 1717312683,
|
||||||
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
|
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
|
||||||
|
@ -78,7 +116,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat_2": {
|
"flake-compat_3": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696426674,
|
"lastModified": 1696426674,
|
||||||
|
@ -95,6 +133,21 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
|
"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_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1629284811,
|
"lastModified": 1629284811,
|
||||||
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
|
"narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=",
|
||||||
|
@ -109,7 +162,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
|
@ -127,9 +180,9 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_3": {
|
"flake-utils_4": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_2"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1710146030,
|
||||||
|
@ -145,9 +198,9 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_4": {
|
"flake-utils_5": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_3"
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681202837,
|
"lastModified": 1681202837,
|
||||||
|
@ -163,6 +216,30 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flatpaks": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733581530,
|
||||||
|
"narHash": "sha256-W+orHmF+XpZosrBFAFRs7sS1iVKYveg9SutkzSXMVsI=",
|
||||||
|
"owner": "GermanBread",
|
||||||
|
"repo": "declarative-flatpak",
|
||||||
|
"rev": "b88bd5b65f8e7c35eec0a90cfd6e096b2e7f79c0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "GermanBread",
|
||||||
|
"repo": "declarative-flatpak",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -170,11 +247,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733873195,
|
"lastModified": 1734622215,
|
||||||
"narHash": "sha256-dTosiZ3sZ/NKoLKQ++v8nZdEHya0eTNEsaizNp+MUPM=",
|
"narHash": "sha256-OOfI0XhSJGHblfdNDhfnn8QnZxng63rWk9eeJ2tCbiI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "f26aa4b76fb7606127032d33ac73d7d507d82758",
|
"rev": "1395379a7a36e40f2a76e7b9936cc52950baa1be",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -186,15 +263,15 @@
|
||||||
},
|
},
|
||||||
"lib-aggregate": {
|
"lib-aggregate": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_3",
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733660018,
|
"lastModified": 1734264809,
|
||||||
"narHash": "sha256-DHW2Hzyo8W6wVPGFaYLM9mKMH/qAtHJSUZ4ti7LHMCY=",
|
"narHash": "sha256-94fu5E0gM8aMY0bX/ix7BWGf/e/OfGjoCtNrJfwL0dM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "lib-aggregate",
|
"repo": "lib-aggregate",
|
||||||
"rev": "f710791be27b31ea1ee9c40a94d08bcbba99b3c0",
|
"rev": "46bedda9e45f2735f41ec3c01cba2b8ce7ba9808",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -219,6 +296,53 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nix-formatter-pack": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nix-on-droid",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nmd": [
|
||||||
|
"nix-on-droid",
|
||||||
|
"nmd"
|
||||||
|
],
|
||||||
|
"nmt": "nmt"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705252799,
|
||||||
|
"narHash": "sha256-HgSTREh7VoXjGgNDwKQUYcYo13rPkltW7IitHrTPA5c=",
|
||||||
|
"owner": "Gerschtli",
|
||||||
|
"repo": "nix-formatter-pack",
|
||||||
|
"rev": "2de39dedd79aab14c01b9e2934842051a160ffa5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Gerschtli",
|
||||||
|
"repo": "nix-formatter-pack",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-github-actions": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"colmena",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729742964,
|
||||||
|
"narHash": "sha256-B4mzTcQ0FZHdpeWcpDYPERtyjJd/NIuaQ9+BV1h+MpA=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"rev": "e04df33f62cdcf93d73e9a04142464753a16db67",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-github-actions",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nix-index-database": {
|
"nix-index-database": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -226,11 +350,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733629314,
|
"lastModified": 1734234111,
|
||||||
"narHash": "sha256-U0vivjQFAwjNDYt49Krevs1murX9hKBFe2Ye0cHpgbU=",
|
"narHash": "sha256-icEMqBt4HtGH52PU5FHidgBrNJvOfXH6VQKNtnD1aw8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "f1e477a7dd11e27e7f98b646349cd66bbabf2fb8",
|
"rev": "311d6cf3ad3f56cb051ffab1f480b2909b3f754d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -239,6 +363,33 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nix-on-droid": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": [
|
||||||
|
"home-manager"
|
||||||
|
],
|
||||||
|
"nix-formatter-pack": "nix-formatter-pack",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-docs": "nixpkgs-docs",
|
||||||
|
"nixpkgs-for-bootstrap": "nixpkgs-for-bootstrap",
|
||||||
|
"nmd": "nmd"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725658585,
|
||||||
|
"narHash": "sha256-P29z4Gt89n5ps1U7+qmIrj0BuRXGZQSIaOe2+tsPgfw=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-on-droid",
|
||||||
|
"rev": "5d88ff2519e4952f8d22472b52c531bb5f1635fc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-on-droid",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixos-grub-themes": {
|
"nixos-grub-themes": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -261,11 +412,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733759999,
|
"lastModified": 1730785428,
|
||||||
"narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=",
|
"narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56",
|
"rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -275,29 +426,45 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-24-11": {
|
"nixpkgs-docs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733550349,
|
"lastModified": 1705957679,
|
||||||
"narHash": "sha256-NcGumB4Lr6KSDq+nIqXtNA8QwAQKDSZT7N9OTGWbTrs=",
|
"narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e2605d0744c2417b09f8bf850dfca42fcf537d34",
|
"rev": "9a333eaa80901efe01df07eade2c16d183761fa3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-24.11",
|
"ref": "release-23.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-for-bootstrap": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1720244366,
|
||||||
|
"narHash": "sha256-WrDV0FPMVd2Sq9hkR5LNHudS3OSMmUrs90JUTN+MXpA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "49ee0e94463abada1de470c9c07bfc12b36dcf40",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "49ee0e94463abada1de470c9c07bfc12b36dcf40",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733620091,
|
"lastModified": 1734224914,
|
||||||
"narHash": "sha256-5WoMeCkaXqTZwwCNLRzyLxEJn8ISwjx4cNqLgqKwg9s=",
|
"narHash": "sha256-hKWALzQ/RxxXdKWsLKXULru6XTag9Cc5exgVyS4a/AE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "f4dc9a6c02e5e14d91d158522f69f6ab4194eb5b",
|
"rev": "538697b664a64fade8ce628d01f35d1f1fd82d77",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -308,16 +475,56 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1682134069,
|
"lastModified": 1734424634,
|
||||||
"narHash": "sha256-TnI/ZXSmRxQDt2sjRYK/8j8iha4B4zP2cnQCZZ3vp7k=",
|
"narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "fd901ef4bf93499374c5af385b2943f5801c0833",
|
"rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"owner": "NixOS",
|
||||||
"type": "indirect"
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nmd": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nix-on-droid",
|
||||||
|
"nixpkgs-docs"
|
||||||
|
],
|
||||||
|
"scss-reset": "scss-reset"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705050560,
|
||||||
|
"narHash": "sha256-x3zzcdvhJpodsmdjqB4t5mkVW22V3wqHLOun0KRBzUI=",
|
||||||
|
"owner": "~rycee",
|
||||||
|
"repo": "nmd",
|
||||||
|
"rev": "66d9334933119c36f91a78d565c152a4fdc8d3d3",
|
||||||
|
"type": "sourcehut"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "~rycee",
|
||||||
|
"repo": "nmd",
|
||||||
|
"type": "sourcehut"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nmt": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1648075362,
|
||||||
|
"narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=",
|
||||||
|
"owner": "rycee",
|
||||||
|
"repo": "nmt",
|
||||||
|
"rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae",
|
||||||
|
"type": "gitlab"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rycee",
|
||||||
|
"repo": "nmt",
|
||||||
|
"type": "gitlab"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plasma-manager": {
|
"plasma-manager": {
|
||||||
|
@ -345,19 +552,37 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"colmena": "colmena",
|
||||||
"firefox-addons": "firefox-addons",
|
"firefox-addons": "firefox-addons",
|
||||||
"firefox-nightly": "firefox-nightly",
|
"firefox-nightly": "firefox-nightly",
|
||||||
|
"flatpaks": "flatpaks",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nix-index-database": "nix-index-database",
|
"nix-index-database": "nix-index-database",
|
||||||
|
"nix-on-droid": "nix-on-droid",
|
||||||
"nixos-grub-themes": "nixos-grub-themes",
|
"nixos-grub-themes": "nixos-grub-themes",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixpkgs-24-11": "nixpkgs-24-11",
|
|
||||||
"plasma-manager": "plasma-manager",
|
"plasma-manager": "plasma-manager",
|
||||||
"sddm-sugar-candy-nix": "sddm-sugar-candy-nix",
|
"sddm-sugar-candy-nix": "sddm-sugar-candy-nix",
|
||||||
"vscode-extensions": "vscode-extensions",
|
"vscode-extensions": "vscode-extensions",
|
||||||
"vscode-server": "vscode-server"
|
"vscode-server": "vscode-server"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"scss-reset": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1631450058,
|
||||||
|
"narHash": "sha256-muDlZJPtXDIGevSEWkicPP0HQ6VtucbkMNygpGlBEUM=",
|
||||||
|
"owner": "andreymatin",
|
||||||
|
"repo": "scss-reset",
|
||||||
|
"rev": "0cf50e27a4e95e9bb5b1715eedf9c54dee1a5a91",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "andreymatin",
|
||||||
|
"repo": "scss-reset",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"sddm-sugar-candy-nix": {
|
"sddm-sugar-candy-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -378,6 +603,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1730883749,
|
||||||
|
"narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "dba414932936fde69f0606b4f1d87c5bc0003ede",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
|
@ -395,16 +636,16 @@
|
||||||
},
|
},
|
||||||
"systems_2": {
|
"systems_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1689347949,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default-linux",
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default-linux",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -423,20 +664,35 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_4": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"vscode-extensions": {
|
"vscode-extensions": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_3",
|
||||||
"flake-utils": "flake-utils_3",
|
"flake-utils": "flake-utils_4",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1733795858,
|
"lastModified": 1734659394,
|
||||||
"narHash": "sha256-K595Q2PrZv2iiumdBkwM2G456T2lKsLD71bn/fbJiQ0=",
|
"narHash": "sha256-rI7fcI4+J+iAiCvQ0J3hECJJGD9cAVTAFRTj1xrX6Qo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-vscode-extensions",
|
"repo": "nix-vscode-extensions",
|
||||||
"rev": "66ced222ef9235f90dbdd754ede3d6476722aaa9",
|
"rev": "1792f1bbfccbd5ebcb745250e4fc57067c6dfd9c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -447,8 +703,10 @@
|
||||||
},
|
},
|
||||||
"vscode-server": {
|
"vscode-server": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_4",
|
"flake-utils": "flake-utils_5",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729422940,
|
"lastModified": 1729422940,
|
||||||
|
|
110
flake.nix
110
flake.nix
|
@ -4,7 +4,11 @@
|
||||||
inputs = {
|
inputs = {
|
||||||
# General NixOS config
|
# General NixOS config
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixpkgs-24-11.url = "github:NixOS/nixpkgs/nixos-24.11";
|
# Colmena unstable
|
||||||
|
colmena = {
|
||||||
|
url = "github:zhaofengli/colmena";
|
||||||
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
# Nixpkgs index for command-not-found support
|
# Nixpkgs index for command-not-found support
|
||||||
nix-index-database = {
|
nix-index-database = {
|
||||||
url = "github:nix-community/nix-index-database";
|
url = "github:nix-community/nix-index-database";
|
||||||
|
@ -49,76 +53,58 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
# VSCode server support
|
# VSCode server support
|
||||||
vscode-server.url = "github:nix-community/nixos-vscode-server";
|
vscode-server = {
|
||||||
|
url = "github:nix-community/nixos-vscode-server";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
# Flatpak support
|
||||||
|
flatpaks = {
|
||||||
|
url = "github:GermanBread/declarative-flatpak";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
# Nix-on-droid support
|
||||||
|
nix-on-droid = {
|
||||||
|
url = "github:nix-community/nix-on-droid";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs@{ nixpkgs, home-manager, plasma-manager, nix-index-database, vscode-server, ... }: let
|
outputs = inputs@{ self, nixpkgs, colmena, nix-on-droid, ... }: let
|
||||||
system = "x86_64-linux";
|
utils = import ./utils {
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
inherit inputs;
|
||||||
secrets = import ./secrets.nix;
|
secrets = import ./secrets.nix;
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
nixosConfigurations.ty-nixos = nixpkgs.lib.nixosSystem {
|
# Setup nixos-rebuild configurations
|
||||||
inherit system;
|
nixosConfigurations = {
|
||||||
|
"ty-nixos" = utils.createNixosSystem { entrypoint = ./hosts/laptop; };
|
||||||
modules = [
|
"ty-laptop-server" = utils.createNixosSystem { entrypoint = ./hosts/laptop-server; };
|
||||||
./hosts/laptop
|
|
||||||
|
|
||||||
# Better command-not-found
|
|
||||||
nix-index-database.nixosModules.nix-index
|
|
||||||
{ programs.nix-index-database.comma.enable = true; }
|
|
||||||
|
|
||||||
# Home manager
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
./home-manager
|
|
||||||
{
|
|
||||||
ty-home-manager-options = {
|
|
||||||
plasma.enable = true;
|
|
||||||
beets.enable = true;
|
|
||||||
firefox.enable = true;
|
|
||||||
thunderbird.enable = true;
|
|
||||||
rescrobbled.enable = true;
|
|
||||||
vscode.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Setup colmena configurations
|
||||||
|
colmena = utils.createColmenaHive {
|
||||||
|
hostConfigs = [
|
||||||
|
{
|
||||||
|
name = "ty-nixos";
|
||||||
|
entrypoint = ./hosts/laptop;
|
||||||
|
allowLocal = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "ty-laptop-server";
|
||||||
|
entrypoint = ./hosts/laptop-server;
|
||||||
|
sshHost = "old-lenovo-laptop";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs system secrets;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosConfigurations."ty-laptop-server" = nixpkgs.lib.nixosSystem {
|
# Setup nix-on-droid configurations
|
||||||
inherit system;
|
nixOnDroidConfigurations.default = utils.createDroidSystem { entrypoint = ./nix-on-droid/ty-pixel; };
|
||||||
|
|
||||||
modules = [
|
# Enable direct flake support for colmena
|
||||||
./hosts/laptop-server
|
colmenaHive = colmena.lib.makeHive self.outputs.colmena;
|
||||||
|
|
||||||
# Better command-not-found
|
|
||||||
nix-index-database.nixosModules.nix-index
|
|
||||||
{ programs.nix-index-database.comma.enable = true; }
|
|
||||||
|
|
||||||
# Home manager
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
./home-manager
|
|
||||||
{
|
|
||||||
ty-home-manager-options = {
|
|
||||||
plasma.enable = false;
|
|
||||||
beets.enable = false;
|
|
||||||
firefox.enable = false;
|
|
||||||
thunderbird.enable = false;
|
|
||||||
rescrobbled.enable = false;
|
|
||||||
vscode.enable = false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
# VSCode server support
|
|
||||||
vscode-server.nixosModules.default
|
|
||||||
({ pkgs, ... }: { services.vscode-server = { enable = true; nodejsPackage = pkgs.nodejs-18_x; installPath = "$HOME/.vscodium-server"; }; })
|
|
||||||
];
|
|
||||||
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs system secrets;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ lib, config, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./email.nix
|
./email.nix
|
|
@ -1,6 +1,6 @@
|
||||||
{ lib, ty-home-manager-options, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
accounts.email.accounts = lib.mkIf ty-home-manager-options.thunderbird.enable {
|
accounts.email.accounts = lib.mkIf config.meta.home-manager.email.enable {
|
||||||
PurelyMail = rec {
|
PurelyMail = rec {
|
||||||
realName = "Tyler Beckman";
|
realName = "Tyler Beckman";
|
||||||
address = "ty@myriation.xyz";
|
address = "ty@myriation.xyz";
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
thunderbird.enable = true;
|
thunderbird.enable = config.meta.home-manager.email.thunderbird.enable;
|
||||||
};
|
};
|
||||||
|
|
||||||
Gmail = rec {
|
Gmail = rec {
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
|
|
||||||
smtp.tls.useStartTls = false;
|
smtp.tls.useStartTls = false;
|
||||||
|
|
||||||
thunderbird.enable = true;
|
thunderbird.enable = config.meta.home-manager.email.thunderbird.enable;
|
||||||
};
|
};
|
||||||
|
|
||||||
School = rec {
|
School = rec {
|
|
@ -1,6 +1,6 @@
|
||||||
{ lib, secrets, ty-home-manager-options, ... }:
|
{ lib, secrets, config, ... }:
|
||||||
{
|
{
|
||||||
programs.beets = lib.mkIf ty-home-manager-options.beets.enable {
|
programs.beets = lib.mkIf config.meta.home-manager.beets.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
23
home-manager/config/default.nix
Normal file
23
home-manager/config/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# Directories
|
||||||
|
./accounts
|
||||||
|
./shell
|
||||||
|
./vcs
|
||||||
|
# Individual files
|
||||||
|
./beets.nix
|
||||||
|
./desktop.nix
|
||||||
|
./flatpak.nix
|
||||||
|
./firefox.nix
|
||||||
|
./gpg.nix
|
||||||
|
./gtk.nix
|
||||||
|
./packages.nix
|
||||||
|
./plasma.nix
|
||||||
|
./prismlauncher.nix
|
||||||
|
./rescrobbled.nix
|
||||||
|
./thunderbird.nix
|
||||||
|
./vscode.nix
|
||||||
|
./zed.nix
|
||||||
|
];
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{ lib, ty-home-manager-options, ... }:
|
{ lib, config, ... }:
|
||||||
{
|
{
|
||||||
xdg.desktopEntries = lib.mkIf ty-home-manager-options.plasma.enable {
|
xdg.desktopEntries = lib.mkIf config.meta.home-manager.desktop.enable {
|
||||||
# Override vesktop for matching icon in beautyline (make it generic discord icon)
|
# Override vesktop for matching icon in beautyline (make it generic discord icon)
|
||||||
vesktop = {
|
vesktop = {
|
||||||
categories = [ "Network" "InstantMessaging" "Chat" ];
|
categories = [ "Network" "InstantMessaging" "Chat" ];
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, inputs, system, lib, ty-home-manager-options, ... }:
|
{ pkgs, inputs, system, lib, config, ... }:
|
||||||
{
|
{
|
||||||
programs.firefox = lib.mkIf ty-home-manager-options.firefox.enable {
|
programs.firefox = lib.mkIf config.meta.home-manager.firefox.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
policies = {
|
policies = {
|
||||||
ExtensionSettings = {
|
ExtensionSettings = {
|
||||||
|
@ -160,8 +160,8 @@
|
||||||
};
|
};
|
||||||
# NixOS Wiki Search
|
# NixOS Wiki Search
|
||||||
"NixOS Wiki" = {
|
"NixOS Wiki" = {
|
||||||
urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
|
urls = [{ template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; }];
|
||||||
iconUpdateURL = "https://nixos.wiki/favicon.png";
|
iconUpdateURL = "https://wiki.nixos.org/nixos.png";
|
||||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
updateInterval = 24 * 60 * 60 * 1000; # every day
|
||||||
definedAliases = [ "@nw" ];
|
definedAliases = [ "@nw" ];
|
||||||
};
|
};
|
15
home-manager/config/flatpak.nix
Normal file
15
home-manager/config/flatpak.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
|
{
|
||||||
|
xdg.systemDirs.data = lib.optionals
|
||||||
|
config.meta.home-manager.desktop.enable
|
||||||
|
[ "/var/lib/flatpak/exports/share" "${config.xdg.dataHome}/flatpak/exports/share" ];
|
||||||
|
services.flatpak = lib.mkIf config.meta.home-manager.desktop.enable {
|
||||||
|
enableModule = true;
|
||||||
|
packages = [
|
||||||
|
"sober:app/org.vinegarhq.Sober/x86_64/master"
|
||||||
|
];
|
||||||
|
remotes = {
|
||||||
|
sober = "https://sober.vinegarhq.org/sober.flatpakref";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, config, ... }:
|
||||||
{
|
{
|
||||||
programs.gpg = {
|
programs.gpg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
enableSshSupport = true;
|
enableSshSupport = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
pinentryPackage = pkgs.pinentry-qt;
|
pinentryPackage = if (config.meta.home-manager.desktop.enable) then pkgs.pinentry-qt else pkgs.pinentry-tty;
|
||||||
sshKeys = [
|
sshKeys = [
|
||||||
"817A829FB1FB95441156F93C7F4FD04ACDDE5E48 0"
|
"817A829FB1FB95441156F93C7F4FD04ACDDE5E48 0"
|
||||||
];
|
];
|
|
@ -1,12 +1,12 @@
|
||||||
{ pkgs, lib, config, ty-home-manager-options, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
config = lib.mkIf ty-home-manager-options.plasma.enable {
|
config = lib.mkIf config.meta.home-manager.desktop.enable {
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||||
|
|
||||||
theme = {
|
theme = lib.mkIf config.meta.home-manager.desktop.plasma.enable {
|
||||||
name = "Breeze-Dark";
|
name = "Breeze-Dark";
|
||||||
package = pkgs.kdePackages.breeze-gtk;
|
package = pkgs.kdePackages.breeze-gtk;
|
||||||
};
|
};
|
91
home-manager/config/packages.nix
Executable file
91
home-manager/config/packages.nix
Executable file
|
@ -0,0 +1,91 @@
|
||||||
|
{ pkgs, inputs, system, lib, config, ... }:
|
||||||
|
{
|
||||||
|
home.packages =
|
||||||
|
## Packages that are always installed, no matter what
|
||||||
|
(with pkgs; [
|
||||||
|
# :3
|
||||||
|
fastfetch # Modern & faster neofetch alternative
|
||||||
|
|
||||||
|
# CLI Tools
|
||||||
|
ripgrep # Text searching and manipulation
|
||||||
|
jq # JSON filtering
|
||||||
|
eza # Directory lister
|
||||||
|
bat # File reading
|
||||||
|
doggo # DNS Requests
|
||||||
|
nmap # Network scanning
|
||||||
|
glow # Markdown rendering
|
||||||
|
tealdeer # TLDR
|
||||||
|
usbutils # `lsusb`
|
||||||
|
pciutils # `lspci`
|
||||||
|
unzip # Extract zip files
|
||||||
|
|
||||||
|
# Editor
|
||||||
|
neovim # CLI-Based editor
|
||||||
|
|
||||||
|
# Process tools
|
||||||
|
btop # Process monitor
|
||||||
|
hyperfine # CLI Benchmarker
|
||||||
|
])
|
||||||
|
## Packages that are only installed when a desktop environment is desired
|
||||||
|
++ (lib.optionals config.meta.home-manager.desktop.enable (with pkgs; [
|
||||||
|
# Documents
|
||||||
|
logseq # Outliner
|
||||||
|
libreoffice-qt6-fresh # Office-style editing
|
||||||
|
hunspell
|
||||||
|
hunspellDicts.en_US-large
|
||||||
|
|
||||||
|
# Video
|
||||||
|
jellyfin-media-player # Jellyfin electron client w/ MPV
|
||||||
|
vlc # Video file player
|
||||||
|
|
||||||
|
# Chat
|
||||||
|
element-desktop # Matrix client
|
||||||
|
vesktop # Discord client
|
||||||
|
signal-desktop # Signal client
|
||||||
|
|
||||||
|
# KDE Themes
|
||||||
|
vimix-cursors # Cursors
|
||||||
|
(pkgs.callPackage ../../packages/beautyline {}) # Icons
|
||||||
|
(pkgs.callPackage ../../packages/magna-splash-6 {}) # Splash
|
||||||
|
|
||||||
|
# Programming
|
||||||
|
jetbrains.idea-ultimate # Jetbrains IntelliJ Idea Ultimate IDE
|
||||||
|
jetbrains.rust-rover # Jetbrains Rust IDE
|
||||||
|
nixd # LSP for .nix files
|
||||||
|
gcc # GNU C++ Compiler
|
||||||
|
(lib.meta.hiPrio clang) # LLVM C++ Compiler (better than g++)
|
||||||
|
clang-tools # Clang language server
|
||||||
|
cling # C++ REPL
|
||||||
|
deno # Typescript & Javascript runtime
|
||||||
|
gnumake # Makefile support
|
||||||
|
httptoolkit # HTTP Interception
|
||||||
|
android-tools # ADB and the such
|
||||||
|
beekeeper-studio # SQL Database viewer
|
||||||
|
|
||||||
|
# Games
|
||||||
|
(heroic.override {
|
||||||
|
extraPkgs = pkgs: [
|
||||||
|
pkgs.gamemode
|
||||||
|
pkgs.gamescope
|
||||||
|
];
|
||||||
|
}) # GOG & Epic Games Launcher
|
||||||
|
|
||||||
|
# UI Tools
|
||||||
|
qalculate-qt # Calculator
|
||||||
|
|
||||||
|
# Process tools cont.
|
||||||
|
nvtopPackages.full # GPU Monitor, only really necessary if we have a GPU to look at
|
||||||
|
]))
|
||||||
|
## Packages that are only installed if plasma is used as the desktop environment
|
||||||
|
++ (lib.optionals config.meta.home-manager.desktop.plasma.enable (with pkgs.kdePackages; [
|
||||||
|
kate # IDE
|
||||||
|
elisa # Music
|
||||||
|
kdeconnect-kde # Phone sync
|
||||||
|
polkit-kde-agent-1 # Polkit authentication popup support
|
||||||
|
]))
|
||||||
|
## Firefox is only installed when requested
|
||||||
|
++ (lib.optionals config.meta.home-manager.firefox.enable [
|
||||||
|
# Firefox nightly
|
||||||
|
inputs.firefox-nightly.packages.${system}.firefox-nightly-bin
|
||||||
|
]);
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, lib, ty-home-manager-options, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
programs.plasma = lib.mkIf ty-home-manager-options.plasma.enable {
|
programs.plasma = lib.mkIf config.meta.home-manager.desktop.plasma.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
workspace = {
|
workspace = {
|
6
home-manager/config/prismlauncher.nix
Normal file
6
home-manager/config/prismlauncher.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
{
|
||||||
|
programs.custom.prism-launcher = lib.mkIf config.meta.home-manager.desktop.enable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
23
home-manager/config/rescrobbled.nix
Normal file
23
home-manager/config/rescrobbled.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ secrets, lib, config, ... }:
|
||||||
|
{
|
||||||
|
config = lib.mkIf config.meta.home-manager.rescrobbled.enable {
|
||||||
|
services.custom.rescrobbled = let s = secrets.programs.rescrobbled; in lib.mkIf s.enable {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
session = s.lastfm.session;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
player-whitelist = [ "elisa" ];
|
||||||
|
|
||||||
|
listenbrainz = lib.mkIf (s.listenbrainz.token != null) [
|
||||||
|
{
|
||||||
|
token = s.listenbrainz.token;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
lastfm-key = lib.mkIf (s.lastfm.key != null && s.lastfm.secret != null) s.lastfm.key;
|
||||||
|
lastfm-secret = lib.mkIf (s.lastfm.key != null && s.lastfm.secret != null) s.lastfm.secret;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -9,6 +9,7 @@
|
||||||
truecolor = true;
|
truecolor = true;
|
||||||
shown_boxes = "proc cpu mem net gpu0";
|
shown_boxes = "proc cpu mem net gpu0";
|
||||||
update_ms = 100;
|
update_ms = 100;
|
||||||
|
temp_scale = "fahrenheit";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, lib, ty-home-manager-options, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
programs.konsole = lib.mkIf ty-home-manager-options.plasma.enable {
|
programs.konsole = lib.mkIf config.meta.home-manager.desktop.plasma.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultProfile = "Primary";
|
defaultProfile = "Primary";
|
||||||
profiles = {
|
profiles = {
|
|
@ -57,10 +57,9 @@
|
||||||
hostname = {
|
hostname = {
|
||||||
disabled = false;
|
disabled = false;
|
||||||
ssh_only = false;
|
ssh_only = false;
|
||||||
ssh_symbol = "🌐 ";
|
|
||||||
trim_at = "";
|
trim_at = "";
|
||||||
style = "bg:prev_bg fg:prev_fg";
|
style = "bg:prev_bg fg:prev_fg";
|
||||||
format = "[$ssh_symbol$hostname]($style)";
|
format = "[$hostname]($style)";
|
||||||
};
|
};
|
||||||
|
|
||||||
shell = {
|
shell = {
|
|
@ -24,6 +24,17 @@
|
||||||
bindkey "^H" backward-kill-word
|
bindkey "^H" backward-kill-word
|
||||||
bindkey "^Z" undo
|
bindkey "^Z" undo
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
# Disable saving the history file, as it is handled by atuin
|
||||||
|
history = {
|
||||||
|
# Tell it to not save anything to disk
|
||||||
|
save = 0;
|
||||||
|
# If it still tries to save anything, have it write to /dev/null instead just in case
|
||||||
|
path = "/dev/null";
|
||||||
|
# We leave size at the default to allow zsh to have command history in memory
|
||||||
|
# for features like !! or !cmdname, but simply have it stop writing to disk
|
||||||
|
size = 10000;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Atuin shell history
|
# Atuin shell history
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, lib, ty-home-manager-options, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
programs.thunderbird = lib.mkIf ty-home-manager-options.thunderbird.enable {
|
programs.thunderbird = lib.mkIf config.meta.home-manager.email.thunderbird.enable {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.thunderbird-latest;
|
package = pkgs.thunderbird-latest;
|
||||||
profiles = {
|
profiles = {
|
|
@ -1,6 +1,6 @@
|
||||||
{ pkgs, inputs, system, lib, ty-home-manager-options, ... }:
|
{ pkgs, inputs, system, lib, config, ... }:
|
||||||
{
|
{
|
||||||
programs.vscode = lib.mkIf ty-home-manager-options.vscode.enable (
|
programs.vscode = lib.mkIf config.meta.home-manager.vscode.enable (
|
||||||
let vscode-package = pkgs.vscodium; in {
|
let vscode-package = pkgs.vscodium; in {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = vscode-package;
|
package = vscode-package;
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
# Language support
|
# Language support
|
||||||
rust-lang.rust-analyzer # Rust
|
rust-lang.rust-analyzer # Rust
|
||||||
llvm-vs-code-extensions.vscode-clangd # C++
|
llvm-vs-code-extensions.vscode-clangd # C++
|
||||||
vadimcn.vscode-lldb # C++ Debugging
|
# vadimcn.vscode-lldb # C++ Debugging
|
||||||
jnoortheen.nix-ide # Nix
|
jnoortheen.nix-ide # Nix
|
||||||
tamasfe.even-better-toml # TOML
|
tamasfe.even-better-toml # TOML
|
||||||
yzhang.markdown-all-in-one # Markdown
|
yzhang.markdown-all-in-one # Markdown
|
||||||
|
@ -38,12 +38,15 @@
|
||||||
mkhl.direnv # nix-direnv autoloading
|
mkhl.direnv # nix-direnv autoloading
|
||||||
cschlosser.doxdocgen # C++ Doxygen generator
|
cschlosser.doxdocgen # C++ Doxygen generator
|
||||||
tomoki1207.pdf # PDF Viewing
|
tomoki1207.pdf # PDF Viewing
|
||||||
|
exodiusstudios.comment-anchors # Comment anchors and highlighting
|
||||||
])
|
])
|
||||||
++ (with vscode-marketplace; [
|
++ (with vscode-marketplace; [
|
||||||
yy0931.save-as-root # Save as root over SSH
|
yy0931.save-as-root # Save as root over SSH
|
||||||
akiramiyakoda.cppincludeguard # Auto-insert header guards for header files
|
akiramiyakoda.cppincludeguard # Auto-insert header guards for header files
|
||||||
])
|
])
|
||||||
);
|
) ++ (with pkgs.vscode-extensions; [
|
||||||
|
vadimcn.vscode-lldb
|
||||||
|
]);
|
||||||
|
|
||||||
userSettings = {
|
userSettings = {
|
||||||
# Editor
|
# Editor
|
79
home-manager/config/zed.nix
Normal file
79
home-manager/config/zed.nix
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.zed-editor = lib.mkIf config.meta.home-manager.vscode.enable {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extensions = [
|
||||||
|
# Language support
|
||||||
|
"nix" "toml" "deno" "kotlin"
|
||||||
|
# Themes
|
||||||
|
"catppuccin"
|
||||||
|
];
|
||||||
|
|
||||||
|
userSettings = {
|
||||||
|
auto_update = false;
|
||||||
|
base_keymap = "VSCode";
|
||||||
|
load_direnv = "shell_hook";
|
||||||
|
show_whitespaces = "boundary";
|
||||||
|
tab_size = 4;
|
||||||
|
theme = "Catppuccin Mocha";
|
||||||
|
buffer_font_family = "FiraCode Nerd Font";
|
||||||
|
format_on_save = "off";
|
||||||
|
soft_wrap = "none";
|
||||||
|
|
||||||
|
terminal = {
|
||||||
|
dock = "bottom";
|
||||||
|
font_family = "FiraCode Nerd Font";
|
||||||
|
font_size = 14;
|
||||||
|
line_height = "standard"; # Comfortable breaks my powerline
|
||||||
|
working_directory = "current_project_directory";
|
||||||
|
env.TERM = "xterm-256color";
|
||||||
|
};
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
rust-analyzer = {
|
||||||
|
binary = {
|
||||||
|
path = lib.getExe pkgs.rust-analyzer;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
binary = {
|
||||||
|
path = lib.getExe pkgs.nixd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
vtsls = {
|
||||||
|
binary = {
|
||||||
|
path = lib.getExe pkgs.vtsls;
|
||||||
|
arguments = [ "--stdio" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
kotlin-language-server = {
|
||||||
|
binary = {
|
||||||
|
path = lib.getExe' pkgs.kotlin-language-server "kotlin-language-server";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
languages = {
|
||||||
|
Nix = {
|
||||||
|
language_servers = [ "nixd" "!nil" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Disable the bullshit
|
||||||
|
assistant = {
|
||||||
|
enabled = false;
|
||||||
|
button = false;
|
||||||
|
version = "1";
|
||||||
|
};
|
||||||
|
features.inline_completion_provider = "none";
|
||||||
|
telemetry = {
|
||||||
|
diagnostics = false;
|
||||||
|
metrics = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,85 +0,0 @@
|
||||||
{ pkgs, lib, config, ... }:
|
|
||||||
let tomlFormat = pkgs.formats.toml { }; in {
|
|
||||||
options = {
|
|
||||||
services.custom.rescrobbled = {
|
|
||||||
enable = lib.mkEnableOption "rescrobbled";
|
|
||||||
|
|
||||||
package = lib.mkOption {
|
|
||||||
type = lib.types.package;
|
|
||||||
default = (pkgs.callPackage ../../packages/rescrobbled {});
|
|
||||||
defaultText = lib.literalExpression "pkgs.rescrobbled";
|
|
||||||
description = "The package to use for rescrobbled";
|
|
||||||
};
|
|
||||||
|
|
||||||
session = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = ''
|
|
||||||
The session token to use for last.fm.
|
|
||||||
This can be found by setting a last.fm API key & secret,
|
|
||||||
and then manually running the daemon. Then, the session token
|
|
||||||
will be located at {file}`$XDG_CONFIG_HOME/rescrobbled/session`.
|
|
||||||
'';
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = lib.mkOption {
|
|
||||||
type = tomlFormat.type;
|
|
||||||
default = {};
|
|
||||||
example = lib.literalExpression ''
|
|
||||||
lastfm-key = "Last.fm API key"
|
|
||||||
lastfm-secret = "Last.fm API secret"
|
|
||||||
min-play-time = 0
|
|
||||||
player-whitelist = [ "Player MPRIS identity or bus name" ]
|
|
||||||
filter-script = "path/to/script"
|
|
||||||
|
|
||||||
[[listenbrainz]]
|
|
||||||
url = "Custom API URL"
|
|
||||||
token = "User token"
|
|
||||||
'';
|
|
||||||
description = ''
|
|
||||||
Configuration written to
|
|
||||||
{file}`$XDG_CONFIG_HOME/rescrobbled/config.toml`.
|
|
||||||
|
|
||||||
See <https://github.com/InputUsername/rescrobbled#configuration> for the full list
|
|
||||||
of options.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = let cfg = config.services.custom.rescrobbled; in lib.mkIf cfg.enable {
|
|
||||||
home.packages = [ cfg.package ];
|
|
||||||
|
|
||||||
xdg.configFile ={
|
|
||||||
"rescrobbled/config.toml" = lib.mkIf (cfg.settings != { }) {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
source = tomlFormat.generate "rescrobbled-config" cfg.settings;
|
|
||||||
};
|
|
||||||
|
|
||||||
"rescrobbled/session" = lib.mkIf (cfg.settings != { }) {
|
|
||||||
enable = true;
|
|
||||||
# Force makes it easy to generate the session file, then add it to nix cfg without issues
|
|
||||||
force = true;
|
|
||||||
|
|
||||||
text = cfg.session;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services.rescrobbled = {
|
|
||||||
Unit = {
|
|
||||||
Description = "An MPRIS scrobbler";
|
|
||||||
Documentation = "https://github.com/InputUsername/rescrobbled";
|
|
||||||
Wants = "network-online.target";
|
|
||||||
After = "network-online.target";
|
|
||||||
};
|
|
||||||
|
|
||||||
Service = {
|
|
||||||
ExecStartPre = "${pkgs.coreutils}/bin/sleep 15"; # Avoid listenbrainz errors by adding delay till network is connected
|
|
||||||
ExecStart = "${cfg.package}/bin/rescrobbled";
|
|
||||||
};
|
|
||||||
|
|
||||||
Install.WantedBy = [ "default.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,31 +1,51 @@
|
||||||
{ inputs, system, secrets, lib, config, ... }:
|
{ inputs, system, secrets, config, lib, ... }:
|
||||||
{
|
{
|
||||||
options.ty-home-manager-options = {
|
imports = [ ./meta.nix ];
|
||||||
plasma.enable = lib.mkEnableOption "plasma configuration";
|
|
||||||
firefox.enable = lib.mkEnableOption "firefox configuration";
|
|
||||||
thunderbird.enable = lib.mkEnableOption "thunderbird configuration";
|
|
||||||
vscode.enable = lib.mkEnableOption "vscode configuration";
|
|
||||||
beets.enable = lib.mkEnableOption "beets configuration";
|
|
||||||
rescrobbled.enable = lib.mkEnableOption "rescrobbled configuration";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager = let
|
||||||
home-manager.useUserPackages = true;
|
entrypoint = {
|
||||||
home-manager.sharedModules = [
|
|
||||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
|
||||||
./custom-modules
|
|
||||||
];
|
|
||||||
home-manager.extraSpecialArgs = {
|
|
||||||
inherit inputs system secrets;
|
|
||||||
inherit (config) ty-home-manager-options;
|
|
||||||
};
|
|
||||||
home-manager.backupFileExtension = "backup";
|
|
||||||
|
|
||||||
home-manager.users.ty = {
|
|
||||||
imports = [
|
imports = [
|
||||||
./home.nix
|
# Import meta options for configuring the configuration
|
||||||
|
./meta.nix
|
||||||
|
# Import all of my config
|
||||||
|
./config
|
||||||
];
|
];
|
||||||
|
|
||||||
|
home.stateVersion = "24.05";
|
||||||
|
|
||||||
|
# Inherit my home manager config options
|
||||||
|
meta.home-manager = config.meta.home-manager;
|
||||||
};
|
};
|
||||||
|
in lib.mkMerge [
|
||||||
|
## General home-manager.* options
|
||||||
|
{
|
||||||
|
# Allow user installation of packages
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
sharedModules = [
|
||||||
|
# Import plasma manager and all of my custom modules for use
|
||||||
|
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||||
|
inputs.flatpaks.homeManagerModules.declarative-flatpak
|
||||||
|
./modules
|
||||||
|
];
|
||||||
|
# Inherit all of my nixos config custom arguments
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs system secrets;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Hopefully avoid file conflicts
|
||||||
|
backupFileExtension = "bak";
|
||||||
|
}
|
||||||
|
|
||||||
|
# The nixos home-manager module and the nix-on-droid compatibility have different options,
|
||||||
|
# so this handles both in the same file
|
||||||
|
|
||||||
|
(if (config.meta.home-manager.interface == "nixos") then {
|
||||||
|
users.ty = entrypoint;
|
||||||
|
} else {
|
||||||
|
config = entrypoint;
|
||||||
|
})
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -1,22 +0,0 @@
|
||||||
{ lib, config, ... }:
|
|
||||||
{
|
|
||||||
home.stateVersion = "24.05";
|
|
||||||
home.username = "ty";
|
|
||||||
home.homeDirectory = "/home/ty";
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
./modules/packages.nix
|
|
||||||
./modules/plasma.nix
|
|
||||||
./modules/vcs
|
|
||||||
./modules/firefox.nix
|
|
||||||
./modules/thunderbird.nix
|
|
||||||
./modules/accounts
|
|
||||||
./modules/gpg.nix
|
|
||||||
./modules/shell
|
|
||||||
./modules/vscode.nix
|
|
||||||
./modules/desktop.nix
|
|
||||||
./modules/gtk.nix
|
|
||||||
./modules/beets.nix
|
|
||||||
./modules/rescrobbled.nix
|
|
||||||
];
|
|
||||||
}
|
|
67
home-manager/meta.nix
Normal file
67
home-manager/meta.nix
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
|
{
|
||||||
|
options.meta.home-manager = {
|
||||||
|
# Presets for easy configuring the configuration
|
||||||
|
preset = lib.mkOption {
|
||||||
|
type = lib.types.nullOr (lib.types.enum [ "plasma-desktop" "cli" ]);
|
||||||
|
default = null;
|
||||||
|
defaultText = lib.literalExpression "null";
|
||||||
|
description = ''
|
||||||
|
The preset to use for enabling individual home-manager meta configuration options.
|
||||||
|
|
||||||
|
Presets:
|
||||||
|
- plasma-desktop
|
||||||
|
- Will enable anything that requires a desktop, and plasma-specific configuration
|
||||||
|
- cli
|
||||||
|
- Will only enable what is necessary for a CLI environment, excluding everything else
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Individual configuration options
|
||||||
|
beets.enable = lib.mkEnableOption "beets configuration";
|
||||||
|
desktop = {
|
||||||
|
enable = lib.mkEnableOption "configuration that requires a desktop environment";
|
||||||
|
plasma.enable = lib.mkEnableOption "plasma configuration";
|
||||||
|
};
|
||||||
|
email = {
|
||||||
|
enable = lib.mkEnableOption "email configuration";
|
||||||
|
thunderbird.enable = lib.mkEnableOption "email configuration for thunderbird";
|
||||||
|
};
|
||||||
|
firefox.enable = lib.mkEnableOption "firefox configuration";
|
||||||
|
rescrobbled.enable = lib.mkEnableOption "rescrobbled configuration";
|
||||||
|
vscode.enable = lib.mkEnableOption "vscode configuration";
|
||||||
|
|
||||||
|
interface = lib.mkOption {
|
||||||
|
type = lib.types.enum [ "nixos" "nix-on-droid" ];
|
||||||
|
default = "nixos";
|
||||||
|
defaultText = lib.literalExpression ''"nixos"'';
|
||||||
|
description = "The interface to use for configuring home-manger as a module";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Handle preset logic
|
||||||
|
config.meta.home-manager = lib.mkMerge [
|
||||||
|
# Desktop w/ Plasma preset
|
||||||
|
(lib.mkIf (config.meta.home-manager.preset == "plasma-desktop") {
|
||||||
|
beets.enable = true;
|
||||||
|
desktop.enable = true;
|
||||||
|
desktop.plasma.enable = true;
|
||||||
|
email.enable = true;
|
||||||
|
email.thunderbird.enable = true;
|
||||||
|
firefox.enable = true;
|
||||||
|
rescrobbled.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
})
|
||||||
|
# CLI Preset
|
||||||
|
(lib.mkIf (config.meta.home-manager.preset == "cli") {
|
||||||
|
beets.enable = false;
|
||||||
|
desktop.enable = false;
|
||||||
|
desktop.plasma.enable = false;
|
||||||
|
email.enable = false;
|
||||||
|
email.thunderbird.enable = false;
|
||||||
|
firefox.enable = false;
|
||||||
|
rescrobbled.enable = false;
|
||||||
|
vscode.enable = false;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./prismlauncher.nix
|
||||||
./rescrobbled.nix
|
./rescrobbled.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
|
@ -1,63 +0,0 @@
|
||||||
{ pkgs, inputs, system, lib, ty-home-manager-options, ... }:
|
|
||||||
{
|
|
||||||
home.packages = (with pkgs; [
|
|
||||||
# :3
|
|
||||||
fastfetch # Modern & faster neofetch alternative
|
|
||||||
|
|
||||||
# CLI Tools
|
|
||||||
ripgrep # Text searching and manipulation
|
|
||||||
jq # JSON filtering
|
|
||||||
eza # Directory lister
|
|
||||||
bat # File reading
|
|
||||||
doggo # DNS Requests
|
|
||||||
nmap # Network scanning
|
|
||||||
glow # Markdown rendering
|
|
||||||
tealdeer # TLDR
|
|
||||||
usbutils # `lsusb`
|
|
||||||
pciutils # `lspci`
|
|
||||||
unzip # Extract zip files
|
|
||||||
|
|
||||||
# Process tools
|
|
||||||
btop # Process monitor
|
|
||||||
nvtopPackages.full # GPU monitor
|
|
||||||
]) ++ (lib.optionals ty-home-manager-options.plasma.enable (with pkgs; [
|
|
||||||
# Documents
|
|
||||||
logseq # Outliner
|
|
||||||
libreoffice-qt6-fresh # Office-style editing
|
|
||||||
|
|
||||||
# Video
|
|
||||||
jellyfin-media-player # Jellyfin electron client w/ MPV
|
|
||||||
vlc # Video file player
|
|
||||||
|
|
||||||
# Chat
|
|
||||||
element-desktop # Matrix client
|
|
||||||
vesktop # Discord client
|
|
||||||
signal-desktop # Signal client
|
|
||||||
|
|
||||||
# KDE Themes
|
|
||||||
vimix-cursors # Cursors
|
|
||||||
(pkgs.callPackage ../../packages/beautyline {}) # Icons
|
|
||||||
(pkgs.callPackage ../../packages/magna-splash-6 {}) # Splash
|
|
||||||
|
|
||||||
# Programming
|
|
||||||
jetbrains.idea-ultimate # Jetbrains IntelliJ Idea Ultimate IDE
|
|
||||||
nixd # LSP for .nix files
|
|
||||||
gcc # GNU C++ Compiler
|
|
||||||
(lib.meta.hiPrio clang) # LLVM C++ Compiler (better than g++)
|
|
||||||
clang-tools # Clang language server
|
|
||||||
cling # C++ REPL
|
|
||||||
deno # Typescript & Javascript runtime
|
|
||||||
gnumake # Makefile support
|
|
||||||
|
|
||||||
# UI Tools
|
|
||||||
qalculate-qt # Calculator
|
|
||||||
])) ++ (lib.optionals ty-home-manager-options.firefox.enable [
|
|
||||||
# Firefox nightly
|
|
||||||
inputs.firefox-nightly.packages.${system}.firefox-nightly-bin
|
|
||||||
]) ++ (lib.optionals ty-home-manager-options.plasma.enable (with pkgs.kdePackages; [
|
|
||||||
kate # IDE
|
|
||||||
elisa # Music
|
|
||||||
kdeconnect-kde # Phone sync
|
|
||||||
polkit-kde-agent-1 # Polkit authentication popup support
|
|
||||||
]));
|
|
||||||
}
|
|
82
home-manager/modules/prismlauncher.nix
Normal file
82
home-manager/modules/prismlauncher.nix
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
{ lib, pkgs, config, ... }:
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
programs.custom.prism-launcher = {
|
||||||
|
enable = lib.mkEnableOption "prism launcher";
|
||||||
|
|
||||||
|
package = lib.mkPackageOption pkgs "Prism Launcher" {
|
||||||
|
default = "prismlauncher";
|
||||||
|
};
|
||||||
|
|
||||||
|
javaPackages = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.package;
|
||||||
|
default = [
|
||||||
|
# These three JREs cover most minecraft versions
|
||||||
|
pkgs.temurin-jre-bin-21
|
||||||
|
pkgs.temurin-jre-bin-17
|
||||||
|
pkgs.temurin-jre-bin-8
|
||||||
|
];
|
||||||
|
defaultText = lib.literalExpression "with pkgs; [ temurin-jre-bin-21 temurin-jre-bin-17 temurin-jre-bin-8 ]";
|
||||||
|
description = "The java packages to provide to Prism Launcher for running the game";
|
||||||
|
};
|
||||||
|
|
||||||
|
additionalPrograms = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.package;
|
||||||
|
default = [];
|
||||||
|
defaultText = lib.literalExpression "[]";
|
||||||
|
description = ''
|
||||||
|
Additional programs that will be added to Prism Launcher's PATH.
|
||||||
|
Use this for mods that require an extra binary to be present to function.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
additionalLibs = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.package;
|
||||||
|
default = [];
|
||||||
|
defaultText = lib.literalExpression "[]";
|
||||||
|
description = ''
|
||||||
|
Additional dynamic libraries that will be added to Prism Launcher's LD_LIBRARY_PATH.
|
||||||
|
Use this for mods that require an extra native library to be present to function.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
controllerSupport = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
defaultText = lib.literalExpression "true";
|
||||||
|
description = "Whether to enable controller support for Prism Launcher";
|
||||||
|
};
|
||||||
|
gamemodeSupport = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
defaultText = lib.literalExpression "true";
|
||||||
|
description = "Whether to enable Feral GameMode support for Prism Launcher";
|
||||||
|
};
|
||||||
|
textToSpeechSupport = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
defaultText = lib.literalExpression "true";
|
||||||
|
description = "Whether to enable text-to-speech support for Prism Launcher";
|
||||||
|
};
|
||||||
|
|
||||||
|
msaClientID = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
default = null;
|
||||||
|
defaultText = lib.literalExpression "null";
|
||||||
|
description = ''
|
||||||
|
A custom MSA Client ID to use for authentication with microsoft servers.
|
||||||
|
Do not override this unless truly necessary.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let
|
||||||
|
cfg = config.programs.custom.prism-launcher;
|
||||||
|
in lib.mkIf cfg.enable {
|
||||||
|
home.packages = [ (cfg.package.override {
|
||||||
|
jdks = cfg.javaPackages;
|
||||||
|
inherit (cfg) additionalPrograms additionalLibs controllerSupport gamemodeSupport textToSpeechSupport msaClientID;
|
||||||
|
}) ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,23 +1,85 @@
|
||||||
{ secrets, lib, ty-home-manager-options, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
let tomlFormat = pkgs.formats.toml { }; in {
|
||||||
config = lib.mkIf ty-home-manager-options.rescrobbled.enable {
|
options = {
|
||||||
services.custom.rescrobbled = let s = secrets.programs.rescrobbled; in lib.mkIf s.enable {
|
services.custom.rescrobbled = {
|
||||||
|
enable = lib.mkEnableOption "rescrobbled";
|
||||||
|
|
||||||
|
package = lib.mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = (pkgs.callPackage ../../packages/rescrobbled {});
|
||||||
|
defaultText = lib.literalExpression "pkgs.rescrobbled";
|
||||||
|
description = "The package to use for rescrobbled";
|
||||||
|
};
|
||||||
|
|
||||||
|
session = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = ''
|
||||||
|
The session token to use for last.fm.
|
||||||
|
This can be found by setting a last.fm API key & secret,
|
||||||
|
and then manually running the daemon. Then, the session token
|
||||||
|
will be located at {file}`$XDG_CONFIG_HOME/rescrobbled/session`.
|
||||||
|
'';
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = lib.mkOption {
|
||||||
|
type = tomlFormat.type;
|
||||||
|
default = {};
|
||||||
|
example = lib.literalExpression ''
|
||||||
|
lastfm-key = "Last.fm API key"
|
||||||
|
lastfm-secret = "Last.fm API secret"
|
||||||
|
min-play-time = 0
|
||||||
|
player-whitelist = [ "Player MPRIS identity or bus name" ]
|
||||||
|
filter-script = "path/to/script"
|
||||||
|
|
||||||
|
[[listenbrainz]]
|
||||||
|
url = "Custom API URL"
|
||||||
|
token = "User token"
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Configuration written to
|
||||||
|
{file}`$XDG_CONFIG_HOME/rescrobbled/config.toml`.
|
||||||
|
|
||||||
|
See <https://github.com/InputUsername/rescrobbled#configuration> for the full list
|
||||||
|
of options.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let cfg = config.services.custom.rescrobbled; in lib.mkIf cfg.enable {
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
|
xdg.configFile ={
|
||||||
|
"rescrobbled/config.toml" = lib.mkIf (cfg.settings != { }) {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
session = s.lastfm.session;
|
source = tomlFormat.generate "rescrobbled-config" cfg.settings;
|
||||||
|
|
||||||
settings = {
|
|
||||||
player-whitelist = [ "elisa" ];
|
|
||||||
|
|
||||||
listenbrainz = lib.mkIf (s.listenbrainz.token != null) [
|
|
||||||
{
|
|
||||||
token = s.listenbrainz.token;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
lastfm-key = lib.mkIf (s.lastfm.key != null && s.lastfm.secret != null) s.lastfm.key;
|
|
||||||
lastfm-secret = lib.mkIf (s.lastfm.key != null && s.lastfm.secret != null) s.lastfm.secret;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"rescrobbled/session" = lib.mkIf (cfg.settings != { }) {
|
||||||
|
enable = true;
|
||||||
|
# Force makes it easy to generate the session file, then add it to nix cfg without issues
|
||||||
|
force = true;
|
||||||
|
|
||||||
|
text = cfg.session;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.rescrobbled = {
|
||||||
|
Unit = {
|
||||||
|
Description = "An MPRIS scrobbler";
|
||||||
|
Documentation = "https://github.com/InputUsername/rescrobbled";
|
||||||
|
Wants = "network-online.target";
|
||||||
|
After = "network-online.target";
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStartPre = "${pkgs.coreutils}/bin/sleep 15"; # Avoid listenbrainz errors by adding delay till network is connected
|
||||||
|
ExecStart = "${cfg.package}/bin/rescrobbled";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install.WantedBy = [ "default.target" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -1,12 +1,17 @@
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
# Folders
|
||||||
|
./services
|
||||||
|
# Individual files
|
||||||
./bootloader.nix
|
./bootloader.nix
|
||||||
./display.nix
|
./display.nix
|
||||||
./locale.nix
|
./locale.nix
|
||||||
|
./mounts.nix
|
||||||
./networking.nix
|
./networking.nix
|
||||||
./nixpkgs.nix
|
./nixpkgs.nix
|
||||||
./programs.nix
|
./programs.nix
|
||||||
./users.nix
|
./users.nix
|
||||||
|
./vscode-server.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
|
@ -18,4 +18,7 @@
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Disable sleep on lid close (because server)
|
||||||
|
services.logind.lidSwitch = "ignore";
|
||||||
}
|
}
|
15
hosts/laptop-server/config/mounts.nix
Normal file
15
hosts/laptop-server/config/mounts.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
fileSystems."/mnt/hdd" = {
|
||||||
|
device = "/dev/mapper/hdd";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "compression=zstd:3" "autodefrag" "nofail" ];
|
||||||
|
|
||||||
|
encrypted = {
|
||||||
|
enable = true;
|
||||||
|
label = "hdd";
|
||||||
|
blkDev = "/dev/disk/by-uuid/eab5e1d6-6956-46fd-b3ac-5fcf525e1df8";
|
||||||
|
keyFile = "/mnt-root/root/hdd.key";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,12 +1,12 @@
|
||||||
{ ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "ty-laptop-server";
|
hostName = "ty-laptop-server";
|
||||||
|
|
||||||
# Enable firewall
|
# TODO Firewall causes issues with containers, need to fix it
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
trustedInterfaces = [ "lo" "ve-jellyfin" ];
|
package = pkgs.iptables;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable NetworkManager
|
# Enable NetworkManager
|
||||||
|
@ -19,4 +19,5 @@
|
||||||
useRoutingFeatures = "both";
|
useRoutingFeatures = "both";
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
};
|
};
|
||||||
|
networking.firewall.trustedInterfaces = [ "tailscale0" ];
|
||||||
}
|
}
|
|
@ -7,9 +7,7 @@
|
||||||
networking = {
|
networking = {
|
||||||
nat = {
|
nat = {
|
||||||
enable = true;
|
enable = true;
|
||||||
internalInterfaces = ["ve-jellyfin"];
|
|
||||||
externalInterface = "wlp2s0";
|
externalInterface = "wlp2s0";
|
||||||
};
|
};
|
||||||
networkmanager.unmanaged = [ "interface-name:ve-jellyfin" ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
26
hosts/laptop-server/config/services/jellyfin.nix
Normal file
26
hosts/laptop-server/config/services/jellyfin.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
containers.jellyfin = {
|
||||||
|
config = { pkgs, ...}: {
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
|
||||||
|
services.jellyfin = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.jellyfin;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Firewall on the host system is enough + this firewall seems to break networking
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
};
|
||||||
|
autoStart = true;
|
||||||
|
privateNetwork = true;
|
||||||
|
hostAddress = "172.30.1.2"; # TODO define in config option
|
||||||
|
localAddress = "172.30.0.2";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
firewall.trustedInterfaces = [ "ve-jellyfin" ];
|
||||||
|
nat.internalInterfaces = [ "ve-jellyfin" ];
|
||||||
|
networkmanager.unmanaged = [ "interface-name:ve-jellyfin" ];
|
||||||
|
};
|
||||||
|
}
|
8
hosts/laptop-server/config/vscode-server.nix
Normal file
8
hosts/laptop-server/config/vscode-server.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.vscode-server = {
|
||||||
|
enable = true;
|
||||||
|
nodejsPackage = pkgs.nodejs-18_x;
|
||||||
|
installPath = "$HOME/.vscodium-server";
|
||||||
|
};
|
||||||
|
}
|
|
@ -8,9 +8,23 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
## External modules
|
||||||
|
|
||||||
|
# Better command-not-found
|
||||||
|
inputs.nix-index-database.nixosModules.nix-index
|
||||||
|
{ programs.nix-index-database.comma.enable = true; }
|
||||||
|
|
||||||
|
# Home manager
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
../../home-manager
|
||||||
|
{ meta.home-manager.preset = "cli"; }
|
||||||
|
|
||||||
|
# VSCode server support
|
||||||
|
inputs.vscode-server.nixosModules.default
|
||||||
|
|
||||||
|
## Normal configuration
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./modules
|
./config
|
||||||
./services
|
|
||||||
];
|
];
|
||||||
|
|
||||||
system.stateVersion = "24.11";
|
system.stateVersion = "24.11";
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
{
|
|
||||||
containers.jellyfin = {
|
|
||||||
config = { pkgs, ...}: {
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
|
|
||||||
services.jellyfin = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.jellyfin;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
autoStart = true;
|
|
||||||
privateNetwork = true;
|
|
||||||
hostAddress = "172.30.0.2"; # TODO define in config option
|
|
||||||
localAddress = "172.30.0.2";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -4,4 +4,6 @@
|
||||||
services.desktopManager.plasma6.enable = true;
|
services.desktopManager.plasma6.enable = true;
|
||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
programs.partition-manager.enable = true;
|
programs.partition-manager.enable = true;
|
||||||
|
# Fix some programs not using the portal properly
|
||||||
|
xdg.portal.xdgOpenUsePortal = true;
|
||||||
}
|
}
|
|
@ -1,6 +1,8 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
fonts = {
|
fonts = {
|
||||||
|
fontDir.enable = true;
|
||||||
|
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# Core fonts (Arial, Times new roman and the such)
|
# Core fonts (Arial, Times new roman and the such)
|
||||||
corefonts
|
corefonts
|
|
@ -2,6 +2,8 @@
|
||||||
{
|
{
|
||||||
networking.hostName = "ty-nixos";
|
networking.hostName = "ty-nixos";
|
||||||
|
|
||||||
|
# networking.hosts = { "23.95.137.176" = [ "s.optifine.net" ]; };
|
||||||
|
|
||||||
# Enable firewall
|
# Enable firewall
|
||||||
networking.firewall.enable = true;
|
networking.firewall.enable = true;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
# Experimentally turn off Nvidia GPU when not in use
|
# Experimentally turn off Nvidia GPU when not in use
|
||||||
powerManagement.finegrained = false;
|
powerManagement.finegrained = false;
|
||||||
|
|
||||||
open = false; # Open source module is still very much beta
|
open = true; # Open source module is still very much beta
|
||||||
|
|
||||||
nvidiaSettings = true;
|
nvidiaSettings = true;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, inputs, ... }:
|
{ pkgs, inputs, system, ... }:
|
||||||
{
|
{
|
||||||
# Install system packages
|
# Install system packages
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
@ -6,8 +6,11 @@
|
||||||
wget
|
wget
|
||||||
curl
|
curl
|
||||||
neovim
|
neovim
|
||||||
home-manager
|
|
||||||
wl-clipboard-rs
|
wl-clipboard-rs
|
||||||
|
# Nix utilities
|
||||||
|
home-manager
|
||||||
|
inputs.colmena.packages."${system}".colmena
|
||||||
|
nvd
|
||||||
# VCS
|
# VCS
|
||||||
git
|
git
|
||||||
jujutsu
|
jujutsu
|
||||||
|
@ -18,12 +21,21 @@
|
||||||
# Enable waydroid
|
# Enable waydroid
|
||||||
virtualisation.waydroid.enable = true;
|
virtualisation.waydroid.enable = true;
|
||||||
|
|
||||||
|
# Enable flatpak
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
|
||||||
# Enable steam
|
# Enable steam
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extest.enable = true;
|
extest.enable = true;
|
||||||
|
extraPackages = [
|
||||||
|
pkgs.vimix-cursors # Necessary so cursor size and theme are correct while inside the steam window
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.gamemode.enable = true;
|
||||||
|
programs.gamescope.enable = true;
|
||||||
|
|
||||||
# Install zsh
|
# Install zsh
|
||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
|
|
|
@ -1,12 +1,36 @@
|
||||||
{ inputs, ... }:
|
{ inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
## External modules
|
||||||
|
|
||||||
|
# Better command-not-found
|
||||||
|
inputs.nix-index-database.nixosModules.nix-index
|
||||||
|
{ programs.nix-index-database.comma.enable = true; }
|
||||||
|
|
||||||
|
# Home manager
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
../../home-manager
|
||||||
|
{ meta.home-manager.preset = "plasma-desktop"; }
|
||||||
|
|
||||||
|
## Normal configuration
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./modules
|
./config
|
||||||
];
|
];
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||||
|
nix.settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
substituters = [
|
||||||
|
"https://colmena.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"colmena.cachix.org-1:7BzpDnjjH8ki2CT3f6GdOk7QAzPOl+1t3LvTLXqYcSg="
|
||||||
|
];
|
||||||
|
|
||||||
|
auto-optimise-store = true;
|
||||||
|
};
|
||||||
|
nix.gc.automatic = true;
|
||||||
}
|
}
|
25
nix-on-droid/ty-pixel/default.nix
Normal file
25
nix-on-droid/ty-pixel/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ inputs, pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
|
./environment.nix
|
||||||
|
|
||||||
|
# Import full home-manager config
|
||||||
|
../../home-manager
|
||||||
|
];
|
||||||
|
|
||||||
|
meta.home-manager = { preset = "cli"; interface = "nix-on-droid"; };
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
extraOptions = ''
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
'';
|
||||||
|
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
user.shell = "${pkgs.zsh}/bin/zsh";
|
||||||
|
time.timeZone = "America/Denver";
|
||||||
|
terminal = {
|
||||||
|
font = "${pkgs.nerd-fonts.fira-code}/share/fonts/truetype/NerdFonts/FiraCode/FiraCodeNerdFont-Regular.ttf";
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.05";
|
||||||
|
}
|
39
nix-on-droid/ty-pixel/environment.nix
Normal file
39
nix-on-droid/ty-pixel/environment.nix
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
environment = {
|
||||||
|
etcBackupExtension = ".bak";
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
# Basic necessities
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
neovim
|
||||||
|
|
||||||
|
# Basic necessities copied from https://github.com/nix-community/nix-on-droid/blob/5d88ff2519e4952f8d22472b52c531bb5f1635fc/templates/home-manager/nix-on-droid.nix#L9C1-L26C11
|
||||||
|
procps
|
||||||
|
killall
|
||||||
|
diffutils
|
||||||
|
findutils
|
||||||
|
utillinux
|
||||||
|
tzdata
|
||||||
|
hostname
|
||||||
|
man
|
||||||
|
gnugrep
|
||||||
|
gnupg
|
||||||
|
gnused
|
||||||
|
gnutar
|
||||||
|
bzip2
|
||||||
|
gzip
|
||||||
|
xz
|
||||||
|
zip
|
||||||
|
unzip
|
||||||
|
# Nix tools
|
||||||
|
nvd
|
||||||
|
# VCS
|
||||||
|
git
|
||||||
|
jujutsu
|
||||||
|
];
|
||||||
|
|
||||||
|
motd = "";
|
||||||
|
};
|
||||||
|
}
|
91
utils/default.nix
Normal file
91
utils/default.nix
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
{ inputs, secrets }:
|
||||||
|
{
|
||||||
|
createNixosSystem = {
|
||||||
|
system ? "x86_64-linux",
|
||||||
|
entrypoint
|
||||||
|
}: inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs system secrets;
|
||||||
|
};
|
||||||
|
|
||||||
|
modules = [ entrypoint ];
|
||||||
|
};
|
||||||
|
|
||||||
|
createColmenaHive = {
|
||||||
|
defaultSystem ? "x86_64-linux",
|
||||||
|
hostConfigs ? []
|
||||||
|
}: {
|
||||||
|
# Set meta options for the colmena hive
|
||||||
|
meta = {
|
||||||
|
# Standard options
|
||||||
|
allowApplyAll = false;
|
||||||
|
# Defaults for nodes
|
||||||
|
nixpkgs = import inputs.nixpkgs { system = defaultSystem; };
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs secrets;
|
||||||
|
system = defaultSystem;
|
||||||
|
};
|
||||||
|
# Overrides for individual nodes
|
||||||
|
nodeNixpkgs = (
|
||||||
|
builtins.foldl'
|
||||||
|
(acc: cur:
|
||||||
|
acc // {
|
||||||
|
${cur.name} = import inputs.nixpkgs { system = cur.system; };
|
||||||
|
}
|
||||||
|
)
|
||||||
|
{}
|
||||||
|
(builtins.filter
|
||||||
|
(c: builtins.hasAttr "system" c && c.system != defaultSystem)
|
||||||
|
hostConfigs)
|
||||||
|
);
|
||||||
|
nodeSpecialArgs = (
|
||||||
|
builtins.foldl'
|
||||||
|
(acc: cur:
|
||||||
|
acc // {
|
||||||
|
${cur.name} = {
|
||||||
|
inherit inputs secrets;
|
||||||
|
system = cur.system;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
{}
|
||||||
|
(builtins.filter
|
||||||
|
(c: builtins.hasAttr "system" c && c.system != defaultSystem)
|
||||||
|
hostConfigs)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
} // (
|
||||||
|
# Add all of the hosts
|
||||||
|
builtins.foldl'
|
||||||
|
(acc: cur:
|
||||||
|
acc // {
|
||||||
|
${cur.name} = { ... }: {
|
||||||
|
deployment = {
|
||||||
|
replaceUnknownProfiles = if (builtins.hasAttr "allowLocal" cur) then cur.allowLocal else false;
|
||||||
|
targetUser = if (builtins.hasAttr "sshUser" cur) then cur.sshUser else "root";
|
||||||
|
targetHost = if (builtins.hasAttr "sshHost" cur) then cur.sshHost else cur.name;
|
||||||
|
targetPort = if (builtins.hasAttr "sshPort" cur) then cur.sshPort else 22;
|
||||||
|
allowLocalDeployment = if (builtins.hasAttr "allowLocal" cur) then cur.allowLocal else false;
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [ cur.entrypoint ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
)
|
||||||
|
{}
|
||||||
|
hostConfigs
|
||||||
|
);
|
||||||
|
|
||||||
|
createDroidSystem = {
|
||||||
|
system ? "aarch64-linux",
|
||||||
|
entrypoint
|
||||||
|
}: inputs.nix-on-droid.lib.nixOnDroidConfiguration {
|
||||||
|
pkgs = import inputs.nixpkgs { inherit system; };
|
||||||
|
modules = [ entrypoint ];
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs system secrets;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue