diff --git a/flake.lock b/flake.lock index 95b3ac85..7d1edbb5 100644 --- a/flake.lock +++ b/flake.lock @@ -10,11 +10,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1723293904, - "narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=", + "lastModified": 1754433428, + "narHash": "sha256-NA/FT2hVhKDftbHSwVnoRTFhes62+7dxZbxj5Gxvghs=", "owner": "ryantm", "repo": "agenix", - "rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41", + "rev": "9edb1787864c4f59ae5074ad498b6272b3ec308d", "type": "github" }, "original": { @@ -23,9 +23,36 @@ "type": "github" } }, + "autohide-tdrop": { + "inputs": { + "devenv": "devenv", + "fenix": "fenix", + "flake-parts": "flake-parts", + "flake-root": "flake-root", + "mk-shell-bin": "mk-shell-bin", + "nix2container": "nix2container", + "nixpkgs": [ + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1728286844, + "narHash": "sha256-JkCgvlN9uHltyc+GMHTo+VHZRwKpGMU6hwvL49tpd7U=", + "owner": "I-Want-ToBelieve", + "repo": "autohide-tdrop", + "rev": "c3eb1df4f4311de843179b03673296136ded0d2f", + "type": "github" + }, + "original": { + "owner": "I-Want-ToBelieve", + "repo": "autohide-tdrop", + "type": "github" + } + }, "basant": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_3", "nixpkgs": [ "nixpkgs" ], @@ -51,16 +78,16 @@ "brew-src": { "flake": false, "locked": { - "lastModified": 1756059815, - "narHash": "sha256-UALOxoXoFIHbwKzcqbqCAqw5cC0MJEehLaWSet5vxfE=", + "lastModified": 1758543057, + "narHash": "sha256-lw3V2jOGYphUFHYQ5oARcb6urlbNpUCLJy1qhsGdUmc=", "owner": "Homebrew", "repo": "brew", - "rev": "02947ea4edbdef5fcce9ee57fa289547f4d096c9", + "rev": "5b236456eb93133c2bd0d60ef35ed63f1c0712f6", "type": "github" }, "original": { "owner": "Homebrew", - "ref": "4.6.7", + "ref": "4.6.12", "repo": "brew", "type": "github" } @@ -73,11 +100,11 @@ ] }, "locked": { - "lastModified": 1700795494, - "narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=", + "lastModified": 1744478979, + "narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d", + "rev": "43975d782b418ebf4969e9ccba82466728c2851b", "type": "github" }, "original": { @@ -110,18 +137,18 @@ }, "deploy-rs": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "nixpkgs": [ "nixpkgs" ], "utils": "utils" }, "locked": { - "lastModified": 1718194053, - "narHash": "sha256-FaGrf7qwZ99ehPJCAwgvNY5sLCqQ3GDiE/6uLhxxwSY=", + "lastModified": 1756719547, + "narHash": "sha256-N9gBKUmjwRKPxAafXEk1EGadfk2qDZPBQp4vXWPHINQ=", "owner": "serokell", "repo": "deploy-rs", - "rev": "3867348fa92bc892eba5d9ddb2d7a97b9e127a8a", + "rev": "125ae9e3ecf62fb2c0fd4f2d894eb971f1ecaed2", "type": "github" }, "original": { @@ -130,6 +157,27 @@ "type": "github" } }, + "devenv": { + "inputs": { + "flake-compat": "flake-compat", + "nix": "nix", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1701187605, + "narHash": "sha256-NctguPdUeDVLXFsv6vI1RlEiHLsXkeW3pgZe/mwn1BU=", + "owner": "cachix", + "repo": "devenv", + "rev": "a7c4dd8f4eb1f98a6b8f04bf08364954e1e73e4f", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, "devshell": { "locked": { "lastModified": 1642188268, @@ -168,11 +216,11 @@ ] }, "locked": { - "lastModified": 1724031427, - "narHash": "sha256-o1HdAf+7IGv9M13R3c+zc/sJ0QgeEnhsvHBcodI4UpM=", + "lastModified": 1758287904, + "narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=", "owner": "nix-community", "repo": "disko", - "rev": "4e719b38fa7c85f4f65d0308ca7084c91e7bdd6d", + "rev": "67ff9807dd148e704baadbd4fd783b54282ca627", "type": "github" }, "original": { @@ -181,14 +229,36 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "autohide-tdrop", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1701671019, + "narHash": "sha256-ctG01Syj/7TrfV4arc3qyN4a3mAvgXbivYrdXKqdL8U=", + "owner": "nix-community", + "repo": "fenix", + "rev": "5e6667eda7fb055c0a8388172372fb89e5b33e05", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -198,6 +268,22 @@ } }, "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1641205782, @@ -213,7 +299,109 @@ "type": "github" } }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1751685974, + "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=", + "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1", + "type": "tarball", + "url": "https://git.lix.systems/api/v1/repos/lix-project/flake-compat/archive/549f2762aebeff29a2e5ece7a7dc0f955281a1d1.tar.gz?rev=549f2762aebeff29a2e5ece7a7dc0f955281a1d1" + }, + "original": { + "type": "tarball", + "url": "https://git.lix.systems/lix-project/flake-compat/archive/main.tar.gz" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1698882062, + "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=", + "path": "/nix/store/vf5ra8smwlqy3pi0300s580g5msc3xp7-source", + "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877", + "type": "path" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-root": { + "locked": { + "lastModified": 1692742795, + "narHash": "sha256-f+Y0YhVCIJ06LemO+3Xx00lIcqQxSKJHXT/yk1RTKxw=", + "owner": "srid", + "repo": "flake-root", + "rev": "d9a70d9c7a5fd7f3258ccf48da9335e9b47c3937", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "flake-root", + "type": "github" + } + }, "flake-utils": { + "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_2": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -228,7 +416,7 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_4": { "locked": { "lastModified": 1667395993, "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", @@ -243,9 +431,72 @@ "type": "github" } }, + "flake-utils_5": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "autohide-tdrop", + "devenv", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": [ + "tangled", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754078208, + "narHash": "sha256-YVoIFDCDpYuU3riaDEJ3xiGdPOtsx4sR5eTzHTytPV8=", + "owner": "nix-community", + "repo": "gomod2nix", + "rev": "7f963246a71626c7fc70b431a315c4388a0c95cf", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "gomod2nix", + "type": "github" + } + }, "grasp": { "inputs": { - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_4", "nixpkgs": [ "nixpkgs" ] @@ -267,11 +518,11 @@ }, "hardware": { "locked": { - "lastModified": 1723310128, - "narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=", + "lastModified": 1758663926, + "narHash": "sha256-6CFdj7Xs616t1W4jLDH7IohAAvl5Dyib3qEv/Uqw1rk=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf", + "rev": "170ff93c860b2a9868ed1e1102d4e52cb3d934e1", "type": "github" }, "original": { @@ -288,11 +539,11 @@ ] }, "locked": { - "lastModified": 1703113217, - "narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=", + "lastModified": 1745494811, + "narHash": "sha256-YZCh2o9Ua1n9uCvrvi5pRxtuVNml8X2a03qIFfRKpFs=", "owner": "nix-community", "repo": "home-manager", - "rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1", + "rev": "abfad3d2958c9e6300a883bd443512c55dfeb1be", "type": "github" }, "original": { @@ -308,11 +559,11 @@ ] }, "locked": { - "lastModified": 1751810233, - "narHash": "sha256-kllkNbIqQi3VplgTMeGzuh1t8Gk8TauvkTRt93Km+tQ=", + "lastModified": 1758463745, + "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", "owner": "nix-community", "repo": "home-manager", - "rev": "9b0873b46c9f9e4b7aa01eb634952c206af53068", + "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", "type": "github" }, "original": { @@ -341,11 +592,11 @@ "homebrew-cask": { "flake": false, "locked": { - "lastModified": 1757707077, - "narHash": "sha256-R3Mt2ofMzc3Qt5NC/c3j8f3Rqb0a7FOAT4duKcul+1I=", + "lastModified": 1759110411, + "narHash": "sha256-wsvLofMB/1bkjY6OQjjWU80+AbQiPzZSLZ3cjsYpOAs=", "owner": "homebrew", "repo": "homebrew-cask", - "rev": "b804675c8a9975cdcdf3996ca3e2d25c5b03e1d2", + "rev": "80f95de379d69edb696dd29106b2d8b077c98896", "type": "github" }, "original": { @@ -357,11 +608,11 @@ "homebrew-core": { "flake": false, "locked": { - "lastModified": 1757711740, - "narHash": "sha256-98COOWpl+mDMKlHytToJ7D/pz7DPBX4nT7C0cs+2v98=", + "lastModified": 1759116320, + "narHash": "sha256-FGqC/WlIJnMkhV7l6XK6r5AqUYkwTHvHBCUjFe3DUUY=", "owner": "homebrew", "repo": "homebrew-core", - "rev": "f7aa2e9987ef59cf692d5f8e1364b46d318732d5", + "rev": "0ccf924357d3eca3268d6dafb224ad9dc4f2398a", "type": "github" }, "original": { @@ -370,6 +621,72 @@ "type": "github" } }, + "htmx-src": { + "flake": false, + "locked": { + "narHash": "sha256-nm6avZuEBg67SSyyZUhjpXVNstHHgUxrtBHqJgowU08=", + "type": "file", + "url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js" + }, + "original": { + "type": "file", + "url": "https://unpkg.com/htmx.org@2.0.4/dist/htmx.min.js" + } + }, + "htmx-ws-src": { + "flake": false, + "locked": { + "narHash": "sha256-2fg6KyEJoO24q0fQqbz9RMaYNPQrMwpZh29tkSqdqGY=", + "type": "file", + "url": "https://cdn.jsdelivr.net/npm/htmx-ext-ws@2.0.2" + }, + "original": { + "type": "file", + "url": "https://cdn.jsdelivr.net/npm/htmx-ext-ws@2.0.2" + } + }, + "ibm-plex-mono-src": { + "flake": false, + "locked": { + "lastModified": 1731402384, + "narHash": "sha256-OwUmrPfEehLDz0fl2ChYLK8FQM2p0G1+EMrGsYEq+6g=", + "type": "tarball", + "url": "https://github.com/IBM/plex/releases/download/@ibm/plex-mono@1.1.0/ibm-plex-mono.zip" + }, + "original": { + "type": "tarball", + "url": "https://github.com/IBM/plex/releases/download/@ibm/plex-mono@1.1.0/ibm-plex-mono.zip" + } + }, + "indigo": { + "flake": false, + "locked": { + "lastModified": 1753693716, + "narHash": "sha256-DMIKnCJRODQXEHUxA+7mLzRALmnZhkkbHlFT2rCQYrE=", + "owner": "oppiliappan", + "repo": "indigo", + "rev": "5f170569da9360f57add450a278d73538092d8ca", + "type": "github" + }, + "original": { + "owner": "oppiliappan", + "repo": "indigo", + "type": "github" + } + }, + "inter-fonts-src": { + "flake": false, + "locked": { + "lastModified": 1731687360, + "narHash": "sha256-5vdKKvHAeZi6igrfpbOdhZlDX2/5+UvzlnCQV6DdqoQ=", + "type": "tarball", + "url": "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip" + }, + "original": { + "type": "tarball", + "url": "https://github.com/rsms/inter/releases/download/v4.1/Inter-4.1.zip" + } + }, "jovian": { "inputs": { "nix-github-actions": "nix-github-actions", @@ -391,6 +708,75 @@ "type": "github" } }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lucide-src": { + "flake": false, + "locked": { + "lastModified": 1754044466, + "narHash": "sha256-+exBR2OToB1iv7ZQI2S4B0lXA/QRvC9n6U99UxGpJGs=", + "type": "tarball", + "url": "https://github.com/lucide-icons/lucide/releases/download/0.536.0/lucide-icons-0.536.0.zip" + }, + "original": { + "type": "tarball", + "url": "https://github.com/lucide-icons/lucide/releases/download/0.536.0/lucide-icons-0.536.0.zip" + } + }, + "mk-shell-bin": { + "locked": { + "lastModified": 1677004959, + "narHash": "sha256-/uEkr1UkJrh11vD02aqufCxtbF5YnhRTIKlx5kyvf+I=", + "owner": "rrbutani", + "repo": "nix-mk-shell-bin", + "rev": "ff5d8bd4d68a347be5042e2f16caee391cd75887", + "type": "github" + }, + "original": { + "owner": "rrbutani", + "repo": "nix-mk-shell-bin", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": [ + "autohide-tdrop", + "devenv", + "nixpkgs" + ], + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1676545802, + "narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=", + "owner": "domenkozar", + "repo": "nix", + "rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "relaxed-flakes", + "repo": "nix", + "type": "github" + } + }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -418,11 +804,11 @@ "brew-src": "brew-src" }, "locked": { - "lastModified": 1756398546, - "narHash": "sha256-n4GVDLhKu65XFraJuCzap2AaZji4xhPaZMTJ8aQdD3s=", + "lastModified": 1758598228, + "narHash": "sha256-qr60maXGbZ4FX5tejPRI3nr0bnRTnZ3AbbbfO6/6jq4=", "owner": "zhaofengli-wip", "repo": "nix-homebrew", - "rev": "3aa475996cb3bc1ecefa88c99c466e6f0bc17431", + "rev": "f36e5db56e117f7df701ab152d0d2036ea85218c", "type": "github" }, "original": { @@ -434,9 +820,9 @@ "nix-matrix-appservices": { "inputs": { "devshell": "devshell", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "nixlib": "nixlib", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1683490239, @@ -452,6 +838,28 @@ "type": "gitlab" } }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "autohide-tdrop", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1700389764, + "narHash": "sha256-hMsZ741ri9c4ZQpB6mgLY8KErk0yXVAOUjfNkP1nbbw=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "4400b77e14f3095ee3215a9a5e0f9143bc0e8f2d", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, "nixlib": { "locked": { "lastModified": 1643502816, @@ -469,11 +877,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1723310128, - "narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=", + "lastModified": 1758663926, + "narHash": "sha256-6CFdj7Xs616t1W4jLDH7IohAAvl5Dyib3qEv/Uqw1rk=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf", + "rev": "170ff93c860b2a9868ed1e1102d4e52cb3d934e1", "type": "github" }, "original": { @@ -484,6 +892,88 @@ } }, "nixpkgs": { + "locked": { + "lastModified": 1678875422, + "narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1698611440, + "narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1695644571, + "narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1662099760, "narHash": "sha256-MdZLCTJPeHi/9fg6R9fiunyDwP3XHJqDd51zWWz9px0=", @@ -499,13 +989,13 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_4": { "locked": { - "lastModified": 1755274400, - "narHash": "sha256-rTInmnp/xYrfcMZyFMH3kc8oko5zYfxsowaLv1LVobY=", + "lastModified": 1758791193, + "narHash": "sha256-F8WmEwFoHsnix7rt290R0rFXNJiMbClMZyIC/e+HYf0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad7196ae55c295f53a7d1ec39e4a06d922f3b899", + "rev": "25e53aa156d47bad5082ff7618f5feb1f5e02d01", "type": "github" }, "original": { @@ -515,13 +1005,33 @@ "type": "github" } }, - "nur": { + "nixpkgs_5": { "locked": { - "lastModified": 1724040334, - "narHash": "sha256-Ia4gRRmhFn4oJ4SJKJPDNPomsRRFWU+bqCK7yuiLW4E=", + "lastModified": 1758690382, + "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e643668fd71b949c53f8626614b21ff71a07379d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_5" + }, + "locked": { + "lastModified": 1759117007, + "narHash": "sha256-DSnkPMhK2Eg0XLiyjEPVtIpdcmWmYsBMhVGCN1144SA=", "owner": "nix-community", "repo": "NUR", - "rev": "24471a48600e18669d13d24c9640b9859357d2cf", + "rev": "fccc09dffa659dc1410eceb33285831ba12bc7f6", "type": "github" }, "original": { @@ -537,11 +1047,11 @@ ] }, "locked": { - "lastModified": 1739858464, - "narHash": "sha256-WfADdP9Jc+YerTaqcuOG18ALWBHwUSPb99vFqpLJxGU=", + "lastModified": 1759014010, + "narHash": "sha256-NMpUufnxiGDTs/4Nxj8t+n4wc4aSs02a4T5OORo0gBQ=", "ref": "main", - "rev": "8d189090ac768f70a9c7d4c93f72c2129a79f59f", - "revCount": 1566, + "rev": "08c1dddf38c39d6f7c73a24f4d396f4c925185bf", + "revCount": 1602, "type": "git", "url": "ssh://gitea@git.sealight.xyz/aynish/kitaab" }, @@ -551,9 +1061,40 @@ "url": "ssh://gitea@git.sealight.xyz/aynish/kitaab" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": [ + "autohide-tdrop", + "devenv", + "flake-compat" + ], + "flake-utils": "flake-utils", + "gitignore": "gitignore", + "nixpkgs": [ + "autohide-tdrop", + "devenv", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1688056373, + "narHash": "sha256-2+SDlNRTKsgo3LBRiMUcoEUb6sDViRNQhzJquZ4koOI=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "5843cf069272d92b60c3ed9e55b7a8989c01d4c7", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "agenix": "agenix", + "autohide-tdrop": "autohide-tdrop", "basant": "basant", "darwin": "darwin_2", "deploy-rs": "deploy-rs", @@ -568,15 +1109,33 @@ "nix-homebrew": "nix-homebrew", "nix-matrix-appservices": "nix-matrix-appservices", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_4", "nur": "nur", "poonam": "poonam", "rust-overlay": "rust-overlay", + "tangled": "tangled", "tidalcycles": "tidalcycles", "unstable": "unstable", "vimwikicli": "vimwikicli" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1701447636, + "narHash": "sha256-WaCcxLNAqo/FAK0QtYqweKCUVTGcbKpFIHClc+k2YlI=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "e402c494b7c7d94a37c6d789a216187aaf9ccd3e", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "rust-overlay": { "inputs": { "nixpkgs": [ @@ -584,11 +1143,11 @@ ] }, "locked": { - "lastModified": 1724034091, - "narHash": "sha256-b1g7w0sw+MDAhUAeCoX1vlTghsqcDZkxr+k9OZmxPa8=", + "lastModified": 1759113356, + "narHash": "sha256-xm4kEUcV2jk6u15aHazFP4YsMwhq+PczA+Ul/4FDKWI=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c7d36e0947826e0751a5214ffe82533fbc909bc0", + "rev": "be3b8843a2be2411500f6c052876119485e957a2", "type": "github" }, "original": { @@ -597,6 +1156,19 @@ "type": "github" } }, + "sqlite-lib-src": { + "flake": false, + "locked": { + "lastModified": 1706631843, + "narHash": "sha256-bJoMjirsBjm2Qk9KPiy3yV3+8b/POlYe76/FQbciHro=", + "type": "tarball", + "url": "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip" + }, + "original": { + "type": "tarball", + "url": "https://sqlite.org/2024/sqlite-amalgamation-3450100.zip" + } + }, "superdirt-src": { "flake": false, "locked": { @@ -643,6 +1215,80 @@ "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" + } + }, + "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" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tangled": { + "inputs": { + "flake-compat": "flake-compat_4", + "gomod2nix": "gomod2nix", + "htmx-src": "htmx-src", + "htmx-ws-src": "htmx-ws-src", + "ibm-plex-mono-src": "ibm-plex-mono-src", + "indigo": "indigo", + "inter-fonts-src": "inter-fonts-src", + "lucide-src": "lucide-src", + "nixpkgs": [ + "nixpkgs" + ], + "sqlite-lib-src": "sqlite-lib-src" + }, + "locked": { + "lastModified": 1759559279, + "narHash": "sha256-gA0mh9Fx2uou2v75RMA6qUvWB3Z74Asc6pRjiojwaRo=", + "ref": "refs/heads/master", + "rev": "5ecd54b31547ac169a3b15d6034a67179f22aa33", + "revCount": 1486, + "type": "git", + "url": "https://tangled.org/@tangled.org/core" + }, + "original": { + "type": "git", + "url": "https://tangled.org/@tangled.org/core" + } + }, "tidal-src": { "flake": false, "locked": { @@ -672,11 +1318,11 @@ "vowel-src": "vowel-src" }, "locked": { - "lastModified": 1723223284, - "narHash": "sha256-NAT+g5nsaJZkpR0sCZjerd1xx233ZUdRH3ZWwZhzq/c=", + "lastModified": 1730626669, + "narHash": "sha256-nFyZrvTPn9OM9UZmuAwy3e1Ba0ZuYc2FaDCOOhGtqg4=", "owner": "mitchmindtree", "repo": "tidalcycles.nix", - "rev": "82f3e8e8d02eb9f0c9dfe9ab3773b825c6bc1982", + "rev": "0db0918e7a3d3c30ed7a6e81dc9d4e3832870ac4", "type": "github" }, "original": { @@ -685,13 +1331,31 @@ "type": "github" } }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1699786194, + "narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "unstable": { "locked": { - "lastModified": 1752687322, - "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", + "lastModified": 1758690382, + "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", + "rev": "e643668fd71b949c53f8626614b21ff71a07379d", "type": "github" }, "original": { @@ -703,14 +1367,14 @@ }, "utils": { "inputs": { - "systems": "systems_2" + "systems": "systems_4" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index ff71167f..2cb9d3d3 100644 --- a/flake.nix +++ b/flake.nix @@ -65,6 +65,12 @@ inputs.nixpkgs.follows = "unstable"; }; + # Tangled (atproto tools) + tangled = { + url = "git+https://tangled.org/@tangled.org/core"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + # Others nur.url = "github:nix-community/NUR"; rust-overlay = { @@ -73,6 +79,10 @@ }; tidalcycles.url = "github:mitchmindtree/tidalcycles.nix"; tidalcycles.inputs.nixpkgs.follows = "unstable"; + autohide-tdrop = { + url = "github:I-Want-ToBelieve/autohide-tdrop"; + inputs.nixpkgs.follows = "nixpkgs"; + }; # TODO hundred rabbits software # TODO needs secrets # dhyan.url = "git+ssh://gitea@git.sealight.xyz/aynish/dhyan?ref=main"; @@ -84,8 +94,8 @@ outputs = { self, nixpkgs, unstable, nixos-hardware, home-manager, deploy-rs , agenix, disko, basant, grasp, nix-matrix-appservices, nur, tidalcycles - , rust-overlay, vimwikicli, darwin, nix-homebrew, homebrew-bundle - , homebrew-core, homebrew-cask, jovian, ... }@inputs: + , rust-overlay, vimwikicli, autohide-tdrop, darwin, nix-homebrew, homebrew-bundle + , homebrew-core, homebrew-cask, jovian, tangled, ... }@inputs: let forAllSystems = nixpkgs.lib.genAttrs [ "aarch64-linux" @@ -101,6 +111,7 @@ }; vimwikiOverlay = final: prev: { vimwiki-cli = vimwikicli.packages.${prev.system}.vimwiki-cli; + autohide-tdrop = autohide-tdrop.packages.${prev.system}.default; }; nixpkgsFor = forAllSystems (system: @@ -116,6 +127,7 @@ "vcv-rack" "SunVox" "renoise" + "bitwig-studio-unwrapped" ]; }; overlays = [ @@ -141,6 +153,7 @@ # ]; overlays = [ agenix.overlays.default + tangled.overlays.default # atproto tools only on lite deployments self.overlays.additions self.overlays.modifications tidalcycles.overlays.default # needed for nvim which comes pre-installed lol diff --git a/home/profiles/cli/default.nix b/home/profiles/cli/default.nix index 2006c1d9..84962944 100644 --- a/home/profiles/cli/default.nix +++ b/home/profiles/cli/default.nix @@ -301,11 +301,12 @@ nepl = "n repl ''"; srch = "ns nixpkgs"; orch = "ns override"; + # Impure for bitwig on linux, not sure what it's for in darwin nrb = '' if [[ "$OSTYPE" == "darwin"* ]]; then cd ~/usr/helm && sudo darwin-rebuild switch --impure --flake ".#Anishs-MacBook-Pro" && cd $OLDPWD else - cd /tmp && sudo nixos-rebuild switch --flake '/home/anish/usr/helm#curve' && cd $OLDPWD + cd /tmp && sudo nixos-rebuild switch --flake --impure '/home/anish/usr/helm#curve' && cd $OLDPWD fi ''; nrt = "cd /tmp; sudo nixos-rebuild test --flake '/home/anish/usr/helm#curve'; cd $OLDPWD"; diff --git a/home/profiles/desktop/kitty.conf b/home/profiles/desktop/kitty.conf index 2122ff7c..b8cd3ec5 100644 --- a/home/profiles/desktop/kitty.conf +++ b/home/profiles/desktop/kitty.conf @@ -9,9 +9,8 @@ mouse_map left click ungrabbed mouse_click_url_or_select confirm_os_window_close 0 enable_audio_bell no + + # Ctrl+V for paste map ctrl+v paste_from_clipboard - --- Allows zen-mode.nvim to increase font size --- allow_remote_control socket-only --- listen_on unix:/tmp/kitty +mouse_map middle release ungrabbed paste_from_clipboard diff --git a/home/profiles/desktop/rofi/emojimenu.rasi b/home/profiles/desktop/rofi/emojimenu.rasi index 662aa044..00ab4a24 100644 --- a/home/profiles/desktop/rofi/emojimenu.rasi +++ b/home/profiles/desktop/rofi/emojimenu.rasi @@ -2,12 +2,35 @@ @import "config.rasi" +textbox { + vertical-align: 0.5; + horizontal-align: 0.5; +} + listview { - columns: 4; + columns: 9; + lines: 7; + cycle: true; + dynamic: true; + layout: vertical; + flow: horizontal; + reverse: false; + fixed-height: true; + fixed-columns: true; +} + +element { + orientation: vertical; +} + +element-text { + vertical-align: 0.5; + horizontal-align: 0.5; + font: "FiraCode Nerd Font 24"; } textbox-icon { - str: "🎑"; + str: "❇️ "; } prompt { diff --git a/home/profiles/desktop/sxhkdrc b/home/profiles/desktop/sxhkdrc index 160307c0..e33ccefd 100644 --- a/home/profiles/desktop/sxhkdrc +++ b/home/profiles/desktop/sxhkdrc @@ -16,7 +16,7 @@ super + Return kitty ctrl + super + Return - xst -e bash -c "(tmux ls | grep -qEv 'attached|scratch' && tmux at) || tmux" + tdrop -n tdrop_kitty --post-create-hook "autohide-tdrop &" -ma -h 60% -w 70% -x 15% -y 32 kitty --class=tdrop_kitty super + space rofi -show drun -modi drun,run -show-icons -theme theme/appmenu.rasi @@ -25,7 +25,7 @@ super + Tab rofi -show window -show-icons -theme theme/windowmenu.rasi super + e - rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy + rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy --hidden-descriptions super + a paste diff --git a/home/profiles/nvim/default.nix b/home/profiles/nvim/default.nix index aec3459e..943376b7 100644 --- a/home/profiles/nvim/default.nix +++ b/home/profiles/nvim/default.nix @@ -11,6 +11,15 @@ let }; }; + amp-nvim = pkgs.vimUtils.buildVimPlugin { + name = "amp-nvim"; + src = pkgs.fetchFromGitHub { + owner = "sourcegraph"; + repo = "amp.nvim"; + rev = "main"; + sha256 = "1n6d8nbakyg6yiq8mhhrvmsp9z0zb8cb67820jsg3wl6vqd1vwv5"; + }; + } my-lspsaga = pkgs.vimUtils.buildVimPlugin { name = "lspsaga.nvim"; src = pkgs.fetchFromGitHub { @@ -103,7 +112,6 @@ let doInstallCheck = false; nvimRequireCheck = "none"; }; - amp-nvim = import ./amp-plugin.nix { inherit pkgs; }; }; my-python-packages = python-packages: with python-packages; [ @@ -224,6 +232,7 @@ in nnoremap fb Telescope buffers nnoremap fh Telescope help_tags nnoremap ft Telescope tags + nnoremap fr lua KitaabRecent() " exit normal mode in terminal :tnoremap @@ -1021,6 +1030,110 @@ in vim.keymap.set('n', '', 'resize +2', {silent = true}) vim.keymap.set('n', '', 'vertical resize +2', {silent = true}) + -- Kitaab recent files (only date-based files, sorted reverse) + function KitaabRecent() + local pickers = require('telescope.pickers') + local finders = require('telescope.finders') + local conf = require('telescope.config').values + + -- Use current working directory + local kitaab_path = vim.fn.getcwd() + + -- Get all files (depth 1, exclude directories) + local files = vim.fn.readdir(kitaab_path, function(name) + return vim.fn.isdirectory(kitaab_path .. '/' .. name) == 0 + end) + + -- Filter to only date-based files (starting with digit) + local date_files = {} + for _, filename in ipairs(files) do + if filename:match('^%d') then + table.insert(date_files, filename) + end + end + + -- Sort in reverse (most recent first) + table.sort(date_files, function(a, b) return a > b end) + + pickers.new({}, { + prompt_title = 'Kitaab Recent', + finder = finders.new_table({ + results = date_files, + entry_maker = function(entry) + return { + value = kitaab_path .. '/' .. entry, + display = entry, + ordinal = entry, + path = kitaab_path .. '/' .. entry, + } + end + }), + previewer = conf.file_previewer({}), + sorter = conf.generic_sorter({}), + }):find() + end + + -- Setup amp.nvim + require('amp').setup({ + auto_start = true, + log_level = "info" + }) + + -- Amp commands + vim.api.nvim_create_user_command("AmpSend", function(opts) + local message = opts.args + if message == "" then + print("Please provide a message to send") + return + end + local amp_message = require("amp.message") + amp_message.send_message(message) + end, { + nargs = "*", + desc = "Send a message to Amp", + }) + + vim.api.nvim_create_user_command("AmpSendBuffer", function(opts) + local buf = vim.api.nvim_get_current_buf() + local lines = vim.api.nvim_buf_get_lines(buf, 0, -1, false) + local content = table.concat(lines, "\n") + local amp_message = require("amp.message") + amp_message.send_message(content) + end, { + nargs = "?", + desc = "Send current buffer contents to Amp", + }) + + vim.api.nvim_create_user_command("AmpPromptSelection", function(opts) + local lines = vim.api.nvim_buf_get_lines(0, opts.line1 - 1, opts.line2, false) + local text = table.concat(lines, "\n") + local amp_message = require("amp.message") + amp_message.send_to_prompt(text) + end, { + range = true, + desc = "Add selected text to Amp prompt", + }) + + vim.api.nvim_create_user_command("AmpPromptRef", function(opts) + local bufname = vim.api.nvim_buf_get_name(0) + if bufname == "" then + print("Current buffer has no filename") + return + end + local relative_path = vim.fn.fnamemodify(bufname, ":.") + local ref = "@" .. relative_path + if opts.line1 ~= opts.line2 then + ref = ref .. "#L" .. opts.line1 .. "-" .. opts.line2 + elseif opts.line1 > 1 then + ref = ref .. "#L" .. opts.line1 + end + local amp_message = require("amp.message") + amp_message.send_to_prompt(ref) + end, { + range = true, + desc = "Add file reference (with selection) to Amp prompt", + }) + EOF ''; @@ -1139,16 +1252,16 @@ in # custom yuck-vim nvim-parinfer + amp-nvim # vim-processing ] ++ lib.optionals pkgs.stdenv.isLinux [ # Linux-only plugins vim-tidal # requires SuperCollider which is Linux-only - ] ++ lib.optionals (customPlugins.amp-nvim != null) [ - customPlugins.amp-nvim - ]; + ] withPython3 = true; extraPython3Packages = pkgs: with pkgs; [ tasklib six packaging ]; vimAlias = true; }; } + diff --git a/hosts/box/default.nix b/hosts/box/default.nix index 2c651928..6e73a783 100644 --- a/hosts/box/default.nix +++ b/hosts/box/default.nix @@ -18,6 +18,7 @@ ../profiles/wallabag ../profiles/finance ../profiles/sync/website + ../profiles/sync/music ../profiles/grasp # ../profiles/archivebox # ../profiles/woodpecker-agent diff --git a/hosts/curve/default.nix b/hosts/curve/default.nix index b166ef52..414c29ca 100644 --- a/hosts/curve/default.nix +++ b/hosts/curve/default.nix @@ -23,12 +23,15 @@ settings.PermitRootLogin = "no"; }; + hardware.keyboard.qmk.enable = true; + services.udev.packages = with pkgs; [ via ]; + # import profiling tools programs.systemtap.enable = true; virtualisation.docker.enable = true; virtualisation.docker.storageDriver = "btrfs"; - environment.systemPackages = with pkgs; [ docker-compose ]; + environment.systemPackages = with pkgs; [ docker-compose via ]; # Speed up boot by removing dependency on network systemd = { @@ -69,7 +72,7 @@ # lazy enable of ports necessary for KDE connect which is installed via cli home profile (for some reason?) networking.firewall = { - allowedTCPPorts = [ 22 4173 ]; # allow ssh + allowedTCPPorts = [ 22 4173 3000 ]; # allow ssh and vibekanban allowedTCPPortRanges = [{ from = 1714; to = 1764; diff --git a/hosts/profiles/desktop/default.nix b/hosts/profiles/desktop/default.nix index 6c17ce3b..f1b38f91 100644 --- a/hosts/profiles/desktop/default.nix +++ b/hosts/profiles/desktop/default.nix @@ -98,6 +98,7 @@ in { # tic-80 ytfzf yt-dlp + # autohide-tdrop ]; xdg.portal = { diff --git a/hosts/profiles/gonic/default.nix b/hosts/profiles/gonic/default.nix index 1dd18e42..e035cbbe 100644 --- a/hosts/profiles/gonic/default.nix +++ b/hosts/profiles/gonic/default.nix @@ -1,5 +1,6 @@ { config, lib, pkgs, ... }: { + environment.systemPackages = [ pkgs.ffmpeg ]; mossnet.gonic.enable = true; mossnet.gonic.settings = '' music-path /mnt/two/music/ diff --git a/hosts/profiles/music/default.nix b/hosts/profiles/music/default.nix index 5e0d4225..622af9fa 100644 --- a/hosts/profiles/music/default.nix +++ b/hosts/profiles/music/default.nix @@ -29,6 +29,7 @@ # ardour # reaper # renoise + bitwig-studio ]; services.pulseaudio.enable = false; diff --git a/hosts/profiles/sync/music/default.nix b/hosts/profiles/sync/music/default.nix index 4c070e43..b1f2020d 100644 --- a/hosts/profiles/sync/music/default.nix +++ b/hosts/profiles/sync/music/default.nix @@ -5,16 +5,19 @@ serviceConfig.Type = "oneshot"; path = [ pkgs.coreutils + pkgs.openssh + pkgs.gawk pkgs.rsync + pkgs.beets ]; script = builtins.readFile ./get-music.sh; serviceConfig = { User = "anish"; }; }; - systemd.timers.get-music-timer = { + systemd.timers.get-music-sync = { wantedBy = [ "timers.target" ]; partOf = [ "get-music-sync.service" ]; - timerConfig.OnCalendar = [ "daily" ]; + timerConfig.OnCalendar = [ "hourly" ]; }; } diff --git a/hosts/profiles/sync/music/get-music.sh b/hosts/profiles/sync/music/get-music.sh old mode 100644 new mode 100755 index 2269bb89..5d67289a --- a/hosts/profiles/sync/music/get-music.sh +++ b/hosts/profiles/sync/music/get-music.sh @@ -1,9 +1,61 @@ #!/usr/bin/env bash -rsync -r --ignore-existing --log-file=/data/incoming/download-log hypercube@talos.feralhosting.com:private/transmission/data/* /data/incoming -# you need to set defaults for beets -# if already imported -> Skip -# Auto accept changes -# also install it lmao -#beet import /data/incoming +set -euo pipefail +REMOTE_HOST="aynish@talos.feralhosting.com" +REMOTE_PATH="private/transmission/data/" +LOCAL_PATH="/mnt/two/incoming" +TRACKING_FILE="/mnt/two/incoming/.downloaded_albums" +LOG_FILE="/mnt/two/incoming/download-log" + +# Create tracking file if it doesn't exist +touch "$TRACKING_FILE" + +# Get list of albums on remote server +echo "$(date): Checking for new albums on seedbox..." >>"$LOG_FILE" +REMOTE_ALBUMS=$(rsync --dry-run --list-only "$REMOTE_HOST:$REMOTE_PATH" | grep '^d' | awk '{$1=$2=$3=$4=""; sub(/^ +/, ""); print}' | grep -v '^\.') || true + +if [ -z "$REMOTE_ALBUMS" ]; then + echo "$(date): No albums found on remote server" >>"$LOG_FILE" + exit 0 +fi + +# Check each album against tracking file +NEW_ALBUMS="" +while IFS= read -r album; do + if [ -n "$album" ] && ! grep -qF "$album" "$TRACKING_FILE"; then + NEW_ALBUMS="$NEW_ALBUMS$album\n" + echo "$(date): Found new album: $album" >>"$LOG_FILE" + fi +done <<<"$REMOTE_ALBUMS" + +if [ -z "$NEW_ALBUMS" ]; then + echo "$(date): No new albums to download" >>"$LOG_FILE" + exit 0 +fi + +# Download new albums only +echo "$(date): Starting download of new albums..." >>"$LOG_FILE" +while IFS= read -r album; do + if [ -n "$album" ]; then + echo "$(date): Downloading $album" >>"$LOG_FILE" + if rsync -r --log-file="$LOG_FILE" "$REMOTE_HOST:$REMOTE_PATH$album/" "$LOCAL_PATH/$album/"; then + echo "$album" >>"$TRACKING_FILE" + echo "$(date): Successfully downloaded $album" >>"$LOG_FILE" + + # Import to beets + echo "$(date): Importing $album to beets..." >>"$LOG_FILE" + # Set umask to allow group read/write access + umask 002 + if beet -p fetchart import -m -l /home/anish/music.log -q -g "$LOCAL_PATH/$album"; then + echo "$(date): Successfully imported $album to beets" >>"$LOG_FILE" + else + echo "$(date): Failed to import $album to beets" >>"$LOG_FILE" + fi + else + echo "$(date): Failed to download $album" >>"$LOG_FILE" + fi + fi +done <<<"$(echo -e "$NEW_ALBUMS")" + +echo "$(date): Music sync completed" >>"$LOG_FILE"