Compare commits
33 Commits
i3-kickstarter
...
v0.0.3
| Author | SHA1 | Date | |
|---|---|---|---|
| 78e620001f | |||
| 1b9801c15a | |||
| ffd4313dec | |||
| ad5f3da45f | |||
| 129302ac26 | |||
| be47ea74cd | |||
| f1c20d68f9 | |||
| 0716174fb7 | |||
| b25b6a48e2 | |||
| 162399ad8a | |||
| 79c424e08e | |||
| 381f0c5123 | |||
| e83aec85f1 | |||
| 1235f08891 | |||
| ed7ebb0802 | |||
| 82f0248cf6 | |||
| 88faaa950c | |||
| e9e63e6d4a | |||
| b8b4d843d6 | |||
| 99e12fde04 | |||
| bb47747529 | |||
| 4f4bccbb59 | |||
| ea35e5dc49 | |||
| b50cca1ec6 | |||
| 07d13c7cc9 | |||
| 57ed18fe8b | |||
| e3a9bea779 | |||
| 65e2672a68 | |||
| 8619d9a284 | |||
| 7619f7ca41 | |||
| 90c61f0625 | |||
| 1b95d4945f | |||
| 830605aeec |
@@ -0,0 +1,3 @@
|
||||
|
||||
|
||||
.smb_credentials
|
||||
@@ -3,15 +3,14 @@
|
||||
This repository is home to the nix code that builds my systems.
|
||||
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||
## TODO
|
||||
|
||||
- vscode extensions - [nix-vscode-extensions](https://github.com/nix-community/nix-vscode-extensions)
|
||||
- secret management - [sops-nix](https://github.com/Mic92/sops-nix)
|
||||
- switch from i3wm to hyprland
|
||||
- i3wm: old and stable, only support X11
|
||||
- sway: compatible with i3wm, support Wayland. do not support Nvidia GPU officially.
|
||||
- [hyprland](https://wiki.hyprland.org/Nix/Hyprland-on-NixOS/): project starts from 2022, support Wayland, envolving fast, good looking, support Nvidia GPU.
|
||||
|
||||
- [sops-nix](https://github.com/Mic92/sops-nix): secret management
|
||||
- [devShell](https://github.com/numtide/devshell): manage development environments
|
||||
|
||||
## Why Nix?
|
||||
|
||||
@@ -23,6 +22,25 @@ Nix allows for easy to manage, collaborative, reproducible deployments. This mea
|
||||
After installed NixOS with `nix-command` & `flake` enabled, you can deploy this flake with the following command:
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch .#nixos-test
|
||||
# deploy my test configuration
|
||||
sudo nixos-rebuild switch --flake .#nixos-test
|
||||
|
||||
|
||||
# deploy my PC's configuration
|
||||
rm -rf ~/.config/fcitx5/profile ~/.config/mimeapps.list # this file may be covered by fcitx5, so remove it first
|
||||
sudo nixos-rebuild switch --flake .#msi-rtx4090
|
||||
```
|
||||
|
||||
## Other Interesting Dotfiles
|
||||
|
||||
Other configurations from where I learned and copied:
|
||||
|
||||
- https://github.com/notwidow/hyprland
|
||||
- https://github.com/notusknot/dotfiles-nix
|
||||
- [xddxdd/nixos-config](https://github.com/xddxdd/nixos-config)
|
||||
- [bobbbay/dotfiles](https://github.com/bobbbay/dotfiles)
|
||||
- [gytis-ivaskevicius/nixfiles](https://github.com/gytis-ivaskevicius/nixfiles)
|
||||
- [fufexan/dotfiles](https://github.com/fufexan/dotfiles)
|
||||
- [davidak/nixos-config](https://codeberg.org/davidak/nixos-config)
|
||||
- [davidtwco/veritas](https://github.com/davidtwco/veritas)
|
||||
- [NixOS-CN/NixOS-CN-telegram](https://github.com/NixOS-CN/NixOS-CN-telegram)
|
||||
|
||||
|
After Width: | Height: | Size: 336 KiB |
@@ -1,28 +1,52 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1673956053,
|
||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
||||
"owner": "edolstra",
|
||||
"lastModified": 1680531544,
|
||||
"narHash": "sha256-8qbiDTYb1kGaDADRXTItpcMKQ1TeQVkuof6oEwHUvVA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "flake-compat",
|
||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
||||
"rev": "95e78dc12268c5e4878621845c511077f3798729",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"owner": "nix-community",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"nixpkgs-wayland",
|
||||
"nix-eval-jobs",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"lastModified": 1680392223,
|
||||
"narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1681202837,
|
||||
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -38,11 +62,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1682176386,
|
||||
"narHash": "sha256-xwYjQ8PjfdHlggi8Dq0PXWby/1oXegSUuNuBvoTcnpA=",
|
||||
"lastModified": 1683459775,
|
||||
"narHash": "sha256-Ab1pIKOj7XRZbJAv4g9937ElhaZF7Pob3hqGTDKt5w8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "6169690ae38175295605d521bd778d999fbd85cd",
|
||||
"rev": "6fc82e56971523acfe1a61dbcb20f4bb969b3990",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -51,33 +75,93 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-vscode-extensions": {
|
||||
"hyprland": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
"hyprland-protocols": "hyprland-protocols",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"wlroots": "wlroots",
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1683076311,
|
||||
"narHash": "sha256-xGvR07+fR5g/89oVEQieKG/ZveGHZZyhxXcRouW0WCk=",
|
||||
"lastModified": 1683414693,
|
||||
"narHash": "sha256-TH7iHV4mcStMk0NzySOiKcUMY5tjmOM9VbdNHEanvSs=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "a31dceb2c623c41565193328f98b50694917e0bf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-protocols": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1681065697,
|
||||
"narHash": "sha256-QPzwwlGKX95tl6ZEshboZbEwwAXww6lNLdVYd6T9Mrc=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"rev": "4d29e48433270a2af06b8bc711ca1fe5109746cd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"lib-aggregate": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1681214977,
|
||||
"narHash": "sha256-pBaG4iKzF/YJQA06f87IZokB15Z13DYd6zsT/wlbWfI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"rev": "70d48e0c7eafdbcdaa9dac6c17f46a88872f7285",
|
||||
"repo": "lib-aggregate",
|
||||
"rev": "19d70ca7a81956bd01a768297b84798f301e150f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"repo": "lib-aggregate",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-eval-jobs": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1682480188,
|
||||
"narHash": "sha256-4LG8Vl/fLWsJg+QAb5/PvZTdLtPFsYFxuGDfEAR5szA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-eval-jobs",
|
||||
"rev": "73ee1712faeb5db609fc9f991e2dc1de265acff5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-eval-jobs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1675763311,
|
||||
"narHash": "sha256-bz0Q2H3mxsF1CUfk26Sl9Uzi8/HFjGFD/moZHz1HebU=",
|
||||
"lastModified": 1683014792,
|
||||
"narHash": "sha256-6Va9iVtmmsw4raBc3QKvQT2KT/NGRWlvUlJj46zN8B8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "fab09085df1b60d6a0870c8a89ce26d5a4a708c2",
|
||||
"rev": "1a411f23ba299db155a5b45d5e145b85a7aafc42",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -87,13 +171,97 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1681920287,
|
||||
"narHash": "sha256-+/d6XQQfhhXVfqfLROJoqj3TuG38CAeoT6jO1g9r1k0=",
|
||||
"lastModified": 1681001314,
|
||||
"narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1683383741,
|
||||
"narHash": "sha256-rAQSBnFGNKNomUUyVl+7v0tnp45677t4Ovlh9f57k6Q=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "645bc49f34fa8eff95479f0345ff57e55b53437e",
|
||||
"rev": "adc7c6f1bbaa73cda26be2323353b63a05b42f61",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-22.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-wayland": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"lib-aggregate": "lib-aggregate",
|
||||
"nix-eval-jobs": "nix-eval-jobs",
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1683454517,
|
||||
"narHash": "sha256-T3ObyRj1BsR0MZfIqZ/y8dSqRBeRBulrnWYiFQaz98o=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs-wayland",
|
||||
"rev": "e40b5d9061325d66acb598e0ae7038ca149d626d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs-wayland",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1683408522,
|
||||
"narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681347147,
|
||||
"narHash": "sha256-B+hTioRc3Jdf4SJyeCiO0fW5ShIznJk2OTiW2vOV+mc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1a9d9175ecc48ecd033062fa09b1834d13ae9c69",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "master",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1683408522,
|
||||
"narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -106,12 +274,71 @@
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nix-vscode-extensions": "nix-vscode-extensions",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"hyprland": "hyprland",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixpkgs-wayland": "nixpkgs-wayland"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"wlroots": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"host": "gitlab.freedesktop.org",
|
||||
"lastModified": 1682436395,
|
||||
"narHash": "sha256-GGEjkQO9m7YLYIXIXM76HWdhjg4Ye+oafOtyaFAYKI4=",
|
||||
"owner": "wlroots",
|
||||
"repo": "wlroots",
|
||||
"rev": "6830bfc17fd94709e2cdd4da0af989f102a26e59",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"host": "gitlab.freedesktop.org",
|
||||
"owner": "wlroots",
|
||||
"repo": "wlroots",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"xdph": {
|
||||
"inputs": {
|
||||
"hyprland-protocols": [
|
||||
"hyprland",
|
||||
"hyprland-protocols"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1682439384,
|
||||
"narHash": "sha256-zHDa8LCZs05TZHQSIZ3ucwyMPglBGHcqTBzfkLjYXTM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "c0e233955568fbea4e859336f6d3d14d51294d7c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
|
||||
|
||||
@@ -18,9 +18,14 @@
|
||||
# nix community's cache server
|
||||
extra-substituters = [
|
||||
"https://nix-community.cachix.org"
|
||||
"https://nixpkgs-wayland.cachix.org"
|
||||
# "https://nixos-cn.cachix.org"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
|
||||
# "nixos-cn.cachix.org-1:L0jEaL6w7kwQOPlLoCR3ADx+E3Q8SEFEcB9Jaibl0Xg="
|
||||
];
|
||||
};
|
||||
|
||||
@@ -29,14 +34,25 @@
|
||||
inputs = {
|
||||
# flake inputs 有很多种引用方式,应用最广泛的是 github 的引用方式
|
||||
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # 使用 nixos-unstable 分支
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # 使用 nixos-unstable 分支 for nix flakes
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-22.11"; # unstable branch may be broken sometimes, use stable branch when necessary
|
||||
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
# follows 是 inputs 中的继承语法
|
||||
# 这里使 home-manager 的 nixpkgs 这个 inputs 与当前 flake 的 inputs.nixpkgs 保持一致,避免依赖的 nixpkgs 版本不一致导致问题
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# vscode 插件库
|
||||
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
|
||||
# modern window compositor
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
# community wayland nixpkgs
|
||||
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
|
||||
|
||||
# # nixos-cn 提供了一些国内常用的程序包,如 qq wechat dingtalk 等
|
||||
# nixos-cn = {
|
||||
# url = "github:nixos-cn/flakes";
|
||||
# # 强制 nixos-cn 和该 flake 使用相同版本的 nixpkgs
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
};
|
||||
|
||||
# outputs 的参数都是 inputs 中定义的依赖项,可以通过它们的名称来引用。
|
||||
@@ -45,8 +61,9 @@
|
||||
outputs = inputs@{
|
||||
self,
|
||||
nixpkgs,
|
||||
nixpkgs-stable,
|
||||
home-manager,
|
||||
nix-vscode-extensions,
|
||||
# nixos-cn,
|
||||
...
|
||||
}: {
|
||||
# 名为 nixosConfigurations 的 outputs 会在执行 `nixos-rebuild switch --flake .` 时被使用
|
||||
@@ -70,6 +87,10 @@
|
||||
#
|
||||
# nix flake 的 modules 系统可将配置模块化,提升配置的可维护性
|
||||
# 默认只能传上面这四个参数,如果需要传其他参数,必须使用 specialArgs
|
||||
specialArgs = {
|
||||
# inherit nixos-cn;
|
||||
inherit nixpkgs-stable;
|
||||
};
|
||||
modules = [
|
||||
./hosts/nixos-test
|
||||
|
||||
@@ -84,12 +105,25 @@
|
||||
home-manager.extraSpecialArgs = inputs;
|
||||
home-manager.users.ryan = import ./home;
|
||||
}
|
||||
|
||||
({pkgs, config, ... }: {
|
||||
config = {
|
||||
# use it as an overlay
|
||||
nixpkgs.overlays = [
|
||||
inputs.nixpkgs-wayland.overlay
|
||||
];
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
msi-rtx4090 = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
|
||||
specialArgs = {
|
||||
# inherit nixos-cn;
|
||||
inherit nixpkgs-stable;
|
||||
};
|
||||
modules = [
|
||||
./hosts/msi-rtx4090
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{ lib, stdenvNoCC, fetchgit }:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "archcraft-font";
|
||||
version = "2023-05-07";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/archcraft-os/archcraft-packages.git";
|
||||
rev = "88030ee6d2df80db958541b53bd3673e081720cf"; # git commit id
|
||||
sparseCheckout = [ "archcraft-fonts/files/icon-fonts/archcraft.ttf" ]; # only fetch the feather.ttf file
|
||||
|
||||
# the sha256 is used to verify the integrity of the downloaded source, and alse cache the build result.
|
||||
# so if you copy other package src's sha256, you will get a cached build result of that package, and all configs in this file will be ignored.
|
||||
# specify sha256 to empty and build it, then an error will indicate the correct sha256
|
||||
sha256 = "sha256-DrGN8lN4Yr1RTyCUZhJjzKgCuC0vTnSWjOKovNg3T/U=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm644 archcraft-fonts/files/icon-fonts/archcraft.ttf -t $out/share/fonts/truetype/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/archcraft-os/archcraft-packages";
|
||||
description = "Archcraft icon font";
|
||||
version = version;
|
||||
longDescription = ''Archcraft icon font'';
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.ryan4yin ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{ lib, stdenvNoCC, fetchgit }:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "icomoon-feather-font";
|
||||
version = "2023-05-06";
|
||||
|
||||
# 参考 https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=ttf-icomoon-feather
|
||||
src = fetchgit {
|
||||
url = "https://github.com/adi1090x/polybar-themes.git";
|
||||
rev = "47b66337a92a1afd2240ed7094ffcb039cc686cf"; # git commit id
|
||||
sparseCheckout = [ "fonts/feather.ttf" ]; # only fetch the feather.ttf file
|
||||
|
||||
# the sha256 is used to verify the integrity of the downloaded source, and alse cache the build result.
|
||||
# so if you copy other package src's sha256, you will get a cached build result of that package, and all configs in this file will be ignored.
|
||||
# specify sha256 to empty and build it, then an error will indicate the correct sha256
|
||||
sha256 = "sha256-R+UpUFkXDrxKcX7ljLara+1B1rOMdKGZiLQq1/ojgP4=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm644 fonts/feather.ttf -t $out/share/fonts/truetype/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/feathericons/feather";
|
||||
description = "Icomoon feather font";
|
||||
version = version;
|
||||
longDescription = ''
|
||||
Feather is a collection of simply beautiful open source icons.
|
||||
Each icon is designed on a 24x24 grid with an emphasis on simplicity, consistency, and flexibility.
|
||||
'';
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.ryan4yin ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
@@ -3,8 +3,7 @@
|
||||
{
|
||||
|
||||
imports = [
|
||||
./fcitx5
|
||||
./i3
|
||||
./hyprland
|
||||
./programs
|
||||
./rofi
|
||||
./shell
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
i18n.inputMethod = {
|
||||
enabled = "fcitx5";
|
||||
fcitx5.addons =
|
||||
let
|
||||
# 为了不使用默认的 rime-data,改用我自定义的小鹤音形数据,这里需要 override
|
||||
# 参考 https://github.com/NixOS/nixpkgs/blob/e4246ae1e7f78b7087dce9c9da10d28d3725025f/pkgs/tools/inputmethods/fcitx5/fcitx5-rime.nix
|
||||
config.packageOverrides = pkgs: {
|
||||
fcitx5-rime = pkgs.fcitx5-rime.override {rimeDataPkgs = [
|
||||
# 小鹤音形配置,配置来自 flypy.com 官方网盘的鼠须管配置压缩包「小鹤音形“鼠须管”for macOS.zip」
|
||||
# 我仅修改了 default.yaml 文件,将其中的半角括号改为了直角括号「 与 」。
|
||||
./rime-data-flypy
|
||||
];};
|
||||
};
|
||||
in
|
||||
with pkgs; [
|
||||
fcitx5-rime
|
||||
fcitx5-configtool
|
||||
fcitx5-chinese-addons
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
# hyprland configs, based on https://github.com/notwidow/hyprland
|
||||
home.file.".config/hypr" = {
|
||||
source = ./hypr-conf;
|
||||
# copy the scripts directory recursively
|
||||
recursive = true;
|
||||
};
|
||||
home.file.".config/gtk-3.0" = {
|
||||
source = ./gtk-3.0;
|
||||
recursive = true;
|
||||
};
|
||||
home.file.".gtkrc-2.0".source = ./gtkrc-2.0;
|
||||
home.file.".config/hypr/wallpapers/wallpaper.png".source = ../wallpapers/wallpaper.png;
|
||||
home.file.".config/fcitx5" = {
|
||||
source = ./fcitx5;
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
# allow fontconfig to discover fonts and configurations installed through home.packages
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
systemd.user.sessionVariables = {
|
||||
"NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland
|
||||
"MOZ_ENABLE_WAYLAND" = "1"; # for firefox to run on wayland
|
||||
"MOZ_WEBRENDER" = "1";
|
||||
|
||||
# for hyprland with nvidia gpu, ref https://wiki.hyprland.org/Nvidia/
|
||||
"LIBVA_DRIVER_NAME" = "nvidia";
|
||||
"XDG_SESSION_TYPE" = "wayland";
|
||||
"GBM_BACKEND" = "nvidia-drm";
|
||||
"__GLX_VENDOR_LIBRARY_NAME" = "nvidia";
|
||||
"WLR_NO_HARDWARE_CURSORS" = "1";
|
||||
"WLR_EGL_NO_MODIFIRES" = "1";
|
||||
|
||||
# copy from https://github.com/nix-community/home-manager/blob/master/modules/i18n/input-method/fcitx5.nix
|
||||
GLFW_IM_MODULE = "fcitx";
|
||||
GTK_IM_MODULE = "fcitx";
|
||||
QT_IM_MODULE = "fcitx";
|
||||
XMODIFIERS = "@im=fcitx";
|
||||
INPUT_METHOD = "fcitx";
|
||||
IMSETTINGS_MODULE = "fcitx";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# Hidden Notifications
|
||||
HiddenNotifications=
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
[Hotkey]
|
||||
# Enumerate when press trigger key repeatedly
|
||||
EnumerateWithTriggerKeys=True
|
||||
# Skip first input method while enumerating
|
||||
EnumerateSkipFirst=False
|
||||
|
||||
[Hotkey/TriggerKeys]
|
||||
0=Control+space
|
||||
1=Zenkaku_Hankaku
|
||||
2=Hangul
|
||||
|
||||
[Hotkey/AltTriggerKeys]
|
||||
0=Shift_L
|
||||
|
||||
[Hotkey/EnumerateForwardKeys]
|
||||
0=Control+Shift_L
|
||||
|
||||
[Hotkey/EnumerateBackwardKeys]
|
||||
0=Control+Shift_R
|
||||
|
||||
[Hotkey/EnumerateGroupForwardKeys]
|
||||
0=Super+space
|
||||
|
||||
[Hotkey/EnumerateGroupBackwardKeys]
|
||||
0=Shift+Super+space
|
||||
|
||||
[Hotkey/ActivateKeys]
|
||||
0=Hangul_Hanja
|
||||
|
||||
[Hotkey/DeactivateKeys]
|
||||
0=Hangul_Romaja
|
||||
|
||||
[Hotkey/PrevPage]
|
||||
0=Up
|
||||
|
||||
[Hotkey/NextPage]
|
||||
0=Down
|
||||
|
||||
[Hotkey/PrevCandidate]
|
||||
0=Shift+Tab
|
||||
|
||||
[Hotkey/NextCandidate]
|
||||
0=Tab
|
||||
|
||||
[Hotkey/TogglePreedit]
|
||||
0=Control+Alt+P
|
||||
|
||||
[Behavior]
|
||||
# Active By Default
|
||||
ActiveByDefault=False
|
||||
# Share Input State
|
||||
ShareInputState=No
|
||||
# Show preedit in application
|
||||
PreeditEnabledByDefault=True
|
||||
# Show Input Method Information when switch input method
|
||||
ShowInputMethodInformation=True
|
||||
# Show Input Method Information when changing focus
|
||||
showInputMethodInformationWhenFocusIn=False
|
||||
# Show compact input method information
|
||||
CompactInputMethodInformation=True
|
||||
# Show first input method information
|
||||
ShowFirstInputMethodInformation=True
|
||||
# Default page size
|
||||
DefaultPageSize=5
|
||||
# Override Xkb Option
|
||||
OverrideXkbOption=False
|
||||
# Custom Xkb Option
|
||||
CustomXkbOption=
|
||||
# Force Enabled Addons
|
||||
EnabledAddons=
|
||||
# Force Disabled Addons
|
||||
DisabledAddons=
|
||||
# Preload input method to be used by default
|
||||
PreloadInputMethod=True
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
[Groups/0]
|
||||
# Group Name
|
||||
Name=Other
|
||||
# Layout
|
||||
Default Layout=us
|
||||
# Default Input Method
|
||||
DefaultIM=rime
|
||||
|
||||
[Groups/0/Items/0]
|
||||
# Name
|
||||
Name=rime
|
||||
# Layout
|
||||
Layout=
|
||||
|
||||
[Groups/0/Items/1]
|
||||
# Name
|
||||
Name=keyboard-us
|
||||
# Layout
|
||||
Layout=
|
||||
|
||||
[GroupOrder]
|
||||
0=Other
|
||||
@@ -0,0 +1,16 @@
|
||||
[Settings]
|
||||
gtk-theme-name=Arc-Dark
|
||||
gtk-icon-theme-name=Qogir-dark
|
||||
gtk-font-name=Noto Sans 10
|
||||
gtk-cursor-theme-name=Qogir-dark
|
||||
gtk-cursor-theme-size=0
|
||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-button-images=0
|
||||
gtk-menu-images=0
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=1
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintmedium
|
||||
gtk-xft-rgba=rgb
|
||||
@@ -0,0 +1,19 @@
|
||||
# DO NOT EDIT! This file will be overwritten by LXAppearance.
|
||||
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
|
||||
|
||||
include "~/.gtkrc-2.0.mine"
|
||||
gtk-theme-name="Arc-Dark"
|
||||
gtk-icon-theme-name="Qogir-dark"
|
||||
gtk-font-name="Noto Sans 10"
|
||||
gtk-cursor-theme-name="Qogir-dark"
|
||||
gtk-cursor-theme-size=0
|
||||
gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-button-images=0
|
||||
gtk-menu-images=0
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=1
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle="hintmedium"
|
||||
gtk-xft-rgba="rgb"
|
||||
@@ -0,0 +1,200 @@
|
||||
## Hyprland configuration file for Archcraft
|
||||
|
||||
#-- Output ----------------------------------------------------
|
||||
# Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info.
|
||||
|
||||
# format:
|
||||
# monitor=name,resolution,position,scale
|
||||
monitor=DP-2,3840x2160@144,0x0,1.6
|
||||
workspace=DP-2,1
|
||||
|
||||
#-- Input ----------------------------------------------------
|
||||
# Configure mouse and touchpad here.
|
||||
input {
|
||||
kb_layout=us
|
||||
kb_variant=
|
||||
kb_model=
|
||||
kb_options=
|
||||
kb_rules=
|
||||
follow_mouse=1
|
||||
natural_scroll=0
|
||||
force_no_accel=0
|
||||
# repeat_rate=
|
||||
# repeat_delay=
|
||||
numlock_by_default=1
|
||||
}
|
||||
|
||||
#-- General ----------------------------------------------------
|
||||
# General settings like MOD key, Gaps, Colors, etc.
|
||||
general {
|
||||
sensitivity=2.0
|
||||
apply_sens_to_raw=0
|
||||
|
||||
gaps_in=5
|
||||
gaps_out=10
|
||||
|
||||
border_size=4
|
||||
col.active_border=0xFFB4A1DB
|
||||
col.inactive_border=0xFF343A40
|
||||
}
|
||||
|
||||
#-- Decoration ----------------------------------------------------
|
||||
# Decoration settings like Rounded Corners, Opacity, Blur, etc.
|
||||
decoration {
|
||||
rounding=8 # Original: rounding=-1
|
||||
multisample_edges=0
|
||||
|
||||
active_opacity=1.0
|
||||
inactive_opacity=0.9
|
||||
fullscreen_opacity=1.0
|
||||
|
||||
blur=0
|
||||
blur_size=3 # minimum 1
|
||||
blur_passes=1 # minimum 1, more passes = more resource intensive.
|
||||
blur_ignore_opacity=0
|
||||
|
||||
# Your blur "amount" is blur_size * blur_passes, but high blur_size (over around 5-ish) will produce artifacts.
|
||||
# if you want heavy blur, you need to up the blur_passes.
|
||||
# the more passes, the more you can up the blur_size without noticing artifacts.
|
||||
}
|
||||
|
||||
#-- Animations ----------------------------------------------------
|
||||
animations {
|
||||
enabled=1
|
||||
animation=windows,1,8,default,popin 80%
|
||||
animation=fadeOut,1,8,default
|
||||
animation=fadeIn,1,8,default
|
||||
animation=workspaces,1,8,default
|
||||
#animation=workspaces,1,6,overshot
|
||||
}
|
||||
|
||||
#-- Dwindle ----------------------------------------------------
|
||||
dwindle {
|
||||
pseudotile=0 # enable pseudotiling on dwindle
|
||||
}
|
||||
|
||||
#-- Window Rules ----------------------------------------------------
|
||||
windowrule=float,foot-float
|
||||
windowrule=float,yad|nm-connection-editor|pavucontrolk
|
||||
windowrule=float,xfce-polkit|kvantummanager|qt5ct
|
||||
windowrule=float,feh|imv|Gpicview|Gimp|nomacs
|
||||
windowrule=float,VirtualBox Manager|qemu|Qemu-system-x86_64
|
||||
windowrule=float,xfce4-appfinder
|
||||
|
||||
windowrule=float,foot-full
|
||||
windowrule=move 0 0,foot-full
|
||||
windowrule=size 100% 100%,foot-full
|
||||
|
||||
windowrule=float,wlogout
|
||||
windowrule=move 0 0,wlogout
|
||||
windowrule=size 100% 100%,wlogout
|
||||
windowrule=animation slide,wlogout
|
||||
|
||||
#-- Keybindings ----------------------------------------------------
|
||||
$term = alacritty
|
||||
$app_launcher = ~/.config/hypr/scripts/menu
|
||||
$volume = ~/.config/hypr/scripts/volume
|
||||
$backlight = ~/.config/hypr/scripts/brightness
|
||||
$screenshot = ~/.config/hypr/scripts/screenshot
|
||||
$lockscreen = ~/.config/hypr/scripts/lockscreen
|
||||
$wlogout = ~/.config/hypr/scripts/wlogout
|
||||
$colorpicker = ~/.config/hypr/scripts/colorpicker
|
||||
$files = thunar
|
||||
$editor = code # vscode
|
||||
$browser = firefox
|
||||
|
||||
# -- Terminal --
|
||||
bind=SUPER,Return,exec,$term
|
||||
|
||||
# -- Wofi --
|
||||
bind=SUPER,D,exec,$app_launcher
|
||||
|
||||
# -- Hyprland --
|
||||
bind=SUPER,Q,killactive,
|
||||
bind=CTRLALT,Delete,exit,
|
||||
bind=SUPER,F,fullscreen,
|
||||
bind=SUPER,Space,togglefloating,
|
||||
bind=SUPER,S,pseudo,
|
||||
|
||||
# -- Misc --
|
||||
bind=SUPER,N,exec,nm-connection-editor # need install network-manager-applet
|
||||
bind=SUPER,P,exec,$colorpicker
|
||||
bind=CTRLALT,L,exec,$lockscreen
|
||||
bind=SUPERSHIFT,X,exec,$wlogout
|
||||
|
||||
# -- Some nice mouse binds --
|
||||
bindm=SUPER,mouse:272,movewindow
|
||||
bindm=SUPER,mouse:273,resizewindow
|
||||
|
||||
# -- Function keys --
|
||||
bind=,XF86MonBrightnessUp,exec,$backlight --inc
|
||||
bind=,XF86MonBrightnessDown,exec,$backlight --dec
|
||||
bind=,XF86AudioRaiseVolume,exec,$volume --inc
|
||||
bind=,XF86AudioLowerVolume,exec,$volume --dec
|
||||
bind=,XF86AudioMute,exec,$volume --toggle
|
||||
bind=,XF86AudioMicMute,exec,$volume --toggle-mic
|
||||
bind=,XF86AudioNext,exec,mpc next
|
||||
bind=,XF86AudioPrev,exec,mpc prev
|
||||
bind=,XF86AudioPlay,exec,mpc toggle
|
||||
bind=,XF86AudioStop,exec,mpc stop
|
||||
|
||||
# -- Screenshots --
|
||||
bind=,Print,exec,$screenshot --now
|
||||
bind=SUPER,Print,exec,$screenshot --win
|
||||
bind=CTRL,Print,exec,$screenshot --area
|
||||
|
||||
# Focus
|
||||
bind=SUPER,left,movefocus,l
|
||||
bind=SUPER,right,movefocus,r
|
||||
bind=SUPER,up,movefocus,u
|
||||
bind=SUPER,down,movefocus,d
|
||||
|
||||
# Move
|
||||
bind=SUPERSHIFT,left,movewindow,l
|
||||
bind=SUPERSHIFT,right,movewindow,r
|
||||
bind=SUPERSHIFT,up,movewindow,u
|
||||
bind=SUPERSHIFT,down,movewindow,d
|
||||
|
||||
# Resize
|
||||
bind=SUPERCTRL,left,resizeactive,-20 0
|
||||
bind=SUPERCTRL,right,resizeactive,20 0
|
||||
bind=SUPERCTRL,up,resizeactive,0 -20
|
||||
bind=SUPERCTRL,down,resizeactive,0 20
|
||||
|
||||
# Workspaces
|
||||
bind=SUPER,1,workspace,1
|
||||
bind=SUPER,2,workspace,2
|
||||
bind=SUPER,3,workspace,3
|
||||
bind=SUPER,4,workspace,4
|
||||
bind=SUPER,5,workspace,5
|
||||
bind=SUPER,6,workspace,6
|
||||
bind=SUPER,7,workspace,7
|
||||
bind=SUPER,8,workspace,8
|
||||
bind=SUPER,9,workspace,9
|
||||
bind=SUPER,0,workspace,10
|
||||
|
||||
# Send to Workspaces
|
||||
bind=SUPERSHIFT,1,movetoworkspace,1
|
||||
bind=SUPERSHIFT,2,movetoworkspace,2
|
||||
bind=SUPERSHIFT,3,movetoworkspace,3
|
||||
bind=SUPERSHIFT,4,movetoworkspace,4
|
||||
bind=SUPERSHIFT,5,movetoworkspace,5
|
||||
bind=SUPERSHIFT,6,movetoworkspace,6
|
||||
bind=SUPERSHIFT,7,movetoworkspace,7
|
||||
bind=SUPERSHIFT,8,movetoworkspace,8
|
||||
bind=SUPERSHIFT,9,movetoworkspace,9
|
||||
bind=SUPERSHIFT,0,movetoworkspace,10
|
||||
|
||||
bind=SUPER,mouse_down,workspace,e+1
|
||||
bind=SUPER,mouse_up,workspace,e-1
|
||||
|
||||
#-- Startup ----------------------------------------------------
|
||||
exec-once=~/.config/hypr/scripts/startup
|
||||
|
||||
|
||||
#-- Fcitx5 input method ----------------------------------------------------
|
||||
windowrule=pseudo,fcitx
|
||||
exec-once=fcitx5-remote -r
|
||||
exec-once=fcitx5 -d --replace
|
||||
exec-once=fcitx5-remote -r
|
||||
bind=ALT,E,exec,pkill fcitx5 -9;sleep 1;fcitx5 -d --replace; sleep 1;fcitx5-remote -r
|
||||
@@ -0,0 +1,56 @@
|
||||
## Mako configuration file
|
||||
|
||||
# GLOBAL CONFIGURATION OPTIONS
|
||||
max-history=100
|
||||
sort=-time
|
||||
|
||||
# BINDING OPTIONS
|
||||
on-button-left=dismiss
|
||||
on-button-middle=none
|
||||
on-button-right=dismiss-all
|
||||
on-touch=dismiss
|
||||
on-notify=exec mpv /usr/share/sounds/freedesktop/stereo/message.oga
|
||||
|
||||
# STYLE OPTIONS
|
||||
font=JetBrains Mono 10
|
||||
width=300
|
||||
height=100
|
||||
margin=10
|
||||
padding=15
|
||||
border-size=2
|
||||
border-radius=0
|
||||
icons=1
|
||||
max-icon-size=48
|
||||
icon-location=left
|
||||
markup=1
|
||||
actions=1
|
||||
history=1
|
||||
text-alignment=left
|
||||
default-timeout=5000
|
||||
ignore-timeout=0
|
||||
max-visible=5
|
||||
layer=overlay
|
||||
anchor=top-right
|
||||
|
||||
background-color=#1e1e2e
|
||||
text-color=#d9e0ee
|
||||
border-color=#313244
|
||||
progress-color=over #89b4fa
|
||||
|
||||
[urgency=low]
|
||||
border-color=#313244
|
||||
default-timeout=2000
|
||||
|
||||
[urgency=normal]
|
||||
border-color=#313244
|
||||
default-timeout=5000
|
||||
|
||||
[urgency=high]
|
||||
border-color=#f38ba8
|
||||
text-color=#f38ba8
|
||||
default-timeout=0
|
||||
|
||||
[category=mpd]
|
||||
border-color=#f9e2af
|
||||
default-timeout=2000
|
||||
group-by=category
|
||||
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Script To Manage Brightness For Archcraft (in Wayland).
|
||||
|
||||
iDIR="$HOME/.config/hypr/mako/icons"
|
||||
|
||||
# Get brightness
|
||||
get_backlight() {
|
||||
LIGHT=$(printf "%.0f\n" $(light -G))
|
||||
echo "${LIGHT}%"
|
||||
}
|
||||
|
||||
# Get icons
|
||||
get_icon() {
|
||||
backlight="$(get_backlight)"
|
||||
current="${backlight%%%}"
|
||||
if [[ ("$current" -ge "0") && ("$current" -le "20") ]]; then
|
||||
icon="$iDIR/brightness-20.png"
|
||||
elif [[ ("$current" -ge "20") && ("$current" -le "40") ]]; then
|
||||
icon="$iDIR/brightness-40.png"
|
||||
elif [[ ("$current" -ge "40") && ("$current" -le "60") ]]; then
|
||||
icon="$iDIR/brightness-60.png"
|
||||
elif [[ ("$current" -ge "60") && ("$current" -le "80") ]]; then
|
||||
icon="$iDIR/brightness-80.png"
|
||||
elif [[ ("$current" -ge "80") && ("$current" -le "100") ]]; then
|
||||
icon="$iDIR/brightness-100.png"
|
||||
fi
|
||||
}
|
||||
|
||||
# Notify
|
||||
notify_user() {
|
||||
notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Brightness : $(get_backlight)"
|
||||
}
|
||||
|
||||
# Increase brightness
|
||||
inc_backlight() {
|
||||
light -A 5 && get_icon && notify_user
|
||||
}
|
||||
|
||||
# Decrease brightness
|
||||
dec_backlight() {
|
||||
light -U 5 && get_icon && notify_user
|
||||
}
|
||||
|
||||
# Execute accordingly
|
||||
if [[ "$1" == "--get" ]]; then
|
||||
get_backlight
|
||||
elif [[ "$1" == "--inc" ]]; then
|
||||
inc_backlight
|
||||
elif [[ "$1" == "--dec" ]]; then
|
||||
dec_backlight
|
||||
else
|
||||
get_backlight
|
||||
fi
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Simple Script To Pick Color Quickly.
|
||||
|
||||
color=$(grim -g "$(slurp -b 1B1F2800 -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]' txt:- | tail -n1 | cut -d' ' -f4)
|
||||
image=/tmp/${color}.png
|
||||
|
||||
main() {
|
||||
if [[ "$color" ]]; then
|
||||
# copy color code to clipboard
|
||||
echo $color | tr -d "\n" | wl-copy
|
||||
# generate preview
|
||||
convert -size 48x48 xc:"$color" ${image}
|
||||
# notify about it
|
||||
notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i ${image} "$color, copied to clipboard."
|
||||
fi
|
||||
}
|
||||
|
||||
# Run the script
|
||||
main
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Times the screen off and puts it to background
|
||||
swayidle \
|
||||
timeout 300 'swaymsg "output * power off"' \
|
||||
resume 'swaymsg "output * power on"' &
|
||||
# Locks the screen immediately
|
||||
swaylock
|
||||
# Kills last background task so idle timer doesn't keep running
|
||||
kill %%
|
||||
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## launch wofi with alt config
|
||||
|
||||
CONFIG="$HOME/.config/hypr/wofi/config"
|
||||
STYLE="$HOME/.config/hypr/wofi/style.css"
|
||||
COLORS="$HOME/.config/hypr/wofi/colors"
|
||||
|
||||
if [[ ! $(pidof wofi) ]]; then
|
||||
wofi --show drun --prompt 'Search...' --conf ${CONFIG} --style ${STYLE} --color ${COLORS}
|
||||
else
|
||||
pkill wofi
|
||||
fi
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## launch mako with alt config
|
||||
|
||||
CONFIG="$HOME/.config/hypr/mako/config"
|
||||
|
||||
if [[ ! $(pidof mako) ]]; then
|
||||
mako --config ${CONFIG}
|
||||
fi
|
||||
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Script to take screenshots with grim, slurp (in Wayland)
|
||||
|
||||
iDIR="$HOME/.config/hypr/mako/icons"
|
||||
|
||||
time=$(date +%Y-%m-%d-%H-%M-%S)
|
||||
dir="$(xdg-user-dir PICTURES)/Screenshots" # need
|
||||
file="Screenshot_${time}_${RANDOM}.png"
|
||||
|
||||
# notify and view screenshot
|
||||
notify_cmd_shot="notify-send -h string:x-canonical-private-synchronous:shot-notify -u low -i ${iDIR}/picture.png"
|
||||
notify_view () {
|
||||
${notify_cmd_shot} "Copied to clipboard."
|
||||
imv ${dir}/"$file"
|
||||
if [[ -e "$dir/$file" ]]; then
|
||||
${notify_cmd_shot} "Screenshot Saved."
|
||||
else
|
||||
${notify_cmd_shot} "Screenshot Deleted."
|
||||
fi
|
||||
}
|
||||
|
||||
# take shots
|
||||
shotnow () {
|
||||
cd ${dir} && grim - | tee "$file" | wl-copy
|
||||
notify_view
|
||||
}
|
||||
|
||||
shotwin () {
|
||||
w_pos=$(hyprctl activewindow | grep 'at:' | cut -d':' -f2 | tr -d ' ' | tail -n1)
|
||||
w_size=$(hyprctl activewindow | grep 'size:' | cut -d':' -f2 | tr -d ' ' | tail -n1 | sed s/,/x/g)
|
||||
cd ${dir} && grim -g "$w_pos $w_size" - | tee "$file" | wl-copy
|
||||
notify_view
|
||||
}
|
||||
|
||||
shotarea () {
|
||||
cd ${dir} && grim -g "$(slurp -b 1B1F28CC -c E06B74ff -s C778DD0D -w 2)" - | tee "$file" | wl-copy
|
||||
notify_view
|
||||
}
|
||||
|
||||
if [[ ! -d "$dir" ]]; then
|
||||
mkdir -p "$dir"
|
||||
fi
|
||||
|
||||
if [[ "$1" == "--now" ]]; then
|
||||
shotnow
|
||||
elif [[ "$1" == "--area" ]]; then
|
||||
shotarea
|
||||
elif [[ "$1" == "--win" ]]; then
|
||||
shotwin
|
||||
else
|
||||
echo -e "Available Options : --now --win --area"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Autostart Programs
|
||||
|
||||
# Kill already running process
|
||||
_ps=(waybar mako mpd)
|
||||
for _prs in "${_ps[@]}"; do
|
||||
if [[ $(pidof ${_prs}) ]]; then
|
||||
killall -9 ${_prs}
|
||||
fi
|
||||
done
|
||||
|
||||
# Set wallpaper
|
||||
swaybg --output '*' --mode fill --image ~/.config/hypr/wallpapers/wallpaper.png &
|
||||
|
||||
# Lauch notification daemon (mako)
|
||||
~/.config/hypr/scripts/notifications &
|
||||
|
||||
# Lauch statusbar (waybar)
|
||||
~/.config/hypr/scripts/statusbar &
|
||||
|
||||
# Start mpd
|
||||
exec mpd &
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## launch waybar with alt config
|
||||
|
||||
CONFIG="$HOME/.config/hypr/waybar/config"
|
||||
STYLE="$HOME/.config/hypr/waybar/style.css"
|
||||
|
||||
if [[ ! $(pidof waybar) ]]; then
|
||||
waybar --bar main-bar --log-level error --config ${CONFIG} --style ${STYLE}
|
||||
fi
|
||||
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Script To Manage Speaker Volume For Archcraft (in Wayland).
|
||||
|
||||
iDIR="$HOME/.config/hypr/mako/icons"
|
||||
|
||||
# Get Volume
|
||||
get_volume() {
|
||||
volume=$(amixer get Master | tail -n1 | awk -F ' ' '{print $5}' | tr -d '[]')
|
||||
echo "$volume"
|
||||
}
|
||||
|
||||
# Get icons
|
||||
get_icon() {
|
||||
vol="$(get_volume)"
|
||||
current="${vol%%%}"
|
||||
if [[ "$current" -eq "0" ]]; then
|
||||
icon="$iDIR/volume-mute.png"
|
||||
elif [[ ("$current" -ge "0") && ("$current" -le "30") ]]; then
|
||||
icon="$iDIR/volume-low.png"
|
||||
elif [[ ("$current" -ge "30") && ("$current" -le "60") ]]; then
|
||||
icon="$iDIR/volume-mid.png"
|
||||
elif [[ ("$current" -ge "60") && ("$current" -le "100") ]]; then
|
||||
icon="$iDIR/volume-high.png"
|
||||
fi
|
||||
}
|
||||
|
||||
# Notify
|
||||
notify_user() {
|
||||
notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Volume : $(get_volume)"
|
||||
}
|
||||
|
||||
# Increase Volume
|
||||
inc_volume() {
|
||||
amixer -Mq set Master,0 5%+ unmute && get_icon && notify_user
|
||||
}
|
||||
|
||||
# Decrease Volume
|
||||
dec_volume() {
|
||||
amixer -Mq set Master,0 5%- unmute && get_icon && notify_user
|
||||
}
|
||||
|
||||
# Toggle Mute
|
||||
toggle_mute() {
|
||||
amixer get Master | grep '\[on\]' &>/dev/null
|
||||
if [[ "$?" == 0 ]]; then
|
||||
amixer set Master toggle && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/volume-mute.png" "Mute"
|
||||
else
|
||||
amixer set Master toggle && get_icon && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$icon" "Unmute"
|
||||
fi
|
||||
}
|
||||
|
||||
# Toggle Mic
|
||||
toggle_mic() {
|
||||
amixer get Capture | grep '\[on\]' &>/dev/null
|
||||
if [[ "$?" == 0 ]]; then
|
||||
amixer -D pulse sset Capture toggle && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/microphone-mute.png" "Microphone Switched OFF"
|
||||
else
|
||||
amixer -D pulse sset Capture toggle && get_icon && notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$iDIR/microphone.png" "Microphone Switched ON"
|
||||
fi
|
||||
}
|
||||
|
||||
# Execute accordingly
|
||||
if [[ "$1" == "--get" ]]; then
|
||||
get_volume
|
||||
elif [[ "$1" == "--inc" ]]; then
|
||||
inc_volume
|
||||
elif [[ "$1" == "--dec" ]]; then
|
||||
dec_volume
|
||||
elif [[ "$1" == "--toggle" ]]; then
|
||||
toggle_mute
|
||||
elif [[ "$1" == "--toggle-mic" ]]; then
|
||||
toggle_mic
|
||||
else
|
||||
get_volume
|
||||
fi
|
||||
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import subprocess
|
||||
from pyquery import PyQuery # install using `pip install pyquery`
|
||||
import json
|
||||
|
||||
# weather icons
|
||||
weather_icons = {
|
||||
"sunnyDay": "滛",
|
||||
"clearNight": "望",
|
||||
"cloudyFoggyDay": "",
|
||||
"cloudyFoggyNight": "",
|
||||
"rainyDay": "",
|
||||
"rainyNight": "",
|
||||
"snowyIcyDay": "",
|
||||
"snowyIcyNight": "",
|
||||
"severe": "",
|
||||
"default": "",
|
||||
}
|
||||
|
||||
# get location_id
|
||||
# to get your own location_id, go to https://weather.com & search your location.
|
||||
# once you choose your location, you can see the location_id in the URL(64 chars long hex string)
|
||||
# Shenzen, Guangdong's location id: https://weather.com/en-IN/weather/today/l/7a4684e0789c881e79935986f2e9e5ab05b0104ac4310fd8818006dfb66092c3
|
||||
location_id = "7a4684e0789c881e79935986f2e9e5ab05b0104ac4310fd8818006dfb66092c3"
|
||||
|
||||
# get html page
|
||||
url = "https://weather.com/en-IN/weather/today/l/" + location_id
|
||||
html_data = PyQuery(url=url)
|
||||
|
||||
# current temperature
|
||||
temp = html_data("span[data-testid='TemperatureValue']").eq(0).text()
|
||||
# print(temp)
|
||||
|
||||
# current status phrase
|
||||
status = html_data("div[data-testid='wxPhrase']").text()
|
||||
status = f"{status[:16]}.." if len(status) > 17 else status
|
||||
# print(status)
|
||||
|
||||
# status code
|
||||
status_code = html_data("#regionHeader").attr("class").split(" ")[2].split("-")[2]
|
||||
# print(status_code)
|
||||
|
||||
# status icon
|
||||
icon = (
|
||||
weather_icons[status_code]
|
||||
if status_code in weather_icons
|
||||
else weather_icons["default"]
|
||||
)
|
||||
# print(icon)
|
||||
|
||||
# temperature feels like
|
||||
temp_feel = html_data(
|
||||
"div[data-testid='FeelsLikeSection'] > span[data-testid='TemperatureValue']"
|
||||
).text()
|
||||
temp_feel_text = f"Feels like {temp_feel}c"
|
||||
# print(temp_feel_text)
|
||||
|
||||
# min-max temperature
|
||||
temp_min = (
|
||||
html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
|
||||
.eq(0)
|
||||
.text()
|
||||
)
|
||||
temp_max = (
|
||||
html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']")
|
||||
.eq(1)
|
||||
.text()
|
||||
)
|
||||
temp_min_max = f" {temp_min}\t\t {temp_max}"
|
||||
# print(temp_min_max)
|
||||
|
||||
# wind speed
|
||||
wind_speed = html_data("span[data-testid='Wind']").text().split("\n")[1]
|
||||
wind_text = f"煮 {wind_speed}"
|
||||
# print(wind_text)
|
||||
|
||||
# humidity
|
||||
humidity = html_data("span[data-testid='PercentageValue']").text()
|
||||
humidity_text = f" {humidity}"
|
||||
# print(humidity_text)
|
||||
|
||||
# visibility
|
||||
visbility = html_data("span[data-testid='VisibilityValue']").text()
|
||||
visbility_text = f" {visbility}"
|
||||
# print(visbility_text)
|
||||
|
||||
# air quality index
|
||||
air_quality_index = html_data("text[data-testid='DonutChartValue']").text()
|
||||
# print(air_quality_index)
|
||||
|
||||
# hourly rain prediction
|
||||
prediction = html_data("section[aria-label='Hourly Forecast']")(
|
||||
"div[data-testid='SegmentPrecipPercentage'] > span"
|
||||
).text()
|
||||
prediction = prediction.replace("Chance of Rain", "")
|
||||
prediction = f"\n\n (hourly) {prediction}" if len(prediction) > 0 else prediction
|
||||
# print(prediction)
|
||||
|
||||
# tooltip text
|
||||
tooltip_text = str.format(
|
||||
"\t\t{}\t\t\n{}\n{}\n{}\n\n{}\n{}\n{}{}",
|
||||
f'<span size="xx-large">{temp}</span>',
|
||||
f"<big>{icon}</big>",
|
||||
f"<big>{status}</big>",
|
||||
f"<small>{temp_feel_text}</small>",
|
||||
f"<big>{temp_min_max}</big>",
|
||||
f"{wind_text}\t{humidity_text}",
|
||||
f"{visbility_text}\tAQI {air_quality_index}",
|
||||
f"<i>{prediction}</i>",
|
||||
)
|
||||
|
||||
# print waybar module data
|
||||
out_data = {
|
||||
"text": f"{icon} {temp}",
|
||||
"alt": status,
|
||||
"tooltip": tooltip_text,
|
||||
"class": status_code,
|
||||
}
|
||||
print(json.dumps(out_data))
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## wlogout with alt layout and style file
|
||||
|
||||
LAYOUT="$HOME/.config/hypr/wlogout/layout"
|
||||
STYLE="$HOME/.config/hypr/wlogout/style.css"
|
||||
|
||||
if [[ ! $(pidof wlogout) ]]; then
|
||||
wlogout --layout ${LAYOUT} --css ${STYLE} \
|
||||
--column-spacing 20 \
|
||||
--row-spacing 20 \
|
||||
--margin-top 200 \
|
||||
--margin-bottom 200 \
|
||||
--margin-left 150 \
|
||||
--margin-right 150
|
||||
else
|
||||
pkill wlogout
|
||||
fi
|
||||
@@ -0,0 +1,222 @@
|
||||
{
|
||||
"name": "main-bar",
|
||||
"id": "main-bar",
|
||||
"layer": "top",
|
||||
"mode": "dock",
|
||||
"exclusive": true,
|
||||
"passthrough": false,
|
||||
"height": 32,
|
||||
"spacing": 6,
|
||||
"margin": 0,
|
||||
"margin-top": 0,
|
||||
"margin-bottom": 0,
|
||||
"margin-left": 0,
|
||||
"margin-right": 0,
|
||||
"fixed-center": true,
|
||||
"ipc": true,
|
||||
|
||||
"modules-left": [
|
||||
"custom/menu",
|
||||
"wlr/workspaces",
|
||||
"cpu",
|
||||
"memory",
|
||||
"disk"
|
||||
],
|
||||
"modules-center": [
|
||||
"mpd",
|
||||
"tray"
|
||||
],
|
||||
"modules-right": [
|
||||
"pulseaudio",
|
||||
"custom/weather",
|
||||
"network",
|
||||
"battery",
|
||||
"clock",
|
||||
"custom/power"
|
||||
],
|
||||
|
||||
// waybar-backlight
|
||||
"backlight": {
|
||||
"interval": 2,
|
||||
"align": 0,
|
||||
"rotate": 0,
|
||||
//"device": "amdgpu_bl0",
|
||||
"format": "{icon} {percent}%",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
// Commands to execute on events
|
||||
"on-click": "",
|
||||
"on-click-middle": "",
|
||||
"on-click-right": "",
|
||||
"on-update": "",
|
||||
"on-scroll-up": "light -A 5%",
|
||||
"on-scroll-down": "light -U 5%",
|
||||
"smooth-scrolling-threshold": 1,
|
||||
},
|
||||
"wlr/workspaces": {
|
||||
"format": "{icon}",
|
||||
"on-click": "activate",
|
||||
"all-outputs": true,
|
||||
"format-icons": {
|
||||
"1": "",
|
||||
"2": "",
|
||||
"3": "",
|
||||
"4": "",
|
||||
"5": "ﭮ",
|
||||
"6": "",
|
||||
"7": "",
|
||||
"8": "",
|
||||
"9": "",
|
||||
"10": "﮼",
|
||||
"focused": "",
|
||||
"default": ""
|
||||
}
|
||||
},
|
||||
// waybar-battery
|
||||
"battery": {
|
||||
"interval": 60,
|
||||
"align": 0,
|
||||
"rotate": 0,
|
||||
//"bat": "BAT1",
|
||||
//"adapter": "ACAD",
|
||||
"full-at": 100,
|
||||
"design-capacity": false,
|
||||
"states": {
|
||||
"good": 95,
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-full": "{icon} Full",
|
||||
//"format-good": "",
|
||||
"format-alt": "{icon} {time}",
|
||||
"format-icons": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
],
|
||||
"format-time": "{H}h {M}min",
|
||||
"tooltip": true,
|
||||
},
|
||||
// waybar-clock
|
||||
"clock": {
|
||||
"interval": 60,
|
||||
"align": 0,
|
||||
"rotate": 0,
|
||||
"tooltip-format": "<big>{:%B %Y}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"format": " {:%H:%M}",
|
||||
"format-alt": " {:%a %b %d, %G}"
|
||||
},
|
||||
// waybar-cpu
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": " LOAD: {usage}%",
|
||||
},
|
||||
// waybar-custom
|
||||
"custom/menu": {
|
||||
"format": "",
|
||||
"tooltip": false,
|
||||
"on-click": "$HOME/.config/hypr/scripts/menu",
|
||||
},
|
||||
"custom/power": {
|
||||
"format": " ",
|
||||
"tooltip": false,
|
||||
"on-click": "$HOME/.config/hypr/scripts/wlogout",
|
||||
},
|
||||
// waybar-disk
|
||||
"disk": {
|
||||
"interval": 30,
|
||||
"format": " FREE: {free}",
|
||||
},
|
||||
// waybar-memory
|
||||
"memory": {
|
||||
"interval": 10,
|
||||
"format": " USED: {used:0.1f}G",
|
||||
},
|
||||
// waybar-mpd
|
||||
"mpd": {
|
||||
"interval": 2,
|
||||
"unknown-tag": "N/A",
|
||||
"format": "{stateIcon} {artist} - {title}",
|
||||
"format-disconnected": " Disconnected",
|
||||
"format-paused": "{stateIcon} {artist} - {title}",
|
||||
"format-stopped": "Stopped ",
|
||||
"state-icons": {
|
||||
"paused": "",
|
||||
"playing": ""
|
||||
},
|
||||
"tooltip-format": "MPD (connected)",
|
||||
"tooltip-format-disconnected": "MPD (disconnected)",
|
||||
// Commands to execute on events
|
||||
"on-click": "mpc toggle",
|
||||
"on-click-middle": "mpc prev",
|
||||
"on-click-right": "mpc next",
|
||||
"on-update": "",
|
||||
"on-scroll-up": "mpc seek +00:00:01",
|
||||
"on-scroll-down": "mpc seek -00:00:01",
|
||||
"smooth-scrolling-threshold": 1,
|
||||
},
|
||||
// waybar-network
|
||||
"network": {
|
||||
"interval": 5,
|
||||
//"interface": "wlan*", // (Optional) To force the use of this interface, set it for netspeed to work
|
||||
"format-wifi": " {essid}",
|
||||
"format-ethernet": " {ipaddr}/{cidr}",
|
||||
"format-linked": " {ifname} (No IP)",
|
||||
"format-disconnected": "睊 Disconnected",
|
||||
"format-disabled": "睊 Disabled",
|
||||
"format-alt": " {bandwidthUpBits} | {bandwidthDownBits}",
|
||||
"tooltip-format": " {ifname} via {gwaddr}",
|
||||
},
|
||||
// weather-custom
|
||||
"custom/weather": {
|
||||
// "format": "{}",
|
||||
// "format-alt": "{alt}: {}",
|
||||
"format-alt-click": "click-right",
|
||||
"interval": 300,
|
||||
"return-type": "json",
|
||||
"exec": "~/.config/hypr/scripts/weather",
|
||||
// "on-click": "xdg-open https://weather.com/en-IN/weather/today/l/$(location_id)"
|
||||
},
|
||||
// waybar-pulseaudio
|
||||
"pulseaudio": {
|
||||
//"format": "{volume}% {icon} {format_source}",
|
||||
"format": "{icon} {volume}%",
|
||||
"format-muted": " Mute",
|
||||
"format-bluetooth": " {volume}% {format_source}",
|
||||
"format-bluetooth-muted": " Mute",
|
||||
"format-source": " {volume}%",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": [
|
||||
"",
|
||||
"",
|
||||
""
|
||||
]
|
||||
},
|
||||
"scroll-step": 5.0,
|
||||
// Commands to execute on events
|
||||
"on-click": "amixer set Master toggle",
|
||||
"on-click-right": "pavucontrol",
|
||||
"smooth-scrolling-threshold": 1,
|
||||
},
|
||||
// waybar-tray
|
||||
"tray": {
|
||||
"icon-size": 16,
|
||||
"spacing": 10
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,216 @@
|
||||
/** ********** Fonts ********** **/
|
||||
* {
|
||||
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/** ********** Waybar Window ********** **/
|
||||
window#waybar {
|
||||
background-color: #1e1e2e;
|
||||
color: #1e1e2e;
|
||||
border-bottom: 2px solid #313244;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/** ********** Backlight ********** **/
|
||||
#backlight {
|
||||
background-color: #cba6f7;
|
||||
}
|
||||
|
||||
/** ********** Battery ********** **/
|
||||
#battery {
|
||||
background-color: #f9e2af;
|
||||
}
|
||||
|
||||
#battery.charging {
|
||||
}
|
||||
|
||||
#battery.plugged {
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: #f38ba8;
|
||||
color: #f38ba8;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
/** ********** Clock ********** **/
|
||||
#clock {
|
||||
background-color: #a6e3a1;
|
||||
}
|
||||
|
||||
/** ********** CPU ********** **/
|
||||
#cpu {
|
||||
background-color: #89dceb;
|
||||
}
|
||||
|
||||
/** ********** Memory ********** **/
|
||||
#memory {
|
||||
background-color: #eba0ac;
|
||||
}
|
||||
|
||||
/** ********** Disk ********** **/
|
||||
#disk {
|
||||
background-color: #b4befe;
|
||||
}
|
||||
|
||||
/** ********** Tray ********** **/
|
||||
#tray {
|
||||
background-color: #cdd6f4;
|
||||
}
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
}
|
||||
#tray > .active {
|
||||
}
|
||||
|
||||
/** ********** MPD ********** **/
|
||||
#mpd {
|
||||
background-color: #94e2d5;
|
||||
}
|
||||
|
||||
#mpd.disconnected {
|
||||
background-color: #f38ba8;
|
||||
}
|
||||
|
||||
#mpd.stopped {
|
||||
background-color: #f5c2e7;
|
||||
}
|
||||
|
||||
#mpd.playing {
|
||||
background-color: #74c7ec;
|
||||
}
|
||||
|
||||
#mpd.paused {
|
||||
}
|
||||
|
||||
/** ********** Pulseaudio ********** **/
|
||||
#pulseaudio {
|
||||
background-color: #fab387;
|
||||
}
|
||||
|
||||
#pulseaudio.bluetooth {
|
||||
background-color: #f5c2e7;
|
||||
}
|
||||
#pulseaudio.muted {
|
||||
background-color: #313244;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
/** ********** Network ********** **/
|
||||
#network {
|
||||
background-color: #89b4fa;
|
||||
}
|
||||
|
||||
#network.disconnected,#network.disabled {
|
||||
background-color: #313244;
|
||||
color: #cdd6f4;
|
||||
}
|
||||
#network.linked {
|
||||
}
|
||||
#network.ethernet {
|
||||
}
|
||||
#network.wifi {
|
||||
}
|
||||
|
||||
/** ********** Custom ********** **/
|
||||
#custom-menu, #custom-power, #custom-weather, #custom-updater {
|
||||
border-radius: 4px;
|
||||
margin: 6px 0px;
|
||||
padding: 2px 8px;
|
||||
}
|
||||
|
||||
#custom-menu {
|
||||
background-color: #f5c2e7;
|
||||
margin-left: 6px;
|
||||
padding: 2px 6px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
background-color: #f38ba8;
|
||||
margin-right: 6px;
|
||||
padding: 2px 8px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#custom-updater {
|
||||
background-color: #e6ed7b;
|
||||
margin-right: 6px;
|
||||
padding: 2px 8px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/** Common style **/
|
||||
#backlight,
|
||||
#battery,
|
||||
#clock,
|
||||
#cpu,
|
||||
#disk,
|
||||
#mode,
|
||||
#memory,
|
||||
#mpd,
|
||||
#tray,
|
||||
#pulseaudio,
|
||||
#network {
|
||||
border-radius: 4px;
|
||||
margin: 6px 0px;
|
||||
padding: 2px 8px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** ********** Weather ********** **/
|
||||
|
||||
#custom-weather {
|
||||
background-color: #5d388b;
|
||||
margin-right: 6px;
|
||||
padding: 2px 8px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#custom-weather.severe {
|
||||
color: #eb937d;
|
||||
}
|
||||
|
||||
#custom-weather.sunnyDay {
|
||||
color: #c2ca76;
|
||||
}
|
||||
|
||||
#custom-weather.clearNight {
|
||||
color: #2b2b2a;
|
||||
}
|
||||
|
||||
#custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight {
|
||||
color: #c2ddda;
|
||||
}
|
||||
|
||||
#custom-weather.rainyDay, #custom-weather.rainyNight {
|
||||
color: #5aaca5;
|
||||
}
|
||||
|
||||
#custom-weather.showyIcyDay, #custom-weather.snowyIcyNight {
|
||||
color: #d6e7e5;
|
||||
}
|
||||
|
||||
#custom-weather.default {
|
||||
color: #dbd9d8;
|
||||
}
|
||||
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 7.8 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"label" : "lock",
|
||||
"action" : "~/.config/hypr/scripts/lockscreen",
|
||||
"text" : "Lock",
|
||||
"keybind" : "l"
|
||||
}
|
||||
{
|
||||
"label" : "hibernate",
|
||||
"action" : "systemctl hibernate",
|
||||
"text" : "Hibernate",
|
||||
"keybind" : "h"
|
||||
}
|
||||
{
|
||||
"label" : "logout",
|
||||
"action" : "loginctl terminate-user $USER",
|
||||
"text" : "Logout",
|
||||
"keybind" : "e"
|
||||
}
|
||||
{
|
||||
"label" : "shutdown",
|
||||
"action" : "systemctl poweroff",
|
||||
"text" : "Shutdown",
|
||||
"keybind" : "s"
|
||||
}
|
||||
{
|
||||
"label" : "suspend",
|
||||
"action" : "systemctl suspend",
|
||||
"text" : "Suspend",
|
||||
"keybind" : "u"
|
||||
}
|
||||
{
|
||||
"label" : "reboot",
|
||||
"action" : "systemctl reboot",
|
||||
"text" : "Reboot",
|
||||
"keybind" : "r"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
/** ********** Fonts ********** **/
|
||||
* {
|
||||
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/** ********** Main Window ********** **/
|
||||
window {
|
||||
background-color: #1E1E2E;
|
||||
}
|
||||
|
||||
/** ********** Buttons ********** **/
|
||||
button {
|
||||
background-color: #242434;
|
||||
color: #FFFFFF;
|
||||
border: 2px solid #282838;
|
||||
border-radius: 20px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: 35%;
|
||||
}
|
||||
|
||||
button:focus, button:active, button:hover {
|
||||
background-color: #89B4FA;
|
||||
outline-style: none;
|
||||
}
|
||||
|
||||
/** ********** Icons ********** **/
|
||||
#lock {
|
||||
background-image: image(url("icons/lock.png"), url("/usr/share/wlogout/icons/lock.png"));
|
||||
}
|
||||
|
||||
#logout {
|
||||
background-image: image(url("icons/logout.png"), url("/usr/share/wlogout/icons/logout.png"));
|
||||
}
|
||||
|
||||
#suspend {
|
||||
background-image: image(url("icons/suspend.png"), url("/usr/share/wlogout/icons/suspend.png"));
|
||||
}
|
||||
|
||||
#hibernate {
|
||||
background-image: image(url("icons/hibernate.png"), url("/usr/share/wlogout/icons/hibernate.png"));
|
||||
}
|
||||
|
||||
#shutdown {
|
||||
background-image: image(url("icons/shutdown.png"), url("/usr/share/wlogout/icons/shutdown.png"));
|
||||
}
|
||||
|
||||
#reboot {
|
||||
background-image: image(url("icons/reboot.png"), url("/usr/share/wlogout/icons/reboot.png"));
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
#1e1e2e
|
||||
#262636
|
||||
#d9e0ee
|
||||
#89b4fa
|
||||
#f38ba8
|
||||
#cba6f7
|
||||
@@ -0,0 +1,39 @@
|
||||
## Wofi Config
|
||||
|
||||
## General
|
||||
show=drun
|
||||
prompt=Apps
|
||||
normal_window=true
|
||||
layer=top
|
||||
term=alacritty
|
||||
|
||||
## Geometry
|
||||
width=500px
|
||||
height=305px
|
||||
location=0
|
||||
orientation=vertical
|
||||
halign=fill
|
||||
line_wrap=off
|
||||
dynamic_lines=false
|
||||
|
||||
## Images
|
||||
allow_markup=true
|
||||
allow_images=true
|
||||
image_size=24
|
||||
|
||||
## Search
|
||||
exec_search=false
|
||||
hide_search=false
|
||||
parse_search=false
|
||||
insensitive=false
|
||||
|
||||
## Other
|
||||
hide_scroll=true
|
||||
no_actions=true
|
||||
sort_order=default
|
||||
gtk_dark=true
|
||||
filter_rate=100
|
||||
|
||||
## Keys
|
||||
key_expand=Tab
|
||||
key_exit=Escape
|
||||
@@ -0,0 +1,60 @@
|
||||
/** ********** Fonts ********** **/
|
||||
* {
|
||||
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#window {
|
||||
background-color: --wofi-color0;
|
||||
color: --wofi-color2;
|
||||
border: 2px solid --wofi-color1;
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
#input {
|
||||
background-color: --wofi-color1;
|
||||
border: 0px solid --wofi-color3;
|
||||
padding: 8px 12px;
|
||||
}
|
||||
|
||||
#scroll {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#inner-box {
|
||||
}
|
||||
|
||||
#img {
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
#text {
|
||||
color: --wofi-color2;
|
||||
}
|
||||
|
||||
#text:selected {
|
||||
color: --wofi-color0;
|
||||
}
|
||||
|
||||
#entry {
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
background-color: --wofi-color3;
|
||||
color: --wofi-color0;
|
||||
}
|
||||
|
||||
#unselected {
|
||||
}
|
||||
|
||||
#selected {
|
||||
}
|
||||
|
||||
#input, #entry:selected {
|
||||
border-radius: 4px;
|
||||
}
|
||||
@@ -346,7 +346,7 @@ exec --no-startup-id dex --autostart --environment i3
|
||||
|
||||
# set wallpaper
|
||||
# exec --no-startup-id sleep 2 && nitrogen --restore
|
||||
exec --no-startup-id sleep 1 && feh --bg-fill ~/.config/i3/wallpaper.jpg
|
||||
exec --no-startup-id sleep 1 && feh --bg-fill ~/.config/i3/wallpaper.png
|
||||
|
||||
# set powersavings for display:
|
||||
exec --no-startup-id xset s 480 dpms 600 600 600
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# 直接从当前文件夹中读取配置文件作为配置内容
|
||||
|
||||
# wallpaper, binary file
|
||||
home.file.".config/i3/wallpaper.jpg".source = ../../wallpaper.jpg;
|
||||
home.file.".config/i3/wallpaper.png".source = ../wallpapers/wallpaper.png;
|
||||
home.file.".config/i3/config".source = ./config;
|
||||
home.file.".config/i3/i3blocks.conf".source = ./i3blocks.conf;
|
||||
home.file.".config/i3/keybindings".source = ./keybindings;
|
||||
|
||||
@@ -1,20 +1,27 @@
|
||||
{
|
||||
pkgs,
|
||||
nixpkgs-stable,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
programs = {
|
||||
chromium = {
|
||||
enable = true;
|
||||
commandLineArgs = ["--enable-features=TouchpadOverscrollHistoryNavigation"];
|
||||
extensions = [
|
||||
# {id = "";} // extension id, query from chrome web store
|
||||
];
|
||||
};
|
||||
|
||||
firefox = {
|
||||
enable = true;
|
||||
profiles.ryan = {};
|
||||
};
|
||||
}: let
|
||||
pkgs-stable = import nixpkgs-stable {
|
||||
system = pkgs.system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
}
|
||||
in {
|
||||
home.packages = with pkgs-stable; [
|
||||
firefox-wayland
|
||||
|
||||
# chrome wayland support was broken on nixos-unstable branch, so fallback to stable branch for now
|
||||
# https://github.com/swaywm/sway/issues/7562
|
||||
google-chrome
|
||||
];
|
||||
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
package = pkgs-stable.vscode; # use the stable version
|
||||
|
||||
# let vscode sync and update its configuration & extensions across devices, using github account.
|
||||
# userSettings = {};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -10,23 +10,71 @@
|
||||
yq-go # https://github.com/mikefarah/yq
|
||||
htop
|
||||
|
||||
## networking tools
|
||||
wireshark
|
||||
wireguard-tools # manage wireguard vpn manually, via wg-quick
|
||||
|
||||
# misc
|
||||
libnotify
|
||||
wineWowPackages.wayland
|
||||
xdg-utils
|
||||
graphviz
|
||||
|
||||
# productivity
|
||||
obsidian
|
||||
hugo
|
||||
|
||||
# IDE
|
||||
insomnia
|
||||
jetbrains.pycharm-community
|
||||
# jetbrains.idea-community
|
||||
|
||||
# cloud native
|
||||
docker-compose
|
||||
kubectl
|
||||
kubernetes-helm
|
||||
terraform
|
||||
pulumi
|
||||
|
||||
# cloud provider
|
||||
awscli
|
||||
|
||||
# C
|
||||
clang-tools
|
||||
clang-analyzer
|
||||
lldb
|
||||
gnumake
|
||||
cmake
|
||||
autoconf
|
||||
automake
|
||||
bison
|
||||
cppcheck
|
||||
fakeroot
|
||||
flex
|
||||
gettext
|
||||
groff
|
||||
libtool
|
||||
m4
|
||||
patch
|
||||
pkgconf
|
||||
texinfo
|
||||
binutils
|
||||
|
||||
|
||||
# Golang
|
||||
delve
|
||||
go
|
||||
go-outline
|
||||
go-tools
|
||||
go2nix
|
||||
gomodifytags
|
||||
gopls
|
||||
gotests
|
||||
impl
|
||||
|
||||
# Rust
|
||||
rustup
|
||||
|
||||
# nodejs
|
||||
nodejs
|
||||
nodePackages.npm
|
||||
nodePackages.pnpm
|
||||
@@ -36,16 +84,19 @@
|
||||
dbeaver
|
||||
mycli
|
||||
pgcli
|
||||
|
||||
# desktop
|
||||
tdesktop
|
||||
discord
|
||||
];
|
||||
|
||||
programs = {
|
||||
# A terminal multiplexer
|
||||
tmux = {
|
||||
enable = true;
|
||||
clock24 = true;
|
||||
keyMode = "vi";
|
||||
extraConfig = "mouse on";
|
||||
};
|
||||
|
||||
# a cat(1) clone with syntax highlighting and Git integration.
|
||||
bat = {
|
||||
enable = true;
|
||||
config = {
|
||||
@@ -64,23 +115,25 @@
|
||||
exa.enable = true; # A modern replacement for ‘ls’
|
||||
jq.enable = true; # A lightweight and flexible command-line JSON processor
|
||||
ssh.enable = true;
|
||||
aria2.enable = true;
|
||||
aria2.enable = true; # a
|
||||
|
||||
# skim provides a single executable: sk.
|
||||
# Basically anywhere you would want to use grep, try sk instead.
|
||||
skim = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
defaultCommand = "rg --files --hidden";
|
||||
changeDirWidgetOptions = [
|
||||
"--preview 'exa --icons --git --color always -T -L 3 {} | head -200'"
|
||||
"--exact"
|
||||
];
|
||||
enableBashIntegration = true;
|
||||
};
|
||||
|
||||
direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
syncthing.enable = true;
|
||||
# syncthing.enable = true;
|
||||
|
||||
# auto mount usb drives
|
||||
udiskie.enable = true;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
./common.nix
|
||||
./git.nix
|
||||
./media.nix
|
||||
./vscode.nix
|
||||
# ./nixos-cn.nix
|
||||
./xdg.nix
|
||||
];
|
||||
}
|
||||
@@ -13,8 +13,24 @@
|
||||
pavucontrol
|
||||
playerctl
|
||||
pulsemixer
|
||||
|
||||
ffmpeg-full
|
||||
|
||||
# images
|
||||
imv
|
||||
viu # terminal image viewer
|
||||
imv # simple image viewer
|
||||
imagemagick
|
||||
graphviz
|
||||
|
||||
# creative
|
||||
blender # 3d modeling
|
||||
gimp # image editing
|
||||
inkscape # vector graphics
|
||||
krita # digital painting
|
||||
|
||||
# 3d printing, eletrical engineering
|
||||
kicad
|
||||
|
||||
];
|
||||
|
||||
programs = {
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
nixos-cn,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
# 将 nixos-cn flake 提供的 registry 添加到全局 registry 列表中
|
||||
# 可在`nixos-rebuild switch`之后通过`nix registry list`查看
|
||||
nixos-cn.nixosModules.nixos-cn-registries
|
||||
|
||||
# 引入nixos-cn flake提供的NixOS模块
|
||||
nixos-cn.nixosModules.nixos-cn
|
||||
];
|
||||
|
||||
# # 使用 nixos-cn flake 提供的包
|
||||
home.packages = with nixos-cn.legacyPackages.${pkgs.system}; [
|
||||
# qq
|
||||
# wechat-uos # TODO failed to install
|
||||
netease-cloud-music # TODO chinese font missing
|
||||
];
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
home-manager,
|
||||
nix-vscode-extensions,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
|
||||
# if use vscode in wayland, uncomment this line
|
||||
# environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
userSettings = {
|
||||
"editor.renderWhitespace" = "all";
|
||||
"files.autoSave" = "onFocusChange";
|
||||
"editor.rulers" = [ 80 120 ];
|
||||
"telemetry.enableTelemetry" = false;
|
||||
"telemetry.enableCrashReporter" = false;
|
||||
"editor.tabSize" = 2;
|
||||
"files.exclude" = { "**/node_modules/**" = true; };
|
||||
"editor.formatOnSave" = false;
|
||||
"breadcrumbs.enabled" = true;
|
||||
"editor.useTabStops" = false;
|
||||
"editor.fontFamily" = "JetBrainsMono Nerd Font";
|
||||
"editor.fontSize" = 16;
|
||||
"editor.fontLigatures" = true;
|
||||
"editor.lineHeight" = 20;
|
||||
"workbench.fontAliasing" = "antialiased";
|
||||
"files.trimTrailingWhitespace" = true;
|
||||
"editor.minimap.enabled" = false;
|
||||
"workbench.editor.enablePreview" = false;
|
||||
"terminal.integrated.fontFamily" = "JetBrainsMono Nerd Font";
|
||||
};
|
||||
|
||||
package =
|
||||
let
|
||||
config.packageOverrides = pkgs: {
|
||||
vscode = pkgs.vscode-with-extensions.override {
|
||||
# pkgs.vscode-extensions 里包含的 vscode 太少了
|
||||
# 必须使用社区的 <https://github.com/nix-community/nix-vscode-extensions> 才能安装更多插件
|
||||
vscodeExtensions = with nix-vscode-extensions.extensions; [
|
||||
aaron-bond.better-comments
|
||||
anweber.vscode-httpyac
|
||||
arrterian.nix-env-selector
|
||||
bierner.markdown-mermaid
|
||||
christian-kohler.path-intellisense
|
||||
cschlosser.doxdocgen
|
||||
DanishSarwar.reverse-search
|
||||
eamodio.gitlens
|
||||
esbenp.prettier-vscode
|
||||
espressif.esp-idf-extension
|
||||
fabiospampinato.vscode-diff
|
||||
GitHub.copilot
|
||||
golang.go
|
||||
hashicorp.terraform
|
||||
janisdd.vscode-edit-csv
|
||||
jebbs.plantuml
|
||||
jeff-hykin.better-cpp-syntax
|
||||
jnoortheen.nix-ide
|
||||
JuanBlanco.solidity
|
||||
k--kato.intellij-idea-keybindings
|
||||
llvm-vs-code-extensions.vscode-clangd
|
||||
mcu-debug.debug-tracker-vscode
|
||||
mcu-debug.memory-view
|
||||
mcu-debug.rtos-views
|
||||
mikestead.dotenv
|
||||
mkhl.direnv
|
||||
ms-azuretools.vscode-docker
|
||||
ms-dotnettools.vscode-dotnet-runtime
|
||||
ms-kubernetes-tools.vscode-kubernetes-tools
|
||||
ms-python.isort
|
||||
ms-python.python
|
||||
ms-python.vscode-pylance
|
||||
ms-toolsai.jupyter
|
||||
ms-toolsai.jupyter-keymap
|
||||
ms-toolsai.jupyter-renderers
|
||||
ms-toolsai.vscode-jupyter-cell-tags
|
||||
ms-toolsai.vscode-jupyter-slideshow
|
||||
ms-vscode-remote.remote-containers
|
||||
ms-vscode-remote.remote-ssh
|
||||
ms-vscode-remote.remote-ssh-edit
|
||||
ms-vscode-remote.vscode-remote-extensionpack
|
||||
ms-vscode.cmake-tools
|
||||
ms-vscode.cpptools
|
||||
ms-vscode.cpptools-extension-pack
|
||||
ms-vscode.cpptools-themes
|
||||
ms-vscode.remote-explorer
|
||||
ms-vscode.remote-server
|
||||
pinage404.nix-extension-pack
|
||||
platformio.platformio-ide
|
||||
pomdtr.excalidraw-editor
|
||||
redhat.java
|
||||
redhat.vscode-commons
|
||||
redhat.vscode-xml
|
||||
redhat.vscode-yaml
|
||||
rust-lang.rust-analyzer
|
||||
shd101wyy.markdown-preview-enhanced
|
||||
sumneko.lua
|
||||
tamasfe.even-better-toml
|
||||
timonwong.shellcheck
|
||||
tintinweb.graphviz-interactive-preview
|
||||
tintinweb.solidity-visual-auditor
|
||||
tintinweb.vscode-inline-bookmarks
|
||||
tintinweb.vscode-solidity-flattener
|
||||
tintinweb.vscode-solidity-language
|
||||
twxs.cmake
|
||||
vadimcn.vscode-lldb
|
||||
VisualStudioExptTeam.intellicode-api-usage-examples
|
||||
VisualStudioExptTeam.vscodeintellicode
|
||||
vscjava.vscode-java-debug
|
||||
vscjava.vscode-java-pack
|
||||
vscjava.vscode-java-test
|
||||
vscjava.vscode-maven
|
||||
vscode-icons-team.vscode-icons
|
||||
WakaTime.vscode-wakatime
|
||||
yzhang.markdown-all-in-one
|
||||
zxh404.vscode-proto3
|
||||
];
|
||||
};
|
||||
};
|
||||
in
|
||||
pkgs.vscode;
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{config, ...}: let
|
||||
{config, pkgs, ...}: let
|
||||
browser = ["firefox.desktop"];
|
||||
|
||||
# XDG MIME types
|
||||
@@ -21,8 +21,8 @@
|
||||
"video/*" = ["mpv.dekstop"];
|
||||
"image/*" = ["imv.desktop"];
|
||||
"application/json" = browser;
|
||||
"application/pdf" = ["org.pwmt.zathura.desktop.desktop"];
|
||||
"x-scheme-handler/discord" = ["discordcanary.desktop"];
|
||||
"application/pdf" = ["org.pwmt.zathura.desktop.desktop"]; # TODO: pdf viewer
|
||||
"x-scheme-handler/discord" = ["discord.desktop"];
|
||||
"x-scheme-handler/spotify" = ["spotify.desktop"];
|
||||
"x-scheme-handler/tg" = ["telegramdesktop.desktop"];
|
||||
};
|
||||
@@ -44,4 +44,4 @@ in {
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,14 @@ in {
|
||||
./terminals.nix
|
||||
];
|
||||
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
};
|
||||
|
||||
# add environment variables
|
||||
home.sessionVariables = {
|
||||
# 注意不要用 home.sessionVariables 或 home.xxx.sessionVariables,这俩参数没用
|
||||
systemd.user.sessionVariables = {
|
||||
# clean up ~
|
||||
LESSHISTFILE = cache + "/less/history";
|
||||
LESSKEY = c + "/less/lesskey";
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
{config, ...}: {
|
||||
home.sessionVariables.STARSHIP_CACHE = "${config.xdg.cacheHome}/starship";
|
||||
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
# convert all images to png
|
||||
|
||||
def to_png [old_path: string, old_format: string] {
|
||||
# 将后缀改为 .png 得到新图片的 path
|
||||
let webp_path = ($old_path | split row $old_format | append ".png" | str join)
|
||||
# 使用 ffmpeg 进行格式转换
|
||||
ffmpeg -y -i $old_path $webp_path
|
||||
# 删除旧图片
|
||||
rm $old_path
|
||||
}
|
||||
|
||||
def convert_format [old_format: string] {
|
||||
# 递归找出所有大于 10kib 的图片
|
||||
let old_paths = (ls $"**/*($old_format)" | where size > 10kb | each {|it| $it.name})
|
||||
$old_paths | to md
|
||||
|
||||
# 1. 执行图片格式转换与压缩,同时删除原图片
|
||||
$old_paths | each { |it| to_png $it $old_format }
|
||||
}
|
||||
|
||||
convert_format ".webp"
|
||||
# convert_format ".jpg"
|
||||
|
After Width: | Height: | Size: 5.5 MiB |
|
After Width: | Height: | Size: 765 KiB |
@@ -0,0 +1,12 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# mount a smb/cifs share
|
||||
fileSystems."/home/ryan/SMB-Downloads" = {
|
||||
device = "//192.168.5.194/Downloads";
|
||||
fsType = "cifs";
|
||||
options = ["vers=3.0,uid=1000,gid=100,dir_mode=0755,file_mode=0755,mfsymlinks,credentials=/etc/nixos/.smb_credentials,nofail"];
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./cifs-mount.nix
|
||||
../../modules/system.nix
|
||||
../../modules/i3.nix
|
||||
../../modules/hyprland.nix
|
||||
../../modules/fcitx5
|
||||
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
@@ -23,23 +25,53 @@
|
||||
systemd-boot.enable = true;
|
||||
};
|
||||
|
||||
networking.hostName = "msi-rtx4090"; # Define your hostname.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
networking = {
|
||||
hostName = "msi-rtx4090"; # Define your hostname.
|
||||
wireless.enable = false; # Enables wireless support via wpa_supplicant.
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
# Configure network proxy if necessary
|
||||
# proxy.default = "http://user:password@proxy:port/";
|
||||
# proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
networkmanager.enable = true;
|
||||
|
||||
enableIPv6 = false; # disable ipv6
|
||||
interfaces.enp5s0 = {
|
||||
useDHCP = false;
|
||||
ipv4.addresses = [ {
|
||||
address = "192.168.5.66";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
};
|
||||
defaultGateway = "192.168.5.201";
|
||||
nameservers = [
|
||||
"119.29.29.29" # DNSPod
|
||||
"223.5.5.5" # AliDNS
|
||||
];
|
||||
};
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
networking.defaultGateway = "192.168.5.201";
|
||||
|
||||
# for Nvidia GPU
|
||||
services.xserver.videoDrivers = ["nvidia"];
|
||||
hardware.opengl.enable = true;
|
||||
|
||||
services.xserver.videoDrivers = ["nvidia"]; # will install nvidia-vaapi-driver by default
|
||||
hardware.nvidia = {
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = true;
|
||||
};
|
||||
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
# if hardware.opengl.driSupport is enabled, mesa is installed and provides Vulkan for supported hardware.
|
||||
driSupport = true;
|
||||
# needed by nvidia-docker
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
enableNvidia = true;
|
||||
storageDriver = "btrfs";
|
||||
};
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
|
||||
@@ -8,23 +8,24 @@
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "uas" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/9730ef67-577c-4dc9-8563-f431c1cf25fb";
|
||||
fsType = "ext4";
|
||||
{ device = "/dev/disk/by-uuid/231466f6-cdf3-40e1-b9d2-6b4e8d10a4d3";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@" ];
|
||||
};
|
||||
|
||||
fileSystems."/boot/efi" =
|
||||
{ device = "/dev/disk/by-uuid/8DA9-86FF";
|
||||
{ device = "/dev/disk/by-uuid/87ED-8B2E";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/5364261a-3ecc-4754-b114-ff44c529627e"; }
|
||||
[ { device = "/dev/disk/by-uuid/17391ca0-8cdb-4598-a40b-fd9548fd9b37"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
|
||||
@@ -8,7 +8,8 @@
|
||||
imports =
|
||||
[
|
||||
../../modules/system.nix
|
||||
../../modules/i3.nix
|
||||
../../modules/hyprland.nix
|
||||
../../modules/fcitx5
|
||||
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
@@ -16,10 +17,6 @@
|
||||
|
||||
# Bootloader.
|
||||
boot.loader = {
|
||||
# efi = {
|
||||
# canTouchEfiVariables = true;
|
||||
# efiSysMountPoint = "/boot/efi"; # ← use the same mount point here.
|
||||
# };
|
||||
grub = {
|
||||
enable = true;
|
||||
device = "/dev/sda"; # "nodev"
|
||||
@@ -29,16 +26,24 @@
|
||||
};
|
||||
};
|
||||
|
||||
networking.hostName = "nixos-test"; # Define your hostname.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
networking = {
|
||||
hostName = "nixos-test"; # Define your hostname.
|
||||
wireless.enable = false; # Enables wireless support via wpa_supplicant.
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
# Configure network proxy if necessary
|
||||
# proxy.default = "http://user:password@proxy:port/";
|
||||
# proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
networking.defaultGateway = "192.168.5.201";
|
||||
networkmanager.enable = true;
|
||||
interfaces.ens18 = {
|
||||
useDHCP = false;
|
||||
ipv4.addresses = [ {
|
||||
address = "192.168.5.48";
|
||||
prefixLength = 24;
|
||||
} ];
|
||||
};
|
||||
defaultGateway = "192.168.5.201";
|
||||
};
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Fcitx5-Rime + Flypy
|
||||
|
||||
- fcitx5 input method - currently not work in vscode, and failed to add flypy input method
|
||||
|
||||
## Hisotry Problems
|
||||
|
||||
1. pay attention to the `rm -rf .local/share/fcitx5/rime/`, which may contains some auto generated rime config files, which may cause flypy not the default scheme for rime
|
||||
2. manage `~/.config/fcitx5/profile` in ../home/hyprland/default.nix, which hardcode rime as the default input method, so you do not need to use fcitx-configtool to set rime as the default input method.
|
||||
3. fcitx5-rime still cannot use on vscode & chrome now... need more time to figure out why and resolve it.
|
||||
@@ -0,0 +1,28 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
# related issues: https://github.com/hyprwm/Hyprland/discussions/421
|
||||
{
|
||||
# 为了不使用默认的 rime-data,改用我自定义的小鹤音形数据,这里需要 override
|
||||
# 参考 https://github.com/NixOS/nixpkgs/blob/e4246ae1e7f78b7087dce9c9da10d28d3725025f/pkgs/tools/inputmethods/fcitx5/fcitx5-rime.nix
|
||||
nixpkgs.overlays = [
|
||||
(self: super: {
|
||||
# 小鹤音形配置,配置来自 flypy.com 官方网盘的鼠须管配置压缩包「小鹤音形“鼠须管”for macOS.zip」
|
||||
# 我仅修改了 default.yaml 文件,将其中的半角括号改为了直角括号「 与 」。
|
||||
rime-data = ./rime-data-flypy;
|
||||
fcitx5-rime = super.fcitx5-rime.override { rimeDataPkgs = [ ./rime-data-flypy ]; };
|
||||
})
|
||||
];
|
||||
|
||||
i18n.inputMethod = {
|
||||
enabled = "fcitx5";
|
||||
fcitx5.addons = with pkgs; [
|
||||
# for flypy chinese input method
|
||||
fcitx5-rime
|
||||
# needed enable rime using configtool after installed
|
||||
fcitx5-configtool
|
||||
fcitx5-chinese-addons
|
||||
# fcitx5-mozc # japanese input method
|
||||
fcitx5-gtk # gtk im module
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
{pkgs, ...}:
|
||||
|
||||
|
||||
{
|
||||
# i3wm: old and stable, only support X11
|
||||
# sway: compatible with i3wm, support Wayland. do not support Nvidia GPU officially.
|
||||
# hyprland: project starts from 2022, support Wayland, envolving fast, good looking, support Nvidia GPU.
|
||||
|
||||
environment.pathsToLink = [ "/libexec" ]; # links /libexec from derivations to /run/current-system/sw
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
|
||||
desktopManager = {
|
||||
xterm.enable = false;
|
||||
};
|
||||
|
||||
displayManager = {
|
||||
defaultSession = "hyprland";
|
||||
lightdm.enable = false;
|
||||
gdm = {
|
||||
enable = true;
|
||||
wayland = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
|
||||
xwayland = {
|
||||
enable = true;
|
||||
hidpi = true;
|
||||
};
|
||||
|
||||
nvidiaPatches = true;
|
||||
};
|
||||
programs.light.enable = true; # monitor backlight control
|
||||
|
||||
|
||||
# thunar file manager(part of xfce) related options
|
||||
programs.thunar.plugins = with pkgs.xfce; [
|
||||
thunar-archive-plugin
|
||||
thunar-volman
|
||||
];
|
||||
services.gvfs.enable = true; # Mount, trash, and other functionalities
|
||||
services.tumbler.enable = true; # Thumbnail support for images
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
waybar # the status bar
|
||||
swaybg # the wallpaper
|
||||
swayidle # the idle timeout
|
||||
swaylock # locking the screen
|
||||
wlogout # logout menu
|
||||
wl-clipboard # copying and pasting
|
||||
|
||||
wf-recorder # creen recording
|
||||
grim # taking screenshots
|
||||
slurp # selecting a region to screenshot
|
||||
# TODO replace by `flameshot gui --raw | wl-copy`
|
||||
|
||||
wofi # A rofi inspired launcher for wlroots compositors such as sway/hyprland
|
||||
mako # the notification daemon, the same as dunst
|
||||
|
||||
yad # a fork of zenity, for creating dialogs
|
||||
|
||||
# 用于播放系统音效
|
||||
mpd # for playing system sounds
|
||||
mpc-cli # command-line mpd client
|
||||
ncmpcpp # a mpd client with a UI
|
||||
networkmanagerapplet # provide GUI app: nm-connection-editor
|
||||
];
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
wlr.enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-wlr # for wlroots based compositors
|
||||
xdg-desktop-portal-gtk # for gtk
|
||||
# xdg-desktop-portal-kde # for kde
|
||||
];
|
||||
};
|
||||
|
||||
# for power management
|
||||
services.upower.enable = true;
|
||||
|
||||
}
|
||||
@@ -13,9 +13,9 @@
|
||||
};
|
||||
|
||||
displayManager = {
|
||||
defaultSession = "none+i3";
|
||||
lightdm.enable = false;
|
||||
gdm.enable = true;
|
||||
defaultSession = "none+i3";
|
||||
lightdm.enable = false;
|
||||
gdm.enable = true;
|
||||
};
|
||||
|
||||
windowManager.i3 = {
|
||||
@@ -34,7 +34,7 @@
|
||||
arandr # screen layout manager
|
||||
dex # autostart applications
|
||||
xbindkeys # bind keys to commands
|
||||
xorg.xbacklight # control screen brightness
|
||||
xorg.xbacklight # control screen brightness, the same as light
|
||||
xorg.xdpyinfo # get screen information
|
||||
sysstat # get system information
|
||||
];
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# enable flakes globally
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Asia/Shanghai";
|
||||
|
||||
@@ -21,12 +24,18 @@
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
services.printing.enable = true;
|
||||
|
||||
|
||||
|
||||
# all fonts are linked to /nix/var/nix/profiles/system/sw/share/X11/fonts
|
||||
fonts = {
|
||||
# use fonts specified by user rather than default ones
|
||||
enableDefaultFonts = false;
|
||||
fontDir.enable = true;
|
||||
|
||||
fonts = with pkgs; [
|
||||
# icon fonts
|
||||
material-design-icons
|
||||
font-awesome
|
||||
|
||||
# normal fonts
|
||||
noto-fonts
|
||||
@@ -34,11 +43,18 @@
|
||||
noto-fonts-emoji
|
||||
|
||||
# nerdfonts
|
||||
(nerdfonts.override { fonts = [ "FiraCode" "JetBrainsMono" ]; })
|
||||
];
|
||||
(nerdfonts.override { fonts = [
|
||||
"FiraCode"
|
||||
"JetBrainsMono"
|
||||
"Iosevka"
|
||||
];})
|
||||
|
||||
# use fonts specified by user rather than default ones
|
||||
enableDefaultFonts = false;
|
||||
(pkgs.callPackage ../fonts/icomoon-feather-icon-font.nix { })
|
||||
|
||||
# arch linux icon, used temporarily in waybar
|
||||
(pkgs.callPackage ../fonts/archcraft-icon-font.nix { })
|
||||
|
||||
];
|
||||
|
||||
# user defined fonts
|
||||
# the reason there's Noto Color Emoji everywhere is to override DejaVu's
|
||||
@@ -79,23 +95,72 @@
|
||||
wget
|
||||
curl
|
||||
git
|
||||
|
||||
# networking tools
|
||||
ethtool
|
||||
iperf3
|
||||
nmap
|
||||
socat
|
||||
|
||||
# system tools
|
||||
sysstat
|
||||
lm_sensors # for `sensors` command
|
||||
|
||||
# misc
|
||||
findutils
|
||||
file
|
||||
which
|
||||
tree
|
||||
gnused
|
||||
gnutar
|
||||
gawk
|
||||
p7zip
|
||||
xz
|
||||
zstd
|
||||
cifs-utils # for mounting windows shares
|
||||
|
||||
(python3.withPackages(ps: with ps; [
|
||||
ipython
|
||||
pandas
|
||||
requests
|
||||
pyquery
|
||||
]))
|
||||
conda
|
||||
|
||||
# video/audio tools
|
||||
libva-utils
|
||||
nvtop
|
||||
vdpauinfo
|
||||
vulkan-tools
|
||||
glxinfo
|
||||
glmark2
|
||||
|
||||
# minimal screen capture tool, used by i3 blur lock to take a screenshot
|
||||
# print screen key is also bound to this tool in i3 config
|
||||
scrot
|
||||
|
||||
neofetch
|
||||
xfce.thunar # xfce4's file manager
|
||||
nnn # terminal file manager
|
||||
xdg-user-dirs
|
||||
|
||||
# embedded development
|
||||
minicom
|
||||
];
|
||||
|
||||
|
||||
# Enable sound with pipewire.
|
||||
sound.enable = true;
|
||||
hardware.pulseaudio.enable = false;
|
||||
|
||||
# security with polkit
|
||||
services.power-profiles-daemon = {
|
||||
enable = true;
|
||||
};
|
||||
security.polkit.enable = true;
|
||||
# security with gnome-kering
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
security.pam.services.greetd.enableGnomeKeyring = true;
|
||||
|
||||
services = {
|
||||
dbus.packages = [ pkgs.gcr ];
|
||||
@@ -115,14 +180,22 @@
|
||||
#media-session.enable = true;
|
||||
};
|
||||
|
||||
udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
|
||||
udev.packages = with pkgs; [
|
||||
gnome.gnome-settings-daemon
|
||||
platformio # udev rules for platformio
|
||||
android-udev-rules
|
||||
];
|
||||
};
|
||||
|
||||
# android development tools, this will install adb/fastboot and other android tools and udev rules
|
||||
# see https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/programs/adb.nix
|
||||
programs.adb.enable = true;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.ryan = {
|
||||
isNormalUser = true;
|
||||
description = "ryan";
|
||||
extraGroups = [ "networkmanager" "wheel" ];
|
||||
extraGroups = [ "users" "networkmanager" "wheel" "docker" "wireshark" "adbusers" ];
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJx3Sk20pLL1b2PPKZey2oTyioODrErq83xG78YpFBoj admin@ryan-MBP"
|
||||
];
|
||||
|
||||
|
Before Width: | Height: | Size: 534 KiB |