Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
Mars | a286b0abb2 | ||
Mars | 320faef2a6 |
21
.envrc
21
.envrc
|
@ -1,22 +1 @@
|
||||||
watch_file flake.in.nix
|
|
||||||
|
|
||||||
# Calculate the hash of flake.in.nix
|
|
||||||
current_hash=$(md5sum flake.in.nix | cut -d ' ' -f 1)
|
|
||||||
stored_hash_file=".flake_in_nix_hash"
|
|
||||||
|
|
||||||
# Read the stored hash if it exists
|
|
||||||
if [ -f "$stored_hash_file" ]; then
|
|
||||||
stored_hash=$(cat "$stored_hash_file")
|
|
||||||
else
|
|
||||||
stored_hash=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Compare the hashes and copy if they are different
|
|
||||||
if [ "$current_hash" != "$stored_hash" ]; then
|
|
||||||
cp $(nix eval --raw .#nextFlake) flake.nix
|
|
||||||
# Store the new hash
|
|
||||||
echo "$current_hash" > "$stored_hash_file"
|
|
||||||
fi
|
|
||||||
|
|
||||||
use_flake
|
use_flake
|
||||||
|
|
||||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -1,5 +1,3 @@
|
||||||
.direnv/
|
.direnv/
|
||||||
.DS_Store/
|
home.nix
|
||||||
.flake_in_nix_hash
|
|
||||||
.luarc.json
|
|
||||||
sys.nix
|
sys.nix
|
||||||
|
|
|
@ -1,182 +1,22 @@
|
||||||
{
|
{
|
||||||
"bang-bang": {
|
"linux-wallpaperengine-latest": {
|
||||||
"cargoLocks": null,
|
"cargoLocks": null,
|
||||||
"date": "2023-07-23",
|
"date": "2024-05-11",
|
||||||
"extract": null,
|
"extract": null,
|
||||||
"name": "bang-bang",
|
"name": "linux-wallpaperengine-latest",
|
||||||
"passthru": null,
|
"passthru": null,
|
||||||
"pinned": false,
|
"pinned": false,
|
||||||
"src": {
|
"src": {
|
||||||
"deepClone": false,
|
"deepClone": false,
|
||||||
"fetchSubmodules": false,
|
"fetchSubmodules": false,
|
||||||
"leaveDotGit": false,
|
"leaveDotGit": false,
|
||||||
"name": null,
|
"name": null,
|
||||||
"owner": "oh-my-fish",
|
"owner": "Almamu",
|
||||||
"repo": "plugin-bang-bang",
|
"repo": "linux-wallpaperengine",
|
||||||
"rev": "ec991b80ba7d4dda7a962167b036efc5c2d79419",
|
"rev": "13cc080410444ea72cceebdd5ea0ae7c23dd2270",
|
||||||
"sha256": "sha256-oPPCtFN2DPuM//c48SXb4TrFRjJtccg0YPXcAo0Lxq0=",
|
"sha256": "sha256-XdFU5BKZPyGpV0PYmmM12efMFimt3eJAsG+dzyycIzo=",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"version": "ec991b80ba7d4dda7a962167b036efc5c2d79419"
|
"version": "13cc080410444ea72cceebdd5ea0ae7c23dd2270"
|
||||||
},
|
}
|
||||||
"fix-window-role": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": null,
|
|
||||||
"extract": null,
|
|
||||||
"name": "fix-window-role",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"name": null,
|
|
||||||
"sha256": "sha256-H4Qj6n5uZsmsbdjjexGZctqhJk3gAXKiSnmnEO/LgTA=",
|
|
||||||
"type": "url",
|
|
||||||
"url": "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch"
|
|
||||||
},
|
|
||||||
"version": "latest"
|
|
||||||
},
|
|
||||||
"git-abbr": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": "2023-06-19",
|
|
||||||
"extract": null,
|
|
||||||
"name": "git-abbr",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"deepClone": false,
|
|
||||||
"fetchSubmodules": false,
|
|
||||||
"leaveDotGit": false,
|
|
||||||
"name": null,
|
|
||||||
"owner": "pupbrained",
|
|
||||||
"repo": "fish-git-abbr",
|
|
||||||
"rev": "dc590a5b9d9d2095f95f7d90608b48e55bea0b0e",
|
|
||||||
"sha256": "sha256-6z3Wr2t8CP85xVEp6UCYaM2KC9PX4MDyx19f/wjHkb0=",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"version": "dc590a5b9d9d2095f95f7d90608b48e55bea0b0e"
|
|
||||||
},
|
|
||||||
"gityaw": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": "2019-01-07",
|
|
||||||
"extract": null,
|
|
||||||
"name": "gityaw",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"deepClone": false,
|
|
||||||
"fetchSubmodules": false,
|
|
||||||
"leaveDotGit": false,
|
|
||||||
"name": null,
|
|
||||||
"owner": "oh-my-fish",
|
|
||||||
"repo": "plugin-gityaw",
|
|
||||||
"rev": "59196560e0f4520db63fb8cab645510377bb8b13",
|
|
||||||
"sha256": "sha256-STXNxSsjSopB+lbB4hEYdhJifRfsImRwbZ1SxwEhkuM=",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"version": "59196560e0f4520db63fb8cab645510377bb8b13"
|
|
||||||
},
|
|
||||||
"license": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": "2018-10-22",
|
|
||||||
"extract": null,
|
|
||||||
"name": "license",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"deepClone": false,
|
|
||||||
"fetchSubmodules": false,
|
|
||||||
"leaveDotGit": false,
|
|
||||||
"name": null,
|
|
||||||
"owner": "oh-my-fish",
|
|
||||||
"repo": "plugin-license",
|
|
||||||
"rev": "0155b16f102957ec0c734a90979245dc1073f979",
|
|
||||||
"sha256": "sha256-Bi9Q5rekZoyXYbRV+U4SmwCdqCl0pFupzm5si7SxFns=",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"version": "0155b16f102957ec0c734a90979245dc1073f979"
|
|
||||||
},
|
|
||||||
"poll": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": null,
|
|
||||||
"extract": null,
|
|
||||||
"name": "poll",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"name": null,
|
|
||||||
"sha256": "sha256-Weh2+C5v2ORYO8JFYzntpPmJyGseFqArByZwLpX2CCU=",
|
|
||||||
"type": "url",
|
|
||||||
"url": "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/poll.patch"
|
|
||||||
},
|
|
||||||
"version": "latest"
|
|
||||||
},
|
|
||||||
"replay-fish": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": "2024-07-01",
|
|
||||||
"extract": null,
|
|
||||||
"name": "replay-fish",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"deepClone": false,
|
|
||||||
"fetchSubmodules": false,
|
|
||||||
"leaveDotGit": false,
|
|
||||||
"name": null,
|
|
||||||
"owner": "jorgebucaran",
|
|
||||||
"repo": "replay.fish",
|
|
||||||
"rev": "d2ecacd3fe7126e822ce8918389f3ad93b14c86c",
|
|
||||||
"sha256": "sha256-TzQ97h9tBRUg+A7DSKeTBWLQuThicbu19DHMwkmUXdg=",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"version": "d2ecacd3fe7126e822ce8918389f3ad93b14c86c"
|
|
||||||
},
|
|
||||||
"round-undecorated-frame": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": null,
|
|
||||||
"extract": null,
|
|
||||||
"name": "round-undecorated-frame",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"name": null,
|
|
||||||
"sha256": "sha256-dFH4D1WYQOVOagUuVdEQB3irxV+Y8dDAOKJOJXc/KHQ=",
|
|
||||||
"type": "url",
|
|
||||||
"url": "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch"
|
|
||||||
},
|
|
||||||
"version": "latest"
|
|
||||||
},
|
|
||||||
"system-appearance": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": null,
|
|
||||||
"extract": null,
|
|
||||||
"name": "system-appearance",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"name": null,
|
|
||||||
"sha256": "sha256-nrPOgGQAJb/5brrrWJNDARY2jWNJ9OsMtO+LPVhHfbY=",
|
|
||||||
"type": "url",
|
|
||||||
"url": "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/system-appearance.patch"
|
|
||||||
},
|
|
||||||
"version": "latest"
|
|
||||||
},
|
|
||||||
"wttr": {
|
|
||||||
"cargoLocks": null,
|
|
||||||
"date": "2016-05-23",
|
|
||||||
"extract": null,
|
|
||||||
"name": "wttr",
|
|
||||||
"passthru": null,
|
|
||||||
"pinned": false,
|
|
||||||
"src": {
|
|
||||||
"deepClone": false,
|
|
||||||
"fetchSubmodules": false,
|
|
||||||
"leaveDotGit": false,
|
|
||||||
"name": null,
|
|
||||||
"owner": "oh-my-fish",
|
|
||||||
"repo": "plugin-wttr",
|
|
||||||
"rev": "7500e382e6b29a463edc57598217ce0cfaf8c90c",
|
|
||||||
"sha256": "sha256-k3FrRPxKCiObO6HgtDx8ORbcLmfSYQsQeq5SAoNfZbE=",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"version": "7500e382e6b29a463edc57598217ce0cfaf8c90c"
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,110 +1,15 @@
|
||||||
# This file was generated by nvfetcher, please do not modify it manually.
|
# This file was generated by nvfetcher, please do not modify it manually.
|
||||||
{
|
{fetchFromGitHub}: {
|
||||||
fetchurl,
|
linux-wallpaperengine-latest = {
|
||||||
fetchFromGitHub,
|
pname = "linux-wallpaperengine-latest";
|
||||||
}: {
|
version = "13cc080410444ea72cceebdd5ea0ae7c23dd2270";
|
||||||
bang-bang = {
|
|
||||||
pname = "bang-bang";
|
|
||||||
version = "ec991b80ba7d4dda7a962167b036efc5c2d79419";
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "oh-my-fish";
|
owner = "Almamu";
|
||||||
repo = "plugin-bang-bang";
|
repo = "linux-wallpaperengine";
|
||||||
rev = "ec991b80ba7d4dda7a962167b036efc5c2d79419";
|
rev = "13cc080410444ea72cceebdd5ea0ae7c23dd2270";
|
||||||
fetchSubmodules = false;
|
fetchSubmodules = false;
|
||||||
sha256 = "sha256-oPPCtFN2DPuM//c48SXb4TrFRjJtccg0YPXcAo0Lxq0=";
|
sha256 = "sha256-XdFU5BKZPyGpV0PYmmM12efMFimt3eJAsG+dzyycIzo=";
|
||||||
};
|
};
|
||||||
date = "2023-07-23";
|
date = "2024-05-11";
|
||||||
};
|
|
||||||
fix-window-role = {
|
|
||||||
pname = "fix-window-role";
|
|
||||||
version = "latest";
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch";
|
|
||||||
sha256 = "sha256-H4Qj6n5uZsmsbdjjexGZctqhJk3gAXKiSnmnEO/LgTA=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
git-abbr = {
|
|
||||||
pname = "git-abbr";
|
|
||||||
version = "dc590a5b9d9d2095f95f7d90608b48e55bea0b0e";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "pupbrained";
|
|
||||||
repo = "fish-git-abbr";
|
|
||||||
rev = "dc590a5b9d9d2095f95f7d90608b48e55bea0b0e";
|
|
||||||
fetchSubmodules = false;
|
|
||||||
sha256 = "sha256-6z3Wr2t8CP85xVEp6UCYaM2KC9PX4MDyx19f/wjHkb0=";
|
|
||||||
};
|
|
||||||
date = "2023-06-19";
|
|
||||||
};
|
|
||||||
gityaw = {
|
|
||||||
pname = "gityaw";
|
|
||||||
version = "59196560e0f4520db63fb8cab645510377bb8b13";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "oh-my-fish";
|
|
||||||
repo = "plugin-gityaw";
|
|
||||||
rev = "59196560e0f4520db63fb8cab645510377bb8b13";
|
|
||||||
fetchSubmodules = false;
|
|
||||||
sha256 = "sha256-STXNxSsjSopB+lbB4hEYdhJifRfsImRwbZ1SxwEhkuM=";
|
|
||||||
};
|
|
||||||
date = "2019-01-07";
|
|
||||||
};
|
|
||||||
license = {
|
|
||||||
pname = "license";
|
|
||||||
version = "0155b16f102957ec0c734a90979245dc1073f979";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "oh-my-fish";
|
|
||||||
repo = "plugin-license";
|
|
||||||
rev = "0155b16f102957ec0c734a90979245dc1073f979";
|
|
||||||
fetchSubmodules = false;
|
|
||||||
sha256 = "sha256-Bi9Q5rekZoyXYbRV+U4SmwCdqCl0pFupzm5si7SxFns=";
|
|
||||||
};
|
|
||||||
date = "2018-10-22";
|
|
||||||
};
|
|
||||||
poll = {
|
|
||||||
pname = "poll";
|
|
||||||
version = "latest";
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/poll.patch";
|
|
||||||
sha256 = "sha256-Weh2+C5v2ORYO8JFYzntpPmJyGseFqArByZwLpX2CCU=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
replay-fish = {
|
|
||||||
pname = "replay-fish";
|
|
||||||
version = "d2ecacd3fe7126e822ce8918389f3ad93b14c86c";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "jorgebucaran";
|
|
||||||
repo = "replay.fish";
|
|
||||||
rev = "d2ecacd3fe7126e822ce8918389f3ad93b14c86c";
|
|
||||||
fetchSubmodules = false;
|
|
||||||
sha256 = "sha256-TzQ97h9tBRUg+A7DSKeTBWLQuThicbu19DHMwkmUXdg=";
|
|
||||||
};
|
|
||||||
date = "2024-07-01";
|
|
||||||
};
|
|
||||||
round-undecorated-frame = {
|
|
||||||
pname = "round-undecorated-frame";
|
|
||||||
version = "latest";
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch";
|
|
||||||
sha256 = "sha256-dFH4D1WYQOVOagUuVdEQB3irxV+Y8dDAOKJOJXc/KHQ=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
system-appearance = {
|
|
||||||
pname = "system-appearance";
|
|
||||||
version = "latest";
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/system-appearance.patch";
|
|
||||||
sha256 = "sha256-nrPOgGQAJb/5brrrWJNDARY2jWNJ9OsMtO+LPVhHfbY=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
wttr = {
|
|
||||||
pname = "wttr";
|
|
||||||
version = "7500e382e6b29a463edc57598217ce0cfaf8c90c";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "oh-my-fish";
|
|
||||||
repo = "plugin-wttr";
|
|
||||||
rev = "7500e382e6b29a463edc57598217ce0cfaf8c90c";
|
|
||||||
fetchSubmodules = false;
|
|
||||||
sha256 = "sha256-k3FrRPxKCiObO6HgtDx8ORbcLmfSYQsQeq5SAoNfZbE=";
|
|
||||||
};
|
|
||||||
date = "2016-05-23";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
118
flake.in.nix
118
flake.in.nix
|
@ -1,118 +0,0 @@
|
||||||
{
|
|
||||||
inputs = let
|
|
||||||
mkCustomUrl = url: {inherit url;};
|
|
||||||
|
|
||||||
mkInput = url: {url = "github:${url}";};
|
|
||||||
|
|
||||||
mkFollowingNixpkgs = url: {
|
|
||||||
url = "github:${url}";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
mkFollowing = url: input: {
|
|
||||||
url = "github:${url}";
|
|
||||||
inputs.${input}.follows = input;
|
|
||||||
};
|
|
||||||
|
|
||||||
mkWithSubmodules = url: {
|
|
||||||
inherit url;
|
|
||||||
submodules = true;
|
|
||||||
type = "git";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
determinate = mkInput "DeterminateSystems/determinate";
|
|
||||||
agenix = mkInput "ryantm/agenix";
|
|
||||||
catppuccin = mkInput "catppuccin/nix";
|
|
||||||
chaotic = mkInput "chaotic-cx/nyx/nyxpkgs-unstable";
|
|
||||||
emacs = mkCustomUrl "git+https://git.pupbrained.xyz/pupbrained/nixmacs.git";
|
|
||||||
hyprland = mkWithSubmodules "https://github.com/hyprwm/Hyprland";
|
|
||||||
hyprland-plugins = mkFollowing "hyprwm/hyprland-plugins" "hyprland";
|
|
||||||
impermanence = mkInput "nix-community/impermanence";
|
|
||||||
nix-colors = mkInput "Misterio77/nix-colors";
|
|
||||||
nixos-facter-modules = mkInput "numtide/nixos-facter-modules";
|
|
||||||
nixpkgs = mkInput "NixOS/nixpkgs/nixos-unstable";
|
|
||||||
nixvim = mkInput "pupbrained/nvim-config";
|
|
||||||
treefmt-nix = mkInput "numtide/treefmt-nix";
|
|
||||||
xmonad-contrib = mkInput "xmonad/xmonad-contrib";
|
|
||||||
zen-browser = mkInput "fufexan/zen-browser-flake";
|
|
||||||
|
|
||||||
cosmic = mkFollowingNixpkgs "lilyinstarlight/nixos-cosmic";
|
|
||||||
darwin = mkFollowingNixpkgs "LnL7/nix-darwin/master";
|
|
||||||
home-manager = mkFollowingNixpkgs "nix-community/home-manager";
|
|
||||||
nix-index-database = mkFollowingNixpkgs "nix-community/nix-index-database";
|
|
||||||
snowfall-flake = mkFollowingNixpkgs "snowfallorg/flake";
|
|
||||||
snowfall-lib = mkFollowingNixpkgs "snowfallorg/lib/dev";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = {...} @ inputs:
|
|
||||||
with inputs;
|
|
||||||
snowfall-lib.mkFlake {
|
|
||||||
inherit inputs;
|
|
||||||
src = ./.;
|
|
||||||
|
|
||||||
overlays = [
|
|
||||||
snowfall-flake.overlays.default
|
|
||||||
];
|
|
||||||
|
|
||||||
channels-config = {
|
|
||||||
allowAliases = true;
|
|
||||||
allowUnfree = true;
|
|
||||||
allowUnsupportedSystem = true;
|
|
||||||
cudaSupport = true;
|
|
||||||
permittedInsecurePackages = ["freeimage-unstable-2021-11-01"];
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
systems.modules.nixos =
|
|
||||||
[
|
|
||||||
agenix.nixosModules.default
|
|
||||||
catppuccin.nixosModules.catppuccin
|
|
||||||
chaotic.nixosModules.default
|
|
||||||
cosmic.nixosModules.default
|
|
||||||
determinate.nixosModules.default
|
|
||||||
impermanence.nixosModules.impermanence
|
|
||||||
nixos-facter-modules.nixosModules.facter
|
|
||||||
]
|
|
||||||
++ xmonad-contrib.nixosModules;
|
|
||||||
|
|
||||||
systems.modules.darwin = [
|
|
||||||
"${home-manager}/nix-darwin"
|
|
||||||
];
|
|
||||||
|
|
||||||
outputs-builder = channels: {
|
|
||||||
formatter = treefmt-nix.lib.mkWrapper channels.nixpkgs {
|
|
||||||
projectRootFile = "flake.nix";
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
alejandra.enable = true;
|
|
||||||
deadnix.enable = true;
|
|
||||||
jsonfmt.enable = true;
|
|
||||||
stylua.enable = true;
|
|
||||||
taplo.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
devShells.default = with channels.nixpkgs;
|
|
||||||
mkShellNoCC {
|
|
||||||
packages = [
|
|
||||||
alejandra
|
|
||||||
git
|
|
||||||
lua-language-server
|
|
||||||
nvfetcher
|
|
||||||
statix
|
|
||||||
|
|
||||||
(writeScriptBin "build" ''
|
|
||||||
sudo nix run \
|
|
||||||
--option experimental-features "nix-command flakes" \
|
|
||||||
--option extra-substituters https://numtide.cachix.org \
|
|
||||||
--option extra-trusted-public-keys numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE= \
|
|
||||||
github:numtide/nixos-facter -- -o systems/${system}/$(hostname)/facter.json
|
|
||||||
nix fmt
|
|
||||||
nh os switch
|
|
||||||
'')
|
|
||||||
(writeScriptBin "up" "nix flake update && nvfetcher")
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
1957
flake.lock
1957
flake.lock
File diff suppressed because it is too large
Load diff
112
flake.nix
112
flake.nix
|
@ -1,42 +1,40 @@
|
||||||
# Do not modify! This file is generated.
|
|
||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
agenix.url = "github:ryantm/agenix";
|
|
||||||
catppuccin.url = "github:catppuccin/nix";
|
catppuccin.url = "github:catppuccin/nix";
|
||||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||||
cosmic = {
|
nix-colors.url = "github:Misterio77/nix-colors";
|
||||||
|
nix-super.url = "git+https://git.privatevoid.net/max/nix-super.git";
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
nixvim.url = "github:pupbrained/nixvim";
|
||||||
|
schizofox.url = "github:schizofox/schizofox";
|
||||||
|
treefmt-nix.url = "github:numtide/treefmt-nix";
|
||||||
|
|
||||||
|
asahi = {
|
||||||
|
url = "github:tpwrules/nixos-apple-silicon";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:lilyinstarlight/nixos-cosmic";
|
|
||||||
};
|
};
|
||||||
darwin = {
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
url = "github:LnL7/nix-darwin/master";
|
|
||||||
};
|
|
||||||
determinate.url = "github:DeterminateSystems/determinate";
|
|
||||||
emacs.url = "git+https://git.pupbrained.xyz/pupbrained/nixmacs.git";
|
|
||||||
flakegen.url = "github:jorsn/flakegen";
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
};
|
};
|
||||||
|
|
||||||
hyprland = {
|
hyprland = {
|
||||||
submodules = true;
|
submodules = true;
|
||||||
type = "git";
|
type = "git";
|
||||||
url = "https://github.com/hyprwm/Hyprland";
|
url = "https://github.com/hyprwm/Hyprland";
|
||||||
};
|
};
|
||||||
|
|
||||||
hyprland-plugins = {
|
hyprland-plugins = {
|
||||||
inputs.hyprland.follows = "hyprland";
|
inputs.hyprland.follows = "hyprland";
|
||||||
url = "github:hyprwm/hyprland-plugins";
|
url = "github:hyprwm/hyprland-plugins";
|
||||||
};
|
};
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
|
||||||
nix-colors.url = "github:Misterio77/nix-colors";
|
|
||||||
nix-index-database = {
|
nix-index-database = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:nix-community/nix-index-database";
|
url = "github:nix-community/nix-index-database";
|
||||||
};
|
};
|
||||||
nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
|
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
||||||
nixvim.url = "github:pupbrained/nvim-config";
|
|
||||||
snowfall-flake = {
|
snowfall-flake = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:snowfallorg/flake";
|
url = "github:snowfallorg/flake";
|
||||||
|
@ -45,9 +43,83 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "github:snowfallorg/lib/dev";
|
url = "github:snowfallorg/lib/dev";
|
||||||
};
|
};
|
||||||
treefmt-nix.url = "github:numtide/treefmt-nix";
|
|
||||||
xmonad-contrib.url = "github:xmonad/xmonad-contrib";
|
|
||||||
zen-browser.url = "github:fufexan/zen-browser-flake";
|
|
||||||
};
|
};
|
||||||
outputs = inputs: inputs.flakegen ./flake.in.nix inputs;
|
|
||||||
|
outputs = {
|
||||||
|
asahi,
|
||||||
|
catppuccin,
|
||||||
|
chaotic,
|
||||||
|
hyprland,
|
||||||
|
nix-colors,
|
||||||
|
nixpkgs,
|
||||||
|
nix-super,
|
||||||
|
schizofox,
|
||||||
|
nix-index-database,
|
||||||
|
treefmt-nix,
|
||||||
|
snowfall-lib,
|
||||||
|
snowfall-flake,
|
||||||
|
...
|
||||||
|
} @ inputs: let
|
||||||
|
pkgs = import nixpkgs {inherit system;};
|
||||||
|
system = "aarch64-linux";
|
||||||
|
in
|
||||||
|
snowfall-lib.mkFlake {
|
||||||
|
inherit inputs;
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
|
||||||
|
formatter.${system} = treefmt-nix.lib.mkWrapper pkgs {
|
||||||
|
projectRootFile = "flake.nix";
|
||||||
|
programs = {
|
||||||
|
alejandra.enable = true;
|
||||||
|
deadnix.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
overlays = [
|
||||||
|
snowfall-flake.overlays.default
|
||||||
|
|
||||||
|
(_final: _prev: {
|
||||||
|
nixSuper = nix-super.packages.${system}.default;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
channels-config = {
|
||||||
|
allowAliases = true;
|
||||||
|
allowUnfree = true;
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
homes.modules = [
|
||||||
|
catppuccin.homeManagerModules.catppuccin
|
||||||
|
chaotic.homeManagerModules.default
|
||||||
|
hyprland.homeManagerModules.default
|
||||||
|
nix-colors.homeManagerModules.default
|
||||||
|
nix-index-database.hmModules.nix-index
|
||||||
|
schizofox.homeManagerModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
systems.modules.nixos = [
|
||||||
|
asahi.nixosModules.apple-silicon-support
|
||||||
|
catppuccin.nixosModules.catppuccin
|
||||||
|
chaotic.nixosModules.default
|
||||||
|
];
|
||||||
|
|
||||||
|
devShells.${system}.default = with pkgs;
|
||||||
|
mkShellNoCC {
|
||||||
|
packages = [
|
||||||
|
alejandra
|
||||||
|
git
|
||||||
|
nh
|
||||||
|
nvfetcher
|
||||||
|
statix
|
||||||
|
(writeScriptBin "build" ''
|
||||||
|
nix fmt
|
||||||
|
nh os switch . -- --impure
|
||||||
|
nh home switch
|
||||||
|
'')
|
||||||
|
(writeScriptBin "up" "nix flake update")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,119 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = with inputs; [
|
|
||||||
nix-index-database.hmModules.nix-index
|
|
||||||
catppuccin.homeManagerModules.catppuccin
|
|
||||||
chaotic.homeManagerModules.default
|
|
||||||
nix-colors.homeManagerModules.default
|
|
||||||
];
|
|
||||||
|
|
||||||
snowfallorg.user = {
|
|
||||||
enable = true;
|
|
||||||
name = "marshall";
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
packages = with pkgs;
|
|
||||||
[
|
|
||||||
alejandra
|
|
||||||
bit
|
|
||||||
cargo-edit
|
|
||||||
cargo-udeps
|
|
||||||
cmake
|
|
||||||
duf
|
|
||||||
emacs-lsp-booster
|
|
||||||
eternal-terminal
|
|
||||||
grc
|
|
||||||
huniq
|
|
||||||
hurl
|
|
||||||
keybase
|
|
||||||
keychain
|
|
||||||
monolith
|
|
||||||
nix-output-monitor
|
|
||||||
nix-prefetch-scripts
|
|
||||||
nil
|
|
||||||
nixd
|
|
||||||
nodePackages_latest.nodejs
|
|
||||||
nurl
|
|
||||||
pinentry_mac
|
|
||||||
pnpm
|
|
||||||
rm-improved
|
|
||||||
rnr
|
|
||||||
slack
|
|
||||||
stylua
|
|
||||||
tailspin
|
|
||||||
tokei
|
|
||||||
typst
|
|
||||||
typst-live
|
|
||||||
typstfmt
|
|
||||||
unrar
|
|
||||||
unzip
|
|
||||||
upx
|
|
||||||
vgrep
|
|
||||||
wget
|
|
||||||
xcp
|
|
||||||
xh
|
|
||||||
|
|
||||||
(emacs30-pgtk.overrideAttrs (old: let
|
|
||||||
sources = import ../../../_sources/generated.nix {inherit (pkgs) fetchurl fetchFromGitHub;};
|
|
||||||
|
|
||||||
getPatch = name: sources.${name}.src;
|
|
||||||
in {
|
|
||||||
patches =
|
|
||||||
(old.patches or [])
|
|
||||||
++ [
|
|
||||||
# Fix OS window role (needed for window managers like yabai)
|
|
||||||
(getPatch "fix-window-role")
|
|
||||||
# Use poll instead of select to get file descriptors
|
|
||||||
(getPatch "poll")
|
|
||||||
# Enable rounded window with no decoration
|
|
||||||
(getPatch "round-undecorated-frame")
|
|
||||||
# Make Emacs aware of OS-level light/dark mode
|
|
||||||
(getPatch "system-appearance")
|
|
||||||
];
|
|
||||||
}))
|
|
||||||
|
|
||||||
(python312.withPackages (pkgs:
|
|
||||||
with pkgs; [
|
|
||||||
epc
|
|
||||||
orjson
|
|
||||||
sexpdata
|
|
||||||
six
|
|
||||||
setuptools
|
|
||||||
paramiko
|
|
||||||
rapidfuzz
|
|
||||||
]))
|
|
||||||
]
|
|
||||||
++ (with inputs; [nixvim.packages.${pkgs.system}.default]);
|
|
||||||
|
|
||||||
stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
bacon.enable = true;
|
|
||||||
btop.enable = true;
|
|
||||||
bun.enable = true;
|
|
||||||
gpg.enable = true;
|
|
||||||
skim.enable = false;
|
|
||||||
tealdeer.enable = false;
|
|
||||||
wezterm.extraConfig = builtins.readFile ./wezterm.lua;
|
|
||||||
|
|
||||||
jujutsu = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
user = {
|
|
||||||
email = "mars@pupbrained.xyz";
|
|
||||||
name = "Mars";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
git = {
|
|
||||||
extraConfig.credential.helper = "osxkeychain";
|
|
||||||
signing.key = "874E22DF2F9DFCB5";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,135 +0,0 @@
|
||||||
local c = wezterm.config_builder()
|
|
||||||
|
|
||||||
wezterm.on('user-var-changed', function(window, pane, name, value)
|
|
||||||
local overrides = window:get_config_overrides() or {}
|
|
||||||
if name == 'ZEN_MODE' then
|
|
||||||
local incremental = value:find('+')
|
|
||||||
local number_value = tonumber(value)
|
|
||||||
if incremental ~= nil then
|
|
||||||
while number_value > 0 do
|
|
||||||
window:perform_action(wezterm.action.IncreaseFontSize, pane)
|
|
||||||
number_value = number_value - 1
|
|
||||||
end
|
|
||||||
overrides.enable_tab_bar = false
|
|
||||||
elseif number_value < 0 then
|
|
||||||
window:perform_action(wezterm.action.ResetFontSize, pane)
|
|
||||||
overrides.font_size = nil
|
|
||||||
overrides.enable_tab_bar = true
|
|
||||||
else
|
|
||||||
overrides.font_size = number_value
|
|
||||||
overrides.enable_tab_bar = false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
window:set_config_overrides(overrides)
|
|
||||||
end)
|
|
||||||
|
|
||||||
wezterm.on('format-window-title', function(tab, pane, tabs, panes, config)
|
|
||||||
local zoomed = ''
|
|
||||||
|
|
||||||
if tab.active_pane.is_zoomed then
|
|
||||||
zoomed = '[Z] '
|
|
||||||
end
|
|
||||||
|
|
||||||
local index = ''
|
|
||||||
|
|
||||||
if #tabs > 1 then
|
|
||||||
index = string.format('[%d/%d] ', tab.tab_index + 1, #tabs)
|
|
||||||
end
|
|
||||||
|
|
||||||
return 'WezTerm - ' .. zoomed .. index .. tab.active_pane.title
|
|
||||||
end)
|
|
||||||
|
|
||||||
wezterm.plugin.require('https://github.com/nekowinston/wezterm-bar').apply_to_config(c, {
|
|
||||||
position = 'bottom',
|
|
||||||
max_width = 32,
|
|
||||||
dividers = 'slant_right',
|
|
||||||
indicator = {
|
|
||||||
leader = {
|
|
||||||
enabled = true,
|
|
||||||
off = ' ',
|
|
||||||
on = ' ',
|
|
||||||
},
|
|
||||||
mode = {
|
|
||||||
enabled = true,
|
|
||||||
names = {
|
|
||||||
resize_mode = 'RESIZE',
|
|
||||||
copy_mode = 'VISUAL',
|
|
||||||
search_mode = 'SEARCH',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
tabs = {
|
|
||||||
numerals = 'arabic',
|
|
||||||
pane_count = 'subscript',
|
|
||||||
brackets = {
|
|
||||||
active = { '', ':' },
|
|
||||||
inactive = { '', ':' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
clock = {
|
|
||||||
enabled = true,
|
|
||||||
format = '%l:%M %p',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
local act = wezterm.action
|
|
||||||
|
|
||||||
local keybinds = {
|
|
||||||
{
|
|
||||||
key = 'Enter',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.SplitHorizontal({ domain = 'CurrentPaneDomain' }),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 'h',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.ActivatePaneDirection('Left'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 'l',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.ActivatePaneDirection('Right'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 'k',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.ActivatePaneDirection('Up'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 'j',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.ActivatePaneDirection('Down'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 't',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.SpawnCommandInNewTab({ cwd = wezterm.home_dir }),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local config = {
|
|
||||||
adjust_window_size_when_changing_font_size = false,
|
|
||||||
color_scheme = 'Catppuccin Mocha',
|
|
||||||
cursor_blink_ease_in = 'Constant',
|
|
||||||
cursor_blink_ease_out = 'Constant',
|
|
||||||
cursor_blink_rate = 500,
|
|
||||||
default_cursor_style = 'BlinkingBar',
|
|
||||||
enable_scroll_bar = false,
|
|
||||||
font = wezterm.font('PragmataPro Mono Liga'),
|
|
||||||
font_size = 14,
|
|
||||||
front_end = 'WebGpu',
|
|
||||||
hide_tab_bar_if_only_one_tab = true,
|
|
||||||
keys = keybinds,
|
|
||||||
macos_window_background_blur = 32,
|
|
||||||
use_fancy_tab_bar = false,
|
|
||||||
webgpu_power_preference = 'HighPerformance',
|
|
||||||
window_background_opacity = 0.85,
|
|
||||||
window_decorations = 'RESIZE',
|
|
||||||
window_padding = { left = 0, right = 0, top = 0, bottom = 0 },
|
|
||||||
}
|
|
||||||
|
|
||||||
for k, v in pairs(config) do
|
|
||||||
c[k] = v
|
|
||||||
end
|
|
||||||
|
|
||||||
return c
|
|
112
homes/aarch64-linux/marshall@canis-nixos/default.nix
Normal file
112
homes/aarch64-linux/marshall@canis-nixos/default.nix
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;
|
||||||
|
|
||||||
|
home = {
|
||||||
|
packages = with pkgs;
|
||||||
|
[
|
||||||
|
distrobox
|
||||||
|
duf
|
||||||
|
eternal-terminal
|
||||||
|
firefox
|
||||||
|
grc
|
||||||
|
iamb
|
||||||
|
killall
|
||||||
|
libnotify
|
||||||
|
lm_sensors
|
||||||
|
loupe
|
||||||
|
mpv
|
||||||
|
ollama
|
||||||
|
playerctl
|
||||||
|
prismlauncher
|
||||||
|
telegram-desktop
|
||||||
|
vesktop
|
||||||
|
youki
|
||||||
|
]
|
||||||
|
++ (with inputs; [
|
||||||
|
nixvim.packages.${pkgs.system}.default
|
||||||
|
]);
|
||||||
|
|
||||||
|
pointerCursor = {
|
||||||
|
gtk.enable = true;
|
||||||
|
x11.enable = true;
|
||||||
|
name = "Catppuccin-Mocha-Green-Cursors";
|
||||||
|
package = pkgs.catppuccin-cursors.mochaGreen;
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
|
||||||
|
stateVersion = "24.05";
|
||||||
|
};
|
||||||
|
|
||||||
|
dconf.settings = {
|
||||||
|
"org/virt-manager/virt-manager/connections" = {
|
||||||
|
autoconnect = ["qemu:///system"];
|
||||||
|
uris = ["qemu:///system"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.enable = true;
|
||||||
|
|
||||||
|
catppuccin = {
|
||||||
|
enable = true;
|
||||||
|
flavor = "mocha";
|
||||||
|
accent = "green";
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
catppuccin = {
|
||||||
|
enable = true;
|
||||||
|
icon.enable = true;
|
||||||
|
cursor.enable = true;
|
||||||
|
size = "standard";
|
||||||
|
tweaks = ["rimless"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
style.name = "kvantum";
|
||||||
|
style.catppuccin.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
nix-index-database.comma.enable = true;
|
||||||
|
nix-index.enable = true;
|
||||||
|
ripgrep.enable = true;
|
||||||
|
|
||||||
|
fzf = {
|
||||||
|
enable = true;
|
||||||
|
catppuccin.enable = true;
|
||||||
|
colors = with lib; {
|
||||||
|
bg = mkForce "-1";
|
||||||
|
"bg+" = mkForce "-1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
eza = {
|
||||||
|
enable = true;
|
||||||
|
git = true;
|
||||||
|
icons = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
btop = {
|
||||||
|
enable = true;
|
||||||
|
catppuccin.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.startServices = "sd-switch";
|
||||||
|
|
||||||
|
nix.package = lib.mkForce pkgs.nixSuper;
|
||||||
|
}
|
|
@ -1,231 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = with inputs; [
|
|
||||||
catppuccin.homeManagerModules.catppuccin
|
|
||||||
chaotic.homeManagerModules.default
|
|
||||||
hyprland.homeManagerModules.default
|
|
||||||
nix-colors.homeManagerModules.default
|
|
||||||
nix-index-database.hmModules.nix-index
|
|
||||||
|
|
||||||
./hyprland
|
|
||||||
./screenshot
|
|
||||||
];
|
|
||||||
|
|
||||||
snowfallorg.user = {
|
|
||||||
enable = true;
|
|
||||||
name = "marshall";
|
|
||||||
};
|
|
||||||
|
|
||||||
colorScheme = inputs.nix-colors.colorSchemes.catppuccin-mocha;
|
|
||||||
|
|
||||||
home = {
|
|
||||||
packages = with pkgs;
|
|
||||||
[
|
|
||||||
alejandra
|
|
||||||
beeper
|
|
||||||
duf
|
|
||||||
eternal-terminal
|
|
||||||
((pkgs.emacsPackagesFor pkgs.emacs30-pgtk).emacsWithPackages (epkgs:
|
|
||||||
builtins.attrValues {
|
|
||||||
inherit (epkgs.treesit-grammars) with-all-grammars;
|
|
||||||
}))
|
|
||||||
emacs-lsp-booster
|
|
||||||
equibop
|
|
||||||
glow
|
|
||||||
grc
|
|
||||||
jamesdsp
|
|
||||||
jdk21
|
|
||||||
killall
|
|
||||||
libnotify
|
|
||||||
lm_sensors
|
|
||||||
loupe
|
|
||||||
mattermost-desktop
|
|
||||||
neovide
|
|
||||||
nodejs
|
|
||||||
playerctl
|
|
||||||
prismlauncher
|
|
||||||
(python312.withPackages
|
|
||||||
(p:
|
|
||||||
with p; [
|
|
||||||
epc
|
|
||||||
orjson
|
|
||||||
sexpdata
|
|
||||||
six
|
|
||||||
setuptools
|
|
||||||
paramiko
|
|
||||||
rapidfuzz
|
|
||||||
]))
|
|
||||||
slack
|
|
||||||
telegram-desktop
|
|
||||||
xdotool
|
|
||||||
(xwinwrap.overrideAttrs {
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "camonater62";
|
|
||||||
repo = "xwinwrap";
|
|
||||||
rev = "ec74e730072225ffa740bf5076a1dd0a343bb113";
|
|
||||||
sha256 = "0vfwbcx5y1aphiaix2zps1bl7lhbhdvm6vhys2m0kwvl6igy0cc8";
|
|
||||||
};
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
make all
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
mv xwinwrap $out/bin
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
youki
|
|
||||||
]
|
|
||||||
++ (with jetbrains; [
|
|
||||||
clion
|
|
||||||
rust-rover
|
|
||||||
phpstorm
|
|
||||||
webstorm
|
|
||||||
idea-ultimate
|
|
||||||
])
|
|
||||||
++ (with inputs; [
|
|
||||||
nixvim.packages.${pkgs.system}.default
|
|
||||||
zen-browser.packages.${pkgs.system}.specific
|
|
||||||
chaotic.packages.${pkgs.system}.distrobox_git
|
|
||||||
chaotic.packages.${pkgs.system}.zed-editor_git
|
|
||||||
]);
|
|
||||||
|
|
||||||
stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
dconf.settings = {
|
|
||||||
"org/virt-manager/virt-manager/connections" = {
|
|
||||||
autoconnect = ["qemu:///system"];
|
|
||||||
uris = ["qemu:///system"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.enable = true;
|
|
||||||
|
|
||||||
catppuccin = {
|
|
||||||
enable = true;
|
|
||||||
flavor = "mocha";
|
|
||||||
accent = "green";
|
|
||||||
pointerCursor.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk = let
|
|
||||||
gradiencePreset = pkgs.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/GradienceTeam/Community/next/official/catppuccin-macchiato.json";
|
|
||||||
hash = "sha256-FgQvmK/Pjn980o+UVc2a70kGa6sGse045zPS9hzCs14=";
|
|
||||||
};
|
|
||||||
|
|
||||||
gradienceBuild = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "gradience-build";
|
|
||||||
phases = ["buildPhase" "installPhase"];
|
|
||||||
nativeBuildInputs = [pkgs.gradience];
|
|
||||||
buildPhase = ''
|
|
||||||
shopt -s nullglob
|
|
||||||
export HOME=$TMPDIR
|
|
||||||
mkdir -p $HOME/.config/presets
|
|
||||||
gradience-cli apply -p ${gradiencePreset} --gtk both
|
|
||||||
'';
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
cp -r .config/gtk-4.0 $out/
|
|
||||||
cp -r .config/gtk-3.0 $out/
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
enable = false;
|
|
||||||
theme.name = "adw-gtk3-dark";
|
|
||||||
theme.package = pkgs.adw-gtk3;
|
|
||||||
|
|
||||||
gtk3 = {
|
|
||||||
extraCss = builtins.readFile "${gradienceBuild}/gtk-3.0/gtk.css";
|
|
||||||
extraConfig = {
|
|
||||||
gtk-application-prefer-dark-theme = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk4 = {
|
|
||||||
extraCss = builtins.readFile "${gradienceBuild}/gtk-4.0/gtk.css";
|
|
||||||
extraConfig = {
|
|
||||||
gtk-application-prefer-dark-theme = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme.name = "kvantum";
|
|
||||||
style.name = "kvantum";
|
|
||||||
style.catppuccin.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
xmobar.enable = true;
|
|
||||||
|
|
||||||
wezterm.extraConfig = builtins.readFile ./wezterm.lua;
|
|
||||||
|
|
||||||
git = {
|
|
||||||
extraConfig.credential.helper = "libsecret";
|
|
||||||
signing.key = "0FF5B8826803F895";
|
|
||||||
};
|
|
||||||
|
|
||||||
mpv = {
|
|
||||||
enable = true;
|
|
||||||
scripts = [pkgs.mpvScripts.uosc];
|
|
||||||
catppuccin.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
picom = {
|
|
||||||
enable = true;
|
|
||||||
backend = "glx";
|
|
||||||
fadeDelta = 5;
|
|
||||||
fade = true;
|
|
||||||
shadow = true;
|
|
||||||
vSync = true;
|
|
||||||
|
|
||||||
shadowExclude = [
|
|
||||||
"class_g = 'firefox' && argb"
|
|
||||||
"class_g *?= 'slop'"
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
corner-radius = 10;
|
|
||||||
|
|
||||||
blur-background-exclude = [
|
|
||||||
"class_g = 'slop'"
|
|
||||||
];
|
|
||||||
|
|
||||||
rounded-corners-exclude = [
|
|
||||||
"window_type = 'dock'"
|
|
||||||
"window_type = 'desktop'"
|
|
||||||
];
|
|
||||||
|
|
||||||
blur = {
|
|
||||||
method = "gaussian";
|
|
||||||
size = 10;
|
|
||||||
deviation = 5.0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
dunst = {
|
|
||||||
enable = true;
|
|
||||||
settings.global = {
|
|
||||||
corner_radius = 10;
|
|
||||||
offset = "18x53";
|
|
||||||
frame_width = 2;
|
|
||||||
font = "SN Pro 12";
|
|
||||||
frame_color = lib.mkForce "#a6e3a1";
|
|
||||||
};
|
|
||||||
catppuccin.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.startServices = "sd-switch";
|
|
||||||
}
|
|
|
@ -1,231 +0,0 @@
|
||||||
{pkgs, ...}:
|
|
||||||
with pkgs; {
|
|
||||||
imports = [
|
|
||||||
./rofi.nix
|
|
||||||
./services.nix
|
|
||||||
./waybar.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
wl-clipboard
|
|
||||||
];
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = false;
|
|
||||||
systemd.variables = ["--all"];
|
|
||||||
|
|
||||||
settings = let
|
|
||||||
rofi-clipboard = pkgs.writeScriptBin "rofi-clipboard" ''
|
|
||||||
tmp_dir="/tmp/cliphist"
|
|
||||||
rm -rf "$tmp_dir"
|
|
||||||
|
|
||||||
if [[ -n "$1" ]]; then
|
|
||||||
cliphist decode <<<"$1" | wl-copy
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
mkdir -p "$tmp_dir"
|
|
||||||
|
|
||||||
read -r -d "" prog <<EOF
|
|
||||||
/^[0-9]+\s<meta http-equiv=/ { next }
|
|
||||||
match(\$0, /^([0-9]+)\s(\[\[\s)?binary.*(jpg|jpeg|png|bmp)/, grp) {
|
|
||||||
system("echo " grp[1] "\\\\\t | cliphist decode >$tmp_dir/"grp[1]"."grp[3])
|
|
||||||
print \$0"\0icon\x1f$tmp_dir/"grp[1]"."grp[3]
|
|
||||||
next
|
|
||||||
}
|
|
||||||
1
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cliphist list | gawk "$prog"
|
|
||||||
'';
|
|
||||||
|
|
||||||
scratchpad = pkgs.writeScriptBin "hyprscratchpad" ''
|
|
||||||
COMMAND=$1
|
|
||||||
CLASS=$2
|
|
||||||
WORKSPACE=$3
|
|
||||||
|
|
||||||
if [[ $(hyprctl clients | grep -v '"title":' | grep "class: $CLASS") ]];then
|
|
||||||
hyprctl dispatch togglespecialworkspace $WORKSPACE
|
|
||||||
else
|
|
||||||
hyprctl dispatch togglespecialworkspace $WORKSPACE && hyprctl dispatch exec "$COMMAND"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
mod = "SUPER";
|
|
||||||
modC = "SUPER CTRL";
|
|
||||||
modS = "SUPER SHIFT";
|
|
||||||
|
|
||||||
browser = "firefox-nightly";
|
|
||||||
colorPicker = "notify-send -i gtk-color-picker $(${hyprpicker}/bin/hyprpicker -a) 'Copied to clipboard.'";
|
|
||||||
fileManager = "nautilus";
|
|
||||||
launcher = "rofi -show drun";
|
|
||||||
clipboard = "rofi -modi ' ':${rofi-clipboard}/bin/rofi-clipboard -show ' ' -show-icons";
|
|
||||||
terminal = "wezterm";
|
|
||||||
|
|
||||||
screenshot = mode: "${hyprshot}/bin/hyprshot --clipboard-only -m ${mode}";
|
|
||||||
in {
|
|
||||||
decoration.rounding = 10;
|
|
||||||
dwindle.preserve_split = true;
|
|
||||||
gestures.workspace_swipe = true;
|
|
||||||
input.touchpad = {
|
|
||||||
clickfinger_behavior = true;
|
|
||||||
natural_scroll = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
device = [
|
|
||||||
{
|
|
||||||
name = "logitech-g502-x-plus";
|
|
||||||
sensitivity = -0.5;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
windowrule = [
|
|
||||||
"float, ^(vesktop)$"
|
|
||||||
"float, ^(org.telegram.desktop)$"
|
|
||||||
];
|
|
||||||
|
|
||||||
layerrule = [
|
|
||||||
"dimaround, rofi"
|
|
||||||
];
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
|
|
||||||
bezier = [
|
|
||||||
"overshot,0.7,0.6,0.1,1.1"
|
|
||||||
"bounce,1,1.6,0.1,0.85"
|
|
||||||
];
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windows,1,5,bounce,popin"
|
|
||||||
"border,1,20,default"
|
|
||||||
"fade,1,5,default"
|
|
||||||
"workspaces,1,5,overshot,slide"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
general = {
|
|
||||||
border_size = 2;
|
|
||||||
gaps_in = 10;
|
|
||||||
resize_on_border = true;
|
|
||||||
|
|
||||||
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
|
||||||
"col.inactive_border" = "rgba(595959aa)";
|
|
||||||
};
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
"${mpvpaper.overrideAttrs {
|
|
||||||
version = "unstable-2024-07-05";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "GhostNaN";
|
|
||||||
repo = "mpvpaper";
|
|
||||||
rev = "a445391ff7491053fef78e3645eeed934f0c8fae";
|
|
||||||
sha256 = "sha256-3wHsUtIkh765EiMnx3BPzztvffIDf1NCqF0I/OATTZ4=";
|
|
||||||
};
|
|
||||||
}}/bin/mpvpaper -vp -o 'no-audio loop' DP-1 ${builtins.toString ./wall.mp4}"
|
|
||||||
"waybar"
|
|
||||||
];
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
disable_hyprland_logo = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
monitor = [
|
|
||||||
"eDP-1, disable"
|
|
||||||
"DP-1, 2560x1440@165, auto, auto"
|
|
||||||
];
|
|
||||||
|
|
||||||
env = [
|
|
||||||
# Nvidia stuff
|
|
||||||
"GBM_BACKEND, nvidia-drm"
|
|
||||||
"__GLX_VENDOR_LIBRARY_NAME, nvidia"
|
|
||||||
"LIBVA_DRIVER_NAME, nvidia"
|
|
||||||
"WLR_DRM_DEVICES, $HOME/.config/hypr/card"
|
|
||||||
|
|
||||||
# Cursors
|
|
||||||
"HYPRCURSOR_SIZE, 24"
|
|
||||||
"XCURSOR_SIZE, 24"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
"${mod}, mouse:272, movewindow"
|
|
||||||
"${mod}, mouse:273, resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
bind =
|
|
||||||
[
|
|
||||||
# Apps
|
|
||||||
"${mod}, v, exec, ${clipboard}"
|
|
||||||
"${mod}, c, exec, ${colorPicker}"
|
|
||||||
"${mod}, w, exec, ${browser}"
|
|
||||||
"${mod}, e, exec, ${fileManager}"
|
|
||||||
"${mod}, r, exec, ${launcher}"
|
|
||||||
"${mod}, Return, exec, ${terminal}"
|
|
||||||
|
|
||||||
# Scratchpads
|
|
||||||
"${mod}, d, exec, ${scratchpad}/bin/hyprscratchpad vesktop vesktop vesktop"
|
|
||||||
"${mod}, t, exec, ${scratchpad}/bin/hyprscratchpad telegram-desktop org.telegram.desktop telegram"
|
|
||||||
|
|
||||||
# Screenshots
|
|
||||||
"${modS}, s, exec, ${screenshot "window"}"
|
|
||||||
"${modC}, 3, exec, ${screenshot "output -c"}"
|
|
||||||
"${modC}, 4, exec, ${screenshot "region -C 0,0"}"
|
|
||||||
|
|
||||||
# Mouse controls
|
|
||||||
"${mod}, mouse_down, workspace, e-1"
|
|
||||||
"${mod}, mouse_up, workspace, e+1"
|
|
||||||
|
|
||||||
# Quitting
|
|
||||||
"${mod}, q, killactive"
|
|
||||||
"${modS}, q, exit"
|
|
||||||
|
|
||||||
# Toggles
|
|
||||||
"${mod}, Space, togglefloating"
|
|
||||||
|
|
||||||
# Focus movements
|
|
||||||
"${mod}, h, movefocus, l"
|
|
||||||
"${mod}, j, movefocus, d"
|
|
||||||
"${mod}, k, movefocus, u"
|
|
||||||
"${mod}, l, movefocus, r"
|
|
||||||
|
|
||||||
# Window movements
|
|
||||||
"${modS}, h, movewindow, l"
|
|
||||||
"${modS}, j, movewindow, d"
|
|
||||||
"${modS}, k, movewindow, u"
|
|
||||||
"${modS}, l, movewindow, r"
|
|
||||||
|
|
||||||
# Window resizing
|
|
||||||
"${modC}, h, resizeactive, -30 0"
|
|
||||||
"${modC}, j, resizeactive, 0 30"
|
|
||||||
"${modC}, k, resizeactive, 0 -30"
|
|
||||||
"${modC}, l, resizeactive, 30 0"
|
|
||||||
|
|
||||||
# Volume controls
|
|
||||||
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
|
|
||||||
# Media controls
|
|
||||||
", XF86AudioPlay, exec, playerctl play-pause"
|
|
||||||
", XF86AudioNext, exec, playerctl next"
|
|
||||||
", XF86AudioPrev, exec, playerctl previous"
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
builtins.concatLists (builtins.genList (
|
|
||||||
x: let
|
|
||||||
ws = let
|
|
||||||
c = (x + 1) / 10;
|
|
||||||
in
|
|
||||||
builtins.toString (x + 1 - (c * 10));
|
|
||||||
in [
|
|
||||||
# Workspaces
|
|
||||||
"${mod}, ${ws}, workspace, ${builtins.toString (x + 1)}"
|
|
||||||
"${modS}, ${ws}, movetoworkspace, ${builtins.toString (x + 1)}"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
10)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
programs.rofi = {
|
|
||||||
enable = true;
|
|
||||||
catppuccin.enable = true;
|
|
||||||
package = pkgs.rofi-wayland;
|
|
||||||
|
|
||||||
extraConfig = {
|
|
||||||
modi = "run,drun,window";
|
|
||||||
icon-theme = "Oranchelo";
|
|
||||||
show-icons = true;
|
|
||||||
terminal = "wezterm";
|
|
||||||
drun-display-format = "{icon} {name}";
|
|
||||||
location = 0;
|
|
||||||
disable-history = false;
|
|
||||||
hide-scrollbar = true;
|
|
||||||
display-drun = " Apps ";
|
|
||||||
display-run = " Run ";
|
|
||||||
display-window = " Window";
|
|
||||||
display-Network = " Network";
|
|
||||||
sidebar-mode = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
theme = {
|
|
||||||
"*".font = "Maple Mono NF 14";
|
|
||||||
window.border-radius = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
{...}: {
|
|
||||||
services = {
|
|
||||||
cliphist.enable = false;
|
|
||||||
udiskie.enable = false;
|
|
||||||
|
|
||||||
swaync = {
|
|
||||||
enable = false;
|
|
||||||
style = builtins.fetchurl {
|
|
||||||
url = "https://github.com/catppuccin/swaync/releases/download/v0.2.3/mocha.css";
|
|
||||||
sha256 = "1xr1wkg4zb467b35xhsfqiwhimfnn88i3ml5rf173rkm7fyby9qy";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,282 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
palette = config.colorScheme.palette;
|
|
||||||
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
|
|
||||||
in {
|
|
||||||
programs.waybar = {
|
|
||||||
enable = false;
|
|
||||||
package = pkgs.waybar;
|
|
||||||
settings = [
|
|
||||||
{
|
|
||||||
layer = "top";
|
|
||||||
position = "top";
|
|
||||||
|
|
||||||
modules-center = ["hyprland/workspaces"];
|
|
||||||
|
|
||||||
modules-left = [
|
|
||||||
"custom/startmenu"
|
|
||||||
"hyprland/window"
|
|
||||||
"pulseaudio"
|
|
||||||
"cpu"
|
|
||||||
"memory"
|
|
||||||
];
|
|
||||||
|
|
||||||
modules-right = [
|
|
||||||
"mpris"
|
|
||||||
"network"
|
|
||||||
"custom/notification"
|
|
||||||
"tray"
|
|
||||||
"clock"
|
|
||||||
];
|
|
||||||
|
|
||||||
"mpris" = {
|
|
||||||
format = "{player_icon} {title} - {artist}";
|
|
||||||
format-paused = "{status_icon} {title} - {artist}";
|
|
||||||
player-icons.default = "";
|
|
||||||
status-icons.paused = "";
|
|
||||||
max-length = 40;
|
|
||||||
};
|
|
||||||
|
|
||||||
"hyprland/workspaces" = {
|
|
||||||
format = "{name}";
|
|
||||||
format-icons = {
|
|
||||||
default = " ";
|
|
||||||
active = " ";
|
|
||||||
urgent = " ";
|
|
||||||
};
|
|
||||||
on-scroll-up = "hyprctl dispatch workspace e-1";
|
|
||||||
on-scroll-down = "hyprctl dispatch workspace e+1";
|
|
||||||
};
|
|
||||||
|
|
||||||
"clock" = {
|
|
||||||
format = " {:L%I:%M %p}";
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-format = "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>";
|
|
||||||
};
|
|
||||||
|
|
||||||
"hyprland/window" = {
|
|
||||||
max-length = 40;
|
|
||||||
rewrite = {
|
|
||||||
"" = " Desktop";
|
|
||||||
"(.*) — Firefox Nightly" = " $1";
|
|
||||||
"Slack" = " Slack";
|
|
||||||
".*?Discord \\| @?(.*)" = " $1";
|
|
||||||
"wezterm" = " WezTerm";
|
|
||||||
"Telegram(?: \\((\\d+)\\))?" = " Telegram";
|
|
||||||
"Steam" = " Steam";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"memory" = {
|
|
||||||
interval = 5;
|
|
||||||
format = " {}%";
|
|
||||||
tooltip = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"cpu" = {
|
|
||||||
interval = 5;
|
|
||||||
format = " {usage:2}%";
|
|
||||||
tooltip = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"disk" = {
|
|
||||||
format = " {free}";
|
|
||||||
tooltip = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"network" = {
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
format-ethernet = " {bandwidthDownOctets}";
|
|
||||||
format-wifi = "{icon} {essid}";
|
|
||||||
format-disconnected = "";
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
"tray" = {
|
|
||||||
spacing = 12;
|
|
||||||
};
|
|
||||||
|
|
||||||
"pulseaudio" = {
|
|
||||||
format = "{icon} {volume}% {format_source}";
|
|
||||||
format-bluetooth = "{volume}% {icon} {format_source}";
|
|
||||||
format-bluetooth-muted = " {icon} {format_source}";
|
|
||||||
format-muted = " {format_source}";
|
|
||||||
format-source = " {volume}%";
|
|
||||||
format-source-muted = "";
|
|
||||||
format-icons = {
|
|
||||||
headphone = "";
|
|
||||||
hands-free = "";
|
|
||||||
headset = "";
|
|
||||||
phone = "";
|
|
||||||
portable = "";
|
|
||||||
car = "";
|
|
||||||
default = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
on-click = "sleep 0.1 && pavucontrol";
|
|
||||||
};
|
|
||||||
|
|
||||||
"custom/startmenu" = {
|
|
||||||
tooltip = false;
|
|
||||||
format = " ";
|
|
||||||
on-click = "rofi -show drun";
|
|
||||||
};
|
|
||||||
|
|
||||||
"custom/notification" = {
|
|
||||||
tooltip = false;
|
|
||||||
format = "{icon} {}";
|
|
||||||
format-icons = {
|
|
||||||
notification = "<span foreground='red'><sup></sup></span>";
|
|
||||||
none = "";
|
|
||||||
dnd-notification = "<span foreground='red'><sup></sup></span>";
|
|
||||||
dnd-none = "";
|
|
||||||
inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
|
||||||
inhibited-none = "";
|
|
||||||
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
|
||||||
dnd-inhibited-none = "";
|
|
||||||
};
|
|
||||||
return-type = "json";
|
|
||||||
exec = "swaync-client -swb";
|
|
||||||
on-click = "swaync-client -t &";
|
|
||||||
escape = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
style = lib.concatStrings [
|
|
||||||
''
|
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
border-radius: 0px;
|
|
||||||
font-family: Maple Mono NF;
|
|
||||||
font-size: 16px;
|
|
||||||
min-height: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
background-color: #${palette.base00};
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces {
|
|
||||||
background: #${palette.base01};
|
|
||||||
border-radius: 16px;
|
|
||||||
color: #${palette.base00};
|
|
||||||
margin: 4px 4px;
|
|
||||||
padding: 8px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
animation: gradient_horizontal 15s ease infinite;
|
|
||||||
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
|
|
||||||
background-size: 300% 300%;
|
|
||||||
border-radius: 16px;
|
|
||||||
color: #${palette.base00};
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0px 3px;
|
|
||||||
opacity: 0.5;
|
|
||||||
padding: 0px 5px;
|
|
||||||
transition: ${betterTransition};
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
animation: gradient_horizontal 15s ease infinite;
|
|
||||||
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
|
|
||||||
background-size: 300% 300%;
|
|
||||||
border-radius: 16px;
|
|
||||||
color: #${palette.base00};
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0px 3px;
|
|
||||||
min-width: 40px;
|
|
||||||
opacity: 1.0;
|
|
||||||
padding: 0px 5px;
|
|
||||||
transition: ${betterTransition};
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
|
||||||
animation: gradient_horizontal 15s ease infinite;
|
|
||||||
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
|
|
||||||
background-size: 300% 300%;
|
|
||||||
border-radius: 16px;
|
|
||||||
color: #${palette.base00};
|
|
||||||
font-weight: bold;
|
|
||||||
opacity: 0.8;
|
|
||||||
transition: ${betterTransition};
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes gradient_horizontal {
|
|
||||||
0% { background-position: 0% 50%; }
|
|
||||||
50% { background-position: 100% 50%; }
|
|
||||||
100% { background-position: 0% 50%; }
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes swiping {
|
|
||||||
0% { background-position: 0% 200%; }
|
|
||||||
100% { background-position: 200% 200%; }
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
|
||||||
background: #${palette.base00};
|
|
||||||
border: 1px solid #${palette.base0E};
|
|
||||||
border-radius: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip label {
|
|
||||||
color: #${palette.base07};
|
|
||||||
}
|
|
||||||
|
|
||||||
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
|
|
||||||
background: #${palette.base01};
|
|
||||||
border-radius: 24px 10px 24px 10px;
|
|
||||||
color: #${palette.base05};
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 4px 0px;
|
|
||||||
margin-left: 7px;
|
|
||||||
padding: 0px 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-startmenu {
|
|
||||||
background: #${palette.base01};
|
|
||||||
border-radius: 0px 0px 40px 0px;
|
|
||||||
color: #${palette.base0D};
|
|
||||||
font-size: 28px;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px 30px 0px 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mpris, #network, #custom-notification, #tray {
|
|
||||||
background: #${palette.base01};
|
|
||||||
border-radius: 10px 24px 10px 24px;
|
|
||||||
color: #${palette.base05};
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 4px 0px;
|
|
||||||
margin-right: 7px;
|
|
||||||
padding: 0px 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
animation: gradient_horizontal 15s ease infinite;
|
|
||||||
background: linear-gradient(45deg, #${palette.base0C}, #${palette.base0F}, #${palette.base0B}, #${palette.base08});
|
|
||||||
background-size: 300% 300%;
|
|
||||||
border-radius: 0px 0px 0px 40px;
|
|
||||||
color: #${palette.base00};
|
|
||||||
font-weight: bold;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px 15px 0px 30px;
|
|
||||||
}
|
|
||||||
''
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,134 +0,0 @@
|
||||||
local c = wezterm.config_builder()
|
|
||||||
wezterm.on('user-var-changed', function(window, pane, name, value)
|
|
||||||
local overrides = window:get_config_overrides() or {}
|
|
||||||
if name == 'ZEN_MODE' then
|
|
||||||
local incremental = value:find('+')
|
|
||||||
local number_value = tonumber(value)
|
|
||||||
if incremental ~= nil then
|
|
||||||
while number_value > 0 do
|
|
||||||
window:perform_action(wezterm.action.IncreaseFontSize, pane)
|
|
||||||
number_value = number_value - 1
|
|
||||||
end
|
|
||||||
overrides.enable_tab_bar = false
|
|
||||||
elseif number_value < 0 then
|
|
||||||
window:perform_action(wezterm.action.ResetFontSize, pane)
|
|
||||||
overrides.font_size = nil
|
|
||||||
overrides.enable_tab_bar = true
|
|
||||||
else
|
|
||||||
overrides.font_size = number_value
|
|
||||||
overrides.enable_tab_bar = false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
window:set_config_overrides(overrides)
|
|
||||||
end)
|
|
||||||
wezterm.on('format-window-title', function(tab, pane, tabs, panes, config)
|
|
||||||
local zoomed = ''
|
|
||||||
|
|
||||||
if tab.active_pane.is_zoomed then
|
|
||||||
zoomed = '[Z] '
|
|
||||||
end
|
|
||||||
|
|
||||||
local index = ''
|
|
||||||
|
|
||||||
if #tabs > 1 then
|
|
||||||
index = string.format('[%d/%d] ', tab.tab_index + 1, #tabs)
|
|
||||||
end
|
|
||||||
|
|
||||||
return 'WezTerm - ' .. zoomed .. index .. tab.active_pane.title
|
|
||||||
end)
|
|
||||||
|
|
||||||
wezterm.plugin.require('https://github.com/nekowinston/wezterm-bar').apply_to_config(c, {
|
|
||||||
position = 'bottom',
|
|
||||||
max_width = 32,
|
|
||||||
dividers = 'slant_right',
|
|
||||||
indicator = {
|
|
||||||
leader = {
|
|
||||||
enabled = true,
|
|
||||||
off = ' ',
|
|
||||||
on = ' ',
|
|
||||||
},
|
|
||||||
mode = {
|
|
||||||
enabled = true,
|
|
||||||
names = {
|
|
||||||
resize_mode = 'RESIZE',
|
|
||||||
copy_mode = 'VISUAL',
|
|
||||||
search_mode = 'SEARCH',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
tabs = {
|
|
||||||
numerals = 'arabic',
|
|
||||||
pane_count = 'subscript',
|
|
||||||
brackets = {
|
|
||||||
active = { '', ':' },
|
|
||||||
inactive = { '', ':' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
clock = {
|
|
||||||
enabled = true,
|
|
||||||
format = '%l:%M %p',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
local act = wezterm.action
|
|
||||||
|
|
||||||
local keybinds = {
|
|
||||||
{
|
|
||||||
key = 'Enter',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.SplitHorizontal({ domain = 'CurrentPaneDomain' }),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 'h',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.ActivatePaneDirection('Left'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 'l',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.ActivatePaneDirection('Right'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 'k',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.ActivatePaneDirection('Up'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 'j',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.ActivatePaneDirection('Down'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key = 't',
|
|
||||||
mods = 'CTRL|SHIFT',
|
|
||||||
action = act.SpawnCommandInNewTab({ cwd = wezterm.home_dir }),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local config = {
|
|
||||||
adjust_window_size_when_changing_font_size = false,
|
|
||||||
color_scheme = 'Catppuccin Mocha',
|
|
||||||
cursor_blink_ease_in = 'Constant',
|
|
||||||
cursor_blink_ease_out = 'Constant',
|
|
||||||
cursor_blink_rate = 500,
|
|
||||||
default_cursor_style = 'BlinkingBar',
|
|
||||||
enable_kitty_graphics = true,
|
|
||||||
enable_scroll_bar = false,
|
|
||||||
enable_wayland = true,
|
|
||||||
font_size = 12,
|
|
||||||
font = wezterm.font('Iosevka Comfy Motion'),
|
|
||||||
front_end = 'WebGpu',
|
|
||||||
keys = keybinds,
|
|
||||||
underline_position = -4,
|
|
||||||
use_fancy_tab_bar = false,
|
|
||||||
window_decorations = 'NONE',
|
|
||||||
warn_about_missing_glyphs = false,
|
|
||||||
window_background_opacity = 0.8,
|
|
||||||
window_padding = { left = 0, right = 0, top = 0, bottom = 0 },
|
|
||||||
}
|
|
||||||
|
|
||||||
for k, v in pairs(config) do
|
|
||||||
c[k] = v
|
|
||||||
end
|
|
||||||
|
|
||||||
return c
|
|
|
@ -1,64 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with pkgs; {
|
|
||||||
imports = with inputs; [
|
|
||||||
catppuccin.homeManagerModules.catppuccin
|
|
||||||
nix-index-database.hmModules.nix-index
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
homeDirectory = "/home/marshall";
|
|
||||||
username = "marshall";
|
|
||||||
|
|
||||||
packages =
|
|
||||||
[
|
|
||||||
alejandra
|
|
||||||
bun
|
|
||||||
grc
|
|
||||||
macchina
|
|
||||||
wl-clipboard
|
|
||||||
xclip
|
|
||||||
zed-editor
|
|
||||||
]
|
|
||||||
++ (with inputs; [
|
|
||||||
nixvim.packages.${pkgs.system}.default
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
gpg.enable = true;
|
|
||||||
skim.enable = true;
|
|
||||||
tealdeer.enable = true;
|
|
||||||
wezterm.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
atuin = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
inline_height = 20;
|
|
||||||
show_preview = true;
|
|
||||||
style = "compact";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
git = {
|
|
||||||
extraConfig.credential.helper = "libsecret";
|
|
||||||
signing.key = "91B1F40056A01DDF";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
cliphist.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.startServices = "sd-switch";
|
|
||||||
|
|
||||||
home.stateVersion = "23.11";
|
|
||||||
}
|
|
450
modules/home/hyprland/default.nix
Normal file
450
modules/home/hyprland/default.nix
Normal file
|
@ -0,0 +1,450 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
palette = config.colorScheme.palette;
|
||||||
|
betterTransition = "all 0.3s cubic-bezier(.55,-0.68,.48,1.682)";
|
||||||
|
in
|
||||||
|
with pkgs; {
|
||||||
|
home.packages = [
|
||||||
|
wl-clipboard-rs
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
rofi = {
|
||||||
|
enable = true;
|
||||||
|
catppuccin.enable = true;
|
||||||
|
package = pkgs.rofi-wayland;
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
modi = "run,drun,window";
|
||||||
|
icon-theme = "Oranchelo";
|
||||||
|
show-icons = true;
|
||||||
|
terminal = "wezterm";
|
||||||
|
drun-display-format = "{icon} {name}";
|
||||||
|
location = 0;
|
||||||
|
disable-history = false;
|
||||||
|
hide-scrollbar = true;
|
||||||
|
display-drun = " Apps ";
|
||||||
|
display-run = " Run ";
|
||||||
|
display-window = " Window";
|
||||||
|
display-Network = " Network";
|
||||||
|
sidebar-mode = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
theme = {
|
||||||
|
"*".font = "Maple Mono NF 14";
|
||||||
|
window.border-radius = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
waybar = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.waybar;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
"custom/startmenu"
|
||||||
|
"hyprland/workspaces"
|
||||||
|
"hyprland/window"
|
||||||
|
"pulseaudio"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules-right = [
|
||||||
|
"battery"
|
||||||
|
"network"
|
||||||
|
"custom/notification"
|
||||||
|
"tray"
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
format = "{name}";
|
||||||
|
format-icons = {
|
||||||
|
default = " ";
|
||||||
|
active = " ";
|
||||||
|
urgent = " ";
|
||||||
|
};
|
||||||
|
on-scroll-up = "hyprctl dispatch workspace e+1";
|
||||||
|
on-scroll-down = "hyprctl dispatch workspace e-1";
|
||||||
|
};
|
||||||
|
|
||||||
|
"clock" = {
|
||||||
|
format = " {:L%I:%M %p}";
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "<big>{:%A, %d.%B %Y }</big>\n<tt><small>{calendar}</small></tt>";
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/window" = {
|
||||||
|
max-length = 22;
|
||||||
|
separate-outputs = false;
|
||||||
|
rewrite = {
|
||||||
|
"" = "Desktop";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"memory" = {
|
||||||
|
interval = 5;
|
||||||
|
format = " {}%";
|
||||||
|
tooltip = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"cpu" = {
|
||||||
|
interval = 5;
|
||||||
|
format = " {usage:2}%";
|
||||||
|
tooltip = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"disk" = {
|
||||||
|
format = " {free}";
|
||||||
|
tooltip = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"battery" = {
|
||||||
|
format = " {}%";
|
||||||
|
tooltip = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"network" = {
|
||||||
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
format-ethernet = " {bandwidthDownOctets}";
|
||||||
|
format-wifi = "{icon} {essid}";
|
||||||
|
format-disconnected = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"tray" = {
|
||||||
|
spacing = 12;
|
||||||
|
};
|
||||||
|
|
||||||
|
"pulseaudio" = {
|
||||||
|
format = "{icon} {volume}% {format_source}";
|
||||||
|
format-bluetooth = "{volume}% {icon} {format_source}";
|
||||||
|
format-bluetooth-muted = " {icon} {format_source}";
|
||||||
|
format-muted = " {format_source}";
|
||||||
|
format-source = " {volume}%";
|
||||||
|
format-source-muted = "";
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
hands-free = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
car = "";
|
||||||
|
default = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
on-click = "sleep 0.1 && pavucontrol";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/startmenu" = {
|
||||||
|
tooltip = false;
|
||||||
|
format = " ";
|
||||||
|
on-click = "rofi -show drun";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/notification" = {
|
||||||
|
tooltip = false;
|
||||||
|
format = "{icon} {}";
|
||||||
|
format-icons = {
|
||||||
|
notification = "<span foreground='red'><sup></sup></span>";
|
||||||
|
none = "";
|
||||||
|
dnd-notification = "<span foreground='red'><sup></sup></span>";
|
||||||
|
dnd-none = "";
|
||||||
|
inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||||
|
inhibited-none = "";
|
||||||
|
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
|
||||||
|
dnd-inhibited-none = "";
|
||||||
|
};
|
||||||
|
return-type = "json";
|
||||||
|
exec = "swaync-client -swb";
|
||||||
|
on-click = "swaync-client -t &";
|
||||||
|
escape = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
style = lib.concatStrings [
|
||||||
|
''
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0px;
|
||||||
|
font-family: Maple Mono NF;
|
||||||
|
font-size: 16px;
|
||||||
|
min-height: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background-color: #${palette.base00};
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
background: #${palette.base01};
|
||||||
|
border-radius: 16px;
|
||||||
|
color: #${palette.base00};
|
||||||
|
margin: 4px 4px;
|
||||||
|
padding: 8px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
animation: gradient_horizontal 15s ease infinite;
|
||||||
|
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
|
||||||
|
background-size: 300% 300%;
|
||||||
|
border-radius: 16px;
|
||||||
|
color: #${palette.base00};
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0px 3px;
|
||||||
|
opacity: 0.5;
|
||||||
|
padding: 0px 5px;
|
||||||
|
transition: ${betterTransition};
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
animation: gradient_horizontal 15s ease infinite;
|
||||||
|
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
|
||||||
|
background-size: 300% 300%;
|
||||||
|
border-radius: 16px;
|
||||||
|
color: #${palette.base00};
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0px 3px;
|
||||||
|
min-width: 40px;
|
||||||
|
opacity: 1.0;
|
||||||
|
padding: 0px 5px;
|
||||||
|
transition: ${betterTransition};
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
animation: gradient_horizontal 15s ease infinite;
|
||||||
|
background: linear-gradient(45deg, #${palette.base0E}, #${palette.base0F}, #${palette.base0D}, #${palette.base09});
|
||||||
|
background-size: 300% 300%;
|
||||||
|
border-radius: 16px;
|
||||||
|
color: #${palette.base00};
|
||||||
|
font-weight: bold;
|
||||||
|
opacity: 0.8;
|
||||||
|
transition: ${betterTransition};
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes gradient_horizontal {
|
||||||
|
0% { background-position: 0% 50%; }
|
||||||
|
50% { background-position: 100% 50%; }
|
||||||
|
100% { background-position: 0% 50%; }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes swiping {
|
||||||
|
0% { background-position: 0% 200%; }
|
||||||
|
100% { background-position: 200% 200%; }
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background: #${palette.base00};
|
||||||
|
border: 1px solid #${palette.base0E};
|
||||||
|
border-radius: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip label {
|
||||||
|
color: #${palette.base07};
|
||||||
|
}
|
||||||
|
|
||||||
|
#window, #pulseaudio, #cpu, #memory, #idle_inhibitor {
|
||||||
|
background: #${palette.base01};
|
||||||
|
border-radius: 24px 10px 24px 10px;
|
||||||
|
color: #${palette.base05};
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 4px 0px;
|
||||||
|
margin-left: 7px;
|
||||||
|
padding: 0px 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-startmenu {
|
||||||
|
background: #${palette.base01};
|
||||||
|
border-radius: 0px 0px 40px 0px;
|
||||||
|
color: #${palette.base0D};
|
||||||
|
font-size: 28px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px 30px 0px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery, #network, #custom-notification, #tray {
|
||||||
|
background: #${palette.base01};
|
||||||
|
border-radius: 10px 24px 10px 24px;
|
||||||
|
color: #${palette.base05};
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 4px 0px;
|
||||||
|
margin-right: 7px;
|
||||||
|
padding: 0px 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
animation: gradient_horizontal 15s ease infinite;
|
||||||
|
background: linear-gradient(45deg, #${palette.base0C}, #${palette.base0F}, #${palette.base0B}, #${palette.base08});
|
||||||
|
background-size: 300% 300%;
|
||||||
|
border-radius: 0px 0px 0px 40px;
|
||||||
|
color: #${palette.base00};
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px 15px 0px 30px;
|
||||||
|
}
|
||||||
|
''
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.swaync = {
|
||||||
|
enable = true;
|
||||||
|
style = builtins.fetchurl {
|
||||||
|
url = "https://github.com/catppuccin/swaync/releases/download/v0.2.3/mocha.css";
|
||||||
|
sha256 = "1xr1wkg4zb467b35xhsfqiwhimfnn88i3ml5rf173rkm7fyby9qy";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
systemd.variables = ["--all"];
|
||||||
|
|
||||||
|
settings = let
|
||||||
|
mod = "SUPER";
|
||||||
|
modC = "SUPER CTRL";
|
||||||
|
modS = "SUPER SHIFT";
|
||||||
|
|
||||||
|
browser = "firefox";
|
||||||
|
colorPicker = "notify-send -e -i gtk-color-picker $(${hyprpicker}/bin/hyprpicker -a) 'Copied to clipboard.'";
|
||||||
|
fileManager = "nautilus";
|
||||||
|
launcher = "rofi -show drun";
|
||||||
|
terminal = "wezterm";
|
||||||
|
|
||||||
|
screenshot = mode: "${
|
||||||
|
hyprshot.overrideAttrs {
|
||||||
|
# Fixes cursors showing in region shots
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "BenCarmichael01";
|
||||||
|
repo = "Hyprshot";
|
||||||
|
rev = "84e2adcd5dd9060178d0d028ad032734797fba23";
|
||||||
|
hash = "sha256-XDKwBiUMWvxoWpkdJ0EK4kEqPSTZLcF6axHjom3c5Jk=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}/bin/hyprshot --clipboard-only -m ${mode}";
|
||||||
|
in {
|
||||||
|
decoration.rounding = 10;
|
||||||
|
dwindle.preserve_split = true;
|
||||||
|
gestures.workspace_swipe = true;
|
||||||
|
input.touchpad.natural_scroll = true;
|
||||||
|
xwayland.force_zero_scaling = true;
|
||||||
|
|
||||||
|
layerrule = [
|
||||||
|
"dimaround, rofi"
|
||||||
|
];
|
||||||
|
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
|
||||||
|
bezier = [
|
||||||
|
"overshot,0.7,0.6,0.1,1.1"
|
||||||
|
"bounce,1,1.6,0.1,0.85"
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
"windows,1,5,bounce,popin"
|
||||||
|
"border,1,20,default"
|
||||||
|
"fade,1,5,default"
|
||||||
|
"workspaces,1,5,overshot,slide"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
general = {
|
||||||
|
border_size = 2;
|
||||||
|
gaps_in = 10;
|
||||||
|
resize_on_border = true;
|
||||||
|
|
||||||
|
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||||
|
"col.inactive_border" = "rgba(595959aa)";
|
||||||
|
};
|
||||||
|
|
||||||
|
exec-once = [
|
||||||
|
"waybar"
|
||||||
|
"${mpvpaper}/bin/mpvpaper -vp -o 'no-audio loop panscan=1.0' eDP-1 ${builtins.toString ./wall.mp4}"
|
||||||
|
];
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
force_default_wallpaper = 0;
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
monitor = [
|
||||||
|
"eDP-1, 2560x1664@60, auto, 1.6"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
"${mod}, mouse:272, movewindow"
|
||||||
|
"${mod}, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
bind =
|
||||||
|
[
|
||||||
|
# Apps
|
||||||
|
"${mod}, c, exec, ${colorPicker}"
|
||||||
|
"${mod}, w, exec, ${browser}"
|
||||||
|
"${mod}, e, exec, ${fileManager}"
|
||||||
|
"${mod}, r, exec, ${launcher}"
|
||||||
|
"${mod}, Return, exec, ${terminal}"
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
"${modS}, s, exec, ${screenshot "window"}"
|
||||||
|
"${modC}, 3, exec, ${screenshot "output -c"}"
|
||||||
|
"${modC}, 4, exec, ${screenshot "region -C 0,0"}"
|
||||||
|
|
||||||
|
# Mouse controls
|
||||||
|
"${mod}, mouse_down, workspace, e-1"
|
||||||
|
"${mod}, mouse_up, workspace, e+1"
|
||||||
|
|
||||||
|
# Quitting
|
||||||
|
"${mod}, q, killactive"
|
||||||
|
"${modS}, q, exit"
|
||||||
|
|
||||||
|
# Toggles
|
||||||
|
"${mod}, j, togglesplit"
|
||||||
|
"${mod}, Space, togglefloating"
|
||||||
|
|
||||||
|
# Focus movements
|
||||||
|
"${mod}, h, movefocus, l"
|
||||||
|
"${mod}, j, movefocus, d"
|
||||||
|
"${mod}, k, movefocus, u"
|
||||||
|
"${mod}, l, movefocus, r"
|
||||||
|
|
||||||
|
# Window movements
|
||||||
|
"${modS}, h, movewindow, l"
|
||||||
|
"${modS}, j, movewindow, d"
|
||||||
|
"${modS}, k, movewindow, u"
|
||||||
|
"${modS}, l, movewindow, r"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
x: let
|
||||||
|
ws = let
|
||||||
|
c = (x + 1) / 10;
|
||||||
|
in
|
||||||
|
builtins.toString (x + 1 - (c * 10));
|
||||||
|
in [
|
||||||
|
# Workspaces
|
||||||
|
"${mod}, ${ws}, workspace, ${builtins.toString (x + 1)}"
|
||||||
|
"${modS}, ${ws}, movetoworkspace, ${builtins.toString (x + 1)}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
10)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Before Width: | Height: | Size: 578 B After Width: | Height: | Size: 578 B |
|
@ -1,19 +1,13 @@
|
||||||
{lib, ...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./fish.nix
|
./fish.nix
|
||||||
./git.nix
|
./git.nix
|
||||||
./macchina.nix
|
|
||||||
./wezterm.nix
|
./wezterm.nix
|
||||||
|
./macchina.nix
|
||||||
|
./nushell
|
||||||
];
|
];
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
fd.enable = true;
|
|
||||||
git-cliff.enable = true;
|
|
||||||
jq.enable = true;
|
|
||||||
nix-index-database.comma.enable = true;
|
|
||||||
nix-index.enable = true;
|
|
||||||
ripgrep.enable = true;
|
|
||||||
|
|
||||||
atuin = {
|
atuin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -28,31 +22,6 @@
|
||||||
catppuccin.enable = true;
|
catppuccin.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
btop = {
|
|
||||||
enable = true;
|
|
||||||
catppuccin.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
eza = {
|
|
||||||
enable = true;
|
|
||||||
git = true;
|
|
||||||
icons = "always";
|
|
||||||
};
|
|
||||||
|
|
||||||
fzf = {
|
|
||||||
enable = true;
|
|
||||||
catppuccin.enable = true;
|
|
||||||
colors = with lib; {
|
|
||||||
bg = mkForce "-1";
|
|
||||||
"bg+" = mkForce "-1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
zoxide = {
|
zoxide = {
|
||||||
enable = true;
|
enable = true;
|
||||||
options = ["--cmd" "cd"];
|
options = ["--cmd" "cd"];
|
||||||
|
|
|
@ -2,15 +2,6 @@
|
||||||
with pkgs; {
|
with pkgs; {
|
||||||
programs = {
|
programs = {
|
||||||
fish = let
|
fish = let
|
||||||
mkFishPlugin = sources: {
|
|
||||||
inherit (sources) src;
|
|
||||||
name = sources.pname;
|
|
||||||
};
|
|
||||||
|
|
||||||
sources = import ../../../_sources/generated.nix {inherit (pkgs) fetchurl fetchFromGitHub;};
|
|
||||||
|
|
||||||
extraPlugins = lib.attrsets.mapAttrsToList (_: value: mkFishPlugin value) sources;
|
|
||||||
|
|
||||||
mkFishPlugins = names:
|
mkFishPlugins = names:
|
||||||
map (name: {
|
map (name: {
|
||||||
inherit name;
|
inherit name;
|
||||||
|
@ -21,8 +12,54 @@ with pkgs; {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
plugins =
|
plugins =
|
||||||
extraPlugins
|
[
|
||||||
++ (mkFishPlugins ["autopair" "bass" "colored-man-pages" "done" "fifc" "forgit" "grc"]);
|
{
|
||||||
|
name = "replay.fish";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "jorgebucaran";
|
||||||
|
repo = "replay.fish";
|
||||||
|
rev = "bd8e5b89ec78313538e747f0292fcaf631e87bd2";
|
||||||
|
hash = "sha256-bM6+oAd/HXaVgpJMut8bwqO54Le33hwO9qet9paK1kY=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "license";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "oh-my-fish";
|
||||||
|
repo = "plugin-license";
|
||||||
|
rev = "0155b16f102957ec0c734a90979245dc1073f979";
|
||||||
|
hash = "sha256-Bi9Q5rekZoyXYbRV+U4SmwCdqCl0pFupzm5si7SxFns=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "wttr";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "oh-my-fish";
|
||||||
|
repo = "plugin-wttr";
|
||||||
|
rev = "7500e382e6b29a463edc57598217ce0cfaf8c90c";
|
||||||
|
hash = "sha256-k3FrRPxKCiObO6HgtDx8ORbcLmfSYQsQeq5SAoNfZbE=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "gityaw";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "oh-my-fish";
|
||||||
|
repo = "plugin-gityaw";
|
||||||
|
rev = "59196560e0f4520db63fb8cab645510377bb8b13";
|
||||||
|
hash = "sha256-STXNxSsjSopB+lbB4hEYdhJifRfsImRwbZ1SxwEhkuM=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "bang-bang";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "oh-my-fish";
|
||||||
|
repo = "plugin-bang-bang";
|
||||||
|
rev = "ec991b80ba7d4dda7a962167b036efc5c2d79419";
|
||||||
|
hash = "sha256-oPPCtFN2DPuM//c48SXb4TrFRjJtccg0YPXcAo0Lxq0=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
]
|
||||||
|
++ (mkFishPlugins ["autopair" "bass" "colored-man-pages" "done" "fifc" "git-abbr" "forgit" "grc"]);
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
cat = "${bat}/bin/bat";
|
cat = "${bat}/bin/bat";
|
||||||
|
@ -35,10 +72,6 @@ with pkgs; {
|
||||||
function fish_greeting
|
function fish_greeting
|
||||||
macchina
|
macchina
|
||||||
end
|
end
|
||||||
|
|
||||||
bind --erase \ct
|
|
||||||
fish_add_path /opt/homebrew/bin
|
|
||||||
fish_add_path /Users/marshall/.nix-profile/bin
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -7,13 +7,17 @@ with pkgs; {
|
||||||
userName = "pupbrained";
|
userName = "pupbrained";
|
||||||
userEmail = "mars@pupbrained.xyz";
|
userEmail = "mars@pupbrained.xyz";
|
||||||
aliases.pushall = "!git remote | xargs -L1 git push";
|
aliases.pushall = "!git remote | xargs -L1 git push";
|
||||||
delta.enable = false;
|
delta.enable = true;
|
||||||
signing.signByDefault = true;
|
|
||||||
lfs.enable = true;
|
|
||||||
|
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
init.defaultBranch = "main";
|
init.defaultBranch = "main";
|
||||||
push.autoSetupRemote = true;
|
push.autoSetupRemote = true;
|
||||||
|
credential.helper = "libsecret";
|
||||||
|
};
|
||||||
|
|
||||||
|
signing = {
|
||||||
|
signByDefault = true;
|
||||||
|
key = "EF82E8CA83FF158C";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,51 +8,47 @@ with pkgs; {
|
||||||
interface = "wlp4s0";
|
interface = "wlp4s0";
|
||||||
|
|
||||||
show = [
|
show = [
|
||||||
|
"DesktopEnvironment"
|
||||||
"Distribution"
|
"Distribution"
|
||||||
"Kernel"
|
"Kernel"
|
||||||
"LocalIP"
|
"LocalIP"
|
||||||
"DesktopEnvironment"
|
|
||||||
"WindowManager"
|
|
||||||
"Packages"
|
|
||||||
"Resolution"
|
|
||||||
"Terminal"
|
|
||||||
"Shell"
|
|
||||||
"Uptime"
|
|
||||||
"ProcessorLoad"
|
|
||||||
"Memory"
|
"Memory"
|
||||||
|
"Packages"
|
||||||
|
"ProcessorLoad"
|
||||||
|
"Resolution"
|
||||||
|
"Shell"
|
||||||
|
"Terminal"
|
||||||
|
"Uptime"
|
||||||
|
"WindowManager"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
themes = {
|
themes = {
|
||||||
Mezora = {
|
Mezora = {
|
||||||
custom_ascii =
|
custom_ascii = {
|
||||||
# I prefer to use the default icon on macOS
|
path = writeText "nix_logo" ''
|
||||||
if stdenv.isDarwin
|
[38;2;69;71;90m▗▄▄▄ ▗▄▄▄▄ ▄▄▄▖[0m
|
||||||
then {}
|
[38;2;69;71;90m▜███▙ ▜███▙ ▟███▛[0m
|
||||||
else {
|
[38;2;127;132;156m▜███▙ ▜███▙▟███▛[0m
|
||||||
path = writeText "nix_logo" ''
|
[38;2;127;132;156m▜███▙ ▜██████▛[0m
|
||||||
[38;2;69;71;90m▗▄▄▄ ▗▄▄▄▄ ▄▄▄▖[0m
|
[38;2;127;132;156m▟█████████████████▙ ▜████▛ ▟▙[0m
|
||||||
[38;2;69;71;90m▜███▙ ▜███▙ ▟███▛[0m
|
▟███████████████████▙ ▜███▙ ▟██▙
|
||||||
[38;2;127;132;156m▜███▙ ▜███▙▟███▛[0m
|
▄▄▄▄▖ ▜███▙ ▟███▛
|
||||||
[38;2;127;132;156m▜███▙ ▜██████▛[0m
|
▟███▛ ▜██▛ ▟███▛
|
||||||
[38;2;127;132;156m▟█████████████████▙ ▜████▛ ▟▙[0m
|
[32m▟███▛ ▜▛ ▟███▛[0m
|
||||||
▟███████████████████▙ ▜███▙ ▟██▙
|
[32m▟███████████▛ ▟██████████▙[0m
|
||||||
▄▄▄▄▖ ▜███▙ ▟███▛
|
[32m▜██████████▛ ▟███████████▛[0m
|
||||||
▟███▛ ▜██▛ ▟███▛
|
[32m▟███▛ ▟▙ ▟███▛[0m
|
||||||
[32m▟███▛ ▜▛ ▟███▛[0m
|
▟███▛ ▟██▙ ▟███▛
|
||||||
[32m▟███████████▛ ▟██████████▙[0m
|
▟███▛ ▜███▙ ▝▀▀▀▀
|
||||||
[32m▜██████████▛ ▟███████████▛[0m
|
▜██▛ ▜███▙ ▜██████████████████▛
|
||||||
[32m▟███▛ ▟▙ ▟███▛[0m
|
[38;2;127;132;156m▜▛ ▟████▙ ▜████████████████▛[0m
|
||||||
▟███▛ ▟██▙ ▟███▛
|
[38;2;127;132;156m▟██████▙ ▜███▙[0m
|
||||||
▟███▛ ▜███▙ ▝▀▀▀▀
|
[38;2;127;132;156m▟███▛▜███▙ ▜███▙[0m
|
||||||
▜██▛ ▜███▙ ▜██████████████████▛
|
[38;2;69;71;90m▟███▛ ▜███▙ ▜███▙[0m
|
||||||
[38;2;127;132;156m▜▛ ▟████▙ ▜████████████████▛[0m
|
[38;2;69;71;90m▝▀▀▀ ▀▀▀▀▘ ▀▀▀▘[0m
|
||||||
[38;2;127;132;156m▟██████▙ ▜███▙[0m
|
'';
|
||||||
[38;2;127;132;156m▟███▛▜███▙ ▜███▙[0m
|
};
|
||||||
[38;2;69;71;90m▟███▛ ▜███▙ ▜███▙[0m
|
|
||||||
[38;2;69;71;90m▝▀▀▀ ▀▀▀▀▘ ▀▀▀▘[0m
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
separator = "";
|
separator = "";
|
||||||
separator_color = "blue";
|
separator_color = "blue";
|
||||||
key_color = "blue";
|
key_color = "blue";
|
||||||
|
@ -60,14 +56,14 @@ with pkgs; {
|
||||||
palette = {
|
palette = {
|
||||||
type = "Dark";
|
type = "Dark";
|
||||||
visible = true;
|
visible = true;
|
||||||
glyph = "⬤ ";
|
glyph = " ⬤ ";
|
||||||
};
|
};
|
||||||
|
|
||||||
box = {
|
box = {
|
||||||
border = "rounded";
|
border = "rounded";
|
||||||
visible = true;
|
visible = true;
|
||||||
inner_margin = {
|
inner_margin = {
|
||||||
x = 1;
|
x = 0;
|
||||||
y = 1;
|
y = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
113
modules/home/shell/nushell/config.nu
Normal file
113
modules/home/shell/nushell/config.nu
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
const color_palette = {
|
||||||
|
rosewater: "#f5e0dc"
|
||||||
|
flamingo: "#f2cdcd"
|
||||||
|
pink: "#f5c2e7"
|
||||||
|
mauve: "#cba6f7"
|
||||||
|
red: "#f38ba8"
|
||||||
|
maroon: "#eba0ac"
|
||||||
|
peach: "#fab387"
|
||||||
|
yellow: "#f9e2af"
|
||||||
|
green: "#a6e3a1"
|
||||||
|
teal: "#94e2d5"
|
||||||
|
sky: "#89dceb"
|
||||||
|
sapphire: "#74c7ec"
|
||||||
|
blue: "#89b4fa"
|
||||||
|
lavender: "#b4befe"
|
||||||
|
text: "#cdd6f4"
|
||||||
|
subtext1: "#bac2de"
|
||||||
|
subtext0: "#a6adc8"
|
||||||
|
overlay2: "#9399b2"
|
||||||
|
overlay1: "#7f849c"
|
||||||
|
overlay0: "#6c7086"
|
||||||
|
surface2: "#585b70"
|
||||||
|
surface1: "#45475a"
|
||||||
|
surface0: "#313244"
|
||||||
|
base: "#1e1e2e"
|
||||||
|
mantle: "#181825"
|
||||||
|
crust: "#11111b"
|
||||||
|
}
|
||||||
|
|
||||||
|
$env.config.color_config = {
|
||||||
|
separator: $color_palette.overlay0
|
||||||
|
leading_trailing_space_bg: { attr: "n" }
|
||||||
|
header: { fg: $color_palette.blue attr: "b" }
|
||||||
|
empty: $color_palette.lavender
|
||||||
|
bool: $color_palette.lavender
|
||||||
|
int: $color_palette.peach
|
||||||
|
duration: $color_palette.text
|
||||||
|
filesize: {|e|
|
||||||
|
if $e < 1mb {
|
||||||
|
$color_palette.green
|
||||||
|
} else if $e < 100mb {
|
||||||
|
$color_palette.yellow
|
||||||
|
} else if $e < 500mb {
|
||||||
|
$color_palette.peach
|
||||||
|
} else if $e < 800mb {
|
||||||
|
$color_palette.maroon
|
||||||
|
} else if $e > 800mb {
|
||||||
|
$color_palette.red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
date: {|| (date now) - $in |
|
||||||
|
if $in < 1hr {
|
||||||
|
$color_palette.green
|
||||||
|
} else if $in < 1day {
|
||||||
|
$color_palette.yellow
|
||||||
|
} else if $in < 3day {
|
||||||
|
$color_palette.peach
|
||||||
|
} else if $in < 1wk {
|
||||||
|
$color_palette.maroon
|
||||||
|
} else if $in > 1wk {
|
||||||
|
$color_palette.red
|
||||||
|
}
|
||||||
|
}
|
||||||
|
range: $color_palette.text
|
||||||
|
float: $color_palette.text
|
||||||
|
string: $color_palette.text
|
||||||
|
nothing: $color_palette.text
|
||||||
|
binary: $color_palette.text
|
||||||
|
cellpath: $color_palette.text
|
||||||
|
row_index: { fg: $color_palette.mauve attr: "b" }
|
||||||
|
record: $color_palette.text
|
||||||
|
list: $color_palette.text
|
||||||
|
block: $color_palette.text
|
||||||
|
hints: $color_palette.overlay1
|
||||||
|
search_result: { fg: $color_palette.red bg: $color_palette.text }
|
||||||
|
|
||||||
|
shape_and: { fg: $color_palette.pink attr: "b" }
|
||||||
|
shape_binary: { fg: $color_palette.pink attr: "b" }
|
||||||
|
shape_block: { fg: $color_palette.blue attr: "b" }
|
||||||
|
shape_bool: $color_palette.teal
|
||||||
|
shape_custom: $color_palette.green
|
||||||
|
shape_datetime: { fg: $color_palette.teal attr: "b" }
|
||||||
|
shape_directory: $color_palette.teal
|
||||||
|
shape_external: $color_palette.teal
|
||||||
|
shape_externalarg: { fg: $color_palette.green attr: "b" }
|
||||||
|
shape_filepath: $color_palette.teal
|
||||||
|
shape_flag: { fg: $color_palette.blue attr: "b" }
|
||||||
|
shape_float: { fg: $color_palette.pink attr: "b" }
|
||||||
|
shape_garbage: { fg: $color_palette.text bg: $color_palette.red attr: "b" }
|
||||||
|
shape_globpattern: { fg: $color_palette.teal attr: "b" }
|
||||||
|
shape_int: { fg: $color_palette.pink attr: "b" }
|
||||||
|
shape_internalcall: { fg: $color_palette.teal attr: "b" }
|
||||||
|
shape_list: { fg: $color_palette.teal attr: "b" }
|
||||||
|
shape_literal: $color_palette.blue
|
||||||
|
shape_match_pattern: $color_palette.green
|
||||||
|
shape_matching_brackets: { attr: "u" }
|
||||||
|
shape_nothing: $color_palette.teal
|
||||||
|
shape_operator: $color_palette.peach
|
||||||
|
shape_or: { fg: $color_palette.pink attr: "b" }
|
||||||
|
shape_pipe: { fg: $color_palette.pink attr: "b" }
|
||||||
|
shape_range: { fg: $color_palette.peach attr: "b" }
|
||||||
|
shape_record: { fg: $color_palette.teal attr: "b" }
|
||||||
|
shape_redirection: { fg: $color_palette.pink attr: "b" }
|
||||||
|
shape_signature: { fg: $color_palette.green attr: "b" }
|
||||||
|
shape_string: $color_palette.green
|
||||||
|
shape_string_interpolation: { fg: $color_palette.teal attr: "b" }
|
||||||
|
shape_table: { fg: $color_palette.blue attr: "b" }
|
||||||
|
shape_variable: $color_palette.pink
|
||||||
|
|
||||||
|
background: $color_palette.base
|
||||||
|
foreground: $color_palette.text
|
||||||
|
cursor: $color_palette.blue
|
||||||
|
}
|
11
modules/home/shell/nushell/default.nix
Normal file
11
modules/home/shell/nushell/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{pkgs, ...}:
|
||||||
|
with pkgs; {
|
||||||
|
programs = {
|
||||||
|
carapace.enable = true;
|
||||||
|
|
||||||
|
nushell = {
|
||||||
|
enable = true;
|
||||||
|
configFile.source = ./config.nu;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,3 +1,115 @@
|
||||||
{...}: {
|
{...}: {
|
||||||
programs.wezterm.enable = true;
|
programs.wezterm = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
local wezterm = require('wezterm')
|
||||||
|
local c = wezterm.config_builder()
|
||||||
|
|
||||||
|
local resize_amount = 3;
|
||||||
|
|
||||||
|
local wezmodeConfig = {
|
||||||
|
theme = {
|
||||||
|
textColor = "white",
|
||||||
|
hintColor = "#a6e3a1",
|
||||||
|
normalModeColor = "#cba6f7",
|
||||||
|
modeTextColor = "#11111b",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wezterm.plugin.require('https://github.com/nekowinston/wezterm-bar').apply_to_config(c, {
|
||||||
|
position = 'bottom',
|
||||||
|
max_width = 32,
|
||||||
|
dividers = 'slant_right',
|
||||||
|
indicator = {
|
||||||
|
leader = {
|
||||||
|
enabled = true,
|
||||||
|
off = ' ',
|
||||||
|
on = ' ',
|
||||||
|
},
|
||||||
|
mode = {
|
||||||
|
enabled = true,
|
||||||
|
names = {
|
||||||
|
resize_mode = 'RESIZE',
|
||||||
|
copy_mode = 'VISUAL',
|
||||||
|
search_mode = 'SEARCH',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tabs = {
|
||||||
|
numerals = 'arabic',
|
||||||
|
pane_count = 'subscript',
|
||||||
|
brackets = {
|
||||||
|
active = { "", ':' },
|
||||||
|
inactive = { "", ':' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
clock = {
|
||||||
|
enabled = true,
|
||||||
|
format = '%l:%M %p',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
local act = wezterm.action
|
||||||
|
|
||||||
|
local keybinds = {
|
||||||
|
{
|
||||||
|
key = 'Enter',
|
||||||
|
mods = 'CTRL|SHIFT',
|
||||||
|
action = act.SplitHorizontal({ domain = 'CurrentPaneDomain' }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'h',
|
||||||
|
mods = 'ALT|SHIFT',
|
||||||
|
action = act.ActivatePaneDirection('Left'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'l',
|
||||||
|
mods = 'ALT|SHIFT',
|
||||||
|
action = act.ActivatePaneDirection 'Right',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'k',
|
||||||
|
mods = 'ALT|SHIFT',
|
||||||
|
action = act.ActivatePaneDirection 'Up',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 'j',
|
||||||
|
mods = 'ALT|SHIFT',
|
||||||
|
action = act.ActivatePaneDirection 'Down',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key = 't',
|
||||||
|
mods = 'CTRL|SHIFT',
|
||||||
|
action = act.SpawnCommandInNewTab { cwd = wezterm.home_dir },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local config = {
|
||||||
|
initial_cols = 160,
|
||||||
|
adjust_window_size_when_changing_font_size = false,
|
||||||
|
color_scheme = 'Catppuccin Mocha',
|
||||||
|
cursor_blink_ease_in = 'Constant',
|
||||||
|
cursor_blink_ease_out = 'Constant',
|
||||||
|
cursor_blink_rate = 500,
|
||||||
|
default_cursor_style = 'BlinkingBar',
|
||||||
|
enable_kitty_graphics = true,
|
||||||
|
enable_scroll_bar = false,
|
||||||
|
enable_wayland = false,
|
||||||
|
font_size = 18,
|
||||||
|
font = wezterm.font('Maple Mono NF'),
|
||||||
|
keys = keybinds,
|
||||||
|
front_end = 'OpenGL',
|
||||||
|
underline_position = -4,
|
||||||
|
use_fancy_tab_bar = false,
|
||||||
|
window_background_opacity = 0.8,
|
||||||
|
window_padding = { left = 0, right = 0, top = 0, bottom = 0 },
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v in pairs(config) do
|
||||||
|
c[k] = v
|
||||||
|
end
|
||||||
|
|
||||||
|
return c
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,63 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
programs.vscode = {
|
|
||||||
enable = true;
|
|
||||||
package =
|
|
||||||
if pkgs.hostPlatform.isDarwin
|
|
||||||
then pkgs.vscode
|
|
||||||
else pkgs.vscode.fhsWithPackages (ps: with ps; [rustup zlib openssl.dev pkg-config]);
|
|
||||||
|
|
||||||
extensions = with pkgs.vscode-extensions; [
|
|
||||||
bbenoist.nix
|
|
||||||
catppuccin.catppuccin-vsc
|
|
||||||
catppuccin.catppuccin-vsc-icons
|
|
||||||
llvm-vs-code-extensions.vscode-clangd
|
|
||||||
kamadorueda.alejandra
|
|
||||||
mkhl.direnv
|
|
||||||
usernamehw.errorlens
|
|
||||||
vadimcn.vscode-lldb
|
|
||||||
vscodevim.vim
|
|
||||||
];
|
|
||||||
|
|
||||||
userSettings = {
|
|
||||||
"files.autoSave" = "afterDelay";
|
|
||||||
|
|
||||||
"editor.fontFamily" = "Iosevka Comfy Motion";
|
|
||||||
"editor.fontLigatures" = true;
|
|
||||||
"editor.fontSize" =
|
|
||||||
if pkgs.hostPlatform.isDarwin
|
|
||||||
then 14
|
|
||||||
else 16;
|
|
||||||
"editor.formatOnSave" = true;
|
|
||||||
"editor.minimap.enabled" = false;
|
|
||||||
|
|
||||||
"git.autofetch" = true;
|
|
||||||
"git.confirmSync" = false;
|
|
||||||
"git.enableSmartCommit" = true;
|
|
||||||
|
|
||||||
"vim.camelCaseMotion.enable" = true;
|
|
||||||
"vim.smartRelativeLine" = false;
|
|
||||||
"vim.sneak" = true;
|
|
||||||
"vim.useSystemClipboard" = true;
|
|
||||||
"vim.normalModeKeyBindingsNonRecursive" = [
|
|
||||||
{
|
|
||||||
before = ["K"];
|
|
||||||
commands = ["editor.action.showHover"];
|
|
||||||
silent = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
"mesonbuild.downloadLanguageServer" = true;
|
|
||||||
|
|
||||||
"terminal.integrated.fontSize" =
|
|
||||||
if pkgs.hostPlatform.isDarwin
|
|
||||||
then 14
|
|
||||||
else 16;
|
|
||||||
|
|
||||||
"workbench.colorTheme" = "Catppuccin Mocha";
|
|
||||||
"workbench.iconTheme" = "catppuccin-mocha";
|
|
||||||
|
|
||||||
"window.menuBarVisibility" = "toggle";
|
|
||||||
"window.titleBarStyle" = "custom";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
110
modules/nixos/appimage/default.nix
Normal file
110
modules/nixos/appimage/default.nix
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
{pkgs, ...}:
|
||||||
|
with pkgs; {
|
||||||
|
boot.binfmt.registrations.appimage = {
|
||||||
|
wrapInterpreterInShell = false;
|
||||||
|
interpreter = "${appimage-run}/bin/appimage-run";
|
||||||
|
recognitionType = "magic";
|
||||||
|
offset = 0;
|
||||||
|
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
|
||||||
|
magicOrExtension = ''\x7fELF....AI\x02'';
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.appimage-menu-updater = let
|
||||||
|
appimage-menu-update = writeShellScript "appimage-menu-updater.sh" ''
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
|
remove_old_files () {
|
||||||
|
for path in "$HOME"/.local/share/applications/appimage-menu-updater*; do
|
||||||
|
rm "$path"
|
||||||
|
done
|
||||||
|
for path in "$HOME"/.local/share/icons/hicolor/appimage-menu-updater*; do
|
||||||
|
rm "$path"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
update_each () {
|
||||||
|
path="$1"
|
||||||
|
file="$2"
|
||||||
|
|
||||||
|
echo "found $file"
|
||||||
|
|
||||||
|
desktop_source=$(${p7zip.outPath}/bin/7z l -ba -slt "$path" | grep '\.desktop$' | head -n1 | sed --expression 's/Path = //')
|
||||||
|
desktop_target="$HOME/.local/share/applications/appimage-menu-updater-$file.desktop"
|
||||||
|
${p7zip.outPath}/bin/7z e "$path" "$desktop_source" -y -so > "$desktop_target"
|
||||||
|
sed -i "s@Exec=.*@Exec=${appimage-run.outPath}/bin/appimage-run $path@" "$desktop_target"
|
||||||
|
|
||||||
|
update_icon "$path" "$desktop_target"
|
||||||
|
}
|
||||||
|
|
||||||
|
update_icon () {
|
||||||
|
path="$1"
|
||||||
|
desktop_target="$2"
|
||||||
|
|
||||||
|
echo "updating icon"
|
||||||
|
|
||||||
|
icon_link_proto_source=$(grep Icon= "$desktop_target" | head -n1 | sed 's/Icon=//')
|
||||||
|
icon_link_source=$(${p7zip.outPath}/bin/7z l -ba -slt "$path" | grep -e "Path = $icon_link_proto_source.\(png\|svg\)" | head -n1 | sed 's/Path = //')
|
||||||
|
if [[ "$icon_link_source" ]]; then
|
||||||
|
tempdir=$(mktemp -d)
|
||||||
|
${p7zip.outPath}/bin/7z x "$path" "$icon_link_source" -o"$tempdir" >/dev/null
|
||||||
|
|
||||||
|
icon_temp_maybe_link=$(find "$tempdir"/* | head -n1)
|
||||||
|
if [[ -L "$icon_temp_maybe_link" ]]; then
|
||||||
|
icon_source=$(readlink "$icon_temp_maybe_link")
|
||||||
|
|
||||||
|
if [[ "$icon_source" ]]; then
|
||||||
|
${p7zip.outPath}/bin/7z x "$path" "$icon_source" -y -o"$tempdir"
|
||||||
|
if [[ -f "$tempdir/$icon_source" ]]; then
|
||||||
|
icon_temp_source=$tempdir/$icon_source
|
||||||
|
else
|
||||||
|
echo 'icon link target does not exists'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo 'icon link is invalid'
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
icon_temp_source=$icon_temp_maybe_link
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$icon_temp_source" ]]; then
|
||||||
|
icon_target="$HOME/.local/share/icons/hicolor/appimage-menu-updater-"$(basename "$icon_temp_source")
|
||||||
|
mv "$icon_temp_source" "$icon_target"
|
||||||
|
sed -i "s@Icon=.*@Icon=$icon_target@" "$desktop_target"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -Rf "$tempdir"
|
||||||
|
else
|
||||||
|
echo 'icon file not found'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
update () {
|
||||||
|
echo 'updating...'
|
||||||
|
|
||||||
|
remove_old_files
|
||||||
|
|
||||||
|
for path in "$HOME"/Applications/*.AppImage; do
|
||||||
|
update_each "$path" $(basename "$path")
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdir -p "$HOME/Applications"
|
||||||
|
|
||||||
|
update
|
||||||
|
while ${inotify-tools.outPath}/bin/inotifywait -e modify,delete,moved_to,moved_from "$HOME"/Applications; do
|
||||||
|
update
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
description = "AppImage Menu Updater";
|
||||||
|
unitConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "/bin/sh -c 'HOME=%h ${appimage-menu-update}'";
|
||||||
|
};
|
||||||
|
wantedBy = ["default.target"];
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,39 +1,3 @@
|
||||||
[git-abbr]
|
[linux-wallpaperengine-latest]
|
||||||
src.git = "https://github.com/pupbrained/fish-git-abbr"
|
src.git = "https://github.com/Almamu/linux-wallpaperengine"
|
||||||
fetch.github = "pupbrained/fish-git-abbr"
|
fetch.github = "Almamu/linux-wallpaperengine"
|
||||||
|
|
||||||
[replay-fish]
|
|
||||||
src.git = "https://github.com/jorgebucaran/replay.fish"
|
|
||||||
fetch.github = "jorgebucaran/replay.fish"
|
|
||||||
|
|
||||||
[license]
|
|
||||||
src.git = "https://github.com/oh-my-fish/plugin-license"
|
|
||||||
fetch.github = "oh-my-fish/plugin-license"
|
|
||||||
|
|
||||||
[wttr]
|
|
||||||
src.git = "https://github.com/oh-my-fish/plugin-wttr"
|
|
||||||
fetch.github = "oh-my-fish/plugin-wttr"
|
|
||||||
|
|
||||||
[gityaw]
|
|
||||||
src.git = "https://github.com/oh-my-fish/plugin-gityaw"
|
|
||||||
fetch.github = "oh-my-fish/plugin-gityaw"
|
|
||||||
|
|
||||||
[bang-bang]
|
|
||||||
src.git = "https://github.com/oh-my-fish/plugin-bang-bang"
|
|
||||||
fetch.github = "oh-my-fish/plugin-bang-bang"
|
|
||||||
|
|
||||||
[fix-window-role]
|
|
||||||
src.manual = "latest"
|
|
||||||
fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-28/fix-window-role.patch"
|
|
||||||
|
|
||||||
[poll]
|
|
||||||
src.manual = "latest"
|
|
||||||
fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/poll.patch"
|
|
||||||
|
|
||||||
[round-undecorated-frame]
|
|
||||||
src.manual = "latest"
|
|
||||||
fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/round-undecorated-frame.patch"
|
|
||||||
|
|
||||||
[system-appearance]
|
|
||||||
src.manual = "latest"
|
|
||||||
fetch.url = "https://raw.githubusercontent.com/d12frosted/homebrew-emacs-plus/master/patches/emacs-30/system-appearance.patch"
|
|
||||||
|
|
50
packages/lightly-boehs-qt6/default.nix
Normal file
50
packages/lightly-boehs-qt6/default.nix
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with pkgs;
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "lightly-boehs-qt6";
|
||||||
|
version = "v0.4.2";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "boehs";
|
||||||
|
repo = "Lightly";
|
||||||
|
rev = "00ca23447844114d41bfc0d37cf8823202c082e8";
|
||||||
|
sha256 = "sha256-NpgOcN9sDqgQMjqcfx92bfKohxaJpnwMgxb9MCu9uJM=";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = with kdePackages; [
|
||||||
|
kcmutils
|
||||||
|
kconfig
|
||||||
|
kdecoration
|
||||||
|
kirigami
|
||||||
|
kguiaddons
|
||||||
|
kcolorscheme
|
||||||
|
kcoreaddons
|
||||||
|
ki18n
|
||||||
|
kiconthemes
|
||||||
|
kwindowsystem
|
||||||
|
];
|
||||||
|
|
||||||
|
extraCmakeFlags = ["-DBUILD_TESTING=OFF"];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
kdePackages.qttools
|
||||||
|
kdePackages.extra-cmake-modules
|
||||||
|
kdePackages.wrapQtAppsHook
|
||||||
|
];
|
||||||
|
patches = [./missing.patch];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "A fork of the Lightly breeze theme style that aims to be visually modern and minimalistic";
|
||||||
|
mainProgram = "lightly-settings";
|
||||||
|
homepage = "https://github.com/boehs/Lightly";
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
maintainers = [maintainers.hikari];
|
||||||
|
platforms = platforms.all;
|
||||||
|
};
|
||||||
|
}
|
186
packages/lightly-boehs-qt6/missing.patch
Normal file
186
packages/lightly-boehs-qt6/missing.patch
Normal file
|
@ -0,0 +1,186 @@
|
||||||
|
diff --git a/kdecoration/config/CMakeLists.txt b/kdecoration/config/CMakeLists.txt
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..e4b08f0a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/kdecoration/config/CMakeLists.txt
|
||||||
|
@@ -0,0 +1,37 @@
|
||||||
|
+##### config classes ææææææ
|
||||||
|
+
|
||||||
|
+set(lightlydecoration_config_SRCS
|
||||||
|
+ ../lightlyexceptionlist.cpp
|
||||||
|
+ lightlyconfigwidget.cpp
|
||||||
|
+ lightlydetectwidget.cpp
|
||||||
|
+ lightlyexceptiondialog.cpp
|
||||||
|
+ lightlyexceptionlistwidget.cpp
|
||||||
|
+ lightlyexceptionmodel.cpp
|
||||||
|
+ lightlyitemmodel.cpp
|
||||||
|
+)
|
||||||
|
+ki18n_wrap_ui(lightlydecoration_config_SRCS
|
||||||
|
+ ui/lightlyconfigurationui.ui
|
||||||
|
+ ui/lightlydetectwidget.ui
|
||||||
|
+ ui/lightlyexceptiondialog.ui
|
||||||
|
+ ui/lightlyexceptionlistwidget.ui
|
||||||
|
+)
|
||||||
|
+
|
||||||
|
+kcoreaddons_add_plugin(kcm_lightlydecoration SOURCES kcm_lightlydecoration.cpp ${lightlydecoration_config_SRCS} INSTALL_NAMESPACE "${KDECORATION_KCM_PLUGIN_DIR}")
|
||||||
|
+kconfig_add_kcfg_files(kcm_lightlydecoration ../lightlysettings.kcfgc)
|
||||||
|
+target_include_directories(kcm_lightlydecoration PRIVATE ${CMAKE_SOURCE_DIR}/kdecoration ${CMAKE_BINARY_DIR}/kdecoration/)
|
||||||
|
+target_link_libraries(kcm_lightlydecoration
|
||||||
|
+ PUBLIC
|
||||||
|
+ Qt6::Core
|
||||||
|
+ Qt6::Gui
|
||||||
|
+ Qt6::DBus
|
||||||
|
+ KDecoration2::KDecoration
|
||||||
|
+ PRIVATE
|
||||||
|
+ KF6::CoreAddons
|
||||||
|
+ KF6::ConfigWidgets
|
||||||
|
+ KF6::GuiAddons
|
||||||
|
+ KF6::I18n
|
||||||
|
+ KF6::IconThemes
|
||||||
|
+ KF6::WindowSystem
|
||||||
|
+ KF6::KCMUtils
|
||||||
|
+)
|
||||||
|
+kcmutils_generate_desktop_file(kcm_lightlydecoration)
|
||||||
|
diff --git a/kdecoration/config/kcm_lightlydecoration.cpp b/kdecoration/config/kcm_lightlydecoration.cpp
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..de9ac802
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/kdecoration/config/kcm_lightlydecoration.cpp
|
||||||
|
@@ -0,0 +1,6 @@
|
||||||
|
+#include "lightlyconfigwidget.h"
|
||||||
|
+#include <KPluginFactory>
|
||||||
|
+
|
||||||
|
+K_PLUGIN_CLASS_WITH_JSON(Lightly::ConfigWidget, "kcm_lightlydecoration.json")
|
||||||
|
+
|
||||||
|
+#include "kcm_lightlydecoration.moc"
|
||||||
|
diff --git a/kdecoration/config/kcm_lightlydecoration.json b/kdecoration/config/kcm_lightlydecoration.json
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..d2013276
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/kdecoration/config/kcm_lightlydecoration.json
|
||||||
|
@@ -0,0 +1,60 @@
|
||||||
|
+{
|
||||||
|
+ "KPlugin": {
|
||||||
|
+ "Description": "Modify the appearance of window decorations",
|
||||||
|
+ "Description[ar]": "عدّل مظهر زخرفات النّوافذ",
|
||||||
|
+ "Description[az]": "Pəncərə tərtibatının görünüşünü dəyişdirin",
|
||||||
|
+ "Description[bg]": "Настройване на външния изглед на прозорците",
|
||||||
|
+ "Description[ca@valencia]": "Modifica l'aparença de les decoracions de les finestres",
|
||||||
|
+ "Description[ca]": "Modifica l'aparença de les decoracions de les finestres",
|
||||||
|
+ "Description[cs]": "Změnit vzhled dekorace oken",
|
||||||
|
+ "Description[da]": "Ændr vinduesdekorationers udseende",
|
||||||
|
+ "Description[de]": "Das Erscheinungsbild der Fensterdekoration ändern",
|
||||||
|
+ "Description[el]": "Τροποποίηση εμφάνισης της διακόσμησης παραθύρου",
|
||||||
|
+ "Description[en_GB]": "Modify the appearance of window decorations",
|
||||||
|
+ "Description[es]": "Modificar el aspecto de las decoraciones de las ventanas",
|
||||||
|
+ "Description[et]": "Akna dekoratsioonide välimuse muutmine",
|
||||||
|
+ "Description[eu]": "Aldatu leiho apainduren itxura",
|
||||||
|
+ "Description[fi]": "Muuta ikkunoiden kehysten ulkoasua",
|
||||||
|
+ "Description[fr]": "Modifier l'apparence des décorations des fenêtres",
|
||||||
|
+ "Description[gl]": "Modifica a aparencia da decoración da xanela",
|
||||||
|
+ "Description[he]": "התאם את מראה מסגרות החלונות",
|
||||||
|
+ "Description[hi]": "विंडो सजावटों की दिखावट को परिवर्तित करें",
|
||||||
|
+ "Description[hu]": "Az ablakdekorációk megjelenésének módosítása",
|
||||||
|
+ "Description[ia]": "Modifica le apparentia de decorationes de fenestra",
|
||||||
|
+ "Description[id]": "Memodifikasi penampilan dekorasi window",
|
||||||
|
+ "Description[it]": "Modifica l'aspetto delle decorazioni delle finestre",
|
||||||
|
+ "Description[ja]": "ウィンドウ装飾の外観を編集",
|
||||||
|
+ "Description[ko]": "창 장식의 모습을 수정합니다",
|
||||||
|
+ "Description[lt]": "Keisti lango dekoracijų išvaizdą",
|
||||||
|
+ "Description[nb]": "Endre utseende for vindusdekorasjoner",
|
||||||
|
+ "Description[nl]": "Wijzig het uiterlijk van vensterdecoraties",
|
||||||
|
+ "Description[nn]": "Endra utsjånad på vindaugspynt",
|
||||||
|
+ "Description[pa]": "ਵਿੰਡੋ ਸਜਾਵਟ ਦੀ ਦਿੱਖ ਨੂੰ ਸੋਧੋ",
|
||||||
|
+ "Description[pl]": "Zmień wygląd i wystrój okien",
|
||||||
|
+ "Description[pt]": "Modificar a aparência das decorações das janelas",
|
||||||
|
+ "Description[pt_BR]": "Modifica a aparência das decorações da janela",
|
||||||
|
+ "Description[ro]": "Modifică aspectul decorațiilor pentru ferestre",
|
||||||
|
+ "Description[ru]": "Настройка заголовков окон в стиле Breeze",
|
||||||
|
+ "Description[sk]": "Zmena vzhľadu dekorácie okien",
|
||||||
|
+ "Description[sl]": "Spremenite videz okrasitve oken",
|
||||||
|
+ "Description[sr@ijekavian]": "Измијените изглед декорација прозора",
|
||||||
|
+ "Description[sr@ijekavianlatin]": "Izmijenite izgled dekoracija prozora",
|
||||||
|
+ "Description[sr@latin]": "Izmenite izgled dekoracija prozora",
|
||||||
|
+ "Description[sr]": "Измените изглед декорација прозора",
|
||||||
|
+ "Description[sv]": "Ändra utseendet hos fönsterdekorationer",
|
||||||
|
+ "Description[tg]": "Тағйир додани ороиши намуди зоҳирии равзанаҳо",
|
||||||
|
+ "Description[tr]": "Pencere dekorasyonlarının görünümünü değiştir",
|
||||||
|
+ "Description[uk]": "Зміна вигляду декорацій вікон",
|
||||||
|
+ "Description[x-test]": "xxModify the appearance of window decorationsxx",
|
||||||
|
+ "Description[zh_CN]": "修改窗口装饰外观",
|
||||||
|
+ "Description[zh_TW]": "變更視窗裝飾外觀",
|
||||||
|
+ "Icon": "preferences-system-windows",
|
||||||
|
+ "Name": "Lightly: Window Decoration",
|
||||||
|
+ "ServiceTypes": [
|
||||||
|
+ "KCModule"
|
||||||
|
+ ]
|
||||||
|
+ },
|
||||||
|
+ "X-KDE-Keywords": "Lightly,decoration",
|
||||||
|
+ "X-KDE-ParentApp": "kcontrol",
|
||||||
|
+ "X-KDE-Weight": 50
|
||||||
|
+}
|
||||||
|
diff --git a/kstyle/config/lightlystyleconfig.json b/kstyle/config/lightlystyleconfig.json
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..f4f58aeb
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/kstyle/config/lightlystyleconfig.json
|
||||||
|
@@ -0,0 +1,59 @@
|
||||||
|
+{
|
||||||
|
+ "KPlugin": {
|
||||||
|
+ "Description": "Modify the appearance of widgets",
|
||||||
|
+ "Description[ar]": "عدّل مظهر الودجات",
|
||||||
|
+ "Description[az]": "Vidjetin görünüşünü dəyişin",
|
||||||
|
+ "Description[bg]": "Настройване на външния изглед на приставките",
|
||||||
|
+ "Description[ca@valencia]": "Modifica l'aparença dels ginys",
|
||||||
|
+ "Description[ca]": "Modifica l'aparença dels ginys",
|
||||||
|
+ "Description[cs]": "Změnit vzhled widgetů",
|
||||||
|
+ "Description[da]": "Ændr kontrollers udseende",
|
||||||
|
+ "Description[de]": "Das Erscheinungsbild der Bedienelemente ändern",
|
||||||
|
+ "Description[el]": "Τροποποίηση εμφάνισης συστατικών",
|
||||||
|
+ "Description[en_GB]": "Modify the appearance of widgets",
|
||||||
|
+ "Description[es]": "Modificar el aspecto de los elementos gráficos",
|
||||||
|
+ "Description[et]": "Vidinate välimuse muutmine",
|
||||||
|
+ "Description[eu]": "Aldatu trepeten itxura",
|
||||||
|
+ "Description[fi]": "Muuta elementtien ulkoasua",
|
||||||
|
+ "Description[fr]": "Modifier l'apparence des composants graphiques",
|
||||||
|
+ "Description[gl]": "Modifica a aparencia dos trebellos",
|
||||||
|
+ "Description[he]": "התאם את המראה של היישומונים",
|
||||||
|
+ "Description[hi]": "विजेट की दिखावट को परिवर्तित करें",
|
||||||
|
+ "Description[hu]": "Az elemek megjelenésének módosítása",
|
||||||
|
+ "Description[ia]": "Modifica le apparentia de widgets",
|
||||||
|
+ "Description[id]": "Memodifikasi penampilan widget",
|
||||||
|
+ "Description[it]": "Modifica l'aspetto degli oggetti",
|
||||||
|
+ "Description[ja]": "ウィジェットの外観を編集",
|
||||||
|
+ "Description[ko]": "위젯의 모습을 수정합니다",
|
||||||
|
+ "Description[lt]": "Keisti valdiklių išvaizdą",
|
||||||
|
+ "Description[nb]": "Endre utseende for skjermelementer",
|
||||||
|
+ "Description[nl]": "Wijzig het uiterlijk van widgets",
|
||||||
|
+ "Description[nn]": "Endra utsjånaden på skjermkontrollar",
|
||||||
|
+ "Description[pl]": "Zmień wygląd interfejsu",
|
||||||
|
+ "Description[pt]": "Modificar a aparência dos elementos gráficos",
|
||||||
|
+ "Description[pt_BR]": "Modifica a aparência dos widgets",
|
||||||
|
+ "Description[ro]": "Modifică aspectul controalelor",
|
||||||
|
+ "Description[ru]": "Настройка элементов интерфейса в стиле Breeze",
|
||||||
|
+ "Description[sk]": "Zmena vzhľadu miniaplikácií",
|
||||||
|
+ "Description[sl]": "Spremenite videz gradnikov",
|
||||||
|
+ "Description[sr@ijekavian]": "Измијените изглед виџета̂",
|
||||||
|
+ "Description[sr@ijekavianlatin]": "Izmijenite izgled vidžetâ̂",
|
||||||
|
+ "Description[sr@latin]": "Izmenite izgled vidžetâ̂",
|
||||||
|
+ "Description[sr]": "Измените изглед виџета̂",
|
||||||
|
+ "Description[sv]": "Ändra utseende hos grafiska komponenter",
|
||||||
|
+ "Description[tg]": "Тағйир додани намуди зоҳирии виҷетҳо",
|
||||||
|
+ "Description[tr]": "Araç takımlarının görünümünü değiştir",
|
||||||
|
+ "Description[uk]": "Зміна вигляду віджетів",
|
||||||
|
+ "Description[x-test]": "xxModify the appearance of widgetsxx",
|
||||||
|
+ "Description[zh_CN]": "调整窗口部件外观",
|
||||||
|
+ "Description[zh_TW]": "變更元件外觀",
|
||||||
|
+ "Icon": "preferences-desktop-theme",
|
||||||
|
+ "Name": "Lightly: Widget Style",
|
||||||
|
+ "ServiceTypes": [
|
||||||
|
+ "KCModule"
|
||||||
|
+ ]
|
||||||
|
+ },
|
||||||
|
+ "X-KDE-Keywords": "lightly,widget,style",
|
||||||
|
+ "X-KDE-ParentApp": "kcontrol",
|
||||||
|
+ "X-KDE-Weight": 60
|
||||||
|
+}
|
|
@ -1,7 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 Rnre+g 2qc+9205o7uT68Fo6ZmJWdOC8TkIvfNVFiuEop4crH8
|
|
||||||
eCywuzUaNYQ6+23DBlnhK7FExAvFWDrjzcOi7sIMDzY
|
|
||||||
-> ssh-ed25519 TwwU0w fMO1xuxh/nEE2mhscChrxnz7ZKv7LJQgivORxH/QLSk
|
|
||||||
U4acV2ubZaVtpLceEjW3/J7q3YENNeD55vLsivCA/Pw
|
|
||||||
--- /4REYNdKs9m2g1OtlLcPDhOJFZs9atAP/fW6UyNeXa8
|
|
||||||
š0!<21>b(½}ׄ³õ½ÈGË$2…tðÂ!Äwþýr>Ý/þ]oŠÎ'ã<>TvPÁt¿@?Д<C390>ÌfUÁ©í‚0΋òæÍO½5
|
|
|
@ -1,10 +0,0 @@
|
||||||
age-encryption.org/v1
|
|
||||||
-> ssh-ed25519 Rnre+g OUN16bvLoM64rGq1M1TkQyRBOHygfDfhlQ5GS+8tZ1A
|
|
||||||
m3TVkE8x+XycNBUGMEPNO24kZT+vlCVCPM/IP44hTt8
|
|
||||||
-> ssh-ed25519 TwwU0w GA9PhE+RTCMGgV4UP/Km0ok8d6T/lEiqC2pRilhd+h8
|
|
||||||
uELdOpsKjQacjZooio7PMN/qjT5gHt+8ofaKNZNjJCo
|
|
||||||
--- S7SPN5ps/jdCjG+3c6aN6UgKC958ISDvJx7UjVDwrFQ
|
|
||||||
/Òä<C392>Ø÷;Ô@é¶Ã2ˆ‡¢öW/Œ){ä!1*ÎÂî»Ø 4¢ÓÕöÎZ`Êd‡*›t ;DÌ
|
|
||||||
xŸÒÊÞK%Ǫ‰r_ŒÓ]Oœ±¤¥Ä†=\N¹ô¬à’=â
|
|
||||||
…Ÿ·Öeüz
1y0ݿÓÒèoþpn’ÿ,˜cÒÔÑÀðµ
|
|
||||||
ò.
|
|
|
@ -1,8 +0,0 @@
|
||||||
let
|
|
||||||
marshall = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2vmQG3o3yMTXUbHYM7evCpUo/V+gK8Lofajt/hEjrB navis";
|
|
||||||
system = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJe8dn/plNp53zGSzHTZjjrQbo94WWMZf7508agyIwQQ agenix";
|
|
||||||
in {
|
|
||||||
"passwd.age".publicKeys = [marshall system];
|
|
||||||
"mailer_passwd.age".publicKeys = [marshall system];
|
|
||||||
"token.age".publicKeys = [marshall system];
|
|
||||||
}
|
|
Binary file not shown.
|
@ -1,5 +0,0 @@
|
||||||
line_endings = "Unix"
|
|
||||||
indent_type = "Spaces"
|
|
||||||
indent_width = 2
|
|
||||||
quote_style = "AutoPreferSingle"
|
|
||||||
call_parentheses = "Always"
|
|
|
@ -1,159 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
environment.variables.FLAKE = "/Users/marshall/nix-config";
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; ([
|
|
||||||
font-awesome
|
|
||||||
inter
|
|
||||||
maple-mono
|
|
||||||
nerdfonts
|
|
||||||
]
|
|
||||||
++ (with iosevka-comfy; [
|
|
||||||
comfy
|
|
||||||
comfy-duo
|
|
||||||
comfy-fixed
|
|
||||||
comfy-motion
|
|
||||||
comfy-motion-duo
|
|
||||||
comfy-motion-fixed
|
|
||||||
comfy-wide
|
|
||||||
comfy-wide-duo
|
|
||||||
comfy-wide-fixed
|
|
||||||
comfy-wide-motion
|
|
||||||
comfy-wide-motion-duo
|
|
||||||
comfy-wide-motion-fixed
|
|
||||||
]));
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
computerName = "MacBook Air";
|
|
||||||
hostName = "canis";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
interval.Day = 7;
|
|
||||||
};
|
|
||||||
|
|
||||||
daemonIOLowPriority = true;
|
|
||||||
daemonProcessType = "Adaptive";
|
|
||||||
distributedBuilds = true;
|
|
||||||
nixPath = ["nixpkgs=${inputs.nixpkgs}"];
|
|
||||||
registry = lib.mapAttrs (_: v: {flake = v;}) inputs;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
auto-optimise-store = true;
|
|
||||||
builders-use-substitutes = true;
|
|
||||||
extra-experimental-features = "nix-command flakes";
|
|
||||||
flake-registry = "/etc/nix/registry.json";
|
|
||||||
keep-derivations = true;
|
|
||||||
keep-outputs = true;
|
|
||||||
max-jobs = "auto";
|
|
||||||
warn-dirty = false;
|
|
||||||
extra-sandbox-paths = ["/nix/var/cache/ccache"];
|
|
||||||
|
|
||||||
substituters = [
|
|
||||||
"https://cache.nixos.org"
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-substituters = [
|
|
||||||
"cache.nixos.org"
|
|
||||||
"nix-community.cachix.org"
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-public-keys = [
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-users = ["marshall"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
fish.enable = true;
|
|
||||||
gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSSHSupport = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
security.pam.enableSudoTouchIdAuth = true;
|
|
||||||
|
|
||||||
services = {
|
|
||||||
nix-daemon.enable = true;
|
|
||||||
|
|
||||||
emacs = {
|
|
||||||
enable = true;
|
|
||||||
package = inputs.emacs.packages.${pkgs.system}.default;
|
|
||||||
};
|
|
||||||
|
|
||||||
skhd = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.skhd;
|
|
||||||
|
|
||||||
skhdConfig = ''
|
|
||||||
alt - return : open -na "WezTerm"
|
|
||||||
alt - w : open -a "Arc"
|
|
||||||
|
|
||||||
cmd - space : yabai -m window --toggle float
|
|
||||||
|
|
||||||
shift + cmd - q : yabai -m window --close
|
|
||||||
|
|
||||||
alt - h : yabai -m window --focus west
|
|
||||||
alt - j : yabai -m window --focus south
|
|
||||||
alt - k : yabai -m window --focus north
|
|
||||||
alt - l : yabai -m window --focus east
|
|
||||||
|
|
||||||
shift + cmd - h : yabai -m window --swap west
|
|
||||||
shift + cmd - j : yabai -m window --swap south
|
|
||||||
shift + cmd - k : yabai -m window --swap north
|
|
||||||
shift + cmd - l : yabai -m window --swap east
|
|
||||||
|
|
||||||
shift + cmd - 1 : yabai -m window --space 1
|
|
||||||
shift + cmd - 2 : yabai -m window --space 2
|
|
||||||
shift + cmd - 3 : yabai -m window --space 3
|
|
||||||
shift + cmd - 4 : yabai -m window --space 4
|
|
||||||
shift + cmd - 5 : yabai -m window --space 5
|
|
||||||
shift + cmd - 6 : yabai -m window --space 6
|
|
||||||
shift + cmd - 7 : yabai -m window --space 7
|
|
||||||
shift + cmd - 8 : yabai -m window --space 8
|
|
||||||
shift + cmd - 9 : yabai -m window --space 9
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.marshall = {
|
|
||||||
name = "marshall";
|
|
||||||
home = "/Users/marshall";
|
|
||||||
};
|
|
||||||
|
|
||||||
system = {
|
|
||||||
keyboard.enableKeyMapping = true;
|
|
||||||
stateVersion = 5;
|
|
||||||
|
|
||||||
defaults = {
|
|
||||||
NSGlobalDomain = {
|
|
||||||
KeyRepeat = 1;
|
|
||||||
NSAutomaticCapitalizationEnabled = false;
|
|
||||||
NSAutomaticSpellingCorrectionEnabled = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
dock = {
|
|
||||||
autohide = true;
|
|
||||||
autohide-delay = 1000.0;
|
|
||||||
expose-animation-duration = 0.0;
|
|
||||||
orientation = "bottom";
|
|
||||||
showhidden = true;
|
|
||||||
tilesize = 48;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
260
systems/aarch64-linux/canis-nixos/default.nix
Normal file
260
systems/aarch64-linux/canis-nixos/default.nix
Normal file
|
@ -0,0 +1,260 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib // pkgs // inputs; {
|
||||||
|
imports = [
|
||||||
|
./hardware.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
security = {
|
||||||
|
rtkit.enable = true;
|
||||||
|
|
||||||
|
pam.loginLimits = [
|
||||||
|
{
|
||||||
|
domain = "*";
|
||||||
|
item = "nofile";
|
||||||
|
type = "-";
|
||||||
|
value = "32768";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
domain = "*";
|
||||||
|
item = "memlock";
|
||||||
|
type = "-";
|
||||||
|
value = "32768";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
sudo.extraConfig = ''
|
||||||
|
Defaults lecture = never, pwfeedback
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
console.catppuccin.enable = true;
|
||||||
|
|
||||||
|
systemd.user.extraConfig = let
|
||||||
|
path = lib.concatStringsSep ":" [
|
||||||
|
"/run/wrappers/bin"
|
||||||
|
"/etc/profiles/per-user/%u/bin"
|
||||||
|
"/nix/var/nix/profiles/default/bin"
|
||||||
|
"/run/current-system/sw/bin"
|
||||||
|
];
|
||||||
|
in ''
|
||||||
|
DefaultEnvironment="PATH=${path}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
virtualisation.podman = {
|
||||||
|
enable = true;
|
||||||
|
dockerCompat = true;
|
||||||
|
dockerSocket.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
sessionVariables = {
|
||||||
|
BROWSER = "firefox";
|
||||||
|
EDITOR = "nvim";
|
||||||
|
TERMINAL = "wezterm";
|
||||||
|
DIRENV_WARN_TIMEOUT = "100s";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemPackages = [
|
||||||
|
gnome.nautilus
|
||||||
|
internal.lightly-boehs-qt6
|
||||||
|
snowfallorg.flake
|
||||||
|
sound-theme-freedesktop
|
||||||
|
xclip
|
||||||
|
yt-dlp
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
supportedFilesystems = ["btrfs" "ntfs"];
|
||||||
|
|
||||||
|
plymouth = {
|
||||||
|
enable = true;
|
||||||
|
catppuccin.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraModprobeConfig = "options apple_dcp show_notch=1";
|
||||||
|
|
||||||
|
loader = {
|
||||||
|
efi.canTouchEfiVariables = false;
|
||||||
|
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 20;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = let
|
||||||
|
mappedRegistry = pipe inputs [
|
||||||
|
(filterAttrs (_: isType "flake"))
|
||||||
|
(mapAttrs (_: flake: {inherit flake;}))
|
||||||
|
(x: x // {nixpkgs.flake = nixpkgs;})
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
package = mkForce nixSuper;
|
||||||
|
registry = mappedRegistry // optionalAttrs (config.nix.package == nixSuper) {default = mappedRegistry.nixpkgs;};
|
||||||
|
nixPath = mapAttrsToList (key: _: "${key}=flake:${key}") config.nix.registry;
|
||||||
|
|
||||||
|
daemonCPUSchedPolicy = "batch";
|
||||||
|
daemonIOSchedClass = "idle";
|
||||||
|
daemonIOSchedPriority = 7;
|
||||||
|
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "Sat *-*-* 03:00";
|
||||||
|
options = "--delete-older-than 30d";
|
||||||
|
};
|
||||||
|
|
||||||
|
optimise = {
|
||||||
|
automatic = true;
|
||||||
|
dates = ["04:00"];
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
auto-optimise-store = true;
|
||||||
|
builders-use-substitutes = true;
|
||||||
|
flake-registry = "/etc/nix/registry.json";
|
||||||
|
keep-going = true;
|
||||||
|
log-lines = 30;
|
||||||
|
max-jobs = "auto";
|
||||||
|
sandbox-fallback = false;
|
||||||
|
sandbox = true;
|
||||||
|
system-features = ["nixos-test" "kvm" "recursive-nix" "big-parallel"];
|
||||||
|
use-cgroups = true;
|
||||||
|
use-xdg-base-directories = true;
|
||||||
|
warn-dirty = false;
|
||||||
|
|
||||||
|
allowed-users = ["root" "@wheel" "nix-builder"];
|
||||||
|
trusted-users = ["root" "@wheel" "nix-builder"];
|
||||||
|
|
||||||
|
min-free = "${toString (5 * 1024 * 1024 * 1024)}";
|
||||||
|
max-free = "${toString (10 * 1024 * 1024 * 1024)}";
|
||||||
|
|
||||||
|
extra-experimental-features = [
|
||||||
|
"flakes" # flakes
|
||||||
|
"nix-command" # experimental nix commands
|
||||||
|
"recursive-nix" # let nix invoke itself
|
||||||
|
"ca-derivations" # content addressed nix
|
||||||
|
"auto-allocate-uids" # allow nix to automatically pick UIDs, rather than creating nixbld* user accounts
|
||||||
|
"cgroups" # allow nix to execute builds inside cgroups
|
||||||
|
];
|
||||||
|
|
||||||
|
substituters = [
|
||||||
|
"https://cache.nixos.org"
|
||||||
|
"https://cache.privatevoid.net"
|
||||||
|
"https://cuda-maintainers.cachix.org"
|
||||||
|
"https://hyprland.cachix.org"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
"https://nyx.chaotic.cx/"
|
||||||
|
];
|
||||||
|
|
||||||
|
trusted-public-keys = [
|
||||||
|
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
||||||
|
"cache.privatevoid.net:SErQ8bvNWANeAvtsOESUwVYr2VJynfuc9JRwlzTTkVg="
|
||||||
|
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
|
||||||
|
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
|
||||||
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
"nyx.chaotic.cx-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
dconf.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
|
gamemode.enable = true;
|
||||||
|
steam.enable = false;
|
||||||
|
gnupg.agent.enable = true;
|
||||||
|
|
||||||
|
hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||||
|
};
|
||||||
|
|
||||||
|
nh = {
|
||||||
|
enable = true;
|
||||||
|
flake = "/home/marshall/nix-config";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
useDHCP = mkDefault true;
|
||||||
|
firewall.enable = false;
|
||||||
|
nameservers = ["1.1.1.1" "1.0.0.1"];
|
||||||
|
wireless.iwd = {
|
||||||
|
enable = true;
|
||||||
|
settings.General.EnableNetworkConfiguration = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "America/New_York";
|
||||||
|
|
||||||
|
services = {
|
||||||
|
btrfs.autoScrub.enable = true;
|
||||||
|
flatpak.enable = true;
|
||||||
|
getty.autologinUser = "marshall";
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
|
openssh.enable = true;
|
||||||
|
|
||||||
|
greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = rec {
|
||||||
|
initial_session = {
|
||||||
|
command = "${pkgs.hyprland}/bin/Hyprland";
|
||||||
|
user = "marshall";
|
||||||
|
};
|
||||||
|
|
||||||
|
default_session = initial_session;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
libinput = {
|
||||||
|
enable = true;
|
||||||
|
touchpad.naturalScrolling = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xserver = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
users.marshall = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = ["wheel" "gamemode" "libvirtd" "networkmanager"];
|
||||||
|
shell = fish;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
asahi = {
|
||||||
|
peripheralFirmwareDirectory = ./firmware;
|
||||||
|
useExperimentalGPUDriver = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
bluetooth.enable = true;
|
||||||
|
i2c.enable = true;
|
||||||
|
|
||||||
|
opengl = {
|
||||||
|
enable = true;
|
||||||
|
driSupport = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
system.stateVersion = "24.05";
|
||||||
|
}
|
BIN
systems/aarch64-linux/canis-nixos/firmware/all_firmware.tar.gz
Executable file
BIN
systems/aarch64-linux/canis-nixos/firmware/all_firmware.tar.gz
Executable file
Binary file not shown.
BIN
systems/aarch64-linux/canis-nixos/firmware/kernelcache.release.mac14g
Executable file
BIN
systems/aarch64-linux/canis-nixos/firmware/kernelcache.release.mac14g
Executable file
Binary file not shown.
54
systems/aarch64-linux/canis-nixos/hardware.nix
Normal file
54
systems/aarch64-linux/canis-nixos/hardware.nix
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = "conservative";
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = ["usb_storage"];
|
||||||
|
boot.initrd.kernelModules = [];
|
||||||
|
boot.kernelModules = [];
|
||||||
|
boot.extraModulePackages = [];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/bc2d65bb-2316-404d-aff4-cba0cca8f6b5";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=root"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" = {
|
||||||
|
device = "/dev/disk/by-uuid/bc2d65bb-2316-404d-aff4-cba0cca8f6b5";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=home"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nix" = {
|
||||||
|
device = "/dev/disk/by-uuid/bc2d65bb-2316-404d-aff4-cba0cca8f6b5";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = ["subvol=nix"];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" = {
|
||||||
|
device = "/dev/disk/by-uuid/23FC-1D19";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = ["fmask=0022" "dmask=0022"];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlan0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
|
||||||
|
}
|
|
@ -1,524 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
facter.reportPath = ./facter.json;
|
|
||||||
|
|
||||||
fileSystems = {
|
|
||||||
"/" = {
|
|
||||||
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=root"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"/home" = {
|
|
||||||
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=home" "compress=zstd"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"/nix" = {
|
|
||||||
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=nix" "compress=zstd" "noatime"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"/persist" = {
|
|
||||||
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
|
|
||||||
neededForBoot = true;
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=persist" "compress=zstd"];
|
|
||||||
};
|
|
||||||
|
|
||||||
"/var/log" = {
|
|
||||||
device = "/dev/disk/by-uuid/d375c3a3-63a3-47f8-8b77-58fabbb8f67b";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = ["subvol=log" "compress=zstd" "noatime"];
|
|
||||||
neededForBoot = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
"/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/12CE-A600";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = ["fmask=0022" "dmask=0022"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
security = {
|
|
||||||
rtkit.enable = true;
|
|
||||||
|
|
||||||
pam = {
|
|
||||||
services.login.enableGnomeKeyring = true;
|
|
||||||
|
|
||||||
loginLimits = [
|
|
||||||
{
|
|
||||||
domain = "*";
|
|
||||||
item = "nofile";
|
|
||||||
type = "-";
|
|
||||||
value = "32768";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
domain = "*";
|
|
||||||
item = "memlock";
|
|
||||||
type = "-";
|
|
||||||
value = "32768";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
sudo-rs = {
|
|
||||||
enable = true;
|
|
||||||
wheelNeedsPassword = false;
|
|
||||||
execWheelOnly = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
tpm2 = {
|
|
||||||
enable = true;
|
|
||||||
pkcs11.enable = true;
|
|
||||||
tctiEnvironment.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
packages = with pkgs;
|
|
||||||
[
|
|
||||||
ibm-plex
|
|
||||||
nerdfonts
|
|
||||||
]
|
|
||||||
++ (with iosevka-comfy; [
|
|
||||||
comfy
|
|
||||||
comfy-duo
|
|
||||||
comfy-fixed
|
|
||||||
comfy-motion
|
|
||||||
comfy-motion-duo
|
|
||||||
comfy-motion-fixed
|
|
||||||
comfy-wide
|
|
||||||
comfy-wide-duo
|
|
||||||
comfy-wide-fixed
|
|
||||||
comfy-wide-motion
|
|
||||||
comfy-wide-motion-duo
|
|
||||||
comfy-wide-motion-fixed
|
|
||||||
]);
|
|
||||||
|
|
||||||
fontconfig = {
|
|
||||||
hinting.enable = true;
|
|
||||||
subpixel.lcdfilter = "none";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
console.catppuccin.enable = true;
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
tpm2.enable = true;
|
|
||||||
|
|
||||||
network.networks = {
|
|
||||||
"10-lan1" = {
|
|
||||||
DHCP = "yes";
|
|
||||||
matchConfig.MACAddress = "04:42:1a:02:fe:f5";
|
|
||||||
|
|
||||||
dhcpV4Config.RouteMetric = 10;
|
|
||||||
dhcpV6Config.RouteMetric = 10;
|
|
||||||
|
|
||||||
networkConfig = {
|
|
||||||
IPv6PrivacyExtensions = "yes";
|
|
||||||
MulticastDNS = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"10-wlan1" = {
|
|
||||||
DHCP = "yes";
|
|
||||||
matchConfig.MACAddress = "64:49:7d:c1:01:10";
|
|
||||||
|
|
||||||
dhcpV4Config.RouteMetric = 40;
|
|
||||||
dhcpV6Config.RouteMetric = 40;
|
|
||||||
|
|
||||||
networkConfig = {
|
|
||||||
IPv6PrivacyExtensions = "yes";
|
|
||||||
MulticastDNS = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
user.extraConfig = let
|
|
||||||
path = lib.concatStringsSep ":" [
|
|
||||||
"/run/wrappers/bin"
|
|
||||||
"/etc/profiles/per-user/%u/bin"
|
|
||||||
"/nix/var/nix/profiles/default/bin"
|
|
||||||
"/run/current-system/sw/bin"
|
|
||||||
];
|
|
||||||
in ''
|
|
||||||
DefaultEnvironment="PATH=${path}"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
age = {
|
|
||||||
secrets.passwd.file = ../../../secrets/passwd.age;
|
|
||||||
identityPaths = ["/persist/root/.ssh/id_ed25519"];
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation = {
|
|
||||||
spiceUSBRedirection.enable = true;
|
|
||||||
waydroid.enable = true;
|
|
||||||
|
|
||||||
podman = {
|
|
||||||
enable = true;
|
|
||||||
dockerCompat = true;
|
|
||||||
dockerSocket.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
sessionVariables = {
|
|
||||||
BROWSER = "zen";
|
|
||||||
DIRENV_WARN_TIMEOUT = "100s";
|
|
||||||
EDITOR = "nvim";
|
|
||||||
NIXOS_OZONE_WL = 1;
|
|
||||||
TERMINAL = "wezterm";
|
|
||||||
};
|
|
||||||
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
ddccontrol-db
|
|
||||||
inputs.agenix.packages.${system}.default
|
|
||||||
looking-glass-client
|
|
||||||
nautilus
|
|
||||||
qemu
|
|
||||||
snowfallorg.flake
|
|
||||||
sound-theme-freedesktop
|
|
||||||
uutils-coreutils-noprefix
|
|
||||||
virtio-win
|
|
||||||
(warp-terminal.override {waylandSupport = true;})
|
|
||||||
winetricks
|
|
||||||
wineWowPackages.staging
|
|
||||||
xclip
|
|
||||||
yt-dlp
|
|
||||||
];
|
|
||||||
|
|
||||||
persistence."/persist" = {
|
|
||||||
hideMounts = true;
|
|
||||||
directories = [
|
|
||||||
"/etc/ssh"
|
|
||||||
"/root/.ssh"
|
|
||||||
"/var/lib/bluetooth"
|
|
||||||
"/var/lib/iwd"
|
|
||||||
"/var/lib/libvirt"
|
|
||||||
"/var/lib/nixos"
|
|
||||||
"/var/lib/systemd/coredump"
|
|
||||||
];
|
|
||||||
files = ["/etc/machine-id"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
blacklistedKernelModules = ["nouveau" "i915"];
|
|
||||||
kernelPackages = pkgs.linuxPackages_cachyos;
|
|
||||||
supportedFilesystems = ["btrfs" "ntfs"];
|
|
||||||
tmp.useTmpfs = true;
|
|
||||||
|
|
||||||
initrd = {
|
|
||||||
# Encrypted device
|
|
||||||
luks.devices."enc".device = "/dev/disk/by-uuid/9952fcd1-46eb-4c9c-ab7d-361d31fdb9a2";
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
enable = true;
|
|
||||||
emergencyAccess = true;
|
|
||||||
dbus.enable = true;
|
|
||||||
|
|
||||||
network = {
|
|
||||||
enable = true;
|
|
||||||
networks = {
|
|
||||||
inherit (config.systemd.network.networks) "10-lan1" "10-wlan1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
initrdBin = with pkgs; [
|
|
||||||
iwd
|
|
||||||
nix
|
|
||||||
vim
|
|
||||||
];
|
|
||||||
|
|
||||||
services.wipe-root = {
|
|
||||||
requires = ["dev-mapper-enc.device"];
|
|
||||||
after = ["dev-mapper-enc.device"];
|
|
||||||
wantedBy = ["initrd.target"];
|
|
||||||
script = lib.mkAfter ''
|
|
||||||
mkdir /btrfs_tmp
|
|
||||||
mount /dev/mapper/enc /btrfs_tmp
|
|
||||||
if [[ -e /btrfs_tmp/root ]]; then
|
|
||||||
mkdir -p /btrfs_tmp/old_roots
|
|
||||||
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
|
|
||||||
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
|
|
||||||
fi
|
|
||||||
|
|
||||||
delete_subvolume_recursively() {
|
|
||||||
IFS=$'\n'
|
|
||||||
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
|
|
||||||
delete_subvolume_recursively "/btrfs_tmp/$i"
|
|
||||||
done
|
|
||||||
btrfs subvolume delete "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
|
|
||||||
delete_subvolume_recursively "$i"
|
|
||||||
done
|
|
||||||
|
|
||||||
btrfs subvolume create /btrfs_tmp/root
|
|
||||||
umount /btrfs_tmp
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extraModprobeConfig =
|
|
||||||
"options nvidia "
|
|
||||||
+ lib.concatStringsSep " " [
|
|
||||||
"NVreg_EnablePCIeGen3=1"
|
|
||||||
"NVreg_RegistryDwords=RMUseSwI2c=0x01;RMI2cSpeed=100"
|
|
||||||
"NVreg_UsePageAttributeTable=1"
|
|
||||||
];
|
|
||||||
|
|
||||||
kernelParams = [
|
|
||||||
"intel_iommu=on"
|
|
||||||
"iommu=pt"
|
|
||||||
"kvm.ignore_msrs=1"
|
|
||||||
"modprobe.blacklist=nouveau,i915"
|
|
||||||
"nvidia_drm.fbdev=1"
|
|
||||||
];
|
|
||||||
|
|
||||||
loader = {
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
systemd-boot = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 20;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
daemonCPUSchedPolicy = "batch";
|
|
||||||
daemonIOSchedClass = "idle";
|
|
||||||
daemonIOSchedPriority = 7;
|
|
||||||
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "Sat *-*-* 03:00";
|
|
||||||
options = "--delete-older-than 30d";
|
|
||||||
};
|
|
||||||
|
|
||||||
optimise = {
|
|
||||||
automatic = true;
|
|
||||||
dates = ["04:00"];
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
auto-optimise-store = true;
|
|
||||||
builders-use-substitutes = true;
|
|
||||||
flake-registry = "/etc/nix/registry.json";
|
|
||||||
keep-going = true;
|
|
||||||
log-lines = 30;
|
|
||||||
max-jobs = "auto";
|
|
||||||
sandbox-fallback = false;
|
|
||||||
sandbox = true;
|
|
||||||
system-features = ["nixos-test" "kvm" "recursive-nix" "big-parallel" "gccarch-x86-64-v4"];
|
|
||||||
use-cgroups = true;
|
|
||||||
use-xdg-base-directories = true;
|
|
||||||
warn-dirty = false;
|
|
||||||
|
|
||||||
allowed-users = ["root" "@wheel" "nix-builder"];
|
|
||||||
trusted-users = ["root" "@wheel" "nix-builder"];
|
|
||||||
|
|
||||||
min-free = "${toString (5 * 1024 * 1024 * 1024)}";
|
|
||||||
max-free = "${toString (10 * 1024 * 1024 * 1024)}";
|
|
||||||
|
|
||||||
extra-experimental-features = [
|
|
||||||
"flakes" # flakes
|
|
||||||
"nix-command" # experimental nix commands
|
|
||||||
"recursive-nix" # let nix invoke itself
|
|
||||||
"ca-derivations" # content addressed nix
|
|
||||||
"auto-allocate-uids" # allow nix to automatically pick UIDs, rather than creating nixbld* user accounts
|
|
||||||
"cgroups" # allow nix to execute builds inside cgroups
|
|
||||||
];
|
|
||||||
|
|
||||||
substituters = [
|
|
||||||
"https://cache.nixos.org?priority=100"
|
|
||||||
"https://cache.privatevoid.net"
|
|
||||||
"https://cosmic.cachix.org/"
|
|
||||||
"https://cuda-maintainers.cachix.org"
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-public-keys = [
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
"cache.privatevoid.net:SErQ8bvNWANeAvtsOESUwVYr2VJynfuc9JRwlzTTkVg="
|
|
||||||
"cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="
|
|
||||||
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
dconf.enable = true;
|
|
||||||
fish.enable = true;
|
|
||||||
gamemode.enable = true;
|
|
||||||
steam.enable = true;
|
|
||||||
gnupg.agent.enable = true;
|
|
||||||
virt-manager.enable = true;
|
|
||||||
|
|
||||||
appimage = {
|
|
||||||
enable = true;
|
|
||||||
binfmt = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
hyprland = {
|
|
||||||
enable = false;
|
|
||||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
|
||||||
};
|
|
||||||
|
|
||||||
nh = {
|
|
||||||
enable = true;
|
|
||||||
flake = "/home/marshall/nix-config";
|
|
||||||
};
|
|
||||||
|
|
||||||
obs-studio = {
|
|
||||||
enable = true;
|
|
||||||
enableVirtualCamera = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
firewall.enable = false;
|
|
||||||
networkmanager.enable = false;
|
|
||||||
hostName = "navis";
|
|
||||||
nameservers = ["1.1.1.1" "1.0.0.1"];
|
|
||||||
useDHCP = lib.mkForce true;
|
|
||||||
useNetworkd = true;
|
|
||||||
wireless.iwd.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
time = {
|
|
||||||
hardwareClockInLocalTime = true;
|
|
||||||
timeZone = "America/New_York";
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
ddccontrol.enable = true;
|
|
||||||
flatpak.enable = true;
|
|
||||||
getty.autologinUser = "marshall";
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
openssh.enable = true;
|
|
||||||
spice-vdagentd.enable = true;
|
|
||||||
udisks2.enable = true;
|
|
||||||
|
|
||||||
btrfs.autoScrub = {
|
|
||||||
enable = true;
|
|
||||||
fileSystems = ["/dev/mapper/enc"];
|
|
||||||
};
|
|
||||||
|
|
||||||
displayManager.cosmic-greeter.enable = true;
|
|
||||||
desktopManager.cosmic.enable = true;
|
|
||||||
|
|
||||||
libinput = {
|
|
||||||
enable = true;
|
|
||||||
touchpad.naturalScrolling = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
videoDrivers = ["nvidia"];
|
|
||||||
|
|
||||||
displayManager.startx.enable = true;
|
|
||||||
|
|
||||||
windowManager.xmonad = {
|
|
||||||
enable = false;
|
|
||||||
enableContribAndExtras = true;
|
|
||||||
enableConfiguredRecompile = true;
|
|
||||||
flake = {
|
|
||||||
enable = true;
|
|
||||||
compiler = "ghc982";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pipewire = {
|
|
||||||
enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
|
|
||||||
alsa = {
|
|
||||||
enable = true;
|
|
||||||
support32Bit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users = {
|
|
||||||
mutableUsers = false;
|
|
||||||
|
|
||||||
users.marshall = {
|
|
||||||
hashedPasswordFile = config.age.secrets.passwd.path;
|
|
||||||
isNormalUser = true;
|
|
||||||
shell = pkgs.fish;
|
|
||||||
|
|
||||||
extraGroups = [
|
|
||||||
"disk"
|
|
||||||
"gamemode"
|
|
||||||
"libvirtd"
|
|
||||||
"qemu-libvirtd"
|
|
||||||
"tss"
|
|
||||||
"wheel"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
snowfallorg.users.marshall = {
|
|
||||||
create = true;
|
|
||||||
admin = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
|
|
||||||
hardware = {
|
|
||||||
bluetooth.enable = true;
|
|
||||||
i2c.enable = true;
|
|
||||||
|
|
||||||
graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
vaapiVdpau
|
|
||||||
nvidia-vaapi-driver
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nvidia-container-toolkit.enable = true;
|
|
||||||
|
|
||||||
nvidia = {
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
|
||||||
modesetting.enable = true;
|
|
||||||
powerManagement.enable = true;
|
|
||||||
open = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
xdgOpenUsePortal = true;
|
|
||||||
|
|
||||||
config.common.default = [
|
|
||||||
"cosmic"
|
|
||||||
"gtk"
|
|
||||||
];
|
|
||||||
|
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-cosmic
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,575 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
facter.reportPath = ./facter.json;
|
|
||||||
|
|
||||||
fileSystems = {
|
|
||||||
"/" = {
|
|
||||||
device = "/dev/disk/by-uuid/64079eb2-d3e3-47b7-a889-d5b2fee4fa82";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
"/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/BC12-6397";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [{device = "/dev/disk/by-uuid/d36507db-7392-4852-9b2a-12d2a476cd31";}];
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
system.stateVersion = "23.11";
|
|
||||||
time.timeZone = "America/New_York";
|
|
||||||
|
|
||||||
age = {
|
|
||||||
secrets.token.file = ../../../secrets/token.age;
|
|
||||||
secrets.mailer_passwd.file = ../../../secrets/mailer_passwd.age;
|
|
||||||
identityPaths = ["/root/.ssh/id_ed25519"];
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
nixPath = ["nixpkgs=flake:nixpkgs"];
|
|
||||||
registry =
|
|
||||||
(lib.mapAttrs (_: flake: {inherit flake;}))
|
|
||||||
((lib.filterAttrs (_: lib.isType "flake")) inputs);
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
auto-optimise-store = true;
|
|
||||||
experimental-features = "nix-command flakes";
|
|
||||||
warn-dirty = false;
|
|
||||||
trusted-users = ["marshall"];
|
|
||||||
|
|
||||||
substituters = [
|
|
||||||
"https://cache.nixos.org"
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://nyx.chaotic.cx/"
|
|
||||||
"https://cuda-maintainers.cachix.org"
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-substituters = [
|
|
||||||
"cache.nixos.org"
|
|
||||||
"nix-community.cachix.org"
|
|
||||||
"nyx.chaotic.cx"
|
|
||||||
"cuda-maintainers.cachix.org"
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-public-keys = [
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
"nyx.chaotic.cx-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
|
|
||||||
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
|
|
||||||
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
|
|
||||||
"conduwuit:lYPVh7o1hLu1idH4Xt2QHaRa49WRGSAqzcfFd94aOTw="
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment = {
|
|
||||||
localBinInPath = true;
|
|
||||||
|
|
||||||
sessionVariables.FLAKE = "/home/marshall/nix-config";
|
|
||||||
|
|
||||||
systemPackages = [
|
|
||||||
pkgs.miniupnpc
|
|
||||||
inputs.agenix.packages.${system}.default
|
|
||||||
pkgs.codeium
|
|
||||||
];
|
|
||||||
|
|
||||||
etc =
|
|
||||||
lib.mapAttrs'
|
|
||||||
(name: value: {
|
|
||||||
name = "nix/path/${name}";
|
|
||||||
value.source = value.flake;
|
|
||||||
})
|
|
||||||
config.nix.registry;
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
inter
|
|
||||||
maple-mono-SC-NF
|
|
||||||
nerdfonts
|
|
||||||
];
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
kernelPackages = pkgs.linuxPackages_xanmod_latest;
|
|
||||||
supportedFilesystems = ["ntfs"];
|
|
||||||
|
|
||||||
binfmt = {
|
|
||||||
emulatedSystems = ["aarch64-linux"];
|
|
||||||
|
|
||||||
registrations.appimage = {
|
|
||||||
wrapInterpreterInShell = false;
|
|
||||||
interpreter = "${pkgs.appimage-run}/bin/appimage-run";
|
|
||||||
recognitionType = "magic";
|
|
||||||
offset = 0;
|
|
||||||
mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
|
|
||||||
magicOrExtension = ''\x7fELF....AI\x02'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
loader = {
|
|
||||||
systemd-boot.enable = true;
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware = {
|
|
||||||
pulseaudio.enable = false;
|
|
||||||
|
|
||||||
bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
powerOnBoot = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
opengl = {
|
|
||||||
enable = true;
|
|
||||||
driSupport32Bit = true;
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
libGL
|
|
||||||
libGLU
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "polaris-nix";
|
|
||||||
networkmanager.enable = true;
|
|
||||||
firewall.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
security = {
|
|
||||||
pam.services.gdm.enableGnomeKeyring = true;
|
|
||||||
rtkit.enable = true;
|
|
||||||
|
|
||||||
sudo.extraConfig = ''
|
|
||||||
Defaults lecture = never
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
fish.enable = true;
|
|
||||||
gnupg.agent.enable = true;
|
|
||||||
ssh.startAgent = true;
|
|
||||||
|
|
||||||
nix-ld = {
|
|
||||||
enable = true;
|
|
||||||
libraries = with pkgs; [
|
|
||||||
SDL
|
|
||||||
SDL2
|
|
||||||
SDL2_image
|
|
||||||
SDL2_mixer
|
|
||||||
SDL2_ttf
|
|
||||||
SDL_image
|
|
||||||
SDL_mixer
|
|
||||||
SDL_ttf
|
|
||||||
alsa-lib
|
|
||||||
at-spi2-atk
|
|
||||||
at-spi2-core
|
|
||||||
atk
|
|
||||||
bzip2
|
|
||||||
cairo
|
|
||||||
cups
|
|
||||||
curlWithGnuTls
|
|
||||||
dbus
|
|
||||||
dbus-glib
|
|
||||||
desktop-file-utils
|
|
||||||
e2fsprogs
|
|
||||||
expat
|
|
||||||
flac
|
|
||||||
fontconfig
|
|
||||||
freeglut
|
|
||||||
freetype
|
|
||||||
fribidi
|
|
||||||
fuse
|
|
||||||
fuse3
|
|
||||||
gdk-pixbuf
|
|
||||||
glew110
|
|
||||||
glib
|
|
||||||
gmp
|
|
||||||
gst_all_1.gst-plugins-base
|
|
||||||
gst_all_1.gst-plugins-ugly
|
|
||||||
gst_all_1.gstreamer
|
|
||||||
gtk2
|
|
||||||
harfbuzz
|
|
||||||
icu
|
|
||||||
keyutils.lib
|
|
||||||
libgcc
|
|
||||||
libGL
|
|
||||||
libGLU
|
|
||||||
libappindicator-gtk2
|
|
||||||
libcaca
|
|
||||||
libcanberra
|
|
||||||
libcap
|
|
||||||
libclang.lib
|
|
||||||
libdbusmenu
|
|
||||||
libdrm
|
|
||||||
libgcrypt
|
|
||||||
libgpg-error
|
|
||||||
libidn
|
|
||||||
libjack2
|
|
||||||
libjpeg
|
|
||||||
libmikmod
|
|
||||||
libogg
|
|
||||||
libpng12
|
|
||||||
libpulseaudio
|
|
||||||
librsvg
|
|
||||||
libsamplerate
|
|
||||||
libthai
|
|
||||||
libtheora
|
|
||||||
libtiff
|
|
||||||
libudev0-shim
|
|
||||||
libusb1
|
|
||||||
libuuid
|
|
||||||
libvdpau
|
|
||||||
libvorbis
|
|
||||||
libvpx
|
|
||||||
libxcrypt-legacy
|
|
||||||
libxkbcommon
|
|
||||||
libxml2
|
|
||||||
mesa
|
|
||||||
nspr
|
|
||||||
nss
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pango
|
|
||||||
pixman
|
|
||||||
python3
|
|
||||||
speex
|
|
||||||
stdenv.cc.cc
|
|
||||||
tbb
|
|
||||||
udev
|
|
||||||
vulkan-loader
|
|
||||||
wayland
|
|
||||||
xorg.libICE
|
|
||||||
xorg.libSM
|
|
||||||
xorg.libX11
|
|
||||||
xorg.libXScrnSaver
|
|
||||||
xorg.libXcomposite
|
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXdamage
|
|
||||||
xorg.libXext
|
|
||||||
xorg.libXfixes
|
|
||||||
xorg.libXft
|
|
||||||
xorg.libXi
|
|
||||||
xorg.libXinerama
|
|
||||||
xorg.libXmu
|
|
||||||
xorg.libXrandr
|
|
||||||
xorg.libXrender
|
|
||||||
xorg.libXt
|
|
||||||
xorg.libXtst
|
|
||||||
xorg.libXxf86vm
|
|
||||||
xorg.libpciaccess
|
|
||||||
xorg.libxcb
|
|
||||||
xorg.xcbutil
|
|
||||||
xorg.xcbutilimage
|
|
||||||
xorg.xcbutilkeysyms
|
|
||||||
xorg.xcbutilrenderutil
|
|
||||||
xorg.xcbutilwm
|
|
||||||
xorg.xkeyboardconfig
|
|
||||||
xz
|
|
||||||
zlib
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
eternal-terminal.enable = true;
|
|
||||||
tailscale.enable = true;
|
|
||||||
xe-guest-utilities.enable = true;
|
|
||||||
|
|
||||||
code-server = {
|
|
||||||
enable = true;
|
|
||||||
disableTelemetry = true;
|
|
||||||
disableUpdateCheck = true;
|
|
||||||
disableWorkspaceTrust = true;
|
|
||||||
host = "0.0.0.0";
|
|
||||||
port = 8080;
|
|
||||||
hashedPassword = "$argon2i$v=19$m=16,t=2,p=1$alg3SXBFSkhzbDRhZXlCRw$2COxhvVifNMmIIozs14AkQ";
|
|
||||||
user = "marshall";
|
|
||||||
group = "users";
|
|
||||||
extraEnvironment = {
|
|
||||||
NIX_LD = lib.fileContents "${pkgs.stdenv.cc}/nix-support/dynamic-linker";
|
|
||||||
NIX_LD_LIBRARY_PATH = with pkgs;
|
|
||||||
lib.makeLibraryPath [
|
|
||||||
SDL
|
|
||||||
SDL2
|
|
||||||
SDL2_image
|
|
||||||
SDL2_mixer
|
|
||||||
SDL2_ttf
|
|
||||||
SDL_image
|
|
||||||
SDL_mixer
|
|
||||||
SDL_ttf
|
|
||||||
alsa-lib
|
|
||||||
at-spi2-atk
|
|
||||||
at-spi2-core
|
|
||||||
atk
|
|
||||||
bzip2
|
|
||||||
cairo
|
|
||||||
cups
|
|
||||||
curlWithGnuTls
|
|
||||||
dbus
|
|
||||||
dbus-glib
|
|
||||||
desktop-file-utils
|
|
||||||
e2fsprogs
|
|
||||||
expat
|
|
||||||
flac
|
|
||||||
fontconfig
|
|
||||||
freeglut
|
|
||||||
freetype
|
|
||||||
fribidi
|
|
||||||
fuse
|
|
||||||
fuse3
|
|
||||||
gdk-pixbuf
|
|
||||||
glew110
|
|
||||||
glib
|
|
||||||
gmp
|
|
||||||
gst_all_1.gst-plugins-base
|
|
||||||
gst_all_1.gst-plugins-ugly
|
|
||||||
gst_all_1.gstreamer
|
|
||||||
gtk2
|
|
||||||
harfbuzz
|
|
||||||
icu
|
|
||||||
keyutils.lib
|
|
||||||
libgcc
|
|
||||||
libGL
|
|
||||||
libGLU
|
|
||||||
libappindicator-gtk2
|
|
||||||
libcaca
|
|
||||||
libcanberra
|
|
||||||
libcap
|
|
||||||
libclang.lib
|
|
||||||
libdbusmenu
|
|
||||||
libdrm
|
|
||||||
libgcrypt
|
|
||||||
libgpg-error
|
|
||||||
libidn
|
|
||||||
libjack2
|
|
||||||
libjpeg
|
|
||||||
libmikmod
|
|
||||||
libogg
|
|
||||||
libpng12
|
|
||||||
libpulseaudio
|
|
||||||
librsvg
|
|
||||||
libsamplerate
|
|
||||||
libthai
|
|
||||||
libtheora
|
|
||||||
libtiff
|
|
||||||
libudev0-shim
|
|
||||||
libusb1
|
|
||||||
libuuid
|
|
||||||
libvdpau
|
|
||||||
libvorbis
|
|
||||||
libvpx
|
|
||||||
libxcrypt-legacy
|
|
||||||
libxkbcommon
|
|
||||||
libxml2
|
|
||||||
mesa
|
|
||||||
nspr
|
|
||||||
nss
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pango
|
|
||||||
pixman
|
|
||||||
python3
|
|
||||||
speex
|
|
||||||
stdenv.cc.cc
|
|
||||||
tbb
|
|
||||||
udev
|
|
||||||
vulkan-loader
|
|
||||||
wayland
|
|
||||||
xorg.libICE
|
|
||||||
xorg.libSM
|
|
||||||
xorg.libX11
|
|
||||||
xorg.libXScrnSaver
|
|
||||||
xorg.libXcomposite
|
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXdamage
|
|
||||||
xorg.libXext
|
|
||||||
xorg.libXfixes
|
|
||||||
xorg.libXft
|
|
||||||
xorg.libXi
|
|
||||||
xorg.libXinerama
|
|
||||||
xorg.libXmu
|
|
||||||
xorg.libXrandr
|
|
||||||
xorg.libXrender
|
|
||||||
xorg.libXt
|
|
||||||
xorg.libXtst
|
|
||||||
xorg.libXxf86vm
|
|
||||||
xorg.libpciaccess
|
|
||||||
xorg.libxcb
|
|
||||||
xorg.xcbutil
|
|
||||||
xorg.xcbutilimage
|
|
||||||
xorg.xcbutilkeysyms
|
|
||||||
xorg.xcbutilrenderutil
|
|
||||||
xorg.xcbutilwm
|
|
||||||
xorg.xkeyboardconfig
|
|
||||||
xz
|
|
||||||
zlib
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
forgejo = let
|
|
||||||
forgejoDomain = "git.pupbrained.xyz";
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
user = "git";
|
|
||||||
group = "git";
|
|
||||||
lfs.enable = true;
|
|
||||||
secrets.mailer.PASSWD = config.age.secrets.mailer_passwd.path;
|
|
||||||
settings = {
|
|
||||||
log.LEVEL = "Debug";
|
|
||||||
DEFAULT.APP_NAME = "MarGit";
|
|
||||||
|
|
||||||
actions = {
|
|
||||||
ENABLED = true;
|
|
||||||
DEFAULT_ACTIONS_URL = "github";
|
|
||||||
};
|
|
||||||
|
|
||||||
database = {
|
|
||||||
SQLITE_JOURNAL_MODE = "WAL";
|
|
||||||
LOG_SQL = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
federation.ENABLED = true;
|
|
||||||
|
|
||||||
mailer = {
|
|
||||||
ENABLED = true;
|
|
||||||
SMTP_ADDR = "email-smtp.us-east-2.amazonaws.com";
|
|
||||||
FROM = "noreply@git.pupbrained.xyz";
|
|
||||||
USER = "AKIAVIRH7PRQXI3FCBZ4";
|
|
||||||
SEND_AS_PLAIN_TEXT = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
metrics = {
|
|
||||||
ENABLED = true;
|
|
||||||
ENABLED_ISSUE_BY_REPOSITORY = true;
|
|
||||||
ENABLED_ISSUE_BY_LABEL = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
oauth2_client = {
|
|
||||||
ACCOUNT_LINKING = "login";
|
|
||||||
USERNAME = "nickname";
|
|
||||||
ENABLE_AUTO_REGISTRATION = false;
|
|
||||||
REGISTER_EMAIL_CONFIRM = false;
|
|
||||||
UPDATE_AVATAR = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
packages.ENABLED = true;
|
|
||||||
|
|
||||||
repository = {
|
|
||||||
DEFAULT_PRIVATE = "private";
|
|
||||||
ENABLE_PUSH_CREATE_USER = true;
|
|
||||||
ENABLE_PUSH_CREATE_ORG = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
server = {
|
|
||||||
HTTP_ADDR = "0.0.0.0";
|
|
||||||
HTTP_PORT = 6610;
|
|
||||||
DOMAIN = forgejoDomain;
|
|
||||||
ROOT_URL = "https://${forgejoDomain}/";
|
|
||||||
SSH_USER = "git";
|
|
||||||
SSH_DOMAIN = "ssh.pupbrained.xyz";
|
|
||||||
};
|
|
||||||
|
|
||||||
service = {
|
|
||||||
DISABLE_REGISTRATION = false;
|
|
||||||
SHOW_REGISTRATION_BUTTON = true;
|
|
||||||
REGISTER_EMAIL_CONFIRM = false;
|
|
||||||
ENABLE_NOTIFY_MAIL = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
session.COOKIE_SECURE = true;
|
|
||||||
|
|
||||||
ui = {
|
|
||||||
DEFAULT_THEME = "forgejo-auto";
|
|
||||||
};
|
|
||||||
|
|
||||||
"ui.meta".AUTHOR = "MarGit";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
matrix-conduit = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.conduwuit_git;
|
|
||||||
settings.global.database_backend = "rocksdb";
|
|
||||||
settings.global.allow_registration = true;
|
|
||||||
settings.global.address = "0.0.0.0";
|
|
||||||
settings.global.server_name = "pupbrained.xyz";
|
|
||||||
settings.global.registration_token = "blehh";
|
|
||||||
};
|
|
||||||
|
|
||||||
openssh = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
pipewire = {
|
|
||||||
enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
|
|
||||||
alsa = {
|
|
||||||
enable = true;
|
|
||||||
support32Bit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xserver = {
|
|
||||||
enable = true;
|
|
||||||
displayManager.gdm.enable = true;
|
|
||||||
desktopManager.gnome.enable = true;
|
|
||||||
layout = "us";
|
|
||||||
xkbVariant = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.cloudflared = {
|
|
||||||
description = "Point traffic to tunnel subdomain";
|
|
||||||
wantedBy = ["default.target"];
|
|
||||||
serviceConfig = {
|
|
||||||
EnvironmentFile = config.age.secrets.token.path;
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = "${lib.getExe pkgs.cloudflared} tunnel --no-autoupdate run";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.marshall = {
|
|
||||||
isNormalUser = true;
|
|
||||||
shell = pkgs.fish;
|
|
||||||
extraGroups = ["wheel" "libvirtd" "kvm"];
|
|
||||||
};
|
|
||||||
|
|
||||||
users.groups.git = {};
|
|
||||||
|
|
||||||
users.users.git = {
|
|
||||||
isSystemUser = true;
|
|
||||||
useDefaultShell = true;
|
|
||||||
group = "git";
|
|
||||||
home = config.services.forgejo.stateDir;
|
|
||||||
};
|
|
||||||
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
|
||||||
LC_MEASUREMENT = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "en_US.UTF-8";
|
|
||||||
LC_NAME = "en_US.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "en_US.UTF-8";
|
|
||||||
LC_TELEPHONE = "en_US.UTF-8";
|
|
||||||
LC_TIME = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue