Compare commits

...

22 commits

Author SHA1 Message Date
matt1432 384e0c24b3 fix(ags): make lockscreen work with latest Hyprland
All checks were successful
Discord / discord commits (push) Has been skipped
2024-05-01 10:21:28 -04:00
matt1432 0665c3bfae chore(forgejo): v7.0.0 -> v.7.0.1 2024-05-01 10:21:28 -04:00
matt1432 177f8555a3 chore: update flake.lock 2024-05-01 10:21:28 -04:00
matt1432 3b6033da4f chore(nextcloud): 28.0.4 -> 28.0.5 2024-05-01 10:21:28 -04:00
matt1432 107f3a0e3e chore(immich): 1.103.0 -> 1.103.1 2024-05-01 10:21:28 -04:00
matt1432 85473011b2 feat(ags): copy on enter in clipboard 2024-05-01 10:21:28 -04:00
matt1432 ac29acb446 fix(ags): get rid of useless logs 2024-05-01 10:21:28 -04:00
matt1432 595e3996c3 chore: update flake.lock 2024-05-01 10:21:28 -04:00
matt1432 c738d4137f feat(ags): add entry and sorting on clipboard 2024-05-01 10:21:28 -04:00
matt1432 5285b166b2 fix(ags): use my fork until it gets merged 2024-05-01 10:21:28 -04:00
matt1432 b01190a532 fix(headscale): revert to last working commit 2024-05-01 10:21:28 -04:00
matt1432 bc4be97591 feat(hypr): go back to hyprexpo and update flake.lock 2024-05-01 10:21:28 -04:00
matt1432 315a06dbf2 fix(ags binto): add clipboard 2024-05-01 10:21:28 -04:00
matt1432 dfa762d46e feat(satty): setup config file 2024-05-01 10:21:28 -04:00
matt1432 f4618c3271 feat(ags): use experimental clipboard manager 2024-05-01 10:21:28 -04:00
matt1432 5fd6448ba2 fix(ags applauncher): reverse incorrect sorting 2024-05-01 10:21:28 -04:00
matt1432 1ca52dc2ae refactor(hypr): remove need for portal override 2024-05-01 10:21:28 -04:00
matt1432 f2710d1c19 feat(hypr): swappy -> satty 2024-05-01 10:21:28 -04:00
matt1432 585d764720 feat(binto): move to new logitech mouse 2024-05-01 10:21:28 -04:00
matt1432 2caeb6f438 fix(ags): remove incorrect box-shadows 2024-05-01 10:21:28 -04:00
matt1432 e1d746b0f5 feat: use local version of nix-fast-build 2024-05-01 10:21:27 -04:00
matt1432 b12b2e2911 fix: bump hyprland input to fix crash 2024-05-01 10:21:27 -04:00
49 changed files with 932 additions and 505 deletions

View file

@ -30,14 +30,16 @@
boot.tmp.useTmpfs = true;
nix = {
# Allow deleting store files with '.' in the name
package = pkgs.nix.overrideAttrs (o: {
patches =
(o.patches or [])
++ [
./overlays/nix/patch
];
# FIXME: https://github.com/nix-community/home-manager/issues/4692#issuecomment-2054003365
package = pkgs.nixVersions.unstable.overrideAttrs (o: {
src = pkgs.fetchFromGitHub {
owner = "NixOS";
repo = "nix";
rev = "60824fa97c588a0faf68ea61260a47e388b0a4e5";
sha256 = "10z/SoidVl9/lh56cMLj7ntJZHtVrumFvmn1YEqXmaM=";
};
});
# Edit nix.conf
settings = {
# Store

View file

@ -10,7 +10,7 @@
...
}: let
inherit (config.vars) hostName mainUser neovimIde;
inherit (lib) fileContents hasPrefix mdDoc optionalAttrs optionals removePrefix;
inherit (lib) fileContents hasPrefix optionalAttrs optionals removePrefix;
javaSdk = pkgs.temurin-bin-17;
coc-stylelintplus-flake = coc-stylelintplus.packages.${pkgs.system}.default;

View file

@ -11,7 +11,6 @@ in {
../../modules/kmscon.nix
../../modules/printer.nix
../../modules/ratbag-mice.nix
../../modules/razer.nix
../../modules/sshd.nix
../../modules/tailscale.nix

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "codeberg.org/forgejo/forgejo";
imageDigest = "sha256:c3c662609a02cf6d384fa3698c59eceaf78b8799dbfee4ea4e438eb19f613095";
sha256 = "0zx9ikm66bqdlkfgcj2v7si17qsc1m69xjjxf1ghdnia4wnwbch9";
imageDigest = "sha256:0b50b596246cc4c439b6113411973f4c0639cb8556c7cf98e8017efdb5c3ab90";
sha256 = "0hw9qmhs5ykry51kc7cl1w1kcswrpza8dsam5b5samcb0ga609ng";
finalImageName = "codeberg.org/forgejo/forgejo";
finalImageTag = "7";
finalImageTag = "7.0.1";
}

View file

@ -1,7 +1,7 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "postgres";
imageDigest = "sha256:c7b1085b1a26835716593174ee2169e76e8ee1d37cc8aab0b78a3e4da794d8cb";
imageDigest = "sha256:d6850c40261fdc9a4fb33b9521d9d641c4a5dcb82145f7bcc32c9258f81e75a2";
sha256 = "0zjcx747n54jnnliqd80v8ca43rl09dp3bh6xir5kxq2hw5p22i4";
finalImageName = "postgres";
finalImageTag = "14";

View file

@ -1,7 +1,7 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "postgres";
imageDigest = "sha256:c7b1085b1a26835716593174ee2169e76e8ee1d37cc8aab0b78a3e4da794d8cb";
imageDigest = "sha256:d6850c40261fdc9a4fb33b9521d9d641c4a5dcb82145f7bcc32c9258f81e75a2";
sha256 = "0zjcx747n54jnnliqd80v8ca43rl09dp3bh6xir5kxq2hw5p22i4";
finalImageName = "postgres";
finalImageTag = "14";

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "rssbridge/rss-bridge";
imageDigest = "sha256:9e501c795c0e47dffbd81c7a0169b2601582abcadc5d8d415188ab60196b4819";
sha256 = "0gc8d1hd44k7ib4d8rg8w6qlz5zhjzp8wfn1cfcwbgm883pca808";
imageDigest = "sha256:4d173965f264fe8921366eb7b2f3ab0072d039ed85146a193b3e2029161dd7c1";
sha256 = "0d3cfhfasd4y46z6jj8ij728lih6mxwkhlplxr0vqnbd8ch3jg3h";
finalImageName = "rssbridge/rss-bridge";
finalImageTag = "latest";
}

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "ghcr.io/immich-app/immich-machine-learning";
imageDigest = "sha256:f825b7d09f4645671a76310575334e09fa2585c1023c3f1b66db815db0aa14ee";
sha256 = "0nrwj2qalgnzy2j53dyjv42aqy2v00fxzhzyxp9c50bk3wqbiv03";
imageDigest = "sha256:708ff677ab952dda9d7cb9343a6d650a6ac02a4e6c7447015f9df95c780cfc42";
sha256 = "0d94x4nw24zbkfqm3glhcf27awws2bkp8fr8vsc56fbzcv81xxv2";
finalImageName = "ghcr.io/immich-app/immich-machine-learning";
finalImageTag = "v1.102.3";
finalImageTag = "v1.103.1";
}

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "ghcr.io/immich-app/immich-server";
imageDigest = "sha256:bce8c500bfd89f01af056460431c7b20cec16d08b07299fd530824f6d420b656";
sha256 = "1k7igyic7iqn6rmw6lwbjgpw8aljsl0s5j320anbqhpczp5drn74";
imageDigest = "sha256:10761af14a6145353169042f29d2e49943de75b57a5d19251b365fe0d41ee15a";
sha256 = "01mf31w6wmx2dhdwyjxs5iqw10bl70gdwd69wv3klzm2hhxbx388";
finalImageName = "ghcr.io/immich-app/immich-server";
finalImageTag = "v1.102.3";
finalImageTag = "v1.103.1";
}

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "ghcr.io/linuxserver/bazarr";
imageDigest = "sha256:2268b45c0b9f6b978eb75b7955459682659e146e18a3cb057e9656ea3dd80600";
sha256 = "0yy3zrpahx7f3x7b6sx35qhg9xw07jjmp55sl02bjp8cmkrqn5bc";
imageDigest = "sha256:2c9269dd25c62d46e679a035849f32e963152ec44000e30f008d211a2f70e80c";
sha256 = "14ljv9jcczhdd5pzdyvmf6zs57bikhrbqi6vwpgjdg5dyka3ikc5";
finalImageName = "ghcr.io/linuxserver/bazarr";
finalImageTag = "latest";
}

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "ghcr.io/linuxserver/calibre-web";
imageDigest = "sha256:153babfa106ea042777784f64b06d228e9d4e28e3b96db1a88e7800729b1cfe8";
sha256 = "0723kr8k7vvdxnb462lbdgq5b6nxnf9pm8m03wydrzazi23071y7";
imageDigest = "sha256:33ddda92b3f02bbd38a452b44f7343da25ada4c374fbac50c656bc04b995d93f";
sha256 = "1qylqqbngqxsl87jr7ks9pnkjnchy7jinkdc3y5ch7vxrml1919r";
finalImageName = "ghcr.io/linuxserver/calibre-web";
finalImageTag = "latest";
}

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "ghcr.io/linuxserver/calibre";
imageDigest = "sha256:b9396864085793c57ae2ece29246839ad4eb29e8f007a8d8969c6eb98ff8e850";
sha256 = "02rgpaf1zj7yp6ysy46srcyglhwpbrgi9gg0bq9sqigz5nc26qr3";
imageDigest = "sha256:1175ad34511e6c8e82d7ce882123623433013bc2da9dee1c7d1c518996394443";
sha256 = "0k2pgsg9b305lkyr1rzpaav8x080iyh2kcnhzv5969f0fd9d3mkf";
finalImageName = "ghcr.io/linuxserver/calibre";
finalImageTag = "latest";
}

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "ghcr.io/linuxserver/prowlarr";
imageDigest = "sha256:c1f9e2e8339642b32c8c8679b4d89058f3985699760fc7bc4e187a99f8549e86";
sha256 = "042vf3s2nl3wvjhqvabxjl4k8fmkpshdsan0mpwhj7y8zilbycsg";
imageDigest = "sha256:576b61b488e3bd2cd0d56cd080189ebb60eb12f35280632d00f689f8e25e3524";
sha256 = "066psqnpbaywmzymghvdwxi75hi5m5sw6lwgkwajfkx2mlc8zz7z";
finalImageName = "ghcr.io/linuxserver/prowlarr";
finalImageTag = "latest";
}

View file

@ -33,7 +33,6 @@ in {
POSTGRES_HOST = "nextcloud-db";
REDIS_HOST = "nextcloud-cache";
REDIS_HOST_PASSWORD = "password";
TRUSTED_PROXIES = "cloud.nelim.org nginx-server";
NEXTCLOUD_INIT_HTACCESS = "true";
};
};

View file

@ -1,8 +1,8 @@
pkgs:
pkgs.dockerTools.pullImage {
imageName = "nextcloud";
imageDigest = "sha256:0a4e5f7e271888914cbf1e26b462f8cb44afb42681f404a32dcb47273c1eb446";
sha256 = "17mafd6ya0fg9h751shmkw4jyil1ix3vkpk87vm6jxxmw97hr8zx";
imageDigest = "sha256:3a77dd75fedae5c1e28b786f82e5a71c0758036d4991c5713c1513b6daa34358";
sha256 = "121a4vpp8wnw3z6ngpif4pyvkannxf7jqk6c2zqhl6lpkv9sbm0v";
finalImageName = "nextcloud";
finalImageTag = "28.0.4-fpm";
finalImageTag = "28.0.5-fpm";
}

View file

@ -1,14 +1,19 @@
{
config,
nix-eval-jobs,
nix-fast-build,
pkgs,
...
}: let
inherit (config.vars) mainUser;
inherit (config.sops) secrets;
nix-fast-buildPkg = pkgs.writeShellApplication {
name = "nix-fast-build";
text = "nix run github:Mic92/nix-fast-build \"$@\"";
nixPkg = {
nix = config.nix.package;
};
nix-fast-buildPkg = nix-fast-build.packages.${pkgs.system}.nix-fast-build.override {
nix-eval-jobs =
nix-eval-jobs.packages.${pkgs.system}.default.override nixPkg // nixPkg;
};
in {
services.nix-serve = {
@ -31,7 +36,6 @@ in {
path = with pkgs; [
git
nix
nix-fast-buildPkg
openssh
];

View file

@ -1,25 +1,5 @@
{
"nodes": {
"Hyprspace": {
"inputs": {
"hyprland": [
"hyprland"
]
},
"locked": {
"lastModified": 1713989021,
"narHash": "sha256-oIpcibtKHP8e7yhYilK9+TaiOTApS4TqXQbdKqJpyWQ=",
"owner": "KZDKM",
"repo": "Hyprspace",
"rev": "a44d834af279f233a269d065d2e14fe4101d6f41",
"type": "github"
},
"original": {
"owner": "KZDKM",
"repo": "Hyprspace",
"type": "github"
}
},
"ags": {
"inputs": {
"nixpkgs": [
@ -27,11 +7,11 @@
]
},
"locked": {
"lastModified": 1713301451,
"narHash": "sha256-LzYVqEukjOJjm4HGFe6rtHBiuJxAyPqd2MY1k5ci9QU=",
"lastModified": 1714402202,
"narHash": "sha256-Ga7MdGc1CA+WwLB7xAEbuzXzGtEM2346kUDvq8ymgJc=",
"owner": "Aylur",
"repo": "ags",
"rev": "33bcaf34d5277031ecb97047fb8ddd44abd8d80e",
"rev": "bb91f7c8fdd2f51c79d3af3f2881cacbdff19f60",
"type": "github"
},
"original": {
@ -50,11 +30,11 @@
]
},
"locked": {
"lastModified": 1713728172,
"narHash": "sha256-rac5WwUyZGxVqcNh2PIOxXJFGPXBSFPfkox1AdqwVgk=",
"lastModified": 1714329018,
"narHash": "sha256-q0vsfqjYB0Phx4HoykT2HwRZDuxFwaRI9SQeEDbqZkU=",
"owner": "hercules-ci",
"repo": "arion",
"rev": "add0e67d2b83814667490985ea4ef1226d3b4511",
"rev": "efa008e12f590eea1a3e7f2088877dc9bdcc54b7",
"type": "github"
},
"original": {
@ -106,11 +86,11 @@
]
},
"locked": {
"lastModified": 1714028800,
"narHash": "sha256-fiQASqXfJAIkyNen7YB1FzDKg9eQg9MU1PiTp4QVv74=",
"lastModified": 1714374379,
"narHash": "sha256-CZU1I6V2Iw26F9IHv0pzSjP+Gg5LEhpZ7ZA46ZlVdz0=",
"owner": "matt1432",
"repo": "nixos-caddy-cloudflare",
"rev": "5fac03dc0bba7d446883f00f506d2121bc04e647",
"rev": "12aa149f2de32995ecb44fb6503fb0555652ba13",
"type": "github"
},
"original": {
@ -248,7 +228,10 @@
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
"nixpkgs-lib": [
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1712014858,
@ -265,6 +248,24 @@
}
},
"flake-parts_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1698882062,
"narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "8c9fa2545007b49a5db5f650ae91f227672c3877",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_5": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
@ -282,7 +283,25 @@
"type": "github"
}
},
"flake-parts_5": {
"flake-parts_6": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_3"
},
"locked": {
"lastModified": 1712014858,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_7": {
"inputs": {
"nixpkgs-lib": [
"nixpkgs-wayland",
@ -392,11 +411,11 @@
"gpu-screen-recorder-src": {
"flake": false,
"locked": {
"lastModified": 1714047774,
"narHash": "sha256-st4tcl13jyqOnwBR2uP4el28VIF4SqiLPQ1xd9xUX9A=",
"lastModified": 1714173938,
"narHash": "sha256-1PULc1djvATCoXn6jZRJqbE8RtEYEUHFhNMj738Hsd4=",
"ref": "refs/heads/master",
"rev": "4b28221a77cd1407208793cc84cfe4014607f3db",
"revCount": 573,
"rev": "3143358c3bfc882fb94c1ea906630fc0aa7fd061",
"revCount": 575,
"type": "git",
"url": "https://repo.dec05eba.com/gpu-screen-recorder"
},
@ -475,6 +494,7 @@
"original": {
"owner": "juanfont",
"repo": "headscale",
"rev": "fef8261339899fe526777a7aa42df57ca02021c5",
"type": "github"
}
},
@ -507,11 +527,11 @@
]
},
"locked": {
"lastModified": 1714042918,
"narHash": "sha256-4AItZA3EQIiSNAxliuYEJumw/LaVfrMv84gYyrs0r3U=",
"lastModified": 1714515075,
"narHash": "sha256-azMK7aWH0eUc3IqU4Fg5rwZdB9WZBvimOGG3piqvtsY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0c5704eceefcb7bb238a958f532a86e3b59d76db",
"rev": "6d3b6dc9222c12b951169becdf4b0592ee9576ef",
"type": "github"
},
"original": {
@ -520,6 +540,31 @@
"type": "github"
}
},
"hypr-official-plugins": {
"inputs": {
"hyprland": [
"hyprland"
],
"systems": [
"hypr-official-plugins",
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1714219583,
"narHash": "sha256-s6yf/bsAum3sAXSxB5gDCHQoLMn5Skl9EWL8nvsXzog=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "97e9d252ffec654cdc69a2cea8b63a172795706b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-plugins",
"type": "github"
}
},
"hyprcursor": {
"inputs": {
"hyprlang": [
@ -585,11 +630,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1714051955,
"narHash": "sha256-+KYD3UqhVKezaQflOykEl1qSjwSsbsFN3S0RSuYjPfI=",
"lastModified": 1714564780,
"narHash": "sha256-OqpHFDNgzxTlhBcDiwK5E7/gqNUwaHQTx6ErZK0QovE=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "01df3b73d815beaa892849ae7bd4eddc94642dc7",
"rev": "d2899a6c272d4619295543b5b4c77b40fa1934bf",
"type": "github"
},
"original": {
@ -682,11 +727,11 @@
]
},
"locked": {
"lastModified": 1713989318,
"narHash": "sha256-WSsEQQxZQ+bsAWRhi1iXvP8sxgRyNtY3X1V3CfFdP5Q=",
"lastModified": 1714171579,
"narHash": "sha256-eaWDIvt8ufUKKz3Lc2a3PyemLJG1m9RYlF+HP3hWbaw=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "1cfe2d26a82ce794fd33ec06fa022e68501c5a45",
"rev": "126dad854f22fe30e6b82cd21808e76903d90ac5",
"type": "github"
},
"original": {
@ -734,14 +779,14 @@
"lib-aggregate": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs-lib": "nixpkgs-lib_3"
"nixpkgs-lib": "nixpkgs-lib_4"
},
"locked": {
"lastModified": 1713701427,
"narHash": "sha256-v6z8hz/UDaC/rbnkH+hxGFUxlNyseVntRetVpSxLU6c=",
"lastModified": 1714306226,
"narHash": "sha256-CA7bfnDt9TcFc7I8eKHf72DodYUEETDPgmBFXBRP9/E=",
"owner": "nix-community",
"repo": "lib-aggregate",
"rev": "3b32a98eb3053f8c8ca55497d1881443ef2996e6",
"rev": "49d9b510614b9bd137e067eb31445a8feca83313",
"type": "github"
},
"original": {
@ -750,6 +795,22 @@
"type": "github"
}
},
"libratbag-src": {
"flake": false,
"locked": {
"lastModified": 1709658456,
"narHash": "sha256-9rlnGQ7kcXqX+8mFb0imnzLo0X6Nuca6fcMv+H6ZwEw=",
"owner": "libratbag",
"repo": "libratbag",
"rev": "8444ceb638b19c3fbeb073a5cd29f17c6d34dd07",
"type": "github"
},
"original": {
"owner": "libratbag",
"repo": "libratbag",
"type": "github"
}
},
"modernx-src": {
"flake": false,
"locked": {
@ -771,11 +832,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1713635132,
"narHash": "sha256-lLftlafVmv9RPzCO7gTsswiD+Q0MoAP0FVXVoK3iGmE=",
"lastModified": 1714557650,
"narHash": "sha256-N1qTL5wIlbbX7DorBaKOMYfz+gYoyf8LREMWVlOXNYc=",
"owner": "viperML",
"repo": "nh",
"rev": "6c772f572fd17ed9181625e221e2365e9bffc3f6",
"rev": "e4eb011975bee4c3f47199cc01d2d986e24851bd",
"type": "github"
},
"original": {
@ -786,9 +847,11 @@
},
"nix-eval-jobs": {
"inputs": {
"flake-parts": "flake-parts_5",
"flake-parts": "flake-parts_3",
"nix-github-actions": "nix-github-actions",
"nixpkgs": "nixpkgs_6",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
@ -805,6 +868,49 @@
"type": "github"
}
},
"nix-eval-jobs_2": {
"inputs": {
"flake-parts": "flake-parts_7",
"nix-github-actions": "nix-github-actions_2",
"nixpkgs": "nixpkgs_6",
"treefmt-nix": "treefmt-nix_3"
},
"locked": {
"lastModified": 1713858845,
"narHash": "sha256-StJq7Zy+/iVBUAKFzhHWlsirFucZ3gNtzXhAYXAsNnw=",
"owner": "nix-community",
"repo": "nix-eval-jobs",
"rev": "7b6640f2a10701bf0db16aff048070f400e8ea7c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-eval-jobs",
"type": "github"
}
},
"nix-fast-build": {
"inputs": {
"flake-parts": "flake-parts_4",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1713864757,
"narHash": "sha256-eBh+4DLKktrMWh0QfSFwugd4Gf2KO/X0VUTlRspR+9I=",
"owner": "Mic92",
"repo": "nix-fast-build",
"rev": "f024a66e6a1f83de95aba109287a97dd6ca76127",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "nix-fast-build",
"type": "github"
}
},
"nix-formatter-pack": {
"inputs": {
"nixpkgs": [
@ -830,15 +936,15 @@
},
"nix-gaming": {
"inputs": {
"flake-parts": "flake-parts_3",
"flake-parts": "flake-parts_5",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1713921309,
"narHash": "sha256-9/5xt3019W55Vu8MX9LlaFTFoNd4dwLqwvUEDWjn+KU=",
"lastModified": 1714303849,
"narHash": "sha256-o/IgiwA0ZS/nMh5YB0bt+ae3Lt+tlbQouY/xL7tB5h0=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "a21a6f3321682226e47f7ead4d2eba59a3f63654",
"rev": "dbb96ae98e723128cf5a612480ba6187113f5e49",
"type": "github"
},
"original": {
@ -848,6 +954,27 @@
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1703863825,
"narHash": "sha256-rXwqjtwiGKJheXB43ybM8NwWB8rO2dSRrEqes0S7F5Y=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "5163432afc817cf8bd1f031418d1869e4c9d5547",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nix-github-actions_2": {
"inputs": {
"nixpkgs": [
"nixpkgs-wayland",
@ -876,11 +1003,11 @@
]
},
"locked": {
"lastModified": 1713869268,
"narHash": "sha256-o3CMQeu/S8/4zU0pMtYg51rd1FWdJsI2Xohzng1Ysdg=",
"lastModified": 1714273701,
"narHash": "sha256-bmoeZ5zMSSO/e8P51yjrzaxA9uzA3SZAEFvih6S3LFo=",
"owner": "Mic92",
"repo": "nix-index-database",
"rev": "dcb6ac44922858ce3a5b46f77a36d6030181460c",
"rev": "941c4973c824509e0356be455d89613611f76c8a",
"type": "github"
},
"original": {
@ -936,16 +1063,16 @@
},
"nixd": {
"inputs": {
"flake-parts": "flake-parts_4",
"flake-parts": "flake-parts_6",
"flake-root": "flake-root",
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1714002774,
"narHash": "sha256-gj/MyKHqQdxfZKnmbsGVz2fkRbAVFKaEyWZZmgZsiaQ=",
"lastModified": 1714536133,
"narHash": "sha256-zVRNhlvRaWxdwO1w77uZwolrUOCEA71OUtzlNwM+DEg=",
"owner": "nix-community",
"repo": "nixd",
"rev": "39ff96c1f1e7ea2584b55b96469b0a55e445c97c",
"rev": "891b5487b7dba00c85de0ef79bbc29ffeb936005",
"type": "github"
},
"original": {
@ -956,11 +1083,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1711668574,
"narHash": "sha256-u1dfs0ASQIEr1icTVrsKwg2xToIpn7ZXxW3RHfHxshg=",
"lastModified": 1714409183,
"narHash": "sha256-Wacm/DrzLD7mjFGnSxxyGkJgg2unU/dNdNgdngBH+RU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "219951b495fc2eac67b1456824cc1ec1fd2ee659",
"rev": "576ecd43d3b864966b4423a853412d6177775e8b",
"type": "github"
},
"original": {
@ -1005,11 +1132,11 @@
"nixpkgs-lib": {
"locked": {
"dir": "lib",
"lastModified": 1711703276,
"narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
"lastModified": 1698611440,
"narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
"rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735",
"type": "github"
},
"original": {
@ -1040,11 +1167,29 @@
},
"nixpkgs-lib_3": {
"locked": {
"lastModified": 1713660444,
"narHash": "sha256-2bVnrEGyWJhRNKspzfTJmVD/fsH9HQURD4cWpz79Ulw=",
"dir": "lib",
"lastModified": 1711703276,
"narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
"type": "github"
},
"original": {
"dir": "lib",
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib_4": {
"locked": {
"lastModified": 1714265296,
"narHash": "sha256-jVnKiCOoFulPT1zDdA4jfG/lnEnngdth5CT6rVDXEJ4=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "6882347415e352cfc9c277cc01f73e0f5cb7b93c",
"rev": "ade4fb7bbf04cd52bc1705734d5dc67755d77ec9",
"type": "github"
},
"original": {
@ -1089,15 +1234,15 @@
"inputs": {
"flake-compat": "flake-compat",
"lib-aggregate": "lib-aggregate",
"nix-eval-jobs": "nix-eval-jobs",
"nix-eval-jobs": "nix-eval-jobs_2",
"nixpkgs": "nixpkgs_7"
},
"locked": {
"lastModified": 1714047868,
"narHash": "sha256-uGbzMTV3Vs5pWqzeLPWXx8oe4EkidB73jzeaXmdcV2c=",
"lastModified": 1714525911,
"narHash": "sha256-XYARtyCpKeL0IosMSzeHl6YFblV3n4y7plM+K9fg4N4=",
"owner": "nix-community",
"repo": "nixpkgs-wayland",
"rev": "41903b991bc2dc248f39439e376339e5e2fd436c",
"rev": "4cbf82124f2c03fa5b1b669771c48f9927264684",
"type": "github"
},
"original": {
@ -1108,11 +1253,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1713596654,
"narHash": "sha256-LJbHQQ5aX1LVth2ST+Kkse/DRzgxlVhTL1rxthvyhZc=",
"lastModified": 1714213793,
"narHash": "sha256-Yg5D5LhyAZvd3DZrQQfJAVK8K3TkUYKooFtH1ulM0mw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fd16bb6d3bcca96039b11aa52038fafeb6e4f4be",
"rev": "d6f6eb2a984f2ba9a366c31e4d36d65465683450",
"type": "github"
},
"original": {
@ -1156,11 +1301,11 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1713895582,
"narHash": "sha256-cfh1hi+6muQMbi9acOlju3V1gl8BEaZBXBR9jQfQi4U=",
"lastModified": 1714253743,
"narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "572af610f6151fd41c212f897c71f7056e3fb518",
"rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994",
"type": "github"
},
"original": {
@ -1188,11 +1333,11 @@
},
"nixpkgs_7": {
"locked": {
"lastModified": 1713895582,
"narHash": "sha256-cfh1hi+6muQMbi9acOlju3V1gl8BEaZBXBR9jQfQi4U=",
"lastModified": 1714253743,
"narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "572af610f6151fd41c212f897c71f7056e3fb518",
"rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994",
"type": "github"
},
"original": {
@ -1310,11 +1455,11 @@
},
"nur": {
"locked": {
"lastModified": 1714056679,
"narHash": "sha256-RKilQQQiuVVeRTRjJkZSmhsG60MG0ln9d9eSn07Zbt0=",
"lastModified": 1714560279,
"narHash": "sha256-ULWq8u8EushwKSPFJucS7lrHYHIp7ecd/wnpc9WsprA=",
"owner": "nix-community",
"repo": "NUR",
"rev": "9410133c3f453de8074e16f06926a5302bc19b29",
"rev": "09f5a5a5276a717be553571b8bccea865f06c23d",
"type": "github"
},
"original": {
@ -1443,6 +1588,22 @@
"type": "github"
}
},
"piper-src": {
"flake": false,
"locked": {
"lastModified": 1708275645,
"narHash": "sha256-ar1f0d2dzgUCL9F/AI1la26i/4Ab6SgxmeTjiI1J4z0=",
"owner": "libratbag",
"repo": "piper",
"rev": "66c1897540d107e48227ce05c5ac51ea41454feb",
"type": "github"
},
"original": {
"owner": "libratbag",
"repo": "piper",
"type": "github"
}
},
"plymouth-theme-src": {
"flake": false,
"locked": {
@ -1527,7 +1688,6 @@
},
"root": {
"inputs": {
"Hyprspace": "Hyprspace",
"ags": "ags",
"arion": "arion",
"astal": "astal",
@ -1543,12 +1703,16 @@
"gtk-theme-src": "gtk-theme-src",
"headscale": "headscale",
"home-manager": "home-manager",
"hypr-official-plugins": "hypr-official-plugins",
"hypridle": "hypridle",
"hyprland": "hyprland",
"jellyfin-flake": "jellyfin-flake",
"jellyfin-ultrachromic-src": "jellyfin-ultrachromic-src",
"libratbag-src": "libratbag-src",
"modernx-src": "modernx-src",
"nh": "nh",
"nix-eval-jobs": "nix-eval-jobs",
"nix-fast-build": "nix-fast-build",
"nix-gaming": "nix-gaming",
"nix-index-db": "nix-index-db",
"nix-melt": "nix-melt",
@ -1563,6 +1727,7 @@
"pam-fprint-grosshack-src": "pam-fprint-grosshack-src",
"pcsd": "pcsd",
"persist-properties-src": "persist-properties-src",
"piper-src": "piper-src",
"plymouth-theme-src": "plymouth-theme-src",
"pointer-event-src": "pointer-event-src",
"pokemon-colorscripts-src": "pokemon-colorscripts-src",
@ -1815,6 +1980,48 @@
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1711963903,
"narHash": "sha256-N3QDhoaX+paWXHbEXZapqd1r95mdshxToGowtjtYkGI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49dc4a92b02b8e68798abd99184f228243b6e3ac",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": [
"nix-fast-build",
"nixpkgs"
]
},
"locked": {
"lastModified": 1698438538,
"narHash": "sha256-AWxaKTDL3MtxaVTVU5lYBvSnlspOS0Fjt8GxBgnU0Do=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "5deb8dc125a9f83b65ca86cf0c8167c46593e0b1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_3": {
"inputs": {
"nixpkgs": [
"nixpkgs-wayland",
@ -1893,11 +2100,11 @@
"systems": "systems_7"
},
"locked": {
"lastModified": 1713427743,
"narHash": "sha256-5riZ/6yjgsW++SUIyJP5rFG65tkjJKgtvDLIGaoiHN0=",
"lastModified": 1714464091,
"narHash": "sha256-yGqYMbXR2GRXoT7iLz5k8995fpAa1FSKgyGYK2Y6nR8=",
"owner": "danyspin97",
"repo": "wpaperd",
"rev": "ee109b08066ed9893cf898b24e16354f547475a4",
"rev": "204b1c550ad6bfa9f2b855de4666c3495d204420",
"type": "github"
},
"original": {

View file

@ -93,7 +93,7 @@
alejandra
git
(pkgs.writeShellScriptBin "mkIso" (lib.concatStrings [
(writeShellScriptBin "mkIso" (lib.concatStrings [
"nix build $(realpath /etc/nixos)#nixosConfigurations."
"live-image.config.system.build.isoImage"
]))
@ -102,7 +102,7 @@
ags = pkgs.mkShell {
packages = with pkgs; [
nodejs_18
nodejs_latest
];
};
@ -152,6 +152,7 @@
type = "github";
owner = "Mic92";
repo = "sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
@ -198,6 +199,9 @@
owner = "juanfont";
repo = "headscale";
# FIXME: doesn't work on latest
rev = "fef8261339899fe526777a7aa42df57ca02021c5";
inputs.nixpkgs.follows = "nixpkgs";
};
@ -267,10 +271,10 @@
inputs.nixpkgs.follows = "nixpkgs";
};
Hyprspace = {
hypr-official-plugins = {
type = "github";
owner = "KZDKM";
repo = "Hyprspace";
owner = "hyprwm";
repo = "hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
@ -355,6 +359,22 @@
owner = "nix-community";
repo = "nix-melt";
};
nix-eval-jobs = {
type = "github";
owner = "nix-community";
repo = "nix-eval-jobs";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-fast-build = {
type = "github";
owner = "Mic92";
repo = "nix-fast-build";
inputs.nixpkgs.follows = "nixpkgs";
};
#
# -= Non-flake inputs =-
@ -409,6 +429,20 @@
url = "https://repo.dec05eba.com/gpu-screen-recorder";
flake = false;
};
libratbag-src = {
type = "github";
owner = "libratbag";
repo = "libratbag";
flake = false;
};
piper-src = {
type = "github";
owner = "libratbag";
repo = "piper";
flake = false;
};
##
## MPV scripts

View file

@ -1,17 +0,0 @@
{...}: {
programs = {
wofi = {
enable = true;
settings = {
prompt = "";
allow_images = true;
normal_window = true;
image_size = "48";
matching = "fuzzy";
insensitive = true;
no_actions = true;
};
style = builtins.readFile ./style.css;
};
};
}

View file

@ -1,92 +0,0 @@
/* https://github.com/dracula/wofi/blob/master/style.css */
* {
font-size: 16px;
}
window,
undershoot {
all: unset;
}
#input {
all: unset;
border-radius: 9px;
color: #f8f8f2;
background-color: rgba(#44475a, 0.6);
border: 1px solid #44475a;
padding: 8px;
margin: 16.2px;
margin-bottom: 0;
}
#outer-box {
all: unset;
box-shadow: 0 0 4.5px 0 rgba(0, 0, 0, 0.6);
border: 2px solid rgba(189, 147, 249, 0.8);
border-radius: 25px;
background-color: rgba(40, 42, 54, 0.8);
color: #f8f8f2;
padding: 16.2px;
}
#inner-box {
padding: 16.2px;
min-width: 500px;
min-height: 450px;
}
#scroll scrollbar, #scroll scrollbar * {
all: unset;
}
#scroll scrollbar {
transition: 200ms;
background-color: rgba(23, 23, 23, 0.3);
&:hover {
background-color: rgba(23, 23, 23, 0.7);
}
}
#scroll scrollbar.vertical:hover slider {
background-color: rgba(238, 238, 238, 0.7);
min-width: .6em;
}
#scroll scrollbar.horizontal:hover slider {
background-color: rgba(238, 238, 238, 0.7);
min-height: .6em;
}
#scroll .vertical slider {
background-color: rgba(238, 238, 238, 0.5);
border-radius: 9px;
min-width: .4em;
min-height: 2em;
transition: 200ms;
}
#scroll .horizontal slider {
background-color: rgba(238, 238, 238, 0.5);
border-radius: 9px;
min-height: .4em;
min-width: 2em;
transition: 200ms;
}
#entry {
all: unset;
padding: 9px;
}
#entry image, #entry label {
all: unset;
}
#entry image {
margin-right: 9px;
}
#entry:selected {
background-color: rgba(189, 147, 249, 0.5);
border-radius: 9px;
box-shadow: inset 0 0 0 3px rgba(238, 238, 238, 0.03);
}
#entry:selected image {
-gtk-icon-shadow: 3px 3px rgba(0, 0, 0, 0.8);
}

View file

@ -0,0 +1,19 @@
{
cliphist,
gawk,
imagemagick,
ripgrep,
writeShellApplication,
...
}:
writeShellApplication {
name = "clipboard-manager";
runtimeInputs = [
cliphist
gawk
imagemagick
ripgrep
];
text = builtins.readFile ./script.sh;
}

45
modules/ags/clipboard/script.sh Executable file
View file

@ -0,0 +1,45 @@
set +o errexit
# Modified from https://github.com/sentriz/cliphist/blob/master/contrib/cliphist-wofi-img
# set up thumbnail directory
thumb_dir="/tmp/cliphist/thumbs"
mkdir -p "$thumb_dir"
cliphist_list="$(cliphist list)"
# delete thumbnails in cache but not in cliphist
for thumb in "$thumb_dir"/*; do
clip_id="${thumb##*/}"
clip_id="${clip_id%.*}"
check=$(rg <<< "$cliphist_list" "^$clip_id\s")
if [ -z "$check" ]; then
>&2 rm -v "$thumb"
fi
done
# create thumbnail if image not processed already
read -r -d '' prog <<EOF
/^[0-9]+\s<meta http-equiv=/ { next }
match(\$0, /^([0-9]+)\s(\[\[\s)?binary.*(jpg|jpeg|png|bmp)/, grp) {
image = grp[1]"."grp[3]
system("[ -f $thumb_dir/"image" ] || echo " grp[1] "\\\\\t | cliphist decode | convert - -resize '256x256>' $thumb_dir/"image )
print "img:$thumb_dir/"image
next
}
1
EOF
output=$(gawk <<< "$cliphist_list" "$prog")
# Use a while loop with read to iterate over each line
echo "$output" | while IFS= read -r line; do
if [[ ! $line =~ ^img:/tmp/cliphist/thumbs ]]; then
[[ $line =~ ([0-9]+) ]]
line=${BASH_REMATCH[1]}
fi
echo "$line"
done

View file

@ -4,6 +4,7 @@ import Pointers from './services/pointers.ts';
import AppLauncher from './ts/applauncher/main.ts';
import Bar from './ts/bar/binto.ts';
import Clipboard from './ts/clipboard/main.ts';
import { NotifPopups, NotifCenter } from './ts/notifications/binto.ts';
import OSD from './ts/osd/main.ts';
import Powermenu from './ts/powermenu.ts';
@ -24,6 +25,7 @@ App.config({
windows: () => [
AppLauncher(),
Clipboard(),
NotifCenter(),
Powermenu(),

View file

@ -25,26 +25,3 @@
background-color: $bgfull;
}
}
.razer {
padding: 0 5px;
background: $bgfull;
.low {
color: $red;
}
.medium {
color: $yellow;
}
.high {
color: $green;
}
image {
padding-right: 5px;
font-size: 22px;
color: white;
}
}

View file

@ -0,0 +1,83 @@
.clipboard {
all: unset;
border: 2px solid $contrast-bg;
background-color: $bg;
color: #f8f8f2;
padding: 2px;
* {
font-size: 16px;
}
list, row {
all: unset;
}
.header {
margin: 16.2px;
margin-bottom: 0;
image, entry {
all: unset;
border-radius: 9px;
color: #f8f8f2;
background-color: rgba(#44475a, 0.6);
border: 1px solid #44475a;
padding: 4.5px;
}
image {
margin-right: 9px;
-gtk-icon-transform: scale(0.8);
font-size: 25.6px;
}
}
scrolledwindow {
padding: 10px;
padding-bottom: 0;
min-width: 900px;
min-height: 750px;
scrollbar, scrollbar * {
all: unset;
}
scrollbar.vertical {
transition: 200ms;
background-color: rgba(23, 23, 23, 0.3);
margin: 20px 0;
&:hover {
background-color: rgba(23, 23, 23, 0.7);
slider {
background-color: rgba(238, 238, 238, 0.7);
min-width: .6em;
}
}
slider {
background-color: rgba(238, 238, 238, 0.5);
border-radius: 9px;
min-width: .4em;
min-height: 2em;
transition: 200ms;
}
}
}
.item {
all: unset;
transition: 200ms;
border-radius: 9px;
box {
padding: 10px;
}
}
*:selected, .item:hover, .item:focus {
background-color: #363449;
}
}

View file

@ -48,7 +48,6 @@
.notification-list-box {
background: $bgfull;
padding: 0 12px;
box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.5);
scrollbar {
all: unset;

View file

@ -15,3 +15,4 @@ undershoot {
@import './binto-widgets/notification-center';
@import './binto-widgets/osd';
@import './binto-widgets/powermenu';
@import './binto-widgets/clipboard';

View file

@ -0,0 +1,84 @@
.clipboard {
all: unset;
border: 2px solid $contrast-bg;
border-radius: 25px;
background-color: $bg;
color: #f8f8f2;
padding: 2px;
* {
font-size: 16px;
}
list, row {
all: unset;
}
.header {
margin: 16.2px;
margin-bottom: 0;
image, entry {
all: unset;
border-radius: 9px;
color: #f8f8f2;
background-color: rgba(#44475a, 0.6);
border: 1px solid #44475a;
padding: 4.5px;
}
image {
margin-right: 9px;
-gtk-icon-transform: scale(0.8);
font-size: 25.6px;
}
}
scrolledwindow {
padding: 10px;
padding-bottom: 0;
min-width: 900px;
min-height: 750px;
scrollbar, scrollbar * {
all: unset;
}
scrollbar.vertical {
transition: 200ms;
background-color: rgba(23, 23, 23, 0.3);
margin: 20px 0;
&:hover {
background-color: rgba(23, 23, 23, 0.7);
slider {
background-color: rgba(238, 238, 238, 0.7);
min-width: .6em;
}
}
slider {
background-color: rgba(238, 238, 238, 0.5);
border-radius: 9px;
min-width: .4em;
min-height: 2em;
transition: 200ms;
}
}
}
.item {
all: unset;
transition: 200ms;
border-radius: 9px;
box {
padding: 10px;
}
}
*:selected, .item:hover, .item:focus {
background-color: #363449;
}
}

View file

@ -54,7 +54,6 @@
padding: 0 12px;
border-radius: 30px;
border-top: 2px solid $contrast-bg;
box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.5);
scrollbar {
all: unset;

View file

@ -21,3 +21,4 @@ undershoot {
@import "./wim-widgets/applauncher";
@import "./wim-widgets/osd";
@import "./wim-widgets/osk";
@import "./wim-widgets/clipboard";

View file

@ -49,7 +49,7 @@ class GSR extends Service {
},
);
},
logError,
() => {/**/},
);
}
@ -65,7 +65,7 @@ class GSR extends Service {
{},
Notifications.popupTimeout,
);
}).catch(logError);
}).catch(console.error);
}
}

View file

@ -34,7 +34,7 @@ const Applauncher = (window_name = 'applauncher') => {
const s1 = fzfResults.find((r) => r.item.name === row1)?.score ?? 0;
const s2 = fzfResults.find((r) => r.item.name === row2)?.score ?? 0;
return s1 - s2;
return s2 - s1;
});
};

View file

@ -7,7 +7,6 @@ import BarRevealer from './fullscreen.ts';
import Clock from './items/clock.ts';
import CurrentWindow from './items/current-window';
import NotifButton from './items/notif-button.ts';
import RazerStats from './items/razer-stats.ts';
import SysTray from './items/systray.ts';
const PADDING = 20;
@ -29,10 +28,6 @@ export default () => BarRevealer({
Separator(PADDING),
SysTray(),
Separator(PADDING / 2 / 2),
RazerStats(),
],
}),

View file

@ -1,93 +0,0 @@
import { execAsync, interval } from 'resource:///com/github/Aylur/ags/utils.js';
const { Box, Icon, Label } = Widget;
const RAZER_POLL = 10000;
const LOW_BATT = 20;
const RazerBat = Variable({
battery: 0,
charging: false,
sleeping: false,
disconnected: true,
});
const fetchInfo = () => {
execAsync([
'bash',
'-c',
"polychromatic-cli -n 'Razer Naga Pro (Wired)' -k" +
' || ' +
"polychromatic-cli -n 'Razer Naga Pro (Wireless)' -k",
]).then((out) => {
const batteryMatches = out.split('\n')
.filter((i) => i.includes('Battery'))[0]
.match(/[0-9]+/);
let sleeping = false;
let battery = batteryMatches !== null ?
parseInt(batteryMatches[0]) :
0;
// Don't set to zero when in sleep mode
if (battery === 0 && RazerBat.value.battery > 10) {
battery = RazerBat.value.battery;
sleeping = true;
}
// If 'Wireless' isn't in the logs it means the cmd found 'Wired'
const charging = !out.includes('Wireless');
RazerBat.value = {
battery,
charging,
sleeping,
disconnected: false,
};
}).catch(() => {
RazerBat.value.disconnected = true;
});
};
interval(RAZER_POLL, fetchInfo);
export default () => {
const percentage = Label({ vpack: 'center' });
const icon = Icon({ hpack: 'start' })
.hook(RazerBat, (self) => {
const v = RazerBat.value;
percentage.visible = !(v.disconnected || v.charging);
percentage.label = `${v.battery}%`;
self.icon = v.disconnected ?
'content-loading-symbolic' :
'mouse-razer-symbolic';
self.setCss(
v.disconnected || v.charging ?
'margin-right: -5px;' :
'',
);
self.toggleClassName(
'high',
v.battery > 66,
);
self.toggleClassName(
'medium',
v.battery > LOW_BATT && v.battery <= 66,
);
self.toggleClassName(
'low',
v.battery <= LOW_BATT,
);
});
return Box({
class_name: 'razer',
children: [icon, percentage],
});
};

View file

@ -0,0 +1,196 @@
const { Box, Entry, Icon, Label, ListBox, Scrollable } = Widget;
const { execAsync } = Utils;
const Hyprland = await Service.import('hyprland');
import { Fzf, FzfResultItem } from 'fzf';
import Gtk from 'gi://Gtk?version=3.0';
import CursorBox from '../misc/cursorbox.ts';
import PopupWindow from '../misc/popup.ts';
import { Monitor } from 'types/service/hyprland';
const N_ITEMS = 30;
const copyOldItem = (key: string | number): void => {
execAsync([
'bash', '-c', `cliphist list | grep ${key} | cliphist decode | wl-copy`,
]).then(() => {
App.closeWindow('win-clipboard');
});
};
export default () => {
let CopiedItems = [] as [string, number][];
let fzfResults: FzfResultItem<[string, number]>[];
const getKey = (r: Gtk.ListBoxRow) => parseInt(r.get_child()?.name ?? '');
const list = ListBox().on('row-activated', (_, row) => {
copyOldItem(getKey(row));
});
const updateItems = () => {
(list.get_children() as Gtk.ListBoxRow[]).forEach((r) => {
r.changed();
});
};
const setSort = (text: string) => {
if (text === '' || text === '-') {
list.set_sort_func((row1, row2) => getKey(row2) - getKey(row1));
}
else {
const fzf = new Fzf(CopiedItems, {
selector: (item) => item[0],
tiebreakers: [(a, b) => b[1] - a[1]],
});
fzfResults = fzf.find(text);
list.set_sort_func((a, b) => {
const row1 = fzfResults.find((f) => f.item[1] === getKey(a))?.score ?? 0;
const row2 = fzfResults.find((f) => f.item[1] === getKey(b))?.score ?? 0;
return row2 - row1;
});
}
updateItems();
};
const makeItem = (key: string, val: string) => {
CopiedItems.push([val, parseInt(key)]);
const widget = CursorBox({
class_name: 'item',
name: key,
on_primary_click_release: () => copyOldItem(key),
child: Box({
children: [
val.startsWith('img:') ?
Icon({
icon: val.replace('img:', ''),
size: 100 * 2,
}) :
Label({
label: val,
truncate: 'end',
max_width_chars: 100,
}),
],
}),
});
list.add(widget);
widget.show_all();
updateItems();
};
// Decode old item:
const decodeItem = (index: string) => {
execAsync([
'bash', '-c', `cliphist list | grep ${index} | cliphist decode`,
]).then((out) => {
makeItem(index, out);
});
};
const entry = Entry({
// Set some text so on-change works the first time
text: '-',
hexpand: true,
on_change: ({ text }) => {
if (text !== null) {
setSort(text);
}
},
});
const on_open = () => {
CopiedItems = [];
entry.text = '';
execAsync('clipboard-manager').then(async(out) => {
list.get_children()?.forEach((ch) => {
ch.destroy();
});
const items = out.split('\n');
for (let i = 0; i < N_ITEMS; ++i) {
if (items[i].includes('img')) {
makeItem((items[i].match('[0-9]+') ?? [''])[0], items[i]);
}
else {
decodeItem(items[i]);
}
}
let x: number;
let y: number;
const monitor = (JSON.parse(await Hyprland.messageAsync('j/monitors')) as Monitor[])
.find((m) => m.focused) as Monitor;
switch (monitor.transform) {
case 1:
x = monitor.x - (monitor.height / 2);
y = monitor.y - (monitor.width / 2);
break;
case 2:
x = monitor.x - (monitor.width / 2);
y = monitor.y - (monitor.height / 2);
break;
case 3:
x = monitor.x + (monitor.height / 2);
y = monitor.y + (monitor.width / 2);
break;
default:
x = monitor.x + (monitor.width / 2);
y = monitor.y + (monitor.height / 2);
break;
}
await Hyprland.messageAsync(`dispatch movecursor ${x} ${y}`);
entry.grab_focus();
}).catch(console.log);
};
on_open();
return PopupWindow({
name: 'clipboard',
keymode: 'on-demand',
on_open,
child: Box({
class_name: 'clipboard',
vertical: true,
children: [
Box({
class_name: 'header',
children: [
Icon('preferences-system-search-symbolic'),
entry,
],
}),
Scrollable({
hscroll: 'never',
vscroll: 'automatic',
child: Box({
vertical: true,
children: [list],
}),
}),
],
}),
});
};

View file

@ -14,7 +14,7 @@ import { Box as AgsBox } from 'types/widgets/box';
const lock = Lock.prepare_lock();
const windows: Gtk.Window[] = [];
const windows: Map<Gdk.Monitor, Gtk.Window> = new Map();
const blurBGs: AgsBox<Gtk.Widget, { geometry: { w: number, h: number }; }>[] = [];
const transition_duration = 1000;
@ -175,12 +175,10 @@ const createWindow = (monitor: Gdk.Monitor) => {
const entryVisible = Vars.mainMonitor.startsWith(hyprDesc) || Vars.dupeLockscreen;
const win = PasswordPrompt(monitor, entryVisible);
windows.push(win);
lock.new_surface(win, monitor);
win.show();
windows.set(monitor, win);
};
const on_locked = () => {
const lock_screen = () => {
const display = Gdk.Display.get_default();
for (let m = 0; m < (display?.get_n_monitors() ?? 0); m++) {
@ -193,6 +191,11 @@ const on_locked = () => {
display?.connect('monitor-added', (_, monitor) => {
createWindow(monitor);
});
lock.lock_lock();
windows.forEach((win, monitor) => {
lock.new_surface(win, monitor);
win.show();
});
};
const on_finished = () => {
@ -201,7 +204,6 @@ const on_finished = () => {
App.quit();
};
lock.connect('locked', on_locked);
lock.connect('finished', on_finished);
if (Vars.hasFprintd) {
@ -211,4 +213,4 @@ if (Vars.hasFprintd) {
}
export default () => lock.lock_lock();
export default () => lock_screen();

View file

@ -176,7 +176,6 @@ export const Notification = ({
const BlockedApps = [
'Spotify',
'OpenRazer',
];
if (BlockedApps.find((app) => app === notif.app_name)) {

View file

@ -3,6 +3,7 @@ import AppLauncher from './ts/applauncher/main.ts';
import Bar from './ts/bar/wim.ts';
import BgFade from './ts/misc/background-fade.ts';
import Calendar from './ts/date.ts';
import Clipboard from './ts/clipboard/main.ts';
import Corners from './ts/corners/main.ts';
import { NotifPopups, NotifCenter } from './ts/notifications/wim.ts';
import OSD from './ts/osd/main.ts';
@ -23,6 +24,7 @@ App.config({
AppLauncher(),
Calendar(),
Clipboard(),
NotifCenter(),
OSD(),
OSK(),

View file

@ -107,6 +107,7 @@ in {
dart-sass
bun
playerctl
(callPackage ./clipboard {})
## gui
pavucontrol # TODO: replace with ags widget

View file

@ -3,11 +3,6 @@
pkgs,
...
}: {
"${agsConfigDir}/config/icons/mouse-razer-symbolic.svg".source = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/bithatch/razer-icon-font/main/src/devices/mouse.svg";
hash = "sha256-A1+eIp2VEFDyY23GIHKhbnByHXrnVS3QgIJ9sjjtuZw=";
};
"${agsConfigDir}/config/icons/down-large-symbolic.svg".source = pkgs.fetchurl {
url = "https://www.svgrepo.com/download/158537/down-chevron.svg";
hash = "sha256-mOfNjgZh0rt6XosKA2kpLY22lJldSS1XCphgrnvZH1s=";

View file

@ -8,20 +8,12 @@
inherit (import ./hyprland.nix {inherit config lib pkgs;}) hyprConf;
# Nix stuff
isTouchscreen = config.hardware.sensor.iio.enable;
hyprland = config.home-manager.users.${mainUser}.wayland.windowManager.hyprland.finalPackage;
in {
imports = [./astal.nix];
services = {
displayManager = {
sessionPackages = [hyprland];
};
xserver = {
libinput.enable = true;
wacom.enable = isTouchscreen;
};
displayManager.sessionPackages = [hyprland];
greetd = {
enable = true;

View file

@ -1,15 +0,0 @@
{
Hyprspace,
pkgs,
...
}: {
wayland.windowManager.hyprland = {
plugins = [Hyprspace.packages.${pkgs.system}.Hyprspace];
settings = {
bind = [
"ALT, tab, overview:toggle"
];
};
};
}

View file

@ -1,10 +0,0 @@
[Default]
save_dir=$HOME/Pictures/Screenshots
save_filename_format=swappy-%Y%m%d-%H%M%S.png
show_panel=false
line_size=5
text_size=20
text_font=Ubuntu-Mono
paint_mode=brush
early_exit=false
fill_shape=false

View file

@ -9,6 +9,7 @@
inherit (config.vars) mainUser;
cfg = config.programs.hyprland;
isTouchscreen = config.hardware.sensor.iio.enable;
in {
# SYSTEM CONFIG
imports = [
@ -29,32 +30,36 @@ in {
services = {
dbus.enable = true;
gvfs.enable = true;
libinput.enable = true;
xserver.wacom.enable = isTouchscreen;
};
programs.hyprland = with hyprland.packages.${pkgs.system}; {
enable = true;
package = default.overrideAttrs (o: {
postFixup = ''
rm "$out/share/xdg-desktop-portal/hyprland-portals.conf"
cat <<EOF > "$out/share/xdg-desktop-portal/hyprland-portals.conf"
[preferred]
default=hyprland;gtk
org.freedesktop.impl.portal.FileChooser=kde
EOF
'';
});
package = default;
portalPackage = xdg-desktop-portal-hyprland;
};
xdg.portal.extraPortals = [
pkgs.xdg-desktop-portal-kde
];
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-kde
];
config.hyprland = {
default = [
"hyprland"
"gtk"
];
"org.freedesktop.impl.portal.FileChooser" = ["kde"];
};
};
# HOME-MANAGER CONFIG
home-manager.users.${mainUser} = {
imports = [
./Hyprspace.nix
./hyprexpo.nix
./inputs.nix
./style.nix
];

View file

@ -0,0 +1,28 @@
{
hypr-official-plugins,
pkgs,
...
}: {
wayland.windowManager.hyprland = {
plugins = [hypr-official-plugins.packages.${pkgs.system}.hyprexpo];
settings = {
plugin = {
hyprexpo = {
columns = 3;
gap_size = 5;
bg_col = "rgb(111111)";
workspace_method = "center current"; # [center/first] [workspace] e.g. first 1 or center m+1
enable_gesture = true; # laptop touchpad, 4 fingers
gesture_distance = 300; # how far is the "max"
gesture_positive = true; # positive = swipe down. Negative = swipe up.
};
};
bind = [
"ALT, tab, hyprexpo:expo, toggle" # can be: toggle, off/disable or on/enable
];
};
};
}

View file

@ -8,15 +8,7 @@
inherit (osConfig.vars) mainMonitor;
miceNames = [
# Wireless
"razer-razer-naga-pro"
# Wired (it always changes)
"razer-razer-naga-pro-1"
"razer-naga-pro"
"razer-naga-pro-1"
"razer-naga-pro-2"
"razer-naga-pro-3"
"logitech-g502-x"
"logitech-g502-hero-gaming-mouse"
];
nagaConf = name: {

View file

@ -5,6 +5,7 @@
...
}: let
inherit (lib) makeLibraryPath optionalString;
inherit (pkgs.writers) writeTOML;
inherit (config.vars) mainUser;
flakeDir = config.environment.variables.FLAKE;
in {
@ -17,7 +18,6 @@ in {
../../home/foot.nix
../../home/mpv
../../home/obs.nix
../../home/wofi
({config, ...}: let
symlink = config.lib.file.mkOutOfStoreSymlink;
@ -29,7 +29,19 @@ in {
"kiorc".source = symlink "${configDir}/kiorc";
"mimeapps.list".source = symlink "${configDir}/mimeapps.list";
"neofetch".source = symlink "${configDir}/neofetch";
"swappy".source = symlink "${configDir}/swappy";
"satty/config.toml".source = writeTOML "satty.toml" {
general = {
early-exit = true;
copy-command = "wl-copy";
initial-tool = "crop";
output-filename = "${config.home.homeDirectory}/Pictures/Screenshots/screen-%d-%m-%Y_%H:%M:%S.png";
};
font = {
family = "Ubuntu Mono";
};
};
};
})
];
@ -50,7 +62,7 @@ in {
photoqt
nextcloud-client
jellyfin-media-player
prismlauncher-qt5
prismlauncher
# tools
wl-color-picker
@ -58,7 +70,22 @@ in {
cliphist
grim
slurp
swappy
satty
# TODO: make an ags widget to select windows, screens or a selection
(writeShellApplication {
name = "screenshot";
runtimeInputs = [
config.programs.hyprland.package
satty
grim
jq
];
text = ''
screen=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')
exec grim -o "$screen" - | satty -f -
'';
})
/*
Discord themes for Vencord
@ -101,9 +128,10 @@ in {
];
windowrule = [
"noborder,^(wofi)$"
"tile,^(libreoffice)$"
"float,^(org.gnome.Calculator)$"
"float,^(com.gabm.satty)$"
"size 1000 700,^(com.gabm.satty)$"
"float,^(com.nextcloud.desktopclient.nextcloud)$"
"move cursor -15 -10,^(com.nextcloud.desktopclient.nextcloud)$"
@ -117,9 +145,10 @@ in {
"$mainMod, Q, exec, foot"
# Clipboard History
"$mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy"
"$mainMod, V, exec, ags -t win-clipboard"
",Print, exec, grim -g \"$(slurp)\" - | swappy -f -"
" , Print, exec, screenshot"
"$mainMod, Print, exec, grim -g \"$(slurp)\" - | satty -f -"
"$mainMod SHIFT, C, exec, wl-color-picker"
"$mainMod, T, togglespecialworkspace, thunder"

View file

@ -1,28 +1,26 @@
{
config,
lib,
libratbag-src,
pkgs,
piper-src,
...
}: let
inherit (config.vars) mainUser;
inherit (lib) mkIf;
cfgHypr =
config
.home-manager
.users
.${mainUser}
.wayland
.windowManager
.hyprland;
in {
services.ratbagd.enable = true;
}: {
services.ratbagd = {
enable = true;
# HOME-MANAGER CONFIG
home-manager.users.${mainUser} = {
home.packages = with pkgs; [piper];
wayland.windowManager.hyprland = mkIf (cfgHypr.enable) {
# settings.exec-once = [""];
package = pkgs.libratbag.overrideAttrs {
version = libratbag-src.shortRev;
src = libratbag-src;
};
};
environment.systemPackages = with pkgs; [
(piper.overrideAttrs {
name = "piper-${piper-src.shortRev}";
src = piper-src;
mesonFlags = [
"-Druntime-dependency-checks=false"
];
})
];
}

View file

@ -1,35 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
inherit (config.vars) mainUser;
inherit (lib) mkIf;
cfgHypr =
config
.home-manager
.users
.${mainUser}
.wayland
.windowManager
.hyprland;
in {
hardware.openrazer = {
enable = true;
users = [mainUser];
};
environment.systemPackages = with pkgs; [
openrazer-daemon
polychromatic
];
# HOME-MANAGER CONFIG
home-manager.users.${mainUser} = {
wayland.windowManager.hyprland = mkIf (cfgHypr.enable) {
settings.exec-once = ["polychromatic-tray-applet"];
};
};
}