Compare commits
22 commits
8f3c7fff7e
...
384e0c24b3
Author | SHA1 | Date | |
---|---|---|---|
matt1432 | 384e0c24b3 | ||
matt1432 | 0665c3bfae | ||
matt1432 | 177f8555a3 | ||
matt1432 | 3b6033da4f | ||
matt1432 | 107f3a0e3e | ||
matt1432 | 85473011b2 | ||
matt1432 | ac29acb446 | ||
matt1432 | 595e3996c3 | ||
matt1432 | c738d4137f | ||
matt1432 | 5285b166b2 | ||
matt1432 | b01190a532 | ||
matt1432 | bc4be97591 | ||
matt1432 | 315a06dbf2 | ||
matt1432 | dfa762d46e | ||
matt1432 | f4618c3271 | ||
matt1432 | 5fd6448ba2 | ||
matt1432 | 1ca52dc2ae | ||
matt1432 | f2710d1c19 | ||
matt1432 | 585d764720 | ||
matt1432 | 2caeb6f438 | ||
matt1432 | e1d746b0f5 | ||
matt1432 | b12b2e2911 |
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -11,7 +11,6 @@ in {
|
|||
../../modules/kmscon.nix
|
||||
../../modules/printer.nix
|
||||
../../modules/ratbag-mice.nix
|
||||
../../modules/razer.nix
|
||||
../../modules/sshd.nix
|
||||
../../modules/tailscale.nix
|
||||
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
pkgs:
|
||||
pkgs.dockerTools.pullImage {
|
||||
imageName = "postgres";
|
||||
imageDigest = "sha256:c7b1085b1a26835716593174ee2169e76e8ee1d37cc8aab0b78a3e4da794d8cb";
|
||||
imageDigest = "sha256:d6850c40261fdc9a4fb33b9521d9d641c4a5dcb82145f7bcc32c9258f81e75a2";
|
||||
sha256 = "0zjcx747n54jnnliqd80v8ca43rl09dp3bh6xir5kxq2hw5p22i4";
|
||||
finalImageName = "postgres";
|
||||
finalImageTag = "14";
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
pkgs:
|
||||
pkgs.dockerTools.pullImage {
|
||||
imageName = "postgres";
|
||||
imageDigest = "sha256:c7b1085b1a26835716593174ee2169e76e8ee1d37cc8aab0b78a3e4da794d8cb";
|
||||
imageDigest = "sha256:d6850c40261fdc9a4fb33b9521d9d641c4a5dcb82145f7bcc32c9258f81e75a2";
|
||||
sha256 = "0zjcx747n54jnnliqd80v8ca43rl09dp3bh6xir5kxq2hw5p22i4";
|
||||
finalImageName = "postgres";
|
||||
finalImageTag = "14";
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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
|
||||
];
|
||||
|
|
393
flake.lock
393
flake.lock
|
@ -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": {
|
||||
|
|
44
flake.nix
44
flake.nix
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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);
|
||||
}
|
19
modules/ags/clipboard/default.nix
Normal file
19
modules/ags/clipboard/default.nix
Normal 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
45
modules/ags/clipboard/script.sh
Executable 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
|
|
@ -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(),
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
83
modules/ags/config/scss/binto-widgets/clipboard.scss
Normal file
83
modules/ags/config/scss/binto-widgets/clipboard.scss
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -15,3 +15,4 @@ undershoot {
|
|||
@import './binto-widgets/notification-center';
|
||||
@import './binto-widgets/osd';
|
||||
@import './binto-widgets/powermenu';
|
||||
@import './binto-widgets/clipboard';
|
||||
|
|
84
modules/ags/config/scss/wim-widgets/clipboard.scss
Normal file
84
modules/ags/config/scss/wim-widgets/clipboard.scss
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -21,3 +21,4 @@ undershoot {
|
|||
@import "./wim-widgets/applauncher";
|
||||
@import "./wim-widgets/osd";
|
||||
@import "./wim-widgets/osk";
|
||||
@import "./wim-widgets/clipboard";
|
||||
|
|
|
@ -49,7 +49,7 @@ class GSR extends Service {
|
|||
},
|
||||
);
|
||||
},
|
||||
logError,
|
||||
() => {/**/},
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ class GSR extends Service {
|
|||
{},
|
||||
Notifications.popupTimeout,
|
||||
);
|
||||
}).catch(logError);
|
||||
}).catch(console.error);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
@ -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(),
|
||||
],
|
||||
}),
|
||||
|
||||
|
|
|
@ -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],
|
||||
});
|
||||
};
|
196
modules/ags/config/ts/clipboard/main.ts
Normal file
196
modules/ags/config/ts/clipboard/main.ts
Normal 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],
|
||||
}),
|
||||
}),
|
||||
],
|
||||
}),
|
||||
});
|
||||
};
|
|
@ -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();
|
||||
|
|
|
@ -176,7 +176,6 @@ export const Notification = ({
|
|||
|
||||
const BlockedApps = [
|
||||
'Spotify',
|
||||
'OpenRazer',
|
||||
];
|
||||
|
||||
if (BlockedApps.find((app) => app === notif.app_name)) {
|
||||
|
|
|
@ -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(),
|
||||
|
|
|
@ -107,6 +107,7 @@ in {
|
|||
dart-sass
|
||||
bun
|
||||
playerctl
|
||||
(callPackage ./clipboard {})
|
||||
|
||||
## gui
|
||||
pavucontrol # TODO: replace with ags widget
|
||||
|
|
|
@ -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=";
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
Hyprspace,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
wayland.windowManager.hyprland = {
|
||||
plugins = [Hyprspace.packages.${pkgs.system}.Hyprspace];
|
||||
|
||||
settings = {
|
||||
bind = [
|
||||
"ALT, tab, overview:toggle"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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
|
|
@ -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
|
||||
];
|
||||
|
|
28
modules/hyprland/hyprexpo.nix
Normal file
28
modules/hyprland/hyprexpo.nix
Normal 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
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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: {
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
];
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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"];
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue