Compare commits
6 commits
d6d2aaa329
...
50ac68b6df
Author | SHA1 | Date | |
---|---|---|---|
50ac68b6df | |||
676ed31aad | |||
afb1c0efb4 | |||
fb9d892015 | |||
e92a34b76a | |||
92e293d863 |
258
flake.lock
258
flake.lock
|
@ -6,14 +6,15 @@
|
|||
"home-manager": "home-manager",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
],
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1690228878,
|
||||
"narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=",
|
||||
"lastModified": 1723293904,
|
||||
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "d8c973fd228949736dedf61b7f8cc1ece3236792",
|
||||
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -55,11 +56,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1673295039,
|
||||
"narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
|
||||
"lastModified": 1700795494,
|
||||
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
|
||||
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -78,11 +79,11 @@
|
|||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1704875591,
|
||||
"narHash": "sha256-eWRLbqRcrILgztU/m/k7CYLzETKNbv0OsT2GjkaNm8A=",
|
||||
"lastModified": 1718194053,
|
||||
"narHash": "sha256-FaGrf7qwZ99ehPJCAwgvNY5sLCqQ3GDiE/6uLhxxwSY=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "1776009f1f3fb2b5d236b84d9815f2edee463a9b",
|
||||
"rev": "3867348fa92bc892eba5d9ddb2d7a97b9e127a8a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -109,16 +110,15 @@
|
|||
"dirt-samples-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1588278411,
|
||||
"narHash": "sha256-h8vQxRym6QzNLOTZU7A43VCHuG0H77l+BFwXnC0L1CE=",
|
||||
"lastModified": 1698439458,
|
||||
"narHash": "sha256-Mp8qBpsOvW9Zguv95Kv7EU6S3ICaF2aO02Wz6xGURtE=",
|
||||
"owner": "tidalcycles",
|
||||
"repo": "dirt-samples",
|
||||
"rev": "66d432418c9a7d82cf049d9246adfa62f46df2a6",
|
||||
"rev": "9a6dff8f9ec3cd55b287290cf04e01afa6b8f532",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tidalcycles",
|
||||
"ref": "master",
|
||||
"repo": "dirt-samples",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -130,11 +130,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1690739034,
|
||||
"narHash": "sha256-roW02IaiQ3gnEEDMCDWL5YyN+C4nBf/te6vfL7rG0jk=",
|
||||
"lastModified": 1724031427,
|
||||
"narHash": "sha256-o1HdAf+7IGv9M13R3c+zc/sJ0QgeEnhsvHBcodI4UpM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "4015740375676402a2ee6adebc3c30ea625b9a94",
|
||||
"rev": "4e719b38fa7c85f4f65d0308ca7084c91e7bdd6d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -143,30 +143,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"eww": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-overlay": [
|
||||
"rust-overlay"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1690660426,
|
||||
"narHash": "sha256-YUuH1BZ3G5dhHRZ1Z9XPXyorm8vV8G+jYbcdIGxOcOs=",
|
||||
"owner": "elkowar",
|
||||
"repo": "eww",
|
||||
"rev": "dc3129aee2806823bdad87785f7ef80651d5245c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "elkowar",
|
||||
"repo": "eww",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
|
@ -184,22 +160,6 @@
|
|||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"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_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1641205782,
|
||||
|
@ -245,42 +205,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1685518550,
|
||||
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1705309234,
|
||||
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"grasp": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
|
@ -305,11 +229,11 @@
|
|||
},
|
||||
"hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1691179816,
|
||||
"narHash": "sha256-WSMwqzU70ZMRHv1CUAfHEEKJuB0c9c9r0F+lJehXfSI=",
|
||||
"lastModified": 1723310128,
|
||||
"narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "87e3122b67587492a617764f88c71991893fcf8a",
|
||||
"rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -326,11 +250,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1682203081,
|
||||
"narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=",
|
||||
"lastModified": 1703113217,
|
||||
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1",
|
||||
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -346,45 +270,24 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1704099619,
|
||||
"narHash": "sha256-QRVMkdxLmv+aKGjcgeEg31xtJEIsYq4i1Kbyw5EPS6g=",
|
||||
"lastModified": 1720042825,
|
||||
"narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "7e398b3d76bc1503171b1364c9d4a07ac06f3851",
|
||||
"rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.11",
|
||||
"ref": "release-24.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"llamacpp": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": [
|
||||
"unstable"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1691180171,
|
||||
"narHash": "sha256-ZmSRPACkLlPWtKfux9o+FB0mXZbINowyb0057ouAL/0=",
|
||||
"owner": "ggerganov",
|
||||
"repo": "llama.cpp",
|
||||
"rev": "332311234a0aa2974b2450710e22e09d90dd6b0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ggerganov",
|
||||
"repo": "llama.cpp",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-matrix-appservices": {
|
||||
"inputs": {
|
||||
"devshell": "devshell",
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-compat": "flake-compat_2",
|
||||
"nixlib": "nixlib",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
|
@ -419,11 +322,11 @@
|
|||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1691179816,
|
||||
"narHash": "sha256-WSMwqzU70ZMRHv1CUAfHEEKJuB0c9c9r0F+lJehXfSI=",
|
||||
"lastModified": 1723310128,
|
||||
"narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "87e3122b67587492a617764f88c71991893fcf8a",
|
||||
"rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -451,27 +354,27 @@
|
|||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1710420202,
|
||||
"narHash": "sha256-MvFKESbq4rUWuaf2RKPNYENaSZEw/jaCLo2gU6oREcM=",
|
||||
"lastModified": 1723938990,
|
||||
"narHash": "sha256-9tUadhnZQbWIiYVXH8ncfGXGvkNq3Hag4RCBEMUk7MI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "878ef7d9721bee9f81f8a80819f9211ad1f993da",
|
||||
"rev": "c42fcfbdfeae23e68fc520f9182dde9f38ad1890",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-23.11",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1691214006,
|
||||
"narHash": "sha256-kdfBd+Y0DTOOdgSA6h6iIn403xVj4bzLnXqb7+yM6lQ=",
|
||||
"lastModified": 1724040334,
|
||||
"narHash": "sha256-Ia4gRRmhFn4oJ4SJKJPDNPomsRRFWU+bqCK7yuiLW4E=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "963ad2d1bb0a8f59b2c23ab521d4dff2148aad16",
|
||||
"rev": "24471a48600e18669d13d24c9640b9859357d2cf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -487,11 +390,19 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
<<<<<<< HEAD
|
||||
"lastModified": 1723852814,
|
||||
"narHash": "sha256-P0mYUxYH097oG5x0n84qABgk2tQfBLznwd1TGh5vgnk=",
|
||||
"ref": "main",
|
||||
"rev": "8de8ac0e086187a749c719893f3aa9c460978f9a",
|
||||
"revCount": 1462,
|
||||
=======
|
||||
"lastModified": 1724050814,
|
||||
"narHash": "sha256-THf50ZcBPY6r7/cyvE8bxYDvrctHrWbYaMx4udr4OUM=",
|
||||
"ref": "main",
|
||||
"rev": "7628c26fd92f684ab5c7572c63de4af8b4b3a7b4",
|
||||
"revCount": 1464,
|
||||
>>>>>>> d6d2aaa32916095c3e7e4aaafc1ffedea82095e8
|
||||
"type": "git",
|
||||
"url": "ssh://gitea@git.sealight.xyz/aynish/kitaab"
|
||||
},
|
||||
|
@ -507,11 +418,9 @@
|
|||
"basant": "basant",
|
||||
"deploy-rs": "deploy-rs",
|
||||
"disko": "disko",
|
||||
"eww": "eww",
|
||||
"grasp": "grasp",
|
||||
"hardware": "hardware",
|
||||
"home-manager": "home-manager_2",
|
||||
"llamacpp": "llamacpp",
|
||||
"nix-matrix-appservices": "nix-matrix-appservices",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
|
@ -525,17 +434,16 @@
|
|||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_4",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1715912155,
|
||||
"narHash": "sha256-UXHk4dKvvm5mSuDDON3lXU5CHKiTRnIjA5mUtDOtKEU=",
|
||||
"lastModified": 1724034091,
|
||||
"narHash": "sha256-b1g7w0sw+MDAhUAeCoX1vlTghsqcDZkxr+k9OZmxPa8=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "d3a96b08a7280a5753246129b462eed3662815d5",
|
||||
"rev": "c7d36e0947826e0751a5214ffe82533fbc909bc0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -547,16 +455,15 @@
|
|||
"superdirt-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1611740180,
|
||||
"narHash": "sha256-GtnqZeMFqFkVhgx2Exu0wY687cHa7mNnVCgjQd6fiIA=",
|
||||
"lastModified": 1697377840,
|
||||
"narHash": "sha256-9qU9CHYAXbN1IE3xXDqGipuroifVaSVXj3c/cDfwM80=",
|
||||
"owner": "musikinformatik",
|
||||
"repo": "superdirt",
|
||||
"rev": "7abb62e89649daa1232b9cbd6427241868abd30e",
|
||||
"rev": "c7f32998572984705d340e7c1b9ed9ad998a39b6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "musikinformatik",
|
||||
"ref": "master",
|
||||
"repo": "superdirt",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -591,34 +498,19 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tidal-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1654350756,
|
||||
"narHash": "sha256-tONM5SYYBca0orTLH1EUOilSC1FCluWrFt8AetUx+YQ=",
|
||||
"lastModified": 1712519522,
|
||||
"narHash": "sha256-LbvxQmVxHElidCgvt+w0g1k+QQbNLebK46vtRCgsLeQ=",
|
||||
"owner": "tidalcycles",
|
||||
"repo": "tidal",
|
||||
"rev": "fda9c1ecb3722698935245e5409ef8ccdfca16c8",
|
||||
"rev": "88f09edf6bef2228d5f530dea872b08a9d803066",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tidalcycles",
|
||||
"ref": "main",
|
||||
"ref": "v1.9.5",
|
||||
"repo": "tidal",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -631,16 +523,15 @@
|
|||
],
|
||||
"superdirt-src": "superdirt-src",
|
||||
"tidal-src": "tidal-src",
|
||||
"utils": "utils_2",
|
||||
"vim-tidal-src": "vim-tidal-src",
|
||||
"vowel-src": "vowel-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1664760044,
|
||||
"narHash": "sha256-e5LGk/tDnphory1mYhADgPnVtShofY2w/3xY09jEE2A=",
|
||||
"lastModified": 1723223284,
|
||||
"narHash": "sha256-NAT+g5nsaJZkpR0sCZjerd1xx233ZUdRH3ZWwZhzq/c=",
|
||||
"owner": "mitchmindtree",
|
||||
"repo": "tidalcycles.nix",
|
||||
"rev": "3f3a820cd43709077d15a24fa6062de7d623a6bf",
|
||||
"rev": "82f3e8e8d02eb9f0c9dfe9ab3773b825c6bc1982",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -651,11 +542,11 @@
|
|||
},
|
||||
"unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1712163089,
|
||||
"narHash": "sha256-Um+8kTIrC19vD4/lUCN9/cU9kcOsD1O1m+axJqQPyMM=",
|
||||
"lastModified": 1723637854,
|
||||
"narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "fd281bd6b7d3e32ddfa399853946f782553163b5",
|
||||
"rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -667,7 +558,7 @@
|
|||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
|
@ -683,34 +574,18 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1653893745,
|
||||
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"vim-tidal-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1664252474,
|
||||
"narHash": "sha256-hleiK2Q7xYndpB+tIbyyXIM2sk4NunUh9DPgMqmf/Wc=",
|
||||
"lastModified": 1685703852,
|
||||
"narHash": "sha256-8gyk17YLeKpLpz3LRtxiwbpsIbZka9bb63nK5/9IUoA=",
|
||||
"owner": "tidalcycles",
|
||||
"repo": "vim-tidal",
|
||||
"rev": "b07f5c12986fb837e055d7fcf0acf3b7e248148f",
|
||||
"rev": "e440fe5bdfe07f805e21e6872099685d38e8b761",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tidalcycles",
|
||||
"ref": "master",
|
||||
"repo": "vim-tidal",
|
||||
"type": "github"
|
||||
}
|
||||
|
@ -748,7 +623,6 @@
|
|||
},
|
||||
"original": {
|
||||
"owner": "supercollider-quarks",
|
||||
"ref": "master",
|
||||
"repo": "vowel",
|
||||
"type": "github"
|
||||
}
|
||||
|
|
45
flake.nix
45
flake.nix
|
@ -3,7 +3,7 @@
|
|||
|
||||
inputs = {
|
||||
# Nixpkgs
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
|||
# ngipkgs-local.url = "path:/home/anish/usr/ngipkgs";
|
||||
|
||||
# Home manager
|
||||
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";
|
||||
hardware.url = "github:nixos/nixos-hardware";
|
||||
|
||||
|
@ -43,15 +43,8 @@
|
|||
url = "github:oxalica/rust-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
eww = {
|
||||
url = "github:elkowar/eww";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.rust-overlay.follows = "rust-overlay";
|
||||
};
|
||||
tidalcycles.url = "github:mitchmindtree/tidalcycles.nix";
|
||||
tidalcycles.inputs.nixpkgs.follows = "unstable";
|
||||
llamacpp.url = "github:ggerganov/llama.cpp";
|
||||
llamacpp.inputs.nixpkgs.follows = "unstable";
|
||||
# TODO hundred rabbits software
|
||||
# TODO needs secrets
|
||||
# dhyan.url = "git+ssh://gitea@git.sealight.xyz/aynish/dhyan?ref=main";
|
||||
|
@ -76,8 +69,6 @@
|
|||
, nur
|
||||
, tidalcycles
|
||||
, rust-overlay
|
||||
, eww
|
||||
, llamacpp
|
||||
, vimwikicli
|
||||
, ...
|
||||
}@inputs:
|
||||
|
@ -94,9 +85,6 @@
|
|||
unstable = unstable.legacyPackages.${prev.system};
|
||||
deploy = deploy-rs.packages.${prev.system}.deploy-rs;
|
||||
};
|
||||
llamaOverlay = final: prev: {
|
||||
llama = llamacpp.packages.${prev.system}.default;
|
||||
};
|
||||
vimwikiOverlay = final: prev: {
|
||||
vimwiki-cli = vimwikicli.packages.${prev.system}.vimwiki-cli;
|
||||
};
|
||||
|
@ -105,7 +93,7 @@
|
|||
inherit system;
|
||||
config.allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) [
|
||||
"ripcord"
|
||||
"VCV-Rack"
|
||||
"vcv-rack"
|
||||
"SunVox"
|
||||
"renoise"
|
||||
];
|
||||
|
@ -120,7 +108,6 @@
|
|||
nur.overlay
|
||||
nix-matrix-appservices.overlay
|
||||
unstableOverlay
|
||||
llamaOverlay
|
||||
vimwikiOverlay
|
||||
self.overlays.additions
|
||||
self.overlays.modifications
|
||||
|
@ -198,10 +185,13 @@
|
|||
agenix.nixosModules.age
|
||||
self.nixosModules.backup
|
||||
self.nixosModules.wireguard
|
||||
# self.nixosModules.blogg
|
||||
basant.nixosModule
|
||||
# self.nixosModules.microbin
|
||||
disko.nixosModules.disko
|
||||
{
|
||||
nixpkgs.flake.setNixPath = false;
|
||||
nixpkgs.flake.setFlakeRegistry = false;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -224,19 +214,6 @@
|
|||
];
|
||||
};
|
||||
|
||||
cube = nixpkgs.lib.nixosSystem rec {
|
||||
specialArgs = { inherit inputs self; };
|
||||
system = "x86_64-linux";
|
||||
pkgs = litePkgsFor.${system};
|
||||
modules = [
|
||||
./hosts/cube
|
||||
agenix.nixosModules.age
|
||||
self.nixosModules.backup
|
||||
self.nixosModules.wireguard
|
||||
basant.nixosModule
|
||||
];
|
||||
};
|
||||
|
||||
box = nixpkgs.lib.nixosSystem rec {
|
||||
specialArgs = { inherit inputs self; };
|
||||
system = "x86_64-linux";
|
||||
|
@ -247,6 +224,7 @@
|
|||
self.nixosModules.backup
|
||||
self.nixosModules.wireguard
|
||||
self.nixosModules.gonic
|
||||
self.nixosModules.gpodder2go
|
||||
self.nixosModules.wallabag
|
||||
self.nixosModules.ulogger-server
|
||||
grasp.nixosModule
|
||||
|
@ -302,13 +280,6 @@
|
|||
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.helix;
|
||||
};
|
||||
};
|
||||
cube = {
|
||||
hostname = "lakhwara.com";
|
||||
profiles.system = {
|
||||
user = "root";
|
||||
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cube;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
|
||||
|
|
|
@ -130,7 +130,7 @@
|
|||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
enableAutosuggestions = false;
|
||||
autosuggestion.enable = false;
|
||||
|
||||
initExtra = ''
|
||||
bindkey -v
|
||||
|
|
|
@ -102,9 +102,6 @@ in
|
|||
".local/bin/mpv-ify".source = ./bin/mpv-ify;
|
||||
".local/bin/bspswallow".source = ./bin/bspswallow;
|
||||
".config/bspwm/terminals".text = "Kitty";
|
||||
".config/eww/eww.yuck".source = ./eww/eww.yuck;
|
||||
".config/eww/eww.scss".source = ./eww/eww.scss;
|
||||
".config/eww/widgets.yuck".source = ./eww/widgets.yuck;
|
||||
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
|
||||
};
|
||||
|
||||
|
@ -126,7 +123,7 @@ in
|
|||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "gtk";
|
||||
platformTheme.name = "gtk";
|
||||
style = { name = "qt5ct-style"; };
|
||||
};
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@
|
|||
sound.enable = false;
|
||||
|
||||
programs.gnupg.agent.enable = true;
|
||||
programs.gnupg.agent.pinentryFlavor = "curses";
|
||||
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-curses;
|
||||
programs.gnupg.agent.enableSSHSupport = true;
|
||||
|
||||
# This value determines the NixOS release with which your system is to be
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
# ../profiles/woodpecker-agent
|
||||
# ../profiles/jellyfin
|
||||
../profiles/ulogger-server
|
||||
../profiles/photoprism
|
||||
../profiles/photoprism # Replace with immich
|
||||
../profiles/gpodder
|
||||
#../profiles/postgres_upgrade_script
|
||||
];
|
||||
|
||||
|
|
|
@ -36,5 +36,5 @@
|
|||
|
||||
sound.enable = true;
|
||||
|
||||
services.xserver.libinput.enable = true;
|
||||
services.libinput.enable = true;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
};
|
||||
|
||||
programs.gnupg.agent.enable = true;
|
||||
programs.gnupg.agent.pinentryFlavor = "gnome3";
|
||||
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||
|
||||
fileSystems."/mnt/ftp" = {
|
||||
device = "192.168.1.240:/home/ftp";
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
{pkgs, ... }:
|
||||
{
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
};
|
||||
|
||||
# Enables MySQL
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
};
|
||||
|
||||
services."write.sealight.xyz".enable = true;
|
||||
}
|
|
@ -32,7 +32,7 @@ in
|
|||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
pinentry-gnome
|
||||
pinentry-gnome3
|
||||
cached-nix-shell
|
||||
];
|
||||
|
||||
|
|
|
@ -77,7 +77,6 @@ in
|
|||
feh
|
||||
sxiv
|
||||
xkblayout-state
|
||||
vcv-rack
|
||||
zathura
|
||||
calibre
|
||||
mpv
|
||||
|
@ -87,7 +86,6 @@ in
|
|||
rofi
|
||||
rofimoji
|
||||
rofi-calc
|
||||
# eww
|
||||
obs-studio
|
||||
lightdm
|
||||
dunst
|
||||
|
@ -121,15 +119,15 @@ in
|
|||
night = 3700;
|
||||
};
|
||||
};
|
||||
displayManager.defaultSession = "none+bspwm";
|
||||
xserver = {
|
||||
enable = true;
|
||||
# TODO should be xkb.layout
|
||||
layout = "us";
|
||||
xkb.layout = "us";
|
||||
# xkb.variant = "dvorak";
|
||||
desktopManager.wallpaper.mode = "fill";
|
||||
displayManager = {
|
||||
# startx.enable = true;
|
||||
defaultSession = "none+bspwm";
|
||||
sessionCommands = ''
|
||||
${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF
|
||||
#define blk #1F2430
|
||||
|
|
|
@ -39,6 +39,7 @@ let
|
|||
"tracks.mossnet.lan"
|
||||
"grasp.mossnet.lan"
|
||||
"photos.mossnet.lan"
|
||||
"pod.mossnet.lan"
|
||||
];
|
||||
|
||||
in
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
services.paperless = {
|
||||
enable = false;
|
||||
consumptionDirIsPublic = true;
|
||||
extraConfig.PAPERLESS_AUTO_LOGIN_USERNAME = "admin";
|
||||
settings.PAPERLESS_AUTO_LOGIN_USERNAME = "admin";
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
{pkgs, ... }:
|
||||
{
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
};
|
||||
|
||||
# Enables MySQL
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
package = pkgs.mariadb;
|
||||
};
|
||||
|
||||
services."write.sealight.xyz".enable = true;
|
||||
}
|
|
@ -4,15 +4,14 @@
|
|||
age.secrets.gitea-dbpass.file = "${self}/secrets/gitea-dbpass.age";
|
||||
age.secrets.gitea-dbpass.owner = "gitea";
|
||||
|
||||
services.gitea = {
|
||||
services.forgejo = {
|
||||
enable = true;
|
||||
package = pkgs.forgejo;
|
||||
appName = "Sealight Git Forge";
|
||||
database = {
|
||||
type = "postgres";
|
||||
passwordFile = "/run/agenix/gitea-dbpass";
|
||||
};
|
||||
settings = {
|
||||
DEFAULT.APP_NAME = "Sealight Git Forge";
|
||||
server = {
|
||||
DOMAIN = "git.sealight.xyz";
|
||||
ROOT_URL = "https://git.sealight.xyz";
|
||||
|
@ -24,6 +23,7 @@
|
|||
repository = {
|
||||
DEFAULT_BRANCH = "main";
|
||||
};
|
||||
service.DISABLE_REGISTRATION = true;
|
||||
"markup.restructuredtext" = {
|
||||
ENABLED = true;
|
||||
FILE_EXTENSIONS = ".rst";
|
||||
|
|
|
@ -5,16 +5,17 @@
|
|||
music-path /mnt/two/music/
|
||||
podcast-path /data/podcasts
|
||||
cache-path /data/cache
|
||||
playlists-path /data/playlists
|
||||
'';
|
||||
mossnet.gonic.user = "headphones";
|
||||
mossnet.gonic.user = "gonic";
|
||||
mossnet.gonic.group = "audio";
|
||||
networking.firewall.allowedTCPPorts = [ 4747 ];
|
||||
|
||||
users.users.gonic = {
|
||||
uid = config.ids.uids.headphones;
|
||||
# uid = config.ids.uids.headphones;
|
||||
# isSystemUser = true;
|
||||
group = "audio";
|
||||
home = "/var/lib/headphones";
|
||||
# home = "/var/lib/headphones";
|
||||
createHome = true;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -68,14 +68,10 @@ in
|
|||
Group = cfg.group;
|
||||
DevicePolicy = "closed";
|
||||
NoNewPrivileges = " yes";
|
||||
PrivateTmp = "yes";
|
||||
PrivateUsers = "yes";
|
||||
ProtectControlGroups = "yes";
|
||||
ProtectKernelModules = "yes";
|
||||
ProtectKernelTunables = "yes";
|
||||
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
|
||||
RestrictNamespaces = "yes";
|
||||
RestrictRealtime = "yes";
|
||||
SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap";
|
||||
ReadWritePaths = dataFolder;
|
||||
StateDirectory = baseNameOf dataFolder;
|
||||
|
|
16
hosts/profiles/gpodder/default.nix
Normal file
16
hosts/profiles/gpodder/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
services.gpodder.enable = true;
|
||||
networking.firewall.allowedTCPPorts = [ 3005 ];
|
||||
services.nginx.virtualHosts."pod.mossnet.lan" = {
|
||||
extraConfig = "client_max_body_size 20M;";
|
||||
|
||||
locations."/" = {
|
||||
extraConfig = ''
|
||||
proxy_pass http://localhost:3005/;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
|
@ -18,6 +18,7 @@
|
|||
192.168.1.240 tracks.mossnet.lan
|
||||
192.168.1.240 grasp.mossnet.lan
|
||||
192.168.1.240 photos.mossnet.lan
|
||||
192.168.1.240 pod.mossnet.lan
|
||||
'';
|
||||
# 10.0.69.4 mossnet.lan
|
||||
# 10.0.69.4 links.mossnet.lan
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
services.rss-bridge = {
|
||||
enable = true;
|
||||
virtualHost = "bridge.sealight.xyz";
|
||||
whitelist = [ "Facebook" "Bandcamp" "Twitter" "Telegram" "Instagram" "Reddit" ];
|
||||
config.system.enabled_bridges = [ "Facebook" "Bandcamp" "Twitter" "Telegram" "Instagram" "Reddit" ];
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts."bridge.sealight.xyz".forceSSL = true;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
path = [
|
||||
pkgs.git
|
||||
pkgs.coreutils
|
||||
pkgs.nixUnstable
|
||||
pkgs.nixVersions.latest
|
||||
pkgs.openssh
|
||||
pkgs.deploy
|
||||
];
|
||||
|
|
|
@ -36,11 +36,16 @@
|
|||
publicKey = "gcdq86hhEUlqF2chqYB/F8pALyAMNFvwLycxBoHuoDs=";
|
||||
allowedIPs = [ "10.0.69.5/32" ];
|
||||
}
|
||||
# {
|
||||
# # hyperplane
|
||||
# publicKey = "";
|
||||
# allowedIPs = [ "10.0.69.6/32" ];
|
||||
# }
|
||||
{
|
||||
# hyperplane
|
||||
publicKey = "v+EUuM60yZLvBmdCG9GxfFAtSjS1VvbUWcyNb8emjDg=";
|
||||
allowedIPs = [ "10.0.69.6/32" ];
|
||||
}
|
||||
{
|
||||
# work
|
||||
publicKey = "/gv66s8DfppCCjaEN/jlc8z95IhEWPgDumykqKEl0QU=";
|
||||
allowedIPs = [ "10.0.69.7/32" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -147,7 +147,7 @@ cat > /mnt/etc/nixos/configuration.nix <<'endmsg'
|
|||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = true;
|
||||
|
||||
services.xserver.libinput.enable = true;
|
||||
services.libinput.enable = true;
|
||||
|
||||
# Hmmm maybe somewhere else?
|
||||
users.users.anish = {
|
||||
|
|
|
@ -1,148 +0,0 @@
|
|||
{ options, lib, config, pkgs, ... }:
|
||||
let
|
||||
# domain for the Ghost blog
|
||||
serverName = "write.sealight.xyz";
|
||||
# port on which the Ghost service runs
|
||||
port = 1357;
|
||||
# user used to run the Ghost service
|
||||
userName = builtins.replaceStrings [ "." ] [ "_" ] serverName;
|
||||
# MySQL database used by Ghost
|
||||
dbName = userName;
|
||||
# MySQL user used by Ghost
|
||||
dbUser = userName;
|
||||
# directory used to save the blog content
|
||||
dataDir = "/var/lib/${userName}";
|
||||
# Ghost package we created in the section above
|
||||
ghost = import ./ghost { inherit pkgs; };
|
||||
# script that sets up the Ghost content directory
|
||||
setupScript = pkgs.writeScript "${serverName}-setup.sh" ''
|
||||
#! ${pkgs.stdenv.shell} -e
|
||||
chmod g+s "${dataDir}"
|
||||
[[ ! -d "${dataDir}/content" ]] && cp -r "${ghost}/content" "${dataDir}/content"
|
||||
chown -R "${userName}":"${userName}" "${dataDir}/content"
|
||||
chmod -R +w "${dataDir}/content"
|
||||
ln -f -s "/etc/${serverName}.json" "${dataDir}/config.production.json"
|
||||
[[ -d "${dataDir}/current" ]] && rm "${dataDir}/current"
|
||||
ln -f -s "${ghost}/current" "${dataDir}/current"
|
||||
[[ -d "${dataDir}/content/themes/casper" ]] && rm "${dataDir}/content/themes/casper"
|
||||
ln -f -s "${ghost}/current/content/themes/casper" "${dataDir}/content/themes/casper"
|
||||
'';
|
||||
|
||||
databaseService = "mysql.service";
|
||||
|
||||
serviceConfig = config.services."${serverName}";
|
||||
options = { enable = lib.mkEnableOption "${serverName} service"; };
|
||||
in {
|
||||
options.services.${serverName} = options;
|
||||
config = lib.mkIf serviceConfig.enable {
|
||||
# Creates the user and group
|
||||
users.users.${userName} = {
|
||||
isSystemUser = true;
|
||||
group = userName;
|
||||
createHome = true;
|
||||
home = dataDir;
|
||||
};
|
||||
users.groups.${userName} = { };
|
||||
|
||||
# Creates the Ghost config
|
||||
environment.etc."${serverName}.json".text = ''
|
||||
{
|
||||
"url": "https://${serverName}",
|
||||
"server": {
|
||||
"port": ${port},
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"database": {
|
||||
"client": "mysql",
|
||||
"connection": {
|
||||
"host": "localhost",
|
||||
"user": "${dbUser}",
|
||||
"database": "${dbName}",
|
||||
"password": "",
|
||||
"socketPath": "/run/mysqld/mysqld.sock"
|
||||
}
|
||||
},
|
||||
"mail": {
|
||||
"transport": "sendmail"
|
||||
},
|
||||
"logging": {
|
||||
"transports": ["stdout"]
|
||||
},
|
||||
"paths": {
|
||||
"contentPath": "${dataDir}/content"
|
||||
}
|
||||
}
|
||||
'';
|
||||
|
||||
# Sets up the Systemd service
|
||||
systemd.services."${serverName}" = {
|
||||
enable = true;
|
||||
description = "${serverName} ghost blog";
|
||||
restartIfChanged = true;
|
||||
restartTriggers =
|
||||
[ ghost config.environment.etc."${serverName}.json".source ];
|
||||
requires = [ databaseService ];
|
||||
after = [ databaseService ];
|
||||
path = [ pkgs.nodejs pkgs.vips ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
User = userName;
|
||||
Group = userName;
|
||||
WorkingDirectory = dataDir;
|
||||
# Executes the setup script before start
|
||||
ExecStartPre = setupScript;
|
||||
# Runs Ghost with node
|
||||
ExecStart = "${pkgs.nodejs}/bin/node current/index.js";
|
||||
# Sandboxes the Systemd service
|
||||
AmbientCapabilities = [ ];
|
||||
CapabilityBoundingSet = [ ];
|
||||
KeyringMode = "private";
|
||||
LockPersonality = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
PrivateTmp = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectSystem = "full";
|
||||
RemoveIPC = true;
|
||||
RestrictAddressFamilies = [ ];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
};
|
||||
environment = { NODE_ENV = "production"; };
|
||||
};
|
||||
|
||||
# Sets up the blog virtual host on NGINX
|
||||
services.nginx.virtualHosts.${serverName} = {
|
||||
# Sets up Lets Encrypt SSL certificates for the blog
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
locations."/" = { proxyPass = "http://127.0.0.1:${toString port}"; };
|
||||
extraConfig = ''
|
||||
charset UTF-8;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=2592000; includeSubDomains" always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin";
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
'';
|
||||
};
|
||||
|
||||
# Sets up MySQL database and user for Ghost
|
||||
services.mysql = {
|
||||
ensureDatabases = [ dbName ];
|
||||
ensureUsers = [{
|
||||
name = dbUser;
|
||||
ensurePermissions = { "${dbName}.*" = "ALL PRIVILEGES"; };
|
||||
}];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -9,6 +9,6 @@
|
|||
wireguard = import ./wireguard.nix;
|
||||
backup = import ./backup.nix;
|
||||
ulogger-server = import ./ulogger.nix;
|
||||
blogg = import ./blogging.nix;
|
||||
gpodder2go = import ./gpodder2go.nix;
|
||||
# microbin = import ./microbin.nix; # includide in 23.11
|
||||
}
|
||||
|
|
|
@ -1,148 +0,0 @@
|
|||
{ options, lib, config, pkgs, ... }:
|
||||
let
|
||||
# domain for the Ghost blog
|
||||
serverName = "write.sealight.xyz";
|
||||
# port on which the Ghost service runs
|
||||
port = 1357;
|
||||
# user used to run the Ghost service
|
||||
userName = builtins.replaceStrings [ "." ] [ "_" ] serverName;
|
||||
# MySQL database used by Ghost
|
||||
dbName = userName;
|
||||
# MySQL user used by Ghost
|
||||
dbUser = userName;
|
||||
# directory used to save the blog content
|
||||
dataDir = "/var/lib/${userName}";
|
||||
# Ghost package we created in the section above
|
||||
ghost = import ./ghost { inherit pkgs; };
|
||||
# script that sets up the Ghost content directory
|
||||
setupScript = pkgs.writeScript "${serverName}-setup.sh" ''
|
||||
#! ${pkgs.stdenv.shell} -e
|
||||
chmod g+s "${dataDir}"
|
||||
[[ ! -d "${dataDir}/content" ]] && cp -r "${ghost}/content" "${dataDir}/content"
|
||||
chown -R "${userName}":"${userName}" "${dataDir}/content"
|
||||
chmod -R +w "${dataDir}/content"
|
||||
ln -f -s "/etc/${serverName}.json" "${dataDir}/config.production.json"
|
||||
[[ -d "${dataDir}/current" ]] && rm "${dataDir}/current"
|
||||
ln -f -s "${ghost}/current" "${dataDir}/current"
|
||||
[[ -d "${dataDir}/content/themes/casper" ]] && rm "${dataDir}/content/themes/casper"
|
||||
ln -f -s "${ghost}/current/content/themes/casper" "${dataDir}/content/themes/casper"
|
||||
'';
|
||||
|
||||
databaseService = "mysql.service";
|
||||
|
||||
serviceConfig = config.services."${serverName}";
|
||||
options = { enable = lib.mkEnableOption "${serverName} service"; };
|
||||
in {
|
||||
options.services.${serverName} = options;
|
||||
config = lib.mkIf serviceConfig.enable {
|
||||
# Creates the user and group
|
||||
users.users.${userName} = {
|
||||
isSystemUser = true;
|
||||
group = userName;
|
||||
createHome = true;
|
||||
home = dataDir;
|
||||
};
|
||||
users.groups.${userName} = { };
|
||||
|
||||
# Creates the Ghost config
|
||||
environment.etc."${serverName}.json".text = ''
|
||||
{
|
||||
"url": "https://${serverName}",
|
||||
"server": {
|
||||
"port": ${port},
|
||||
"host": "0.0.0.0"
|
||||
},
|
||||
"database": {
|
||||
"client": "mysql",
|
||||
"connection": {
|
||||
"host": "localhost",
|
||||
"user": "${dbUser}",
|
||||
"database": "${dbName}",
|
||||
"password": "",
|
||||
"socketPath": "/run/mysqld/mysqld.sock"
|
||||
}
|
||||
},
|
||||
"mail": {
|
||||
"transport": "sendmail"
|
||||
},
|
||||
"logging": {
|
||||
"transports": ["stdout"]
|
||||
},
|
||||
"paths": {
|
||||
"contentPath": "${dataDir}/content"
|
||||
}
|
||||
}
|
||||
'';
|
||||
|
||||
# Sets up the Systemd service
|
||||
systemd.services."${serverName}" = {
|
||||
enable = true;
|
||||
description = "${serverName} ghost blog";
|
||||
restartIfChanged = true;
|
||||
restartTriggers =
|
||||
[ ghost config.environment.etc."${serverName}.json".source ];
|
||||
requires = [ databaseService ];
|
||||
after = [ databaseService ];
|
||||
path = [ pkgs.nodejs pkgs.vips ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
User = userName;
|
||||
Group = userName;
|
||||
WorkingDirectory = dataDir;
|
||||
# Executes the setup script before start
|
||||
ExecStartPre = setupScript;
|
||||
# Runs Ghost with node
|
||||
ExecStart = "${pkgs.nodejs}/bin/node current/index.js";
|
||||
# Sandboxes the Systemd service
|
||||
AmbientCapabilities = [ ];
|
||||
CapabilityBoundingSet = [ ];
|
||||
KeyringMode = "private";
|
||||
LockPersonality = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
PrivateTmp = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectSystem = "full";
|
||||
RemoveIPC = true;
|
||||
RestrictAddressFamilies = [ ];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
};
|
||||
environment = { NODE_ENV = "production"; };
|
||||
};
|
||||
|
||||
# Sets up the blog virtual host on NGINX
|
||||
services.nginx.virtualHosts.${serverName} = {
|
||||
# Sets up Lets Encrypt SSL certificates for the blog
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
locations."/" = { proxyPass = "http://127.0.0.1:${toString port}"; };
|
||||
extraConfig = ''
|
||||
charset UTF-8;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=2592000; includeSubDomains" always;
|
||||
add_header Referrer-Policy "strict-origin-when-cross-origin";
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
'';
|
||||
};
|
||||
|
||||
# Sets up MySQL database and user for Ghost
|
||||
services.mysql = {
|
||||
ensureDatabases = [ dbName ];
|
||||
ensureUsers = [{
|
||||
name = dbUser;
|
||||
ensurePermissions = { "${dbName}.*" = "ALL PRIVILEGES"; };
|
||||
}];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
120
modules/nixos/gpodder2go.nix
Normal file
120
modules/nixos/gpodder2go.nix
Normal file
|
@ -0,0 +1,120 @@
|
|||
{ self, config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.gpodder;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
|
||||
services.gpodder = {
|
||||
enable = mkEnableOption "A gpodder instance";
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "gpodder";
|
||||
description = "User account under which gpodder runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "gpodder";
|
||||
description = "Group account under which gpodder runs.";
|
||||
};
|
||||
|
||||
hostname = mkOption {
|
||||
type = types.str;
|
||||
description = "Hostname of your gpodder service";
|
||||
};
|
||||
|
||||
dataFolder = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/gpodder";
|
||||
description = "State director";
|
||||
};
|
||||
|
||||
VERIFIER_SECRET_KEY = mkOption {
|
||||
type = types.str;
|
||||
default = "satnheiycglsrcgaecrlufg";
|
||||
description = "Verifer Secret";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.gpodder = {
|
||||
description = "gpodder2go A gpodder instance";
|
||||
after = [ "remote-fs.target" "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.gpodder2go}/bin/gpodder2go serve";
|
||||
Environment = [
|
||||
"VERIFIER_SECRET_KEY=${cfg.VERIFIER_SECRET_KEY}"
|
||||
];
|
||||
WorkingDirectory = cfg.dataFolder;
|
||||
TimeoutStopSec = " 20 ";
|
||||
KillMode = " process ";
|
||||
RestartSec = " 10 ";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
DevicePolicy = " closed ";
|
||||
NoNewPrivileges = " yes ";
|
||||
PrivateTmp = " yes ";
|
||||
PrivateUsers = " yes ";
|
||||
ProtectControlGroups = " yes ";
|
||||
ProtectKernelModules = " yes ";
|
||||
ProtectKernelTunables = " yes ";
|
||||
RestrictAddressFamilies = "
|
||||
AF_UNIX
|
||||
AF_INET
|
||||
AF_INET6 ";
|
||||
RestrictNamespaces = " yes ";
|
||||
RestrictRealtime = " yes ";
|
||||
SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap";
|
||||
ReadWritePaths = cfg.dataFolder;
|
||||
StateDirectory = baseNameOf cfg.dataFolder;
|
||||
};
|
||||
};
|
||||
|
||||
users.users = optionalAttrs (cfg.user == "gpodder") ({
|
||||
gpodder = {
|
||||
description = "gpodder service user";
|
||||
name = cfg.user;
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
});
|
||||
|
||||
users.groups = optionalAttrs (cfg.group == "gpodder") ({
|
||||
gpodder = { };
|
||||
});
|
||||
|
||||
# systemd.services.gpodder-install = {
|
||||
# description = "gpodder install service";
|
||||
# wantedBy = [ "multi-user.target" ];
|
||||
# before = [ "gpodder.service" ];
|
||||
# path = with pkgs; [ gpodder2go ];
|
||||
|
||||
# serviceConfig = {
|
||||
# User = cfg.user;
|
||||
# Type = "oneshot";
|
||||
# CacheDirectory = "gpodder";
|
||||
# # Stores sessions.
|
||||
# CacheDirectoryMode = "700";
|
||||
# ConfigurationDirectory = "gpodder";
|
||||
# LogsDirectory = "gpodder";
|
||||
# StateDirectory = "gpodder";
|
||||
# };
|
||||
|
||||
# script = ''
|
||||
# if [ ! -f "${cfg.dataFolder}/installed" ]; then
|
||||
# ${pkgs.gpodder2go}/bin/gpodder2go init
|
||||
# touch "${cfg.dataFolder}/installed"
|
||||
# fi
|
||||
# '';
|
||||
# };
|
||||
};
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
plymouth-themes = pkgs.callPackage ./plymouth.nix { };
|
||||
tic-80 = pkgs.callPackage ./tic-80.nix { };
|
||||
fennel-ls = pkgs.callPackage ./fennel-ls.nix { };
|
||||
kobopatch = pkgs.callPackage ./kobopatch.nix { };
|
||||
# kobopatch = pkgs.callPackage ./kobopatch.nix { };
|
||||
my-mautrix-discord = pkgs.callPackage ./mautrix-discord.nix { }; # Handled by matrix-appservices input
|
||||
ulogger-server = pkgs.callPackage ./ulogger.nix { };
|
||||
# Wallabag is now an overlay
|
||||
|
@ -13,5 +13,4 @@
|
|||
my-wallabag = pkgs.callPackage ./wallabag.nix { };
|
||||
mautrix-slack = pkgs.callPackage ./mautrix-slack.nix { };
|
||||
gpodder2go = pkgs.callPackage ./gpodder2go.nix { };
|
||||
ghost = pkgs.callPackage ./ghost { };
|
||||
}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
source "$stdenv"/setup
|
||||
|
||||
export HOME=$(mktemp -d)
|
||||
npm install --loglevel=info --logs-max=0 "ghost-cli@$ghostCliVersion"
|
||||
|
||||
mkdir --parents "$out"/
|
||||
node_modules/ghost-cli/bin/ghost install "$version" --db=sqlite3 \
|
||||
--no-enable --no-prompt --no-stack --no-setup --no-start --dir "$out"
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{ pkgs }:
|
||||
|
||||
let
|
||||
pname = "ghost";
|
||||
version = "5.8.0";
|
||||
in pkgs.stdenv.mkDerivation {
|
||||
inherit pname version;
|
||||
buildInputs = with pkgs; [ nodejs yarn vips ];
|
||||
ghostCliVersion = "1.21.1";
|
||||
builder = ./builder.sh;
|
||||
}
|
|
@ -1,16 +1,16 @@
|
|||
{ lib, buildGoModule, fetchFromGitHub }:
|
||||
|
||||
buildGoModule rec {
|
||||
buildGoModule {
|
||||
name = "kobopatch";
|
||||
version = "0.15.0";
|
||||
|
||||
vendorSha256 = "1i6srhyig4x8mywyc2l8wzzm1afvb7wxmjsr84c447sb1xss6p7x";
|
||||
vendorHash = "sha256-1i6srhyig4x8mywyc2l8wzzm1afvb7wxmjsr84c447sb1xss6p7x";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "geek1011";
|
||||
repo = "kobopatch";
|
||||
rev = "653070c67c83ec61884854efc4f8a3132d82a2e5";
|
||||
sha256 = "09hr3zh0w0f78cx40d2yydqv0mmjdh4iwdgia7sikraphvha85nn";
|
||||
hash = "sha256-09hr3zh0w0f78cx40d2yydqv0mmjdh4iwdgia7sikraphvha85nn";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
|
Loading…
Reference in a new issue