Compare commits
7 commits
3eed0bb1e5
...
f028e2170b
Author | SHA1 | Date | |
---|---|---|---|
|
f028e2170b | ||
|
98e10edfe8 | ||
|
0ae24fac22 | ||
|
95845cfe48 | ||
|
694f8f06c6 | ||
|
e143e3ee98 | ||
|
3bbe07d784 |
10 changed files with 374 additions and 191 deletions
134
flake.lock
134
flake.lock
|
@ -8,11 +8,11 @@
|
|||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1716561646,
|
||||
"narHash": "sha256-UIGtLO89RxKt7RF2iEgPikSdU53r6v/6WYB0RW3k89I=",
|
||||
"lastModified": 1718371084,
|
||||
"narHash": "sha256-abpBi61mg0g+lFFU0zY4C6oP6fBwPzbHPKBGw676xsA=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "c2fc0762bbe8feb06a2e59a364fa81b3a57671c9",
|
||||
"rev": "3a56735779db467538fb2e577eda28a9daacaca6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -85,11 +85,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717535930,
|
||||
"narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=",
|
||||
"lastModified": 1718474113,
|
||||
"narHash": "sha256-UKrfy/46YF2TRnxTtKCYzqf2f5ZPRRWwKCCJb7O5X8U=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "55e7754ec31dac78980c8be45f8a28e80e370946",
|
||||
"rev": "0095fd8ea00ae0a9e6014f39c375e40c2fbd3386",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -105,11 +105,11 @@
|
|||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718020088,
|
||||
"narHash": "sha256-zi/5nEeOiDEKWvXYlW4nYQIVQeLihytUn/c0dbIy5ek=",
|
||||
"lastModified": 1718194053,
|
||||
"narHash": "sha256-FaGrf7qwZ99ehPJCAwgvNY5sLCqQ3GDiE/6uLhxxwSY=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "9c3147639c233f80d333fe81f463b0a87fc49764",
|
||||
"rev": "3867348fa92bc892eba5d9ddb2d7a97b9e127a8a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -337,11 +337,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717931644,
|
||||
"narHash": "sha256-Sz8Wh9cAiD5FhL8UWvZxBfnvxETSCVZlqWSYWaCPyu0=",
|
||||
"lastModified": 1719180626,
|
||||
"narHash": "sha256-vZAzm5KQpR6RGple1dzmSJw5kPivES2heCFM+ZWkt0I=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "3d65009effd77cb0d6e7520b68b039836a7606cf",
|
||||
"rev": "6b1f90a8ff92e81638ae6eb48cd62349c3e387bb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -352,11 +352,11 @@
|
|||
},
|
||||
"impermanence": {
|
||||
"locked": {
|
||||
"lastModified": 1717932370,
|
||||
"narHash": "sha256-7C5lCpiWiyPoIACOcu2mukn/1JRtz6HC/1aEMhUdcw0=",
|
||||
"lastModified": 1719091691,
|
||||
"narHash": "sha256-AxaLX5cBEcGtE02PeGsfscSb/fWMnyS7zMWBXQWDKbE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"rev": "27979f1c3a0d3b9617a3563e2839114ba7d48d3f",
|
||||
"rev": "23c1f06316b67cb5dabdfe2973da3785cfe9c34a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -373,11 +373,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718081048,
|
||||
"narHash": "sha256-dwKvamucNK8gB6RTTfnBeBbBgjARQgHQph8PdHZoL3s=",
|
||||
"lastModified": 1719292813,
|
||||
"narHash": "sha256-6w/buoRKo4ijH9O4D/0KjNtiWjtrJebuV7djTEEa0+k=",
|
||||
"owner": "Jovian-Experiments",
|
||||
"repo": "Jovian-NixOS",
|
||||
"rev": "f27db3a9a8c21a65c1ef50cacca3ef2bfff04cb9",
|
||||
"rev": "d6222e7818aa5528f8369afe84bc53556a57c329",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -399,11 +399,11 @@
|
|||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717943411,
|
||||
"narHash": "sha256-43QN3+P7UjAz5ZjjUeYGKAyRfv6BLw7jjdc8Ric/6UQ=",
|
||||
"lastModified": 1718782018,
|
||||
"narHash": "sha256-8SBmf7Sx5xMLzL4VGEU0fe8cuq0yMumdkXgOPXXD3Bo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "lanzaboote",
|
||||
"rev": "56ed078dc92baf72813d55dcfe399715a632bc41",
|
||||
"rev": "6fa7bc0522f71d3906a3788bbd80c344cd9c4523",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -415,16 +415,16 @@
|
|||
"lix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714955862,
|
||||
"narHash": "sha256-REWlo2RYHfJkxnmZTEJu3Cd/2VM+wjjpPy7Xi4BdDTQ=",
|
||||
"ref": "refs/tags/2.90-beta.1",
|
||||
"rev": "b6799ab0374a8e1907a48915d3187e07da41d88c",
|
||||
"revCount": 15501,
|
||||
"lastModified": 1718419213,
|
||||
"narHash": "sha256-WY7BGnu5PnbK4O8cKKv9kvxwzZIGbIQUQLGPHFXitI0=",
|
||||
"ref": "refs/tags/2.90.0-rc1",
|
||||
"rev": "253546d5fbf8a5aa60ac8164c1b4f5794dc4e9d1",
|
||||
"revCount": 15780,
|
||||
"type": "git",
|
||||
"url": "https://git@git.lix.systems/lix-project/lix"
|
||||
},
|
||||
"original": {
|
||||
"ref": "refs/tags/2.90-beta.1",
|
||||
"ref": "refs/tags/2.90.0-rc1",
|
||||
"type": "git",
|
||||
"url": "https://git@git.lix.systems/lix-project/lix"
|
||||
}
|
||||
|
@ -441,11 +441,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717647344,
|
||||
"narHash": "sha256-m8XYt8NU2T4gvkien7H7LFGXHhSA5z4tHOeuXQ3DJi4=",
|
||||
"lastModified": 1718778751,
|
||||
"narHash": "sha256-DdcMvX9r29uHMlz7P1Shgs5xZw9WkZ4ObMGYzwROAiw=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "4e25f1ab68f2270f9cff59216056c21073db0164",
|
||||
"revCount": 87,
|
||||
"rev": "909e593ae9f5fe338ab19b4ed9d52bb0ea09bad8",
|
||||
"revCount": 90,
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/nixos-module"
|
||||
},
|
||||
|
@ -463,11 +463,11 @@
|
|||
"spectrum": "spectrum"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717441449,
|
||||
"narHash": "sha256-juxjgmLnFbl+/hhIO2cVtIa6caCO4pLKlZWUMwAOznM=",
|
||||
"lastModified": 1719185120,
|
||||
"narHash": "sha256-xsdESZDwOs0o96VlZNxThfLG8HW+qT2c7dYypGGUYXg=",
|
||||
"owner": "astro",
|
||||
"repo": "microvm.nix",
|
||||
"rev": "e3a4dd5b381fb580804105594cc9c71dc45abdb5",
|
||||
"rev": "146fec824fe8e06454e211a14ce29b5f692ad078",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -544,11 +544,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718011381,
|
||||
"narHash": "sha256-sFXI+ZANp/OC+MwfJoZgPSf4xMdtzQMe1pS3FGti4C8=",
|
||||
"lastModified": 1719111455,
|
||||
"narHash": "sha256-rnIxHx+fLpydjMQsbpZ21kblUr/lMqSaAtMA4+qMMEE=",
|
||||
"owner": "Mic92",
|
||||
"repo": "nix-index-database",
|
||||
"rev": "88ad3d7501e22b2401dd72734b032b7baa794434",
|
||||
"rev": "4293f532d0107dfb7e6f8b34a0421dc8111320e6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -559,11 +559,11 @@
|
|||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1717995329,
|
||||
"narHash": "sha256-lQJXEFHHVsFdFLx0bvoRbZH3IXUBsle6EWj9JroTJ/s=",
|
||||
"lastModified": 1719322773,
|
||||
"narHash": "sha256-BqPxtFwXrpJQDh65NOIHX99pz2rtIMshG9Mt2xnnc5c=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "58b52b0dd191af70f538c707c66c682331cfdffc",
|
||||
"rev": "caabc425565bbd5c8640630b0bf6974961a49242",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -669,11 +669,11 @@
|
|||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1718105627,
|
||||
"narHash": "sha256-xbuMFMCsfTvr7ovfOT5+HeHV87QVFa+i1R9EvtXv1os=",
|
||||
"lastModified": 1719322817,
|
||||
"narHash": "sha256-Uv4sSqcIBguggDv2I8i7ksHKIhpL3SuLy5SsAOUxHQc=",
|
||||
"owner": "arachnist",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "374003c8a1bfc4f5b10f45b1e47c0b26d072f10b",
|
||||
"rev": "00baa6e33c3aa3e0f938bb4fa80fe89fcc4a9dbf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -774,11 +774,11 @@
|
|||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717813066,
|
||||
"narHash": "sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28=",
|
||||
"lastModified": 1718504420,
|
||||
"narHash": "sha256-F2HT/abCfr0CDpkvXwYCscJyD66XDTLMVfdrIMRp2ck=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "6dc3e45fe4aee36efeed24d64fc68b1f989d5465",
|
||||
"rev": "0043c3f92304823cc2c0a4354b0feaa61dfb4cd9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -794,15 +794,14 @@
|
|||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-24_05": "nixpkgs-24_05",
|
||||
"utils": "utils_2"
|
||||
"nixpkgs-24_05": "nixpkgs-24_05"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718084203,
|
||||
"narHash": "sha256-Cx1xoVfSMv1XDLgKg08CUd1EoTYWB45VmB9XIQzhmzI=",
|
||||
"lastModified": 1718697807,
|
||||
"narHash": "sha256-Enla61WFisytTYbWygPynEbu8vozjeGc6Obkj2GRj7o=",
|
||||
"owner": "simple-nixos-mailserver",
|
||||
"repo": "nixos-mailserver",
|
||||
"rev": "29916981e7b3b5782dc5085ad18490113f8ff63b",
|
||||
"rev": "290a995de5c3d3f08468fa548f0d55ab2efc7b6b",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
|
@ -918,21 +917,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_6": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
|
@ -950,24 +934,6 @@
|
|||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709126324,
|
||||
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
lix = {
|
||||
url =
|
||||
"git+https://git@git.lix.systems/lix-project/lix?ref=refs/tags/2.90-beta.1";
|
||||
"git+https://git@git.lix.systems/lix-project/lix?ref=refs/tags/2.90.0-rc1";
|
||||
flake = false;
|
||||
};
|
||||
lix-module = {
|
||||
|
|
|
@ -45,6 +45,7 @@ in {
|
|||
extraPackages = ci-packages;
|
||||
};
|
||||
|
||||
services.gitea-actions-runner.package = pkgs.forgejo-runner;
|
||||
services.gitea-actions-runner.instances.nix = {
|
||||
enable = true;
|
||||
name = config.networking.hostName;
|
||||
|
|
|
@ -3,6 +3,7 @@ let inherit (self) lib;
|
|||
in {
|
||||
cass = super.callPackage ../pkgs/cass.nix { };
|
||||
notbot = super.callPackage ../pkgs/notbot.nix { };
|
||||
nix-top = super.callPackage ../pkgs/nix-top { };
|
||||
glitch-soc = let
|
||||
emoji-reactions = import ../pkgs/glitch-soc/emoji.nix {
|
||||
inherit (super) fetchpatch fetchurl;
|
||||
|
|
|
@ -116,12 +116,22 @@
|
|||
"https://github.com/glitch-soc/mastodon/pull/2462/commits/e48512b008f406a1f19336e71c44d33362df2606.patch";
|
||||
hash = "sha256-wPPZkkeieMbO0jeO9VXqQyW+F+D7WmcFoXSVHGY03bM=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url =
|
||||
"https://github.com/glitch-soc/mastodon/pull/2462/commits/c8009ba98fcc78b34d4c7087b8501f21acf5e59f.patch";
|
||||
hash = "sha256-NzPDILSEQvcVqARq400nu7ImrPiYlHb0ye5AEexrVrs=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url =
|
||||
"https://github.com/glitch-soc/mastodon/pull/2462/commits/c55e6ee195d4ccbaaa67cd84579ed9902d6d921e.patch";
|
||||
hash = "sha256-gvXd0BRQO+pAnH6+2fyxucrntbYw2Fcx7XmiMxs8y+g=";
|
||||
})
|
||||
];
|
||||
files = [
|
||||
{
|
||||
src = fetchurl {
|
||||
url =
|
||||
"https://github.com/glitch-soc/mastodon/raw/e48512b008f406a1f19336e71c44d33362df2606/app%2Fjavascript%2Fimages%2Fmailer-new%2Fheading%2Freaction.png";
|
||||
"https://github.com/glitch-soc/mastodon/raw/c55e6ee195d4ccbaaa67cd84579ed9902d6d921e/app%2Fjavascript%2Fimages%2Fmailer-new%2Fheading%2Freaction.png";
|
||||
hash = "sha256-6QLPNTSigxXryjO0IbvZFOQjWrnwrQHr5Mb0ZJllMLk=";
|
||||
};
|
||||
name = "app/javascript/images/mailer-new/heading/reaction.png";
|
||||
|
@ -129,7 +139,7 @@
|
|||
{
|
||||
src = fetchurl {
|
||||
url =
|
||||
"https://github.com/glitch-soc/mastodon/raw/e48512b008f406a1f19336e71c44d33362df2606/app%2Fjavascript%2Fimages%2Fmailer%2Ficon_add.png";
|
||||
"https://github.com/glitch-soc/mastodon/raw/c55e6ee195d4ccbaaa67cd84579ed9902d6d921e/app%2Fjavascript%2Fimages%2Fmailer%2Ficon_add.png";
|
||||
hash = "sha256-UYDdj5GKsg1cfVTx04hwsEURk6iKZfQCMAA2UFT0SJA=";
|
||||
};
|
||||
name = "app/javascript/images/mailer/icon_add.png";
|
||||
|
|
|
@ -311,10 +311,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "086p13m92jhvgqygjh3kcifn5mafym7z1j2a1gdlbslins9g40pm";
|
||||
sha256 = "0pnj3glmrxmrgz5q5ym3lcis5cjdiccnnhxnfc6lvq5g1rywsngx";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.152.0";
|
||||
version = "1.152.3";
|
||||
};
|
||||
aws-sigv4 = {
|
||||
dependencies = [ "aws-eventstream" ];
|
||||
|
@ -1156,10 +1156,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0k723mwj17jssa1zm0mpi4sapsrllg9yphkm4zjg451g8bqkjjpq";
|
||||
sha256 = "1z7k3al9bb5ypzkrvi5szpfyi8sksggq68fwxrxywq6rky5lvhdq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.1.1";
|
||||
version = "1.1.3";
|
||||
};
|
||||
formatador = {
|
||||
groups = [ "default" ];
|
||||
|
@ -1465,10 +1465,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "14pji5w708d6v63m3yvyfx1d9gg0mi5x1a2czxf6259zncq2ymda";
|
||||
sha256 = "05w1vv6bcgf3b3v8xys94i09g01qwpxwlzlnd3c5qlbs0kc2hag7";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.13.1";
|
||||
version = "1.13.2";
|
||||
};
|
||||
jmespath = {
|
||||
groups = [ "default" ];
|
||||
|
@ -1776,10 +1776,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1c81d68r4wx0ckbmqxlfqc2qpd94jwcmqdm0xgr0s46r48pv9k9q";
|
||||
sha256 = "1pv28xh8mss25fj4nd5r6zds1br8ssr2bpxr0md5pskv38m5qz0f";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.0.1";
|
||||
version = "1.0.2";
|
||||
};
|
||||
mime-types = {
|
||||
dependencies = [ "mime-types-data" ];
|
||||
|
@ -1797,10 +1797,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0kybw1a6f7d1ipyawnpi5cwiy05rkz9qwglgfvhmd1z0l2gcigmm";
|
||||
sha256 = "0rri45lldyk3bsg4yqpxcl1xrnxnqasnw94x03w5arq3yy7kff65";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2024.0507";
|
||||
version = "3.2024.0604";
|
||||
};
|
||||
mini_mime = {
|
||||
groups = [ "default" "development" "test" ];
|
||||
|
@ -1968,10 +1968,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1lla2macphrlbzkirk0nwwwhcijrfymyfjjw1als0kwqd0n1cdpc";
|
||||
sha256 = "1vz1ychq2fhfqjgqdrx8bqkaxg5dzcgwnah00m57ydylczfy8pwk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.16.5";
|
||||
version = "1.16.6";
|
||||
};
|
||||
nsa = {
|
||||
dependencies =
|
||||
|
@ -2144,6 +2144,21 @@
|
|||
};
|
||||
version = "0.1.0";
|
||||
};
|
||||
opentelemetry-instrumentation-action_mailer = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-instrumentation-active_support"
|
||||
"opentelemetry-instrumentation-base"
|
||||
];
|
||||
groups = [ "default" "opentelemetry" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1afibmwprdiqnkin7lb6zdxng36rqa7qbl5fl9wx0lchpc039zjj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.1.0";
|
||||
};
|
||||
opentelemetry-instrumentation-action_pack = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
|
@ -2241,34 +2256,26 @@
|
|||
version = "0.21.3";
|
||||
};
|
||||
opentelemetry-instrumentation-excon = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-common"
|
||||
"opentelemetry-instrumentation-base"
|
||||
];
|
||||
dependencies = [ "opentelemetry-api" "opentelemetry-instrumentation-base" ];
|
||||
groups = [ "opentelemetry" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "13f19fw3ffg13g2w9kh4x84plrnhf9c0yxxm15dl3lycsbji2hvs";
|
||||
sha256 = "15j04bjyfws2bgnl8rz00irwnh0ayz34q6y5iajk204ch2vxhcqz";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.22.1";
|
||||
version = "0.22.3";
|
||||
};
|
||||
opentelemetry-instrumentation-faraday = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-common"
|
||||
"opentelemetry-instrumentation-base"
|
||||
];
|
||||
dependencies = [ "opentelemetry-api" "opentelemetry-instrumentation-base" ];
|
||||
groups = [ "opentelemetry" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1ax6pd5sgrwdcck9pa6vfcz1b971b1s83spyrrfkpxpsz40hl0gk";
|
||||
sha256 = "0jgwgblcrc84h7zacm232zyjp0z2cxs7k4dqz4sa5bdkindqrsz6";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.24.2";
|
||||
version = "0.24.4";
|
||||
};
|
||||
opentelemetry-instrumentation-http = {
|
||||
dependencies = [ "opentelemetry-api" "opentelemetry-instrumentation-base" ];
|
||||
|
@ -2282,34 +2289,26 @@
|
|||
version = "0.23.3";
|
||||
};
|
||||
opentelemetry-instrumentation-http_client = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-common"
|
||||
"opentelemetry-instrumentation-base"
|
||||
];
|
||||
dependencies = [ "opentelemetry-api" "opentelemetry-instrumentation-base" ];
|
||||
groups = [ "opentelemetry" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1lzc5y63qqpryic9nw1wlwdawcyi0b6gzbsxwrpk88ikwanvhxjg";
|
||||
sha256 = "1z6z7msi83x6v6243qf7k8rg6jq4ngiy8541h7l86c1ww0nx995s";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.22.4";
|
||||
version = "0.22.6";
|
||||
};
|
||||
opentelemetry-instrumentation-net_http = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-common"
|
||||
"opentelemetry-instrumentation-base"
|
||||
];
|
||||
dependencies = [ "opentelemetry-api" "opentelemetry-instrumentation-base" ];
|
||||
groups = [ "opentelemetry" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1klq4rpn803byrz7z1mxsj81qg7kpl67nj5sqqw41msnwkkbay18";
|
||||
sha256 = "1qls53lz4nlld7xxdmcm26pp31p2zq72wm8267vfh9q14jkp0s6c";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.22.4";
|
||||
version = "0.22.6";
|
||||
};
|
||||
opentelemetry-instrumentation-pg = {
|
||||
dependencies = [
|
||||
|
@ -2327,23 +2326,20 @@
|
|||
version = "0.27.3";
|
||||
};
|
||||
opentelemetry-instrumentation-rack = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-common"
|
||||
"opentelemetry-instrumentation-base"
|
||||
];
|
||||
dependencies = [ "opentelemetry-api" "opentelemetry-instrumentation-base" ];
|
||||
groups = [ "opentelemetry" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0ayf153y1qfdphz109jlblbw5wx38lwfg0dgn20xzzr3660yd831";
|
||||
sha256 = "0k3ihqvnh5q9g06bfypjg3a4r84v4qzzp7xnrnf00k3mx5yg6jay";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.24.3";
|
||||
version = "0.24.5";
|
||||
};
|
||||
opentelemetry-instrumentation-rails = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-instrumentation-action_mailer"
|
||||
"opentelemetry-instrumentation-action_pack"
|
||||
"opentelemetry-instrumentation-action_view"
|
||||
"opentelemetry-instrumentation-active_job"
|
||||
|
@ -2355,40 +2351,32 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0hiihby0lndwvny1alba1mvvag48z55vjjrwbjppb700prv0q1kk";
|
||||
sha256 = "04isc412xin2xw11lccdxcg7i2yf4m8jsw9jlq7gcld5mwix1pa2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.30.1";
|
||||
version = "0.30.2";
|
||||
};
|
||||
opentelemetry-instrumentation-redis = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-common"
|
||||
"opentelemetry-instrumentation-base"
|
||||
];
|
||||
dependencies = [ "opentelemetry-api" "opentelemetry-instrumentation-base" ];
|
||||
groups = [ "opentelemetry" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "1pn8f891qy7z6dv2svjnv1f3gqx7mqg3dsp9x5xpd69sr3vbi6jx";
|
||||
sha256 = "0k3s6svr1z97qj2xn5skzi4gfs55ym716pzac0vifzch3knarr2z";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.25.4";
|
||||
version = "0.25.6";
|
||||
};
|
||||
opentelemetry-instrumentation-sidekiq = {
|
||||
dependencies = [
|
||||
"opentelemetry-api"
|
||||
"opentelemetry-common"
|
||||
"opentelemetry-instrumentation-base"
|
||||
];
|
||||
dependencies = [ "opentelemetry-api" "opentelemetry-instrumentation-base" ];
|
||||
groups = [ "opentelemetry" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "02i2vycgrradpm9nr4rp69a11fvqsngiirayn1s5j745xiy4x5sd";
|
||||
sha256 = "046b755db0xlp894d68qglr811d5hi9ibb7j0k5sj9cqig3gpkjc";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.25.3";
|
||||
version = "0.25.5";
|
||||
};
|
||||
opentelemetry-registry = {
|
||||
dependencies = [ "opentelemetry-api" ];
|
||||
|
@ -2464,10 +2452,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0jc26x8xidip0jlrbjqgdp4xgk2hhyqbv2i9w66gmdrxvvsnyp88";
|
||||
sha256 = "1sryynf3iws1b2ffba1gvmlpf8jzhfva5p0qdf37x6wdj683rqm2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.3.2.0";
|
||||
version = "3.3.3.0";
|
||||
};
|
||||
parslet = {
|
||||
groups = [ "default" ];
|
||||
|
@ -2571,10 +2559,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "14y4vzjwf5gp0mqgs880kis0k7n2biq8i6ci6q2n315kichl1hvj";
|
||||
sha256 = "1vb6f3v8q9m67xmbdl4vbmxis53a7igci4blg561jdfp613cf3i5";
|
||||
type = "gem";
|
||||
};
|
||||
version = "5.0.5";
|
||||
version = "5.1.1";
|
||||
};
|
||||
puma = {
|
||||
dependencies = [ "nio4r" ];
|
||||
|
@ -2919,10 +2907,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "00paka9wvnl1va70vha28pk8n17sdhp7v7c1hrbh6xv6c5vslzs6";
|
||||
sha256 = "0y6kyz7kcilwdpfy3saqfgnar38vr5ys9sp40ndffy6h1znxfbax";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.5.8";
|
||||
version = "0.5.9";
|
||||
};
|
||||
request_store = {
|
||||
dependencies = [ "rack" ];
|
||||
|
@ -2952,10 +2940,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0d8ivcirrrxpkpjc1c835wknc9s2fl54xpw08s177yfrh5ish209";
|
||||
sha256 = "0428ady49qssmnmwnafzrjvyba8mzbridsgblv7c7kmd0vqgfn99";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2.8";
|
||||
version = "3.3.0";
|
||||
};
|
||||
rotp = {
|
||||
groups = [ "default" ];
|
||||
|
@ -3137,27 +3125,16 @@
|
|||
};
|
||||
version = "2.21.0";
|
||||
};
|
||||
rubocop-factory_bot = {
|
||||
dependencies = [ "rubocop" ];
|
||||
groups = [ "default" "development" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0d012phc7z5h1j1d2aisnbkmqlb95sld5jriia5qg2gpgbg1nxb2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.25.1";
|
||||
};
|
||||
rubocop-performance = {
|
||||
dependencies = [ "rubocop" "rubocop-ast" ];
|
||||
groups = [ "development" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "16jayzjaaglhx69s6b83acpdzcxxccfkcn69gfpkimf2j64zlm7c";
|
||||
sha256 = "0kkkv073c01px27w69g93gbjwajxji5wmawrmbb5l9s4ll101wjw";
|
||||
type = "gem";
|
||||
};
|
||||
version = "1.21.0";
|
||||
version = "1.21.1";
|
||||
};
|
||||
rubocop-rails = {
|
||||
dependencies = [ "activesupport" "rack" "rubocop" "rubocop-ast" ];
|
||||
|
@ -3171,31 +3148,26 @@
|
|||
version = "2.25.0";
|
||||
};
|
||||
rubocop-rspec = {
|
||||
dependencies = [
|
||||
"rubocop"
|
||||
"rubocop-capybara"
|
||||
"rubocop-factory_bot"
|
||||
"rubocop-rspec_rails"
|
||||
];
|
||||
dependencies = [ "rubocop" ];
|
||||
groups = [ "development" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0wnnlfxmqcm1s1lb3hfa43pz829j9z9mznacwjncxqbqilw1kbib";
|
||||
sha256 = "1q797zdwscbdx6gm1ip9zbx1l985xm44riz6mmk2lglsxdbfqnsm";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.31.0";
|
||||
version = "3.0.1";
|
||||
};
|
||||
rubocop-rspec_rails = {
|
||||
dependencies = [ "rubocop" ];
|
||||
groups = [ "default" "development" ];
|
||||
dependencies = [ "rubocop" "rubocop-rspec" ];
|
||||
groups = [ "development" ];
|
||||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0618lfncmvnvkwa1jb0kga1f2yiiw1809flkj4kg52nagh3z4scp";
|
||||
sha256 = "0ijc1kw81884k0wjq1sgwaxa854n1fdddscp4fnzfzlx7zl150c8";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.28.3";
|
||||
version = "2.30.0";
|
||||
};
|
||||
ruby-prof = {
|
||||
groups = [ "development" "test" ];
|
||||
|
@ -3287,10 +3259,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "0wsw05y0h1ln3x2kvcw26fs9ivryb4xbjrb4hsk2pishkhydkz4j";
|
||||
sha256 = "0qczw46f82f8nam87xdzk17frwfwwqq7km6ma0kwc0nadmi4glgq";
|
||||
type = "gem";
|
||||
};
|
||||
version = "6.1.0";
|
||||
version = "6.1.1";
|
||||
};
|
||||
scenic = {
|
||||
dependencies = [ "activerecord" "railties" ];
|
||||
|
@ -3469,10 +3441,10 @@
|
|||
platforms = [ ];
|
||||
source = {
|
||||
remotes = [ "https://rubygems.org" ];
|
||||
sha256 = "063psvsn1aq6digpznxfranhcpmi0sdv2jhra5g0459sw0x2dxn1";
|
||||
sha256 = "07mfqb40b2wh53k33h91zva78f9zwcdnl85jiq74wnaw2wa6wiak";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.1.0";
|
||||
version = "3.1.1";
|
||||
};
|
||||
strong_migrations = {
|
||||
dependencies = [ "activerecord" ];
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
src = fetchFromGitHub {
|
||||
owner = "glitch-soc";
|
||||
repo = "mastodon";
|
||||
rev = "f572bbf981838827b4e56f2d9323d537040deb7a";
|
||||
hash = "sha256-7B7z2HrLqN8hGGwI/G/54kaTR4E5fGQSjxLsYsooRAk=";
|
||||
rev = "248b494a59a37d539e51556dc2928922868df086";
|
||||
hash = "sha256-0OqIvr7XDJPfPyq9hiQj3xwsmFaNEVB1kYOnz3tdi2U=";
|
||||
};
|
||||
inherit patches;
|
||||
nativeBuildInputs = [ gawk gnused ];
|
||||
|
@ -18,6 +18,6 @@
|
|||
sed -i -Ee 's|^ checksum: ([^/]*)$| checksum: '$cacheKey'/\1|g;' yarn.lock
|
||||
'';
|
||||
}) // {
|
||||
version = "unstable-2024-06-11";
|
||||
yarnHash = "sha256-8NDLsiXs7gdMa47nA0I7wWPiWpjqTF9wfJzJJ0NsCiM=";
|
||||
version = "unstable-2024-06-19";
|
||||
yarnHash = "sha256-T1BQgnQCL/bANXN4tKhZk94u5VVXuW4ySb5tbjqM4OM=";
|
||||
}
|
||||
|
|
21
pkgs/nix-top/LICENSE
Normal file
21
pkgs/nix-top/LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2018 Samuel Dionne-Riel
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
46
pkgs/nix-top/default.nix
Normal file
46
pkgs/nix-top/default.nix
Normal file
|
@ -0,0 +1,46 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, ruby
|
||||
, makeWrapper
|
||||
, getent # /etc/passwd
|
||||
, ncurses # tput
|
||||
, binutils-unwrapped # strings
|
||||
, coreutils
|
||||
, findutils
|
||||
}:
|
||||
|
||||
# No gems used, so mkDerivation is fine.
|
||||
let
|
||||
additionalPath = lib.makeBinPath [ getent ncurses binutils-unwrapped coreutils findutils ];
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nix-top";
|
||||
version = "0.3.0";
|
||||
|
||||
src = ./.;
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ruby
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/libexec/nix-top
|
||||
install -D -m755 ./nix-top $out/bin/nix-top
|
||||
wrapProgram $out/bin/nix-top \
|
||||
--prefix PATH : "$out/libexec/nix-top:${additionalPath}"
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
ln -s /bin/stty $out/libexec/nix-top
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tracks what nix is building";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux ++ platforms.darwin ++ platforms.freebsd;
|
||||
mainProgram = "nix-top";
|
||||
};
|
||||
}
|
166
pkgs/nix-top/nix-top
Executable file
166
pkgs/nix-top/nix-top
Executable file
|
@ -0,0 +1,166 @@
|
|||
#!/nix/store/c4bdx4dja3h06xg1ksv3f51alp5a44li-ruby-3.1.5/bin/ruby
|
||||
|
||||
require "shellwords"
|
||||
require "optparse"
|
||||
require "io/wait"
|
||||
|
||||
DEFAULTS = {
|
||||
delay: 0.5,
|
||||
once: false,
|
||||
}.freeze
|
||||
|
||||
options = DEFAULTS.dup
|
||||
|
||||
OptionParser.new do |opts|
|
||||
opts.banner = "Usage: nix-top [options]"
|
||||
|
||||
opts.on("-d", "--delay [seconds]", Numeric, "In seconds (default: #{DEFAULTS[:delay]})") do |v|
|
||||
options[:delay] = v
|
||||
end
|
||||
opts.on("-1", "--once", "Only run once (generates one screen)") do |v|
|
||||
options[:once] = v;
|
||||
end
|
||||
end.parse!
|
||||
|
||||
VT_CLEAR_LINE=`tput el`
|
||||
VT_CLEAR_REST=`tput ed`
|
||||
VT_HOME=`tput cup 0 0`
|
||||
|
||||
def stty(*flags)
|
||||
`#{["stty", *flags].shelljoin}`
|
||||
end
|
||||
|
||||
# Returns [width, height] of the terminal.
|
||||
def size
|
||||
`echo 'cols\nlines' | tput -S`.strip.split("\n").map(&:to_i)
|
||||
end
|
||||
|
||||
def build_users
|
||||
`getent group nixbld`.strip.split(":").last.split(",")
|
||||
end
|
||||
|
||||
def active_build_users()
|
||||
build_users.select do |name|
|
||||
`pgrep -fu #{name.shellescape}`
|
||||
$? == 0
|
||||
end
|
||||
end
|
||||
|
||||
# Returns a mostly correct snapshot of the PIDs for processes building
|
||||
# things, in a Hash indexed by build user.
|
||||
def get_processes()
|
||||
active_build_users.map do |user|
|
||||
pids = `pgrep -u #{user.shellescape}`
|
||||
.strip.split("\n")
|
||||
.map(&:to_i)
|
||||
.sort
|
||||
path = get_out_path(user, pids.first)
|
||||
|
||||
[
|
||||
user,
|
||||
[path, pids]
|
||||
]
|
||||
end
|
||||
end
|
||||
|
||||
# Gets either the out path, or an approximation, depending whether
|
||||
# or not it can peek into processes.
|
||||
def get_out_path(user, pid)
|
||||
begin
|
||||
# whew!
|
||||
build_dir = `find -L /tmp -maxdepth 1 -user #{user.shellescape} -exec stat --printf '%Z:%n\\n' '{}' ';' | sort -n`
|
||||
.strip
|
||||
.split("\n")
|
||||
.last
|
||||
.split(":")
|
||||
.last
|
||||
rescue
|
||||
"(unknown)"
|
||||
end
|
||||
begin
|
||||
file = "#{build_dir}/env-vars"
|
||||
# This can fail if the process disappears while trying to read.
|
||||
# This is why we rescue everything
|
||||
# (This also could fail due to missing `out=` and we get free rescue)
|
||||
File.read(file) # Reads process' environment
|
||||
.split("\n") # (which is a null-delimited list)
|
||||
.grep(/^declare -x out=/) # Keep out paths
|
||||
.first # Keep the only result
|
||||
.split("\"").last # Keep only the value
|
||||
rescue
|
||||
build_dir
|
||||
end
|
||||
end
|
||||
|
||||
def per_output_infos(user, pids, path)
|
||||
[
|
||||
":: (%s) → %s" % [user, path],
|
||||
`ps -o uid,pid,ppid,stime,time,command -U "#{user.shellescape}"`
|
||||
]
|
||||
end
|
||||
|
||||
# A "screenful" of information
|
||||
# Does not trim output to fit in one terminal screen.
|
||||
def print_screen()
|
||||
processes = get_processes()
|
||||
|
||||
lines = []
|
||||
sep = [
|
||||
"",
|
||||
" * * * ",
|
||||
"",
|
||||
]
|
||||
|
||||
lines << "Summary per output"
|
||||
lines.concat(processes.map do |user, (path, pids)|
|
||||
" %4d → %s" % [pids.length, path]
|
||||
end)
|
||||
lines.concat(sep)
|
||||
lines.concat(processes.map do |user, (path, pids)|
|
||||
per_output_infos(user, pids, path)
|
||||
end)
|
||||
|
||||
# This is hacky and round-about...
|
||||
# but the consumers will assume this gives *lines*.
|
||||
# I don't want to ensure everything is already a line.
|
||||
# So, uh, joining everything and re-splitting is done for now.
|
||||
# TODO : better API for writing a screen.
|
||||
lines.flatten.join("\n").split("\n")
|
||||
end
|
||||
|
||||
# Trims the "screenful" to fit into the screen.
|
||||
def display(screen)
|
||||
width, height = size
|
||||
screen = screen[0...height].map do |line|
|
||||
line[0...width] + VT_CLEAR_LINE
|
||||
end.join("\n").strip
|
||||
|
||||
print VT_HOME + screen + VT_CLEAR_REST
|
||||
end
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# Ensures no backtrace on ^C
|
||||
Signal.trap("INT") do
|
||||
exit
|
||||
end
|
||||
|
||||
at_exit {
|
||||
stty($saved_stty)
|
||||
puts ""
|
||||
exit
|
||||
}
|
||||
$saved_stty = stty("-g").strip
|
||||
stty("-echo", "-icanon")
|
||||
|
||||
display(print_screen)
|
||||
|
||||
exit if options[:once]
|
||||
|
||||
while true do
|
||||
if $stdin.wait_readable(options[:delay]) then
|
||||
exit if $stdin.readpartial(4096).include? "q"
|
||||
end
|
||||
|
||||
display(print_screen)
|
||||
end
|
Loading…
Reference in a new issue