Compare commits

...

11 Commits

Author SHA1 Message Date
800d0adeea feat(pumo): add config for phone pumo 2026-05-01 16:27:56 +02:00
5514d347c7 feat(nix): add marpa as binary cache for Nix 2026-05-01 16:27:56 +02:00
06519d555b feat(packages): add QGIS 2026-05-01 15:24:44 +02:00
ce94f09dd4 feat(i18n): proper multilingual input
Use fcitx5 to switch between different inputs. Installed mozc-ut for
Japanese input with the bepo layout, as well as fcitx5-chinese to load
table-defined layouts for the IPA/X-SAMPA input method.

Currently, mozc_server and fcitx5 need to be launched by the
compositor (only Hyprland for now), auto-launching from module options
needs to be implemented in the future.
2026-05-01 15:24:44 +02:00
171d635b72 fix(gampo): refer to proper home config 2026-04-28 10:47:38 +02:00
3bc4e3dd15 feat(vcs): jj config for Creug 2026-04-12 18:07:33 +02:00
4b7a64c8ac fix(copyparty): disable copyparty for elcafe for now 2026-04-12 15:18:38 +02:00
9024d2c744 fix(kernel): remove reference to deprecated hardened kernel 2026-04-12 15:09:52 +02:00
d13d81c60a feat(devshell): add jj and git to dev environment 2026-04-12 15:02:17 +02:00
88cf103332 chore(lockfile): update lockfile 2026-04-12 15:00:14 +02:00
9431a71539 feat(ai): add opencode to AI packages 2026-04-12 15:00:14 +02:00
23 changed files with 2021 additions and 102 deletions

101
flake.lock generated
View File

@@ -94,11 +94,11 @@
"quickshell": "quickshell"
},
"locked": {
"lastModified": 1774758352,
"narHash": "sha256-zrv2EjkiGT5BYyg9kOXfo48V6bUf0nyTjis/40ca+7s=",
"lastModified": 1775660122,
"narHash": "sha256-qMKB06TE0MY1anDQKBrzZEpktNPyvMxQQzTEEwWAA6I=",
"owner": "caelestia-dots",
"repo": "shell",
"rev": "5c59e4490a43eb38b39133d80c47490f0963f216",
"rev": "aa2b08dd45963dc9558de94dbff5e1615e347d02",
"type": "github"
},
"original": {
@@ -115,11 +115,11 @@
]
},
"locked": {
"lastModified": 1774411715,
"narHash": "sha256-mceIHtVMXpLAfr1W0VK9ceTBX5yKu4gGWpVbThWTsAA=",
"lastModified": 1775334496,
"narHash": "sha256-dUopEMj5KhH1vnv43o29kMsayp0Ki+9EfIn4UAE9sAU=",
"owner": "9001",
"repo": "copyparty",
"rev": "26e663d111e39ca96c63702ad27a05b6736607cf",
"rev": "ede692925edfc6fca7a52f483414d543e9303237",
"type": "github"
},
"original": {
@@ -374,11 +374,11 @@
]
},
"locked": {
"lastModified": 1774738535,
"narHash": "sha256-2jfBEZUC67IlnxO5KItFCAd7Oc+1TvyV/jQlR+2ykGQ=",
"lastModified": 1775683737,
"narHash": "sha256-oBYyowo6yfgb95Z78s3uTnAd9KkpJpwzjJbfnpLaM2Y=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "769e07ef8f4cf7b1ec3b96ef015abec9bc6b1e2a",
"rev": "7ba4ee4228ed36123c7cb75d50524b43514ef992",
"type": "github"
},
"original": {
@@ -398,11 +398,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1774451186,
"narHash": "sha256-5IYhofBilDXbM6MWAZLTKxuThjtL3lGNTXdBGsbgRek=",
"lastModified": 1775400071,
"narHash": "sha256-uFoqOUB1wbqqDKRdHNEYdgyRQECYWhJBq4Oxjm3Dx9M=",
"ref": "refs/heads/develop",
"rev": "a5b2bc41aafd203203b4eba4f247a670dd9cb252",
"revCount": 29,
"rev": "3da214ae4c14f57dc5f6ecd480330936f00e1a4f",
"revCount": 35,
"type": "git",
"url": "https://labs.phundrak.com/phundrak/jj-cz"
},
@@ -411,6 +411,22 @@
"url": "https://labs.phundrak.com/phundrak/jj-cz"
}
},
"mobile-nixos": {
"flake": false,
"locked": {
"lastModified": 1772289954,
"narHash": "sha256-iDdtwk/dFb6AsXMtcOpZixxXl6C1HNUPe6cglxxHO7M=",
"owner": "mobile-nixos",
"repo": "mobile-nixos",
"rev": "1a9e0af79dc7b5e29ed772f1a8a76fcbd9d45fdf",
"type": "github"
},
"original": {
"owner": "mobile-nixos",
"repo": "mobile-nixos",
"type": "github"
}
},
"nix": {
"inputs": {
"flake-compat": [
@@ -464,11 +480,11 @@
]
},
"locked": {
"lastModified": 1774762074,
"narHash": "sha256-89Mh4Eb/5stVJX6kGagVMijcU2FmfeD8Qv7UXc5d92o=",
"lastModified": 1775365369,
"narHash": "sha256-DgH5mveLoau20CuTnaU5RXZWgFQWn56onQ4Du2CqYoI=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "bc13aeaed568be76eab84df88ff39261bb52ff70",
"rev": "cef5cf82671e749ac87d69aadecbb75967e6f6c3",
"type": "github"
},
"original": {
@@ -508,11 +524,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1774386573,
"narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=",
"lastModified": 1775423009,
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9",
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
"type": "github"
},
"original": {
@@ -522,6 +538,27 @@
"type": "github"
}
},
"opencode": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1775336060,
"narHash": "sha256-KkjMN2xA8jGBnj96UtzffvOeYJJZM05/5T36nSdpZkE=",
"owner": "anomalyco",
"repo": "opencode",
"rev": "930e94a3ea098b9d56fcb6d08b545256d2546a82",
"type": "github"
},
"original": {
"owner": "anomalyco",
"ref": "v1.3.15",
"repo": "opencode",
"type": "github"
}
},
"pumo-system-info": {
"inputs": {
"flake-utils": "flake-utils_4",
@@ -572,8 +609,10 @@
"flake-utils": "flake-utils_2",
"home-manager": "home-manager",
"jj-cz": "jj-cz",
"mobile-nixos": "mobile-nixos",
"nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs",
"opencode": "opencode",
"pumo-system-info": "pumo-system-info",
"sops-nix": "sops-nix",
"spicetify": "spicetify",
@@ -647,11 +686,11 @@
]
},
"locked": {
"lastModified": 1774760784,
"narHash": "sha256-D+tgywBHldTc0klWCIC49+6Zlp57Y4GGwxP1CqfxZrY=",
"lastModified": 1775682595,
"narHash": "sha256-0E9PohY/VuESLq0LR4doaH7hTag513sDDW5n5qmHd1Q=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "8adb84861fe70e131d44e1e33c426a51e2e0bfa5",
"rev": "d2e8438d5886e92bc5e7c40c035ab6cae0c41f76",
"type": "github"
},
"original": {
@@ -668,11 +707,11 @@
"systems": "systems_4"
},
"locked": {
"lastModified": 1774157037,
"narHash": "sha256-kJpgEIF0sxMW0vx543m3AwyqptJOxPoOJY1DfJ4jQas=",
"lastModified": 1775421933,
"narHash": "sha256-JkEbzFDFTsUlVtHEzA8Y4r3O9LInhb96eOCbtGjGnbM=",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"rev": "2e2234c2932a3aff5f845cda33cb1972a9e889aa",
"rev": "ec8d73085fdf807d55765335dc8126e14e7b2096",
"type": "github"
},
"original": {
@@ -688,11 +727,11 @@
]
},
"locked": {
"lastModified": 1774517972,
"narHash": "sha256-oPIVzGlMmfWuJlRbr87yU3cnV8NxtwTG92GqpQczlkw=",
"lastModified": 1775701952,
"narHash": "sha256-xj9u8fz2hTTTELMorqox0hPWrmAvGRnQUEnlj+vCjFo=",
"owner": "nix-community",
"repo": "srvos",
"rev": "0ddba2fbd72bb60f8b35b7de1ad67590f454d402",
"rev": "f56f1053ae9f878501d3a8ae1961c73d1d7abce3",
"type": "github"
},
"original": {
@@ -791,11 +830,11 @@
]
},
"locked": {
"lastModified": 1774759885,
"narHash": "sha256-Y3D2GnZTO6BhGWeVcO6qUkiO5g0dDL2tmokLVWNC1WY=",
"lastModified": 1775710180,
"narHash": "sha256-sCokvdNvl8zIzsnjgG0TN5h3RUI7GJyWW9ErfmEj0rM=",
"owner": "youwen5",
"repo": "zen-browser-flake",
"rev": "16e3f4cd221a030186a96015d82dcb3fb4afa4d6",
"rev": "2c138beb648d1cbbfae76695a8230ee04e4db25a",
"type": "github"
},
"original": {

View File

@@ -30,6 +30,16 @@
inputs.nixpkgs.follows = "nixpkgs";
};
mobile-nixos = {
url = "github:mobile-nixos/mobile-nixos";
flake = false; # It is not as a flake
};
opencode = {
url = "github:anomalyco/opencode/v1.3.15";
inputs.nixpkgs.follows = "nixpkgs";
};
pumo-system-info = {
url = "git+https://labs.phundrak.com/phundrak/pumo-system-info";
inputs.nixpkgs.follows = "nixpkgs";
@@ -58,14 +68,15 @@
nixConfig = {
extra-trusted-public-keys = [
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
"marpa-local:XoO+dFN4PeauF52pYuy3Vh4Sdtl2qIdxu5aUasWKv6Q="
"phundrak.cachix.org-1:osJAkYO0ioTOPqaQCIXMfIRz1/+YYlVFkup3R2KSexk="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
];
extra-substituters = [
"https://nix-community.cachix.org?priority=10"
"https://devenv.cachix.org?priority=20"
"https://phundrak.cachix.org?priority=30"
"http://marpa:5000?priority=5"
"https://phundrak.cachix.org?priority=10"
"https://nix-community.cachix.org?priority=20"
"https://cache.nixos.org?priority=40"
];
extra-experimental-features = [
@@ -80,6 +91,7 @@
nixpkgs,
flake-utils,
home-manager,
mobile-nixos,
srvos,
...
} @ inputs:
@@ -90,7 +102,11 @@
in {
formatter = pkgs.alejandra;
devShells.default = pkgs.mkShell {
buildInputs = [pkgs.nh];
buildInputs = [
pkgs.nh
pkgs.jujutsu
pkgs.git
];
};
packages = {
@@ -118,7 +134,7 @@
};
"phundrak@gampo" = home-manager.lib.homeManagerConfiguration {
inherit extraSpecialArgs pkgs;
modules = withUserModules ./users/phundrak/host/marpa.nix;
modules = withUserModules ./users/phundrak/host/gampo.nix;
};
"phundrak@marpa" = home-manager.lib.homeManagerConfiguration {
inherit extraSpecialArgs pkgs;
@@ -156,7 +172,7 @@
};
marpa = nixpkgs.lib.nixosSystem {
inherit specialArgs;
modules = withSystemModules ./hosts/marpa/configuration.nix;
modules = withSystemModules ./hosts/marpa;
};
NaroMk3 = nixpkgs.lib.nixosSystem {
inherit specialArgs;
@@ -167,6 +183,14 @@
./hosts/naromk3/configuration.nix
];
};
pumo = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
inherit specialArgs;
modules = withSystemModules [
(import "${mobile-nixos}/lib/configuration.nix" {device = "oneplus-enchilada";})
./hosts/pumo
];
};
tilo = nixpkgs.lib.nixosSystem {
inherit specialArgs;
modules = withSystemModules ./hosts/tilo/configuration.nix;

View File

@@ -12,14 +12,14 @@
sops.secrets = {
"elcafe/traefik/env".restartUnits = ["traefik.service"];
"elcafe/traefik/dynamic".restartUnits = ["traefik.service"];
"elcafe/copyparty/passwords/creug" = {
restartUnits = ["copyparty.service"];
owner = "creug";
};
"elcafe/copyparty/passwords/phundrak" = {
restartUnits = ["copyparty.service"];
owner = "phundrak";
};
# "elcafe/copyparty/passwords/creug" = {
# restartUnits = ["copyparty.service"];
# owner = "creug";
# };
# "elcafe/copyparty/passwords/phundrak" = {
# restartUnits = ["copyparty.service"];
# owner = "phundrak";
# };
};
mySystem = {
@@ -73,12 +73,12 @@
};
};
services.copyparty = import ./copyparty.nix {
passwordFiles = {
creug = config.sops.secrets."elcafe/copyparty/passwords/creug".path;
phundrak = config.sops.secrets."elcafe/copyparty/passwords/phundrak".path;
};
};
# services.copyparty = import ./copyparty.nix {
# passwordFiles = {
# creug = config.sops.secrets."elcafe/copyparty/passwords/creug".path;
# phundrak = config.sops.secrets."elcafe/copyparty/passwords/phundrak".path;
# };
# };
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions

View File

@@ -41,6 +41,7 @@
};
sound.enable = true;
};
i18n.input.enable = true;
misc.keymap = "fr-bepo";
networking = {
hostname = "gampo";

View File

@@ -86,6 +86,7 @@
scarlett.enable = true;
};
};
i18n.input.enable = true;
misc.keymap = "fr-bepo";
networking = {
hostname = "marpa";
@@ -106,6 +107,10 @@
programs.steam.enable = true;
services = {
fwupd.enable = true;
harmonia = {
enable = true;
signKeyPaths = [config.sops.secrets."marpa/nix-cache-priv-key".path];
};
languagetool.enable = true;
printing.enable = true;
ssh.enable = true;
@@ -123,10 +128,13 @@
};
};
sops.secrets.extraHosts = {
inherit (config.users.users.root) group;
owner = config.users.users.phundrak.name;
mode = "0440";
sops.secrets = {
"marpa/nix-cache-priv-key" = {};
extraHosts = {
inherit (config.users.users.root) group;
owner = config.users.users.phundrak.name;
mode = "0440";
};
};
services.udev.extraHwdb = ''

91
hosts/pumo/default.nix Normal file
View File

@@ -0,0 +1,91 @@
# Minimal configuration for OnePlus 6 (enchilada) NixOS Mobile
# Focus on essentials: SSH, wireless, and basic tools
{
pkgs,
inputs,
...
}: {
imports = [
inputs.sops-nix.nixosModules.sops
../../system
];
nixpkgs.config.permittedInsecurePackages = ["olm-3.2.16"];
mySystem = {
desktop = {
hyprland.enable = true;
niri.enable = true;
waydroid.enable = true;
xserver = {
enable = true;
de = "gnome";
};
};
dev.docker = {
enable = true;
podman.enable = true;
autoprune.enable = true;
};
hardware = {
bluetooth.enable = true;
sound = {
enable = true;
usePulseaudio = true;
};
};
i18n.input.enable = true;
misc = {
keymap = "fr-bepo";
mobile = true;
};
networking = {
hostname = "pumo";
id = "93595b88";
};
packages = {
appimage.enable = true;
flatpak.enable = true;
nix.nix-ld.enable = true;
};
services = {
languagetool.enable = true;
printing.enable = true;
ssh.enable = true;
};
users = {
root.disablePassword = true;
phundrak = {
enable = true;
trusted = true;
extraGroups = ["feedbackd"];
};
};
};
programs = {
dconf.enable = true;
calls.enable = true;
zsh.enable = true;
};
hardware.sensor.iio.enable = true;
# Minimal essential packages
environment.systemPackages = with pkgs; [
chatty # IM and SMS
epiphany
nixd
git
vim
emacs
wget
curl
jujutsu
firefox
kitty
];
system.stateVersion = "25.11";
}

View File

@@ -6,6 +6,8 @@ elcafe:
traefik:
env: ENC[AES256_GCM,data:HUdWGYoEPp2v8dnDuVsl7YmPxuBfHmXzGrvKWeiqPlmAwMqVZrZ1j8on/7QKvYDJoTJ40XY2qNynSA==,iv:Vgc/fZERnNp7hSMeRd9EgB3IenKAFTAhwC0bk8CX4DE=,tag:SdfhOST/o29Lt1zRdXXRyQ==,type:str]
dynamic: ENC[AES256_GCM,data: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,iv:3G3geSZRziwGiKcUMVNZ7j5s/4YA6Uk7wCSb4aFNSMo=,tag:FxARskR9+wdV7/xCKP8UdA==,type:str]
marpa:
nix-cache-priv-key: ENC[AES256_GCM,data:H5VsN0nOogvgxWHXHF66BbzJe17zelZCG6mU4vmVJqBoi7a5cQxzU7WnV4k1EOpMJPDj6floVmrsG4DM86FthxcTwixCNDINmaemwAXQnUkgWXFKYY7Ovzten81UVKrtkN4n1S8=,iv:pxnHD5YqyTeNZnxyEJeXAUixZEz8Uq9b2HFZZBsMOzk=,tag:xI+4tFG+Q4Z5IVxlATayJA==,type:str]
extraHosts: ENC[AES256_GCM,data:4lp7w0snYle7vGVLJq3zlTxoC8eVpaSreW3P8Aq+O6oRJoWo3IASpwi7zSx6nxmLo5LGPeupVXfy3xOkG9d5QFNU2uU6vXKvOnnm6wrpS+UcYp/4U/z+R3rFnFsI5PsCgmlL1bSUFCFkXlrLDIyoW50Q/DLXDS8QaUYAtto1DcRUXc9j8RnunYF38HFlAOD/Xa4DY048pvZu8TMsmLQjM5txZnZBq4+P8aBjY3SF+K9cqZ+SgQkU+gdGo0/S/N5OUZJ3ATJ6mglPl/Nplw/Dh9HvC7jEMJZKrVzWiYquTOn0/IytqOCS2SkhsmVMRqf06hpvhlz6sFXzkDfxKMIRTULEkjZDkZ7QioSbLeqmQePSg7xs28SvToiVKSpg0PxeH5LvJE73hgX3ATUXA2BmRvqQuqBwLaDU6TPm8xkYe7qbabaN5oFtXCI/XydZTao5Glqw/BZQRTise/qGgn3Bfl/ieMYQOqCMEdHzR0Beipur6spliGFC4YnwL3Nh4CO6qOB/j61a7rqY6nLyo54jWtjvHX42pTuGWhvhGH1z4NRZqcKks+KCMB4PcCXgul1hrb04wLXYVu7R/7QqOACp4SZBUFZCj+izcsnB1sKdKliL87VBUkwOSF+1JUCY,iv:5A3jCWLkooCkuOMiybbeQ9+TRA7CoiW3qbzmJLVarSc=,tag:qLsGhrFHs65Vesj4Ot4I/g==,type:str]
mopidy:
spotify: ENC[AES256_GCM,data:6i9BzQmlndnROuT1H2zgN/3I6hBiFf14BlcS+XL2PbTiiEQZe2yE3tnZo3KXU9S5CjS3MwxsVdytKOFMQt2s1bVjcibBhJzoKEQByaapdzn1mK3kQLdJfhPf4Hf9YZV9Dlc60ngS7ESLZakdFVlj4rlbV5XReLhK,iv:fYd78r4U0kTyq1TZjBVXkjdNiOQ29gLJ53kwTXsi8W0=,tag:oWaeOuzdHWS4joZAdeA2pg==,type:str]
@@ -105,7 +107,7 @@ sops:
dUpXZis2N2VyN0ZFbjlPRXdwRFQ1aHMKm1Mk6MPKxFmwdATCYUANRSY5rHKgmQer
LBlqqWKt1JiIUAYtazQeQ6KYxmjVlQPY7AZw2t+EhBEPrqbTL3vOiw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2026-03-07T17:19:05Z"
mac: ENC[AES256_GCM,data:hT4mPKLcIuAFmllJBYFXL5sGyMn95mYEv+eGVA+KQYm629YKSncgvn5g8elau/8HXR1O/bwQlkGmGr8VPeR/0KRb6TPCA4MrCwox38fy3ZLx2e0movVi/xIgKXIo5wYUq4Qm/pSo715limxGChxUxKtdEK/lmMkSnxyGmlkQtwM=,iv:XoOfhdK/CK6shUXhH4h14gtyqZqcqmTV6/R2jkynFr8=,tag:q3V0xcWQxjFi2drk5fLJoQ==,type:str]
lastmodified: "2026-05-01T13:20:34Z"
mac: ENC[AES256_GCM,data:OueL0eHYmFKWfSyCZxburRJ2FS1xkowx7ha/Zv7r++26D85GSHDeIL9HdfByI5a1OhH90rH3WLxZrJgT3FiwBw27HhhHtS7Fs6MBFvTuPmSA7ZtMeGMWBRVjwbGAWN17BZAhJzMlZHq2nPX0xXIKT0HuTLVRPLuVCSlvDzMXsTE=,iv:+JN4Vzs8o8PJAam/uKBbUXt3ArxC88D6xR7rMeeGglg=,tag:S+OtbxLhVKFnqBZtyKDGyA==,type:str]
unencrypted_suffix: _unencrypted
version: 3.11.0
version: 3.12.2

View File

@@ -54,7 +54,7 @@ in {
};
};
config.boot = {
config.boot = mkIf (! config.mySystem.misc.mobile) {
initrd.kernelModules = lib.lists.singleton (
if config.mySystem.hardware.amdgpu.enable
then "amdgpu"
@@ -73,10 +73,7 @@ in {
};
supportedFilesystems = mkIf cfg.zfs.enable ["zfs"];
zfs.extraPools = mkIf cfg.zfs.enable cfg.zfs.pools;
kernelPackages =
if cfg.kernel.hardened
then pkgs.linuxPackages_hardened
else cfg.kernel.package;
kernelPackages = cfg.kernel.package;
kernelModules =
cfg.kernel.modules
++ ["kvm-${cfg.kernel.cpuVendor}"]

View File

@@ -30,6 +30,7 @@ in {
example = "fr-bepo";
description = "Keymap to use in the TTY console";
};
mobile = mkEnableOption "Enable if using Mobile NixOS";
};
config = {
@@ -47,16 +48,16 @@ in {
nix.settings = {
substituters = [
"https://nix-community.cachix.org?priority=10"
"https://devenv.cachix.org?priority=20"
"https://phundrak.cachix.org?priority=30"
"http://marpa:5000?priority=5"
"https://phundrak.cachix.org?priority=10"
"https://nix-community.cachix.org?priority=20"
"https://cache.nixos.org?priority=40"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw="
"marpa-local:XoO+dFN4PeauF52pYuy3Vh4Sdtl2qIdxu5aUasWKv6Q="
"phundrak.cachix.org-1:osJAkYO0ioTOPqaQCIXMfIRz1/+YYlVFkup3R2KSexk="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
];
http-connections = 128;
experimental-features = [

View File

@@ -30,6 +30,7 @@ in {
games.enable = false;
gnome-remote-desktop.enable = true;
gnome-online-accounts.enable = true;
gnome-keyring.enable = true;
sushi.enable = true;
};

View File

@@ -8,7 +8,8 @@ with lib; let
cfg = config.mySystem.hardware.sound;
in {
options.mySystem.hardware.sound = {
enable = mkEnableOption "Whether to enable sounds with Pipewire";
enable = mkEnableOption "Whether to enable sounds";
usePulseaudio = mkEnableOption "Activate sound support with pulseaudio";
scarlett.enable = mkEnableOption "Activate support for Scarlett sound card";
alsa = mkOption {
type = types.bool;
@@ -32,13 +33,14 @@ in {
config = {
environment.systemPackages = mkIf cfg.scarlett.enable [pkgs.alsa-scarlett-gui];
services.pipewire = mkIf cfg.enable {
enable = true;
alsa = mkIf cfg.alsa {
services = {
pipewire.enable = mkForce (cfg.enable && ! cfg.usePulseaudio);
pipewire.alsa = {
enable = mkDefault true;
support32Bit = mkDefault true;
};
jack.enable = mkDefault cfg.jack;
pipewire.jack.enable = cfg.jack;
pulseaudio.enable = cfg.usePulseaudio;
};
programs.noisetorch = mkIf cfg.enable {
inherit (cfg) enable;

View File

@@ -1,5 +1,6 @@
{
imports = [
./input.nix
./locale.nix
];
}

25
system/i18n/input.nix Normal file
View File

@@ -0,0 +1,25 @@
{
lib,
config,
pkgs,
...
}:
with lib; let
cfg = config.mySystem.i18n.input;
in {
options.mySystem.i18n.input.enable = mkEnableOption "Enable i18n input with fcitx5";
config.i18n.inputMethod = mkIf cfg.enable {
enable = true;
type = "fcitx5";
fcitx5.addons = with pkgs; [
fcitx5-gtk
fcitx5-mozc-ut # Japanese input support
fcitx5-nord
fcitx5-table-other # X-SAMPA to IPA support
qt6Packages.fcitx5-chinese-addons # allow to load table addons
qt6Packages.fcitx5-configtool
qt6Packages.fcitx5-with-addons
];
};
}

View File

@@ -1,5 +1,4 @@
{
pkgs,
lib,
config,
...
@@ -11,12 +10,7 @@ in {
enable = mkEnableOption "Enable Flatpak support";
builder.enable = mkEnableOption "Enable Flatpak builder";
};
config = {
services.flatpak = mkIf cfg.enable {
inherit (cfg) enable;
};
environment.systemPackages = mkIf cfg.builder.enable [
pkgs.flatpak-buildR
];
config.services.flatpak = mkIf cfg.enable {
inherit (cfg) enable;
};
}

View File

@@ -3,6 +3,7 @@
./calibre.nix
./endlessh.nix
./fwupd.nix
./harmonia.nix
./jellyfin.nix
./languagetool.nix
./plex.nix

View File

@@ -0,0 +1,36 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.mySystem.services.harmonia;
in {
options.mySystem.services.harmonia = {
enable = mkEnableOption "Harmonia Nix binary cache server";
port = mkOption {
type = types.port;
default = 5000;
description = "Port to listen on";
};
priority = mkOption {
type = types.ints.between 0 100;
default = 50;
description = "Cache priority (lower = higher priority, 0-100)";
};
signKeyPaths = mkOption {
type = types.listOf types.path;
description = "Paths to the signing keys to use for signing the cache.";
};
};
config = mkIf cfg.enable {
services.harmonia.cache = {
enable = true;
inherit (cfg) signKeyPaths;
settings = {
inherit (cfg) priority;
bind = "[::]:${toString cfg.port}";
};
};
};
}

View File

@@ -10,13 +10,18 @@ in {
options.mySystem.users.phundrak = {
enable = mkEnableOption "Enables user phundrak";
trusted = mkEnableOption "Mark the user as trusted by Nix";
extraGroups = mkOption {
type = types.listOf types.str;
default = [];
example = ["feedbackd"];
};
};
config = {
users.users.phundrak = mkIf cfg.enable {
isNormalUser = true;
description = "Lucien Cartier-Tilet";
extraGroups = ["networkmanager" "wheel" "docker" "dialout" "podman" "plugdev" "games" "audio" "input"];
extraGroups = ["networkmanager" "wheel" "docker" "dialout" "podman" "plugdev" "games" "audio" "input"] ++ cfg.extraGroups;
shell = pkgs.zsh;
openssh.authorizedKeys.keyFiles = lib.filesystem.listFilesRecursive ../../users/phundrak/keys;
};

View File

@@ -34,7 +34,16 @@ in {
creug.sshKey.file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
dev.vcs = {
jj.enable = false;
name = "Creug";
email = "gregory.foulachon@gmail.com";
editor = "${pkgs.nano}/bin/nano";
jj = {
enable = true;
cz = {
enable = true;
alias = true;
};
};
git.enable = true;
publicKey = cfg.sshKey;
};

View File

@@ -50,10 +50,13 @@ in {
systemd.enable = false;
importantPrefixes = ["$left" "$right" "$up" "$down" "$menu"];
settings = {
env = [
"XMODIFIERS,@im=fcitx"
"XCURSOR_SIZE,12"
];
input = {
kb_layout = "fr,us";
kb_variant = "bepo_afnor,";
# kb_options = "caps:ctrl_modifier";
numlock_by_default = true;
follow_mouse = 1;
touchpad.natural_scroll = false;
@@ -106,6 +109,8 @@ in {
"pactl load-module module-switch-on-connect"
"${pkgs.mpc}/bin/mpc stop"
"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"
"${pkgs.mozc}/lib/mozc/mozc_server"
"${pkgs.fcitx5}/bin/fcitx5 -d"
]
++ lib.lists.optional (! caelestiaEnabled) "${pkgs.networkmanagerapplet}/bin/nm-applet";
};
@@ -170,8 +175,6 @@ in {
bind = SUPER_SHIFT, minus, movetoworkspace, 8
bind = SUPER_SHIFT, slash, movetoworkspace, 9
bind = SUPER_SHIFT, asterisk, movetoworkspace, 10
env = XCURSOR_SIZE,12
'';
};
};

View File

@@ -2,6 +2,7 @@
config,
lib,
pkgs,
inputs,
...
}:
with lib; let
@@ -29,7 +30,10 @@ in {
};
ollama.enable = mkDefault cfg.enable;
};
packages = [pkgs.lmstudio];
packages = let
inherit (pkgs.stdenv.hostPlatform) system;
inherit (inputs.opencode.packages.${system}) opencode;
in [pkgs.lmstudio opencode];
};
programs.mcp = mkIf (cfg.mcpServers != {}) {
enable = true;

1673
users/phundrak/XCompose Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -157,16 +157,19 @@
vcs.jj.signing.enable = true;
};
fullDesktop = true;
file."${config.home.homeDirectory}/.ssh/allowed_signers" = {
enable = true;
text = lib.strings.join "\n" (
map (file: let
content = lib.strings.trim (builtins.readFile file);
parts = lib.strings.splitString " " content;
email = lib.lists.last parts;
in "${email} namespaces=\"git\" ${content}")
(lib.filesystem.listFilesRecursive ./keys)
);
file = {
".XCompose".source = ./XCompose;
"${config.home.homeDirectory}/.ssh/allowed_signers" = {
enable = true;
text = lib.strings.join "\n" (
map (file: let
content = lib.strings.trim (builtins.readFile file);
parts = lib.strings.splitString " " content;
email = lib.lists.last parts;
in "${email} namespaces=\"git\" ${content}")
(lib.filesystem.listFilesRecursive ./keys)
);
};
};
};

View File

@@ -32,17 +32,16 @@ in {
audacity
plexamp
plex-desktop
spicetify-cli
pavucontrol # Volume control
# Social
vesktop # Discord alternative that works well with wayland
element-desktop
signal-desktop
# Misc
bitwarden-desktop
# gplates
qgis
kicad
handy
libnotify
nextcloud-client