Compare commits

...

29 Commits

Author SHA1 Message Date
c58aeed984
feat: add yt-mpv script to hyprland hotkeys 2025-07-04 18:18:14 +03:00
62c2e68226
fix: disable /etc erofs overlay 2025-07-04 18:17:48 +03:00
b9cef09507
feat(wip): add mimeapps module 2025-07-04 18:16:59 +03:00
64ccc2d064
fix: add xarchiver package to user profile 2025-07-04 18:16:14 +03:00
0756463089
feat: add zathura module 2025-07-04 18:15:55 +03:00
9225df75e1
feat: add nix-update-docker-image package to andromedae 2025-07-04 18:15:12 +03:00
66033bda2d
feat: add fallback fonts for cyrillic symbols 2025-07-04 15:12:44 +03:00
e92581f2b2
fix: waybar icons 2025-07-04 15:12:25 +03:00
76692f1924
feat(wip): add waydroid module and enable it for andromedae 2025-07-04 15:11:37 +03:00
83481a07f7
fix: icon cache (add librsvg to gdk-pixbuf packages) 2025-07-04 15:10:49 +03:00
778e95a9cb
fix: mako theme 2025-07-04 15:10:20 +03:00
07ca2a759b
feat: disable not respondind dialog in hyprland and persist its directory 2025-07-04 15:09:47 +03:00
828c6352a5
fix: walker exec from hyprland 2025-07-04 15:09:14 +03:00
246595dadd
fix: persist correct password-store directory 2025-07-04 15:08:33 +03:00
6a794eb46f
fix: enable nfs support for server and desktop hosts 2025-07-04 15:07:56 +03:00
3621c22f74
feat: add and enable virtualisation module (podman and libvirt) 2025-07-04 15:06:12 +03:00
6ec018b083
feat: enable micro by default 2025-07-04 14:42:44 +03:00
fcadff53c3
feat: add and enable wlogout module 2025-07-04 14:38:56 +03:00
f111a8a3cc
feat: add lutris module and enable it on andromedae 2025-07-04 14:32:41 +03:00
68337c6411
fix: dark gnome theme by default 2025-07-04 14:32:18 +03:00
978429f62c
fix: gnome pinentry for gnupg 2025-07-04 14:31:51 +03:00
f14949b305
feat: add roo code extension to vscode 2025-07-04 14:31:20 +03:00
14fb167972
feat: install llama.cpp with vulkan support only 2025-07-04 14:30:18 +03:00
0225ae25aa
feat: fix cache cleanup and allow to set bind method for home persist module 2025-07-04 14:26:22 +03:00
942a8686b5
feat: enable gamemode program with steam 2025-07-04 14:25:18 +03:00
39bbb45ca3
feat: disable rofi by default (use walker instead) 2025-07-04 14:24:47 +03:00
93eda9c3e9
chore: update flake.lock 2025-07-04 14:23:17 +03:00
5fb39182c7
feat: add walker module 2025-07-04 14:23:00 +03:00
b3b2d2b924
feat: enable chaotic repo and install cachyos kernel on andromedae 2025-07-04 14:22:16 +03:00
39 changed files with 911 additions and 191 deletions

354
flake.lock generated
View File

@ -8,11 +8,11 @@
"nixpkgs": "nixpkgs_4" "nixpkgs": "nixpkgs_4"
}, },
"locked": { "locked": {
"lastModified": 1749308545, "lastModified": 1751641756,
"narHash": "sha256-42gHr7DT2xk892STJHUF5FXDdlMg/99rr0c8a75jyO4=", "narHash": "sha256-5fXKpa5iVpsnsHUhiqMQ1gXdOGwEKc61fXhaMZn7Gb4=",
"owner": "AtaraxiaSjel", "owner": "AtaraxiaSjel",
"repo": "nur", "repo": "nur",
"rev": "f76d325552b69f7cacff4e9f86ecad5586844050", "rev": "73e0fbc32ab305d50b84ab351c31604f003b50a8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -61,16 +61,20 @@
"devenv" "devenv"
], ],
"git-hooks": [ "git-hooks": [
"devenv" "devenv",
"git-hooks"
], ],
"nixpkgs": "nixpkgs_6" "nixpkgs": [
"devenv",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1744206633, "lastModified": 1748883665,
"narHash": "sha256-pb5aYkE8FOoa4n123slgHiOf1UbNSnKe5pEZC+xXD5g=", "narHash": "sha256-R0W7uAg+BLoHjMRMQ8+oiSbTq8nkGz5RDpQ+ZfxxP3A=",
"owner": "cachix", "owner": "cachix",
"repo": "cachix", "repo": "cachix",
"rev": "8a60090640b96f9df95d1ab99e5763a586be1404", "rev": "f707778d902af4d62d8dd92c269f8e70de09acbe",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -85,11 +89,11 @@
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1748080874, "lastModified": 1750153510,
"narHash": "sha256-sUebEzAkrY8Aq5G0GHFyRddmRNGP/a2iTtV7ISNvi/c=", "narHash": "sha256-NYHXXJZ9m4fJpKk9tKn/EExX87SqcBcRINOGF7hKRLI=",
"owner": "catppuccin", "owner": "catppuccin",
"repo": "nix", "repo": "nix",
"rev": "0ba11b12be81f0849a89ed17ab635164ea8f0112", "rev": "4e95eaf8a351956d75cc400318579967ca2b6d0f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -98,6 +102,29 @@
"type": "github" "type": "github"
} }
}, },
"chaotic": {
"inputs": {
"flake-schemas": "flake-schemas",
"home-manager": "home-manager",
"jovian": "jovian",
"nixpkgs": "nixpkgs_6",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1751477036,
"narHash": "sha256-0ZPQdjYMeRK/RMRagvr5a8dkjB7sQlXJsOBb40k+KYY=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "55649265bd2fd701e6758299516a69db523fb966",
"type": "github"
},
"original": {
"owner": "chaotic-cx",
"ref": "nyxpkgs-unstable",
"repo": "nyx",
"type": "github"
}
},
"deploy-rs": { "deploy-rs": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
@ -107,11 +134,11 @@
"utils": "utils" "utils": "utils"
}, },
"locked": { "locked": {
"lastModified": 1727447169, "lastModified": 1749105467,
"narHash": "sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE+ne0U=", "narHash": "sha256-hXh76y/wDl15almBcqvjryB50B0BaiXJKk20f314RoE=",
"owner": "serokell", "owner": "serokell",
"repo": "deploy-rs", "repo": "deploy-rs",
"rev": "aa07eb05537d4cd025e2310397a6adcedfe72c76", "rev": "6bc76b872374845ba9d645a2f012b764fecd765f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -175,11 +202,11 @@
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_8"
}, },
"locked": { "locked": {
"lastModified": 1749029645, "lastModified": 1750885119,
"narHash": "sha256-XvsmjmiOccRLuhH1lzJoF6CxLF5Hkzx5Pfdd0LwSyiA=", "narHash": "sha256-nDxZMz1uk5suHPxE9Ky68g1OKbIs5QPGuszElkPyeoc=",
"owner": "cachix", "owner": "cachix",
"repo": "devenv", "repo": "devenv",
"rev": "14f517d8831564a421499fe10df179fcaba4cc6e", "rev": "8f6da8234e6bf6a501f89c4c3aa6732fdaa1a6ea",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -195,11 +222,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1748832438, "lastModified": 1750680230,
"narHash": "sha256-/CtyLVfNaFP7PrOPrTEuGOJBIhcBKVQ91KiEbtXJi0A=", "narHash": "sha256-kD88T/NqmcgfOBFAwphN30ccaUdj6K6+LG0XdM2w2LA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "58d6e5a83fff9982d57e0a0a994d4e5c0af441e4", "rev": "8fd2d6c75009ac75f9a6fb18c33a239806778d01",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -227,11 +254,11 @@
"flake-compat_2": { "flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1696426674, "lastModified": 1733328505,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -243,11 +270,11 @@
"flake-compat_3": { "flake-compat_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1733328505, "lastModified": 1747046372,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -306,11 +333,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1712014858, "lastModified": 1733312601,
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -324,11 +351,11 @@
"nixpkgs-lib": "nixpkgs-lib_2" "nixpkgs-lib": "nixpkgs-lib_2"
}, },
"locked": { "locked": {
"lastModified": 1748821116, "lastModified": 1749398372,
"narHash": "sha256-F82+gS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE=", "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "49f0870db23e8c1ca0b5259734a02cd9e1e371a1", "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -353,6 +380,20 @@
"type": "github" "type": "github"
} }
}, },
"flake-schemas": {
"locked": {
"lastModified": 1721999734,
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
"revCount": 75,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems_2" "systems": "systems_2"
@ -389,24 +430,6 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_3": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flakey-profile": { "flakey-profile": {
"locked": { "locked": {
"lastModified": 1712898590, "lastModified": 1712898590,
@ -452,7 +475,8 @@
"git-hooks_2": { "git-hooks_2": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": [
"devenv" "devenv",
"flake-compat"
], ],
"gitignore": "gitignore_2", "gitignore": "gitignore_2",
"nixpkgs": [ "nixpkgs": [
@ -461,11 +485,10 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1746537231, "lastModified": 1749636823,
"narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", "rev": "623c56286de5a3193aa38891a6991b28f9bab056",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -507,7 +530,6 @@
}, },
"locked": { "locked": {
"lastModified": 1709087332, "lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "gitignore.nix", "repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
@ -522,15 +544,36 @@
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"chaotic",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1748665073, "lastModified": 1751473516,
"narHash": "sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew=", "narHash": "sha256-nJFR4f4hh879Mm7ne4SaUihxQAwu1FdnRCaA/8pHc1k=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "282e1e029cb6ab4811114fc85110613d72771dea", "rev": "bafcf336870c9daca80df1c4a09ef926fc497016",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1750792728,
"narHash": "sha256-Lh3dopA8DdY+ZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "366f00797b1efb70f2882d3da485e3c10fd3d557",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -555,23 +598,29 @@
"type": "github" "type": "github"
} }
}, },
"libgit2": { "jovian": {
"flake": false, "inputs": {
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1697646580, "lastModified": 1751358277,
"narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=", "narHash": "sha256-Xz2JtcO9UNLur+OhoDVyYXqBQCW2KsouLyUU/NmwBQQ=",
"owner": "libgit2", "owner": "Jovian-Experiments",
"repo": "libgit2", "repo": "Jovian-NixOS",
"rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5", "rev": "011d5a48d70c2a3ef35acd0e026e10b5844ce2a0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "libgit2", "owner": "Jovian-Experiments",
"repo": "libgit2", "repo": "Jovian-NixOS",
"type": "github" "type": "github"
} }
}, },
"libgit2_2": { "libgit2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1697646580, "lastModified": 1697646580,
@ -606,11 +655,11 @@
"lix": { "lix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1748893954, "lastModified": 1750863598,
"narHash": "sha256-Vj1GHarIzlJI3We5KnYcAQlSjn++fx7/lKRaiIVz3tg=", "narHash": "sha256-A9EwWUNC+8Fnsafi3Lcks2jNm6wjNoxfPS5TJXzpTk0=",
"rev": "019b17f4e93c098f99a9bc691be1f1c4df026c7d", "rev": "9a59106c172b7d5963e3dc2cf07ff5b19f8119d6",
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/019b17f4e93c098f99a9bc691be1f1c4df026c7d.tar.gz?rev=019b17f4e93c098f99a9bc691be1f1c4df026c7d" "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/9a59106c172b7d5963e3dc2cf07ff5b19f8119d6.tar.gz?rev=9a59106c172b7d5963e3dc2cf07ff5b19f8119d6"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
@ -692,6 +741,29 @@
"type": "github" "type": "github"
} }
}, },
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"chaotic",
"jovian",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729697500,
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
"owner": "zhaofengli",
"repo": "nix-github-actions",
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
"type": "github"
},
"original": {
"owner": "zhaofengli",
"ref": "matrix-name",
"repo": "nix-github-actions",
"type": "github"
}
},
"nix-index-database": { "nix-index-database": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -699,11 +771,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1748751003, "lastModified": 1750565152,
"narHash": "sha256-i4GZdKAK97S0ZMU3w4fqgEJr0cVywzqjugt2qZPrScs=", "narHash": "sha256-A6ZIoIgaPPkzIVxKuaxwEJicPOeTwC/MD9iuC3FVhDM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "2860bee699248d828c2ed9097a1cd82c2f991b43", "rev": "78cd697acc2e492b4e92822a4913ffad279c20e6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -720,11 +792,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749002682, "lastModified": 1750817194,
"narHash": "sha256-v9K6RyPF/+4r/YJhjEH8y07VWE6Vj7Vl88E/K5m/uJ0=", "narHash": "sha256-9CCF4ANxZUXHwz74SeGQkFi4OYnm0BD2I3GeQvxMKPM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-vscode-extensions", "repo": "nix-vscode-extensions",
"rev": "46eb9c16d8ccfedf8bc648be03f9b2993fe3c994", "rev": "fc01ad517af163c76d4493c5959fc5c44244a97f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -735,17 +807,16 @@
}, },
"nix2container": { "nix2container": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1744699837, "lastModified": 1749158376,
"narHash": "sha256-mJ1OgxMM2VTTjSVrMZItM8DxttzROYbWkmEPvYF/Kpg=", "narHash": "sha256-uirStFNxauh0lxzBowcp28X+Sq7JgsBIDnbwbAfZwf8=",
"owner": "nlewo", "owner": "nlewo",
"repo": "nix2container", "repo": "nix2container",
"rev": "78aadfc4ee1f9c2ee256e304b180ca356eb6a045", "rev": "0f8974c58755dba441df03598eefd1e1cd50e341",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -757,32 +828,33 @@
"nix_2": { "nix_2": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": [
"devenv" "devenv",
"flake-compat"
], ],
"flake-parts": "flake-parts_3", "flake-parts": "flake-parts_3",
"libgit2": "libgit2_2", "git-hooks-nix": [
"devenv",
"git-hooks"
],
"nixpkgs": "nixpkgs_7", "nixpkgs": "nixpkgs_7",
"nixpkgs-23-11": [ "nixpkgs-23-11": [
"devenv" "devenv"
], ],
"nixpkgs-regression": [ "nixpkgs-regression": [
"devenv" "devenv"
],
"pre-commit-hooks": [
"devenv"
] ]
}, },
"locked": { "locked": {
"lastModified": 1745930071, "lastModified": 1750117611,
"narHash": "sha256-bYyjarS3qSNqxfgc89IoVz8cAFDkF9yPE63EJr+h50s=", "narHash": "sha256-LTwASICtyN3AjzlF9l2ZNAIVZqclio3yRcwwZy3QSJA=",
"owner": "domenkozar", "owner": "cachix",
"repo": "nix", "repo": "nix",
"rev": "b455edf3505f1bf0172b39a735caef94687d0d9c", "rev": "9e4fc95c388e2223d47da865503dee20d179776a",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "domenkozar", "owner": "cachix",
"ref": "devenv-2.24", "ref": "devenv-2.30",
"repo": "nix", "repo": "nix",
"type": "github" "type": "github"
} }
@ -835,11 +907,11 @@
}, },
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1748929857, "lastModified": 1750741721,
"narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", "narHash": "sha256-Z0djmTa1YmnGMfE9jEe05oO4zggjDmxOGKwt844bUhE=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", "rev": "4b1164c3215f018c4442463a27689d973cffd750",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -915,11 +987,11 @@
}, },
"nixpkgs_6": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1733212471, "lastModified": 1751271578,
"narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=", "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "55d15ad12a74eb7d4646254e13638ad0c4128776", "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -931,16 +1003,16 @@
}, },
"nixpkgs_7": { "nixpkgs_7": {
"locked": { "locked": {
"lastModified": 1717432640, "lastModified": 1747179050,
"narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=", "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "88269ab3044128b7c2f4c7d68448b2fb50456870", "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "release-24.05", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -963,11 +1035,11 @@
}, },
"nixpkgs_9": { "nixpkgs_9": {
"locked": { "locked": {
"lastModified": 1748889542, "lastModified": 1750622754,
"narHash": "sha256-Hb4iMhIbjX45GcrgOp3b8xnyli+ysRPqAgZ/LZgyT5k=", "narHash": "sha256-kMhs+YzV4vPGfuTpD3mwzibWUE6jotw5Al2wczI0Pv8=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922", "rev": "c7ab75210cb8cb16ddd8f290755d9558edde7ee1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -981,13 +1053,14 @@
"inputs": { "inputs": {
"ataraxiasjel-nur": "ataraxiasjel-nur", "ataraxiasjel-nur": "ataraxiasjel-nur",
"catppuccin": "catppuccin", "catppuccin": "catppuccin",
"chaotic": "chaotic",
"deploy-rs": "deploy-rs", "deploy-rs": "deploy-rs",
"devenv": "devenv_2", "devenv": "devenv_2",
"devenv-root": "devenv-root_2", "devenv-root": "devenv-root_2",
"disko": "disko", "disko": "disko",
"flake-parts": "flake-parts_4", "flake-parts": "flake-parts_4",
"flake-registry": "flake-registry", "flake-registry": "flake-registry",
"home-manager": "home-manager", "home-manager": "home-manager_2",
"impermanence": "impermanence", "impermanence": "impermanence",
"lite-config": "lite-config", "lite-config": "lite-config",
"lix": "lix", "lix": "lix",
@ -998,7 +1071,29 @@
"nix2container": "nix2container", "nix2container": "nix2container",
"nixpkgs": "nixpkgs_9", "nixpkgs": "nixpkgs_9",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"sops-nix": "sops-nix" "sops-nix": "sops-nix",
"walker": "walker"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1751423951,
"narHash": "sha256-AowKhJGplXRkAngSvb+32598DTiI6LOzhAnzgvbCtYM=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "1684ed5b15859b655caf41b467d046e29a994d04",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
} }
}, },
"sops-nix": { "sops-nix": {
@ -1008,11 +1103,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1747603214, "lastModified": 1750119275,
"narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=", "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd", "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1068,16 +1163,16 @@
}, },
"systems_4": { "systems_4": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1689347949,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"type": "github" "type": "github"
} }
}, },
@ -1086,11 +1181,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1701680307, "lastModified": 1731533236,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1098,6 +1193,27 @@
"repo": "flake-utils", "repo": "flake-utils",
"type": "github" "type": "github"
} }
},
"walker": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_4"
},
"locked": {
"lastModified": 1751351108,
"narHash": "sha256-C6lGn4ALRpKzdL129meWl4DaDP26Il3F7RhDzAjfKJQ=",
"owner": "abenz1267",
"repo": "walker",
"rev": "94b180424d1cdfd98d513d37e5e2284c5b074140",
"type": "github"
},
"original": {
"owner": "abenz1267",
"repo": "walker",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@ -33,6 +33,7 @@
ataraxiasjel-nur.url = "github:AtaraxiaSjel/nur"; ataraxiasjel-nur.url = "github:AtaraxiaSjel/nur";
catppuccin.url = "github:catppuccin/nix"; catppuccin.url = "github:catppuccin/nix";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
deploy-rs = { deploy-rs = {
url = "github:serokell/deploy-rs"; url = "github:serokell/deploy-rs";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -63,6 +64,10 @@
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
walker = {
url = "github:abenz1267/walker";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =
@ -98,6 +103,8 @@
}; };
systemModules = [ systemModules = [
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
inputs.chaotic.nixosModules.nyx-cache
inputs.chaotic.nixosModules.nyx-overlay
./modules/nixos ./modules/nixos
]; ];
homeModules = [ ./modules/home ]; homeModules = [ ./modules/home ];

View File

@ -24,8 +24,12 @@
# }; # };
# }; # };
services.scx.enable = true;
services.scx.scheduler = "scx_rustland";
boot = { boot = {
zfs.package = pkgs.zfs_unstable; kernelPackages = pkgs.linuxPackages_cachyos;
zfs.package = pkgs.zfs_cachyos;
loader = { loader = {
grub = { grub = {

View File

@ -65,6 +65,7 @@ in
# Home-manager # Home-manager
home-manager.users.${defaultUser} = { home-manager.users.${defaultUser} = {
ataraxia.defaults.role = "desktop"; ataraxia.defaults.role = "desktop";
ataraxia.programs.lutris.enable = true;
ataraxia.programs.mangohud.enable = true; ataraxia.programs.mangohud.enable = true;
ataraxia.services.modprobed-db.enable = true; ataraxia.services.modprobed-db.enable = true;
ataraxia.theme.catppuccin.enable = true; ataraxia.theme.catppuccin.enable = true;
@ -84,9 +85,11 @@ in
home.packages = with pkgs; [ home.packages = with pkgs; [
devenv devenv
llama-cpp
nh nh
nix-diff nix-diff
nix-update nix-update
nix-update-docker-image
nixfmt-rfc-style nixfmt-rfc-style
nixos-anywhere nixos-anywhere
@ -115,6 +118,7 @@ in
]; ];
persist.state.directories = [ persist.state.directories = [
".config/image-updater"
".config/sops/age" ".config/sops/age"
".config/WarThunder" ".config/WarThunder"
"nixos-config" "nixos-config"
@ -131,8 +135,13 @@ in
wal_recycle = "off"; wal_recycle = "off";
}; };
# ataraxia.virtualisation.docker = true;
ataraxia.virtualisation.libvirt = true;
ataraxia.virtualisation.podman = true;
ataraxia.programs.corectrl.enable = true; ataraxia.programs.corectrl.enable = true;
ataraxia.programs.steam.enable = true; ataraxia.programs.steam.enable = true;
ataraxia.programs.waydroid.enable = true;
ataraxia.vpn.sing-box.enable = true; ataraxia.vpn.sing-box.enable = true;
ataraxia.vpn.sing-box.config = "ataraxia-singbox"; ataraxia.vpn.sing-box.config = "ataraxia-singbox";
services.tailscale = { services.tailscale = {
@ -171,8 +180,9 @@ in
fsType = "nfs4"; fsType = "nfs4";
options = [ options = [
"nfsvers=4.2" "nfsvers=4.2"
"x-systemd.automount"
"noauto" "noauto"
"x-systemd.automount"
"x-systemd.idle-timeout=1800"
]; ];
}; };
}; };

View File

@ -109,6 +109,8 @@ in
"font.name.monospace.x-western" = fonts.mono.family; "font.name.monospace.x-western" = fonts.mono.family;
"font.name.sans-serif.x-western" = fonts.sans.family; "font.name.sans-serif.x-western" = fonts.sans.family;
"font.name.serif.x-western" = fonts.serif.family; "font.name.serif.x-western" = fonts.serif.family;
"font.name.sans-serif.x-cyrillic" = fonts.cyrillic.family;
"font.name.serif.x-cyrillic" = fonts.cyrillic.family;
"browser.display.background_color" = colors.color0; "browser.display.background_color" = colors.color0;
"browser.display.foreground_color" = colors.color5; "browser.display.foreground_color" = colors.color5;
"browser.anchor_color" = colors.color13; "browser.anchor_color" = colors.color13;
@ -160,6 +162,8 @@ in
"font.name.monospace.x-western" = fonts.mono.family; "font.name.monospace.x-western" = fonts.mono.family;
"font.name.sans-serif.x-western" = fonts.sans.family; "font.name.sans-serif.x-western" = fonts.sans.family;
"font.name.serif.x-western" = fonts.serif.family; "font.name.serif.x-western" = fonts.serif.family;
"font.name.sans-serif.x-cyrillic" = fonts.cyrillic.family;
"font.name.serif.x-cyrillic" = fonts.cyrillic.family;
"browser.display.background_color" = colors.color0; "browser.display.background_color" = colors.color0;
"browser.display.foreground_color" = colors.color5; "browser.display.foreground_color" = colors.color5;
"browser.anchor_color" = colors.color13; "browser.anchor_color" = colors.color13;

View File

@ -0,0 +1,24 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib) mkEnableOption mkIf;
cfg = config.ataraxia.programs.lutris;
in
{
options.ataraxia.programs.lutris = {
enable = mkEnableOption "Enable lutris program";
};
config = mkIf cfg.enable {
home.packages = with pkgs; [
lutris
wine
];
persist.state.directories = [ ".local/share/lutris" ];
};
}

View File

@ -0,0 +1,93 @@
{
config,
lib,
...
}:
let
inherit (lib) mkEnableOption mkIf;
cfg = config.ataraxia.programs.mimeapps;
apps = config.defaultApplications;
in
{
options.ataraxia.programs.mimeapps = {
enable = mkEnableOption "Enable mimeapps";
};
config = mkIf cfg.enable {
xdg.mimeApps = {
enable = true;
defaultApplications = {
"text/html" = apps.browser.desktop;
"x-scheme-handler/http" = apps.browser.desktop;
"x-scheme-handler/https" = apps.browser.desktop;
"x-scheme-handler/about" = apps.browser.desktop;
"x-scheme-handler/unknown" = apps.browser.desktop;
"message/rfc822" = apps.mail.desktop;
"x-scheme-handler/mailto" = apps.mail.desktop;
"x-scheme-handler/tg" = apps.messenger.desktop;
"application/x-bittorrent" = apps.torrent.desktop;
"image/jpeg" = apps.image.desktop;
"image/png" = apps.image.desktop;
"image/gif" = apps.image.desktop;
"image/bmp" = apps.image.desktop;
"image/svg+xml" = apps.image.desktop;
"image/webp" = apps.image.desktop;
"application/zip" = apps.archive.desktop;
"application/x-rar" = apps.archive.desktop;
"application/x-7z-compressed" = apps.archive.desktop;
"application/x-tar" = apps.archive.desktop;
"application/gzip" = apps.archive.desktop;
"application/x-bzip2" = apps.archive.desktop;
"inode/directory" = apps.fm.desktop;
"video/mp4" = apps.media-player.desktop;
"video/x-matroska" = apps.media-player.desktop;
"video/webm" = apps.media-player.desktop;
"video/x-flv" = apps.media-player.desktop;
"video/quicktime" = apps.media-player.desktop;
"video/x-msvideo" = apps.media-player.desktop;
"video/x-ms-wmv" = apps.media-player.desktop;
"audio/mpeg" = apps.media-player.desktop;
"audio/ogg" = apps.media-player.desktop;
"audio/x-wav" = apps.media-player.desktop;
"audio/flac" = apps.media-player.desktop;
"audio/x-ms-wma" = apps.media-player.desktop;
"audio/x-aac" = apps.media-player.desktop;
"audio/opus" = apps.media-player.desktop;
"video/x-m4v" = apps.media-player.desktop;
"video/3gpp" = apps.media-player.desktop;
"video/x-ms-asf" = apps.media-player.desktop;
"application/pdf" = apps.document-viewer.desktop;
"application/epub+zip" = apps.document-viewer.desktop;
"image/vnd.djvu" = apps.document-viewer.desktop;
"application/postscript" = apps.document-viewer.desktop;
"text/plain" = apps.editor.desktop;
"text/markdown" = apps.editor.desktop;
"text/x-shellscript" = apps.editor.desktop;
"text/css" = apps.editor.desktop;
"text/csv" = apps.editor.desktop;
"application/json" = apps.editor.desktop;
"text/xml" = apps.editor.desktop;
"application/xml" = apps.editor.desktop;
"application/javascript" = apps.editor.desktop;
"text/x-java-source" = apps.editor.desktop;
"text/x-python" = apps.editor.desktop;
"application/x-python-code" = apps.editor.desktop;
"text/x-csrc" = apps.editor.desktop;
"text/x-c++src" = apps.editor.desktop;
"text/x-h" = apps.editor.desktop;
"text/x-c++hdr" = apps.editor.desktop;
"application/x-desktop" = apps.editor.desktop;
"application/x-nix" = apps.editor.desktop;
};
};
};
}

View File

@ -27,6 +27,7 @@ in
bat bat
bottom bottom
fd fd
file
libqalculate libqalculate
p7zip p7zip
pinfo pinfo
@ -39,6 +40,7 @@ in
tldr tldr
translate-shell translate-shell
unrar unrar
xarchiver
]; ];
persist.state.directories = [ persist.state.directories = [

View File

@ -81,6 +81,9 @@ in
polypus74.trusty-rusty-snippets polypus74.trusty-rusty-snippets
rust-lang.rust-analyzer rust-lang.rust-analyzer
ext-nixpkgs.vadimcn.vscode-lldb ext-nixpkgs.vadimcn.vscode-lldb
# AI
ggml-org.llama-vscode
rooveterinaryinc.roo-cline
]; ];
# mutableExtensionsDir = false; # mutableExtensionsDir = false;
userSettings = { userSettings = {
@ -94,6 +97,7 @@ in
"strings" = true; "strings" = true;
}; };
"files.autoSave" = "afterDelay"; "files.autoSave" = "afterDelay";
"files.enableTrash" = false;
"files.exclude" = { "files.exclude" = {
"**/.classpath" = true; "**/.classpath" = true;
"**/.devenv" = true; "**/.devenv" = true;
@ -115,6 +119,11 @@ in
"license.default" = "mit"; "license.default" = "mit";
"license.extension" = ".md"; "license.extension" = ".md";
"license.year" = "auto"; "license.year" = "auto";
"llama-vscode.launch_chat" = "";
"llama-vscode.launch_completion" = "${pkgs.llama-cpp}/bin/llama-server --fim-qwen-3b-default";
"llama-vscode.launch_embeddings" = "";
"llama-vscode.launch_training_chat" = "";
"llama-vscode.launch_training_completion" = "";
"nix.enableLanguageServer" = true; "nix.enableLanguageServer" = true;
"nix.formatterPath" = getExe pkgs.nixfmt-rfc-style; "nix.formatterPath" = getExe pkgs.nixfmt-rfc-style;
# "nix.serverPath" = getExe pkgs.nil; # "nix.serverPath" = getExe pkgs.nil;
@ -133,6 +142,11 @@ in
}; };
}; };
}; };
"roo-cline.allowedCommands" = [
"git log"
"git diff"
"git show"
];
"rust-analyzer.check.command" = "clippy"; "rust-analyzer.check.command" = "clippy";
"search.exclude" = { "search.exclude" = {
"**/.devenv" = true; "**/.devenv" = true;

View File

@ -0,0 +1,37 @@
{
config,
lib,
pkgs,
inputs,
...
}:
let
inherit (lib) getExe mkEnableOption mkIf;
cfg = config.ataraxia.programs.walker;
in
{
imports = [ inputs.walker.homeManagerModules.default ];
options.ataraxia.programs.walker = {
enable = mkEnableOption "Enable walker program";
};
config = mkIf cfg.enable {
defaultApplications.dmenu = {
cmd = getExe config.programs.walker.package;
desktop = "walker";
};
programs.walker = {
enable = true;
package = pkgs.walker;
runAsService = false;
config = {
websearch.prefix = "?";
switcher.prefix = "/";
};
};
startupApplications = [ "${getExe config.programs.walker.package} --gapplication-service" ];
};
}

View File

@ -0,0 +1,25 @@
{
config,
lib,
...
}:
let
inherit (lib) getExe mkEnableOption mkIf;
cfg = config.ataraxia.programs.zathura;
in
{
options.ataraxia.programs.zathura = {
enable = mkEnableOption "Enable zathura program";
};
config = mkIf cfg.enable {
programs.zathura = {
enable = true;
};
defaultApplications.document-viewer = {
cmd = getExe config.programs.zathura.package;
desktop = "zathura";
};
};
}

View File

@ -8,12 +8,20 @@
let let
inherit (lib) inherit (lib)
escapeShellArg escapeShellArg
isAttrs
mkEnableOption mkEnableOption
mkIf mkIf
mkOption mkOption
recursiveUpdate recursiveUpdate
; ;
inherit (lib.types) listOf path str; inherit (lib.types)
either
enum
listOf
path
str
submodule
;
inherit (builtins) concatMap; inherit (builtins) concatMap;
cfg = config.persist; cfg = config.persist;
username = config.home.username; username = config.home.username;
@ -25,14 +33,47 @@ in
options = options =
let let
directoryEntryType = submodule {
options = {
directory = mkOption {
type = str;
description = "The directory path to be linked.";
};
method = mkOption {
type = enum [
"bindfs"
"symlink"
];
default = config.defaultDirectoryMethod;
description = ''
The linking method to be used for this specific directory entry.
'';
};
};
};
common = { common = {
directories = mkOption { directories = mkOption {
type = listOf str; type = listOf (either str directoryEntryType);
default = [ ]; default = [ ];
description = ''
List of directories to persist.
Each element can be a string (e.g., ".cache") or an attribute set
(e.g., { directory = ".local/share/Steam"; method = "symlink"; }).
'';
example = [
".config/foo"
{
directory = ".config/bar";
method = "symlink";
}
];
}; };
files = mkOption { files = mkOption {
type = listOf str; type = listOf str;
default = [ ]; default = [ ];
description = "List of files to persist.";
example = [ ".config/foo.conf" ];
}; };
}; };
in in
@ -43,12 +84,10 @@ in
type = path; type = path;
default = "/persist${config.home.homeDirectory}"; default = "/persist${config.home.homeDirectory}";
}; };
# Stuff that matters
# TODO backups # TODO backups
state = recursiveUpdate { state = recursiveUpdate {
# backup = {...}; # backup = {...};
} common; } common;
# Stuff that's just there to speed up the system
cache = recursiveUpdate { cache = recursiveUpdate {
clean = { clean = {
enable = mkEnableOption "cleaning the cache files and directories"; enable = mkEnableOption "cleaning the cache files and directories";
@ -62,7 +101,6 @@ in
}; };
}; };
# TODO: filter persist paths like in nixos module
config = config =
let let
takeAll = what: concatMap (x: x.${what}); takeAll = what: concatMap (x: x.${what});
@ -72,6 +110,9 @@ in
]; ];
allFiles = takeAll "files" persists; allFiles = takeAll "files" persists;
allDirs = takeAll "directories" persists; allDirs = takeAll "directories" persists;
# Helper function to extract path strings from the mixed list
getPaths = map (x: if isAttrs x then x.directory else x);
in in
mkIf cfg.enable { mkIf cfg.enable {
home.persistence.${cfg.persistRoot} = { home.persistence.${cfg.persistRoot} = {
@ -91,8 +132,8 @@ in
"Videos" "Videos"
".config/dconf" ".config/dconf"
".local/share/nix" ".local/share/nix"
".local/share/systemd"
".ssh" ".ssh"
# { directory = ".ssh"; mode = "0700"; }
]; ];
}; };
@ -102,18 +143,25 @@ in
Description = "Cleaning up cache files and directories for user ${username}"; Description = "Cleaning up cache files and directories for user ${username}";
Wants = [ "modprobed-db.timer" ]; Wants = [ "modprobed-db.timer" ];
}; };
Service = { Service =
ExecStart = pkgs.writeShellScript "" '' let
# Extract only the path strings for the cleanup script
cacheDirPaths = getPaths cfg.cache.directories;
in
{
ExecStart = pkgs.writeShellScript "" ''
${builtins.concatStringsSep "\n" ( ${builtins.concatStringsSep "\n" (
map (x: "rm ${escapeShellArg x}") (absoluteHomePath cfg.cache.files) map (x: "${pkgs.coreutils}/bin/rm ${escapeShellArg x}") (absoluteHomePath cfg.cache.files)
)} )}
${builtins.concatStringsSep "\n" ( ${builtins.concatStringsSep "\n" (
map (x: "rm -rf ${escapeShellArg x}") (absoluteHomePath cfg.cache.directories) map (x: "${pkgs.findutils}/bin/find ${escapeShellArg x} -mindepth 1 -delete") (
)} absoluteHomePath cacheDirPaths
''; )
Type = "simple"; )}
}; '';
Type = "simple";
};
Install.WantedBy = [ "default.target" ]; Install.WantedBy = [ "default.target" ];
}; };
timers."persist-cache-cleanup-${username}" = { timers."persist-cache-cleanup-${username}" = {

View File

@ -47,6 +47,7 @@ in
ataraxia.security.pass-secret-service.enable = mkDefault true; ataraxia.security.pass-secret-service.enable = mkDefault true;
ataraxia.security.password-store.enable = mkDefault true; ataraxia.security.password-store.enable = mkDefault true;
programs.micro.enable = mkDefault true;
programs.nix-index.enable = mkDefault true; programs.nix-index.enable = mkDefault true;
programs.nix-index-database.comma.enable = mkDefault true; programs.nix-index-database.comma.enable = mkDefault true;
@ -81,16 +82,20 @@ in
ataraxia.programs.default.enable = mkDefault true; ataraxia.programs.default.enable = mkDefault true;
ataraxia.programs.firefox.enable = mkDefault true; ataraxia.programs.firefox.enable = mkDefault true;
ataraxia.programs.kitty.enable = mkDefault true; ataraxia.programs.kitty.enable = mkDefault true;
ataraxia.programs.mimeapps.enable = mkDefault true;
ataraxia.programs.mpv.enable = mkDefault true; ataraxia.programs.mpv.enable = mkDefault true;
ataraxia.programs.rofi.enable = mkDefault true; ataraxia.programs.rofi.enable = mkDefault false;
ataraxia.programs.spotify.enable = mkDefault true; ataraxia.programs.spotify.enable = mkDefault true;
ataraxia.programs.telegram.enable = mkDefault true; ataraxia.programs.telegram.enable = mkDefault true;
ataraxia.programs.thunderbird.enable = mkDefault true; ataraxia.programs.thunderbird.enable = mkDefault true;
ataraxia.programs.vscode.enable = mkDefault true; ataraxia.programs.vscode.enable = mkDefault true;
ataraxia.programs.walker.enable = mkDefault true;
ataraxia.programs.zathura.enable = mkDefault true;
ataraxia.wayland.enable = mkDefault true; ataraxia.wayland.enable = mkDefault true;
ataraxia.wayland.hyprland.enable = mkDefault true; ataraxia.wayland.hyprland.enable = mkDefault true;
ataraxia.wayland.mako.enable = mkDefault true; ataraxia.wayland.mako.enable = mkDefault true;
ataraxia.wayland.waybar.enable = mkDefault true; ataraxia.wayland.waybar.enable = mkDefault true;
ataraxia.wayland.wlogout.enable = mkDefault true;
}; };
in in
mkMerge [ mkMerge [

View File

@ -9,9 +9,11 @@ let
mkEnableOption mkEnableOption
mkIf mkIf
mkOption mkOption
removePrefix
; ;
inherit (lib.types) nullOr path str; inherit (lib.types) nullOr path str;
cfg = config.ataraxia.security.password-store; cfg = config.ataraxia.security.password-store;
homeDir = config.home.homeDirectory;
in in
{ {
options.ataraxia.security.password-store = { options.ataraxia.security.password-store = {
@ -62,6 +64,6 @@ in
settings.PASSWORD_STORE_DIR = cfg.store; settings.PASSWORD_STORE_DIR = cfg.store;
}; };
persist.state.directories = [ cfg.store ]; persist.state.directories = [ (removePrefix "${homeDir}/" cfg.store) ];
}; };
} }

View File

@ -136,6 +136,11 @@ in
"gtk-4.0/gtk.css".source = "${gtk4Dir}/gtk.css"; "gtk-4.0/gtk.css".source = "${gtk4Dir}/gtk.css";
"gtk-4.0/gtk-dark.css".source = "${gtk4Dir}/gtk-dark.css"; "gtk-4.0/gtk-dark.css".source = "${gtk4Dir}/gtk-dark.css";
}; };
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = if cfg.flavor == "latte" then "default" else "prefer-dark";
};
};
}) })
]; ];
} }

View File

@ -1,8 +1,4 @@
{ { config, lib, ... }:
config,
lib,
...
}:
let let
inherit (lib) mkEnableOption mkIf unique; inherit (lib) mkEnableOption mkIf unique;
cfg = config.ataraxia.defaults.fonts; cfg = config.ataraxia.defaults.fonts;
@ -21,6 +17,7 @@ in
fonts.mono.package fonts.mono.package
fonts.emoji.package fonts.emoji.package
fonts.icons.package fonts.icons.package
fonts.cyrillic.package
]; ];
fonts = { fonts = {
@ -29,8 +26,14 @@ in
defaultFonts = { defaultFonts = {
emoji = [ fonts.emoji.family ]; emoji = [ fonts.emoji.family ];
monospace = [ fonts.mono.family ]; monospace = [ fonts.mono.family ];
sansSerif = [ fonts.sans.family ]; sansSerif = [
serif = [ fonts.serif.family ]; fonts.sans.family
fonts.cyrillic.family
];
serif = [
fonts.serif.family
fonts.cyrillic.family
];
}; };
}; };
}; };

View File

@ -47,6 +47,10 @@ in
type = submodule fontSubmodule; type = submodule fontSubmodule;
default = { }; default = { };
}; };
cyrillic = mkOption {
type = submodule fontSubmodule;
default = { };
};
size = mkOption { size = mkOption {
type = submodule { type = submodule {
options = options =
@ -125,6 +129,10 @@ in
family = "Rose-Pine"; family = "Rose-Pine";
package = pkgs.rosepine-gtk-icons; package = pkgs.rosepine-gtk-icons;
}; };
cyrillic = {
family = "PT Sans";
package = pkgs.paratype-pt-sans;
};
size.big = 14; size.big = 14;
size.normal = 12; size.normal = 12;
size.small = 11; size.small = 11;

View File

@ -14,6 +14,9 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
# For pinentry-gnome3
home.packages = [ pkgs.gcr ];
programs.gpg = { programs.gpg = {
enable = true; enable = true;
homedir = "${config.xdg.dataHome}/gnupg"; homedir = "${config.xdg.dataHome}/gnupg";
@ -22,6 +25,7 @@ in
enable = true; enable = true;
enableSshSupport = true; enableSshSupport = true;
pinentry.package = pkgs.pinentry-gnome3; pinentry.package = pkgs.pinentry-gnome3;
pinentry.program = "pinentry";
sshKeys = [ sshKeys = [
"7A7130ABF128CC2C32B3D6AD27515056B0193CE1" "7A7130ABF128CC2C32B3D6AD27515056B0193CE1"
"E6A6377C3D0827C36428A290199FDB3B91414AFE" "E6A6377C3D0827C36428A290199FDB3B91414AFE"

View File

@ -8,6 +8,7 @@
let let
inherit (builtins) mapAttrs; inherit (builtins) mapAttrs;
inherit (lib) inherit (lib)
getExe
mkEnableOption mkEnableOption
mkDefault mkDefault
mkIf mkIf
@ -20,6 +21,21 @@ let
useNixosHyprland = osConfig != null && osConfig.programs.hyprland.enable; useNixosHyprland = osConfig != null && osConfig.programs.hyprland.enable;
useWithUWSM = osConfig != null && osConfig.programs.hyprland.withUWSM; useWithUWSM = osConfig != null && osConfig.programs.hyprland.withUWSM;
execApp = optionalString useWithUWSM "uwsm app --"; execApp = optionalString useWithUWSM "uwsm app --";
mpvExe = getExe config.programs.mpv.package;
yt-mpv = pkgs.writeShellScript "yt-mpv" ''
if [[ "$1" != "--no-video" ]]; then
${getExe pkgs.libnotify} -t 3000 --icon=video-television "Playing Video" "$(${pkgs.wl-clipboard}/bin/wl-paste)"
${mpvExe} --fs "$(${pkgs.wl-clipboard}/bin/wl-paste)"
else
${getExe pkgs.libnotify}/bin/notify-send -t 3000 --icon=video-television "Playing Audio" "$(${pkgs.wl-clipboard}/bin/wl-paste)"
${apps.term.cmd} -e ${mpvExe} --no-video "$(${pkgs.wl-clipboard}/bin/wl-paste)"
fi
'';
# screen-ocr = pkgs.writeShellScript "screen-ocr" ''
# grim -g "$(slurp)" - | ${getExe pkgs.tesseract} -l eng - - | wl-copy
# '';
in in
{ {
options.ataraxia.wayland.hyprland = { options.ataraxia.wayland.hyprland = {
@ -105,6 +121,7 @@ in
misc = { misc = {
disable_hyprland_logo = true; disable_hyprland_logo = true;
disable_splash_rendering = true; disable_splash_rendering = true;
enable_anr_dialog = false;
mouse_move_enables_dpms = true; mouse_move_enables_dpms = true;
vfr = false; vfr = false;
vrr = 0; # TODO: Remove after flickering is fixed vrr = 0; # TODO: Remove after flickering is fixed
@ -132,8 +149,8 @@ in
"$mod,p,exec,${execApp} wlogout -b 5" "$mod,p,exec,${execApp} wlogout -b 5"
# "$mod,escape,exec,${execApp} ${apps.monitor.cmd}" # "$mod,escape,exec,${execApp} ${apps.monitor.cmd}"
"$mod,w,exec,${execApp} ${apps.dmenu.desktop} -show run" "$mod,w,exec,${execApp} ${apps.dmenu.desktop}"
"$mod CTRL,w,exec,${execApp} ${apps.dmenu.desktop} -show drun -modi drun -show-icons" "$mod CTRL,w,exec,${execApp} ${apps.dmenu.desktop}"
"$mod,return,exec,${execApp} ${apps.term.cmd}" "$mod,return,exec,${execApp} ${apps.term.cmd}"
"$mod SHIFT,return,exec,${execApp} nop kitti3" "$mod SHIFT,return,exec,${execApp} nop kitti3"
"$mod,e,exec,${execApp} ${apps.editor.cmd}" "$mod,e,exec,${execApp} ${apps.editor.cmd}"
@ -150,8 +167,8 @@ in
"$mod SHIFT,period,exec,${execApp} pamixer -i 2" "$mod SHIFT,period,exec,${execApp} pamixer -i 2"
"$mod,i,exec,${execApp} pavucontrol" "$mod,i,exec,${execApp} pavucontrol"
"$mod,d,exec,${execApp} ${apps.fm.cmd}" "$mod,d,exec,${execApp} ${apps.fm.cmd}"
# "$mod,y,exec,${execApp} ${pkgs.youtube-to-mpv}/bin/yt-mpv" "$mod,y,exec,${execApp} ${yt-mpv}"
# "$mod SHIFT,Y,exec,${execApp} ${pkgs.youtube-to-mpv}/bin/yt-mpv --no-video" "$mod SHIFT,Y,exec,${execApp} ${yt-mpv} --no-video"
"$mod,print,exec,${execApp} grim $(xdg-user-dir PICTURES)/Screenshots/$(date +'%Y-%m-%d+%H:%M:%S').png && notify-send 'Screenshot Saved'" "$mod,print,exec,${execApp} grim $(xdg-user-dir PICTURES)/Screenshots/$(date +'%Y-%m-%d+%H:%M:%S').png && notify-send 'Screenshot Saved'"
"$mod CTRL,print,exec,${execApp} grim - | wl-copy && notify-send 'Screenshot Copied to Clipboard'" "$mod CTRL,print,exec,${execApp} grim - | wl-copy && notify-send 'Screenshot Copied to Clipboard'"
"$mod SHIFT,print,exec,${execApp} grim -g '$(slurp)' $(xdg-user-dir PICTURES)/Screenshots/$(date +'%Y-%m-%d+%H:%M:%S').png && notify-send 'Screenshot Saved'" "$mod SHIFT,print,exec,${execApp} grim -g '$(slurp)' $(xdg-user-dir PICTURES)/Screenshots/$(date +'%Y-%m-%d+%H:%M:%S').png && notify-send 'Screenshot Saved'"
@ -168,7 +185,7 @@ in
"$mod,x,togglesplit," "$mod,x,togglesplit,"
"$mod,c,changegroupactive,b" "$mod,c,changegroupactive,b"
"$mod,v,changegroupactive,f" "$mod,v,changegroupactive,f"
"$mod,V,exec,${execApp} cliphist list | ${apps.dmenu.desktop} -dmenu | cliphist decode | wl-copy" "$mod,V,exec,cliphist list | ${apps.dmenu.desktop} -d -k -t 's' | cliphist decode | wl-copy"
"$mod,1,workspace,1" "$mod,1,workspace,1"
"$mod,2,workspace,2" "$mod,2,workspace,2"
@ -268,5 +285,9 @@ in
]; ];
}; };
}; };
persist.state.directories = [
".local/share/hyprland"
];
}; };
} }

View File

@ -22,10 +22,10 @@ in
max-icon-size = 24; max-icon-size = 24;
max-visible = 10; max-visible = 10;
width = 500; width = 500;
backgroundColor = mkDefault "#${colors.color0}AA"; background-color = mkDefault "#${colors.color0}";
textColor = mkDefault "#${colors.color5}"; text-color = mkDefault "#${colors.color5}";
borderColor = mkDefault "#${colors.color13}AA"; border-color = mkDefault "#${colors.color13}";
progressColor = mkDefault "over #${colors.color11}"; progress-color = mkDefault "over #${colors.color11}";
}; };
}; };
}; };

View File

@ -47,13 +47,13 @@ in
device = "intel_backlight"; device = "intel_backlight";
format = "{percent}% {icon}"; format = "{percent}% {icon}";
format-icons = [ format-icons = [
"" "󰃚"
"" "󰃛"
"" "󰃜"
"" "󰃝"
"" "󰃞"
"" "󰃟"
"" "󰃠"
]; ];
# min-length = 7; # min-length = 7;
}; };
@ -99,11 +99,11 @@ in
}; };
cpu = { cpu = {
interval = 4; interval = 4;
format = "<span color=\"#7aa2f7\"></span>{usage}%"; format = "<span color=\"#7aa2f7\"></span>{usage}%";
}; };
disk = { disk = {
interval = 60; interval = 60;
format = "<span color=\"#7aa2f7\"></span>{free}"; format = "<span color=\"#7aa2f7\"></span>{free}";
path = "/home"; path = "/home";
}; };
"hyprland/window" = { "hyprland/window" = {
@ -114,20 +114,22 @@ in
on-click = "activate"; on-click = "activate";
disable-scroll = true; disable-scroll = true;
format-icons = { format-icons = {
"10" = "0"; "10" = "";
"Messengers" = "Msg"; "Email" = "";
"Music" = "Mus"; "Messengers" = "";
"Music" = "";
"Steam" = "";
}; };
}; };
memory = { memory = {
format = "<span color=\"#7aa2f7\"></span>{used}GiB"; format = "<span color=\"#7aa2f7\">󰍛</span>{used}GiB";
interval = 4; interval = 4;
}; };
temperature = { temperature = {
# "hwmon-path" = "/sys/class/hwmon/hwmon0/temp1_input"; # "hwmon-path" = "/sys/class/hwmon/hwmon0/temp1_input";
critical-threshold = 80; critical-threshold = 80;
format = "<span color=\"#7aa2f7\">\uf4f5</span>{temperatureC}°C"; format = "<span color=\"#7aa2f7\"></span>{temperatureC}°C";
format-critical = "<span color=\"#f7768e\"> </span>{temperatureC}°C"; format-critical = "<span color=\"#f7768e\"> </span>{temperatureC}°C";
interval = 4; interval = 4;
}; };
tray = { tray = {
@ -137,13 +139,13 @@ in
wireplumber = { wireplumber = {
scroll-step = 5; scroll-step = 5;
format = "<span color=\"#7aa2f7\">{icon} </span>{volume}%"; format = "<span color=\"#7aa2f7\">{icon} </span>{volume}%";
format-muted = "<span color=\"#f7768e\">\ueee8</span>Muted"; format-muted = "<span color=\"#f7768e\">󰖁</span>Muted";
format-bluetooth = "<span color=\"#7aa2f7\">\uf282 </span>{volume}%"; format-bluetooth = "<span color=\"#7aa2f7\"> </span>{volume}%";
on-click-right = "blueman-manager"; on-click-right = "blueman-manager";
format-icons = [ format-icons = [
"\uf026 " "󰕿"
"\uf027 " "󰖀"
"\uf028 " "󰕾"
]; ];
on-click = "pavucontrol"; on-click = "pavucontrol";
}; };

View File

@ -0,0 +1,117 @@
{ config, lib, ... }:
let
inherit (lib) mkEnableOption mkIf;
inherit (config.theme) colors fonts;
cfg = config.ataraxia.wayland.wlogout;
in
{
options.ataraxia.wayland.wlogout = {
enable = mkEnableOption "Enable wlogout";
};
config = mkIf cfg.enable {
programs.wlogout = {
enable = true;
layout = [
{
label = "lock";
action = "";
text = "Lock";
}
{
label = "reboot";
action = "systemctl reboot";
text = "Reboot";
}
{
label = "shutdown";
action = "systemctl poweroff";
text = "Shutdown";
}
{
label = "logout";
action = "hyprctl dispatch exit 0";
text = "Logout";
}
{
label = "suspend";
action = "systemctl suspend";
text = "Suspend";
}
];
style = mkIf (!config.catppuccin.wlogout.enable) ''
window {
font-family: "${fonts.mono.family}";
font-size: 18pt;
color: ${colors.color5};
background-color: alpha(${colors.color0}, 0.8);
}
button {
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
border: none;
background-color: alpha(${colors.color0}, 0);
color: ${colors.color14};
}
button:hover {
background-color: alpha(${colors.color2}, 0.1);
}
button:focus {
background-color: ${colors.color14};
color: ${colors.color0};
}
#lock {
background-image: image(url("${./lock.png}"));
padding: 35px;
}
#lock:focus {
background-image: image(url("${./lock-hover.png}"));
padding: 35px;
}
#logout {
background-image: image(url("${./logout.png}"));
padding: 30px;
}
#logout:focus {
background-image: image(url("${./logout-hover.png}"));
padding: 30px;
}
#suspend {
background-image: image(url("${./sleep.png}"));
padding: 30px;
}
#suspend:focus {
background-image: image(url("${./sleep-hover.png}"));
padding: 30px;
}
#shutdown {
background-image: image(url("${./power.png}"));
padding: 30px;
}
#shutdown:focus {
background-image: image(url("${./power-hover.png}"));
padding: 30px;
}
#reboot {
background-image: image(url("${./restart.png}"));
padding: 30px;
}
#reboot:focus {
background-image: image(url("${./restart-hover.png}"));
padding: 30px;
}
'';
};
catppuccin.wlogout = {
iconStyle = "wlogout";
extraStyle = ''
window {
font-family: "${fonts.mono.family}";
font-size: 18pt;
}
'';
};
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -16,6 +16,7 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
programs.gamemode.enable = true;
programs.gamescope.enable = true; programs.gamescope.enable = true;
programs.gamescope.capSysNice = false; programs.gamescope.capSysNice = false;

View File

@ -0,0 +1,36 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (builtins) hasAttr;
inherit (lib) mkEnableOption mkIf;
cfg = config.ataraxia.programs.waydroid;
defaultUser = config.ataraxia.defaults.users.defaultUser;
in
{
options.ataraxia.programs.waydroid = {
enable = mkEnableOption "Enable waydroid";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ wl-clipboard ];
virtualisation.waydroid.enable = true;
persist.state.directories = [ "/var/lib/waydroid" ];
home-manager = mkIf (hasAttr "users" config.home-manager) {
users.${defaultUser} = {
home.packages = with pkgs; [ waydroid-script ];
persist.state.directories = [
{
directory = ".local/share/waydroid";
method = "symlink";
}
];
};
};
};
}

View File

@ -5,7 +5,12 @@
... ...
}: }:
let let
inherit (lib) mkDefault mkEnableOption mkIf; inherit (lib)
mkDefault
mkEnableOption
mkIf
mkOverride
;
cfg = config.ataraxia.defaults.boot; cfg = config.ataraxia.defaults.boot;
in in
@ -30,7 +35,8 @@ in
"zswap.enabled=0" "zswap.enabled=0"
]; ];
kernelPackages = pkgs.linuxPackages_xanmod_latest; kernelPackages = mkOverride 900 pkgs.linuxPackages_xanmod_latest;
zfs.package = mkOverride 900 pkgs.zfs_unstable;
consoleLogLevel = 3; consoleLogLevel = 3;

View File

@ -1,6 +1,7 @@
{ {
config, config,
lib, lib,
pkgs,
inputs, inputs,
... ...
}: }:
@ -8,12 +9,10 @@ let
inherit (lib) inherit (lib)
escapeShellArg escapeShellArg
hasPrefix hasPrefix
hasSuffix
mkEnableOption mkEnableOption
mkDefault mkDefault
mkIf mkIf
mkOption mkOption
optionalString
recursiveUpdate recursiveUpdate
unique unique
; ;
@ -23,8 +22,7 @@ let
btrfs = config.ataraxia.filesystems.btrfs.mountpoints; btrfs = config.ataraxia.filesystems.btrfs.mountpoints;
zfs = config.ataraxia.filesystems.zfs.mountpoints; zfs = config.ataraxia.filesystems.zfs.mountpoints;
mountpoints = map (x: "${x}${optionalString (!(hasSuffix "/" x)) "/"}") (unique (btrfs ++ zfs)); mountpoints = unique (btrfs ++ zfs);
subtractListsPrefix = a: filter (dir: !(any (pref: hasPrefix pref dir) a)); subtractListsPrefix = a: filter (dir: !(any (pref: hasPrefix pref dir) a));
in in
{ {
@ -94,9 +92,13 @@ in
systemd.services.persist-cache-cleanup = mkIf cfg.cache.clean.enable { systemd.services.persist-cache-cleanup = mkIf cfg.cache.clean.enable {
description = "Cleaning up cache files and directories"; description = "Cleaning up cache files and directories";
script = '' script = ''
${builtins.concatStringsSep "\n" (map (x: "rm ${escapeShellArg x}") cfg.cache.files)} ${builtins.concatStringsSep "\n" (
map (x: "${pkgs.coreutils}/bin/rm ${escapeShellArg x}") cfg.cache.files
)}
${builtins.concatStringsSep "\n" (map (x: "rm -rf ${escapeShellArg x}") cfg.cache.directories)} ${builtins.concatStringsSep "\n" (
map (x: "${pkgs.findutils}/bin/find ${escapeShellArg x} -mindepth 1 -delete") cfg.cache.directories
)}
''; '';
startAt = cfg.cache.clean.dates; startAt = cfg.cache.clean.dates;
}; };

View File

@ -60,7 +60,7 @@ in
services.userborn.enable = mkDefault true; services.userborn.enable = mkDefault true;
system.rebuild.enableNg = mkDefault true; system.rebuild.enableNg = mkDefault true;
system.switch.enableNg = mkDefault true; system.switch.enableNg = mkDefault true;
system.etc.overlay.enable = mkDefault true; system.etc.overlay.enable = mkDefault false;
system.etc.overlay.mutable = mkDefault true; system.etc.overlay.mutable = mkDefault true;
systemd.services.systemd-timesyncd.wantedBy = [ systemd.services.systemd-timesyncd.wantedBy = [
@ -84,6 +84,10 @@ in
serverRole = recursiveUpdate baseRole { serverRole = recursiveUpdate baseRole {
ataraxia.profiles.hardened = mkDefault true; ataraxia.profiles.hardened = mkDefault true;
ataraxia.profiles.minimal = mkDefault true; ataraxia.profiles.minimal = mkDefault true;
ataraxia.virtualisation.podman = mkDefault true;
ataraxia.virtualisation.libvirt = mkDefault true;
boot.supportedFilesystems = [ "nfs" ];
time.timeZone = "Etc/UTC"; time.timeZone = "Etc/UTC";
zramSwap.memoryPercent = 100; zramSwap.memoryPercent = 100;
@ -91,18 +95,16 @@ in
desktopRole = recursiveUpdate baseRole { desktopRole = recursiveUpdate baseRole {
ataraxia.defaults.hardware.graphics = mkDefault true; ataraxia.defaults.hardware.graphics = mkDefault true;
ataraxia.defaults.sound.enable = mkDefault true; ataraxia.defaults.sound.enable = mkDefault true;
ataraxia.wayland.enable = mkDefault true; ataraxia.wayland.enable = mkDefault true;
ataraxia.wayland.hyprland.enable = mkDefault true; ataraxia.wayland.hyprland.enable = mkDefault true;
programs.virt-manager.enable = config.ataraxia.virtualisation.libvirt;
boot.supportedFilesystems = [ "nfs" ];
# Fix some icon cache problems
programs.gdk-pixbuf.modulePackages = with pkgs; [ librsvg ];
services.gvfs.enable = mkDefault true; services.gvfs.enable = mkDefault true;
# saved space, but you need to recompile gvfs
services.gvfs.package = (
pkgs.gnome.gvfs.override {
samba = null;
gnomeSupport = false;
}
);
services.getty.autologinUser = mkDefault defaultUser; services.getty.autologinUser = mkDefault defaultUser;
location = { location = {

View File

@ -0,0 +1,110 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib)
hasAttr
mkEnableOption
mkIf
optionals
;
cfg = config.ataraxia.virtualisation;
defaultUser = config.ataraxia.defaults.users.defaultUser;
in
{
options.ataraxia.virtualisation = {
docker = mkEnableOption "Enable docker";
libvirt = mkEnableOption "Enable libvirt";
podman = mkEnableOption "Enable podman";
};
config = mkIf (cfg.docker || cfg.libvirt || cfg.podman) {
virtualisation = {
oci-containers.backend = if (!cfg.podman && cfg.docker) then "docker" else "podman";
docker = {
enable = cfg.docker;
daemon.settings = {
features = {
buildkit = true;
};
};
storageDriver = "overlay2";
};
podman = {
enable = cfg.podman;
defaultNetwork.settings.dns_enabled = true;
dockerSocket.enable = !config.virtualisation.docker.enable;
};
containers.registries.search = [
"docker.io"
"ghcr.io"
"quay.io"
];
containers.storage.settings = {
storage = {
driver = "overlay";
graphroot = "/var/lib/containers/storage";
runroot = "/run/containers/storage";
};
};
libvirtd = {
enable = cfg.libvirt;
qemu = {
ovmf.enable = true;
ovmf.packages = [
(pkgs.OVMFFull.override {
secureBoot = true;
tpmSupport = true;
}).fd
];
runAsRoot = false;
swtpm.enable = true;
};
onBoot = "ignore";
onShutdown = "shutdown";
};
spiceUSBRedirection.enable = cfg.libvirt;
};
environment.systemPackages =
[ ]
++ optionals cfg.docker [ pkgs.docker-compose ]
++ optionals cfg.libvirt [ pkgs.virtiofsd ]
++ optionals cfg.podman [ pkgs.podman-compose ];
users.users."qemu-libvirtd" = mkIf cfg.libvirt {
extraGroups = lib.optionals (!config.virtualisation.libvirtd.qemu.runAsRoot) [
"kvm"
"input"
];
};
security.unprivilegedUsernsClone = true;
persist.state.directories = [
"/var/lib/docker"
"/var/lib/libvirt"
"/var/lib/containers"
];
home-manager = mkIf (hasAttr "users" config.home-manager) {
users.${defaultUser} = {
home.file.".config/containers/storage.conf".text = ''
[storage]
driver = "overlay"
'';
home.file.".config/libvirt/libvirt.conf".text = ''
uri_default = "qemu:///system"
'';
persist.state.directories = [
".config/containers"
];
};
};
};
}

View File

@ -15,6 +15,18 @@ in
hyprlandUnstable = unstable.hyprland; hyprlandUnstable = unstable.hyprland;
hyprlandPortalUnstable = unstable.xdg-desktop-portal-hyprland; hyprlandPortalUnstable = unstable.xdg-desktop-portal-hyprland;
intel-vaapi-driver = prev.intel-vaapi-driver.override { enableHybridCodec = true; }; intel-vaapi-driver = prev.intel-vaapi-driver.override { enableHybridCodec = true; };
llama-cpp =
(prev.llama-cpp.override {
blasSupport = false;
cudaSupport = false;
openclSupport = false;
rocmSupport = false;
rpcSupport = false;
vulkanSupport = true;
}).overrideAttrs
(_: {
enableParallelBuilding = true;
});
mesaUnstable = unstable.mesa; mesaUnstable = unstable.mesa;
mesaUnstablei686 = unstable.driversi686Linux.mesa; mesaUnstablei686 = unstable.driversi686Linux.mesa;
# nix-alien = inputs.nix-alien.packages.${system}.nix-alien; # nix-alien = inputs.nix-alien.packages.${system}.nix-alien;