9 Commits

38 changed files with 478 additions and 224 deletions
Generated
+76 -54
View File
@@ -72,11 +72,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772764582, "lastModified": 1778125502,
"narHash": "sha256-hSwjmpXHFqzSXrndVekA0IheKrbC7wi0IbfZTYwlmXw=", "narHash": "sha256-QAAO9RCR6byVJi50l8RMVJWzrsNYbXonfR6tqU93vIQ=",
"owner": "caelestia-dots", "owner": "caelestia-dots",
"repo": "cli", "repo": "cli",
"rev": "4bcd42f482d038b98145b0b03388244b68b7d35d", "rev": "7b8a4281aa8b2b12745de531cce0c65d87aea2e5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -94,11 +94,11 @@
"quickshell": "quickshell" "quickshell": "quickshell"
}, },
"locked": { "locked": {
"lastModified": 1775660122, "lastModified": 1778381004,
"narHash": "sha256-qMKB06TE0MY1anDQKBrzZEpktNPyvMxQQzTEEwWAA6I=", "narHash": "sha256-JwIlrajiY74obxyTMu/Ym6wOEQaCjpHwfziPK+E5u3Q=",
"owner": "caelestia-dots", "owner": "caelestia-dots",
"repo": "shell", "repo": "shell",
"rev": "aa2b08dd45963dc9558de94dbff5e1615e347d02", "rev": "2ca4ad4a434e91e73504debd5225e66dc5ebb2b6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -115,11 +115,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775334496, "lastModified": 1778198574,
"narHash": "sha256-dUopEMj5KhH1vnv43o29kMsayp0Ki+9EfIn4UAE9sAU=", "narHash": "sha256-XzgYoibIH6diZoZ2GzoGeyV2xdXAwBtXdAze+Qu2kR0=",
"owner": "9001", "owner": "9001",
"repo": "copyparty", "repo": "copyparty",
"rev": "ede692925edfc6fca7a52f483414d543e9303237", "rev": "139ef1851e5d698521a5c2078c56f951d6e54d00",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -374,11 +374,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775683737, "lastModified": 1778609305,
"narHash": "sha256-oBYyowo6yfgb95Z78s3uTnAd9KkpJpwzjJbfnpLaM2Y=", "narHash": "sha256-muTc+WME6k3sfTr/Pvmw8hrK7zXrbl961TEF9wPeAnk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "7ba4ee4228ed36123c7cb75d50524b43514ef992", "rev": "5878fdadfe2cfe1b3383b38d66117f7b80696b68",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -398,11 +398,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1776813492, "lastModified": 1777830987,
"narHash": "sha256-gydjnWdoZm++hK0B1vpXerwKJQdCeUcxrbBr9iEUTTA=", "narHash": "sha256-fPsv7qZHb9EO04IoQ6cGAj+6/y1pSMEFWmvLCULOEuM=",
"ref": "develop", "ref": "develop",
"rev": "9a6b94276b68263ad5b2ffebb64354b3bb4cc92a", "rev": "bd6892d91e1a04f9b092b22831a977f08a36cbe0",
"revCount": 38, "revCount": 40,
"type": "git", "type": "git",
"url": "https://labs.phundrak.com/phundrak/jj-cz" "url": "https://labs.phundrak.com/phundrak/jj-cz"
}, },
@@ -465,11 +465,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775365369, "lastModified": 1778393439,
"narHash": "sha256-DgH5mveLoau20CuTnaU5RXZWgFQWn56onQ4Du2CqYoI=", "narHash": "sha256-mOtQxUjtKaPHLeoLOY/YEDctmud1X9KwJr4kE1MJ3Wc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "cef5cf82671e749ac87d69aadecbb75967e6f6c3", "rev": "01466c414c7357ae2ce32be4a272a7c69e94ab5f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -509,11 +509,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1775423009, "lastModified": 1778443072,
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=", "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9", "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -523,25 +523,19 @@
"type": "github" "type": "github"
} }
}, },
"opencode": { "nixpkgsStable": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1775336060, "lastModified": 1778430510,
"narHash": "sha256-KkjMN2xA8jGBnj96UtzffvOeYJJZM05/5T36nSdpZkE=", "narHash": "sha256-Ti+ZBvW6yrWWAg2szExVTwCd4qOJ3KlVr1tFHfyfi8Q=",
"owner": "anomalyco", "owner": "NixOS",
"repo": "opencode", "repo": "nixpkgs",
"rev": "930e94a3ea098b9d56fcb6d08b545256d2546a82", "rev": "8fd9daa3db09ced9700431c5b7ad0e8ba199b575",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "anomalyco", "id": "nixpkgs",
"ref": "v1.3.15", "ref": "nixos-25.11",
"repo": "opencode", "type": "indirect"
"type": "github"
} }
}, },
"pumo-system-info": { "pumo-system-info": {
@@ -574,11 +568,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1772925576, "lastModified": 1778222427,
"narHash": "sha256-mMoiXABDtkSJxCYDrkhJ/TrrJf5M46oUfIlJvv2gkZ0=", "narHash": "sha256-6GFiP611nEJvtm+m03sMyfaVIJ9QOCi//hS+PPKyyPA=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "15a84097653593dd15fad59a56befc2b7bdc270d", "rev": "d1760ed1f31c02a95b37a9bf4084129c829ebe7f",
"revCount": 750, "revCount": 817,
"type": "git", "type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell" "url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}, },
@@ -587,6 +581,33 @@
"url": "https://git.outfoxxed.me/outfoxxed/quickshell" "url": "https://git.outfoxxed.me/outfoxxed/quickshell"
} }
}, },
"rockchip": {
"inputs": {
"nixpkgsStable": [
"nixpkgsStable"
],
"nixpkgsUnstable": [
"nixpkgs"
],
"utils": [
"flake-utils"
]
},
"locked": {
"lastModified": 1778273074,
"narHash": "sha256-gPbn0KjsgS2cJa/ENSMtjN0h8dIEy+2N6g8tw9915pM=",
"owner": "raboof",
"repo": "nixos-rockchip",
"rev": "2aab433a41cc9ba862ae73012acdd2eec3547667",
"type": "github"
},
"original": {
"owner": "raboof",
"ref": "pinetab-linux-7.0",
"repo": "nixos-rockchip",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"caelestia-shell": "caelestia-shell", "caelestia-shell": "caelestia-shell",
@@ -596,8 +617,9 @@
"jj-cz": "jj-cz", "jj-cz": "jj-cz",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"opencode": "opencode", "nixpkgsStable": "nixpkgsStable",
"pumo-system-info": "pumo-system-info", "pumo-system-info": "pumo-system-info",
"rockchip": "rockchip",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"spicetify": "spicetify", "spicetify": "spicetify",
"srvos": "srvos", "srvos": "srvos",
@@ -670,11 +692,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775682595, "lastModified": 1777944972,
"narHash": "sha256-0E9PohY/VuESLq0LR4doaH7hTag513sDDW5n5qmHd1Q=", "narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "d2e8438d5886e92bc5e7c40c035ab6cae0c41f76", "rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -691,11 +713,11 @@
"systems": "systems_4" "systems": "systems_4"
}, },
"locked": { "locked": {
"lastModified": 1775421933, "lastModified": 1778540809,
"narHash": "sha256-JkEbzFDFTsUlVtHEzA8Y4r3O9LInhb96eOCbtGjGnbM=", "narHash": "sha256-FNXls2QZTcxY0Dem3QtSewnr8vUKMDsTw9m8pLOnhTc=",
"owner": "Gerg-L", "owner": "Gerg-L",
"repo": "spicetify-nix", "repo": "spicetify-nix",
"rev": "ec8d73085fdf807d55765335dc8126e14e7b2096", "rev": "83939d7df4c0f1b8ee88cabde112223280a48554",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -711,11 +733,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775701952, "lastModified": 1778468351,
"narHash": "sha256-xj9u8fz2hTTTELMorqox0hPWrmAvGRnQUEnlj+vCjFo=", "narHash": "sha256-A5ZdpWN5d+OmKln2EPPeMmPJaBwbugO9dEhyp3pn/X8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "srvos", "repo": "srvos",
"rev": "f56f1053ae9f878501d3a8ae1961c73d1d7abce3", "rev": "23122d21dfbe00e072ce515e21af18882bc88fd7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -814,11 +836,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775710180, "lastModified": 1778303188,
"narHash": "sha256-sCokvdNvl8zIzsnjgG0TN5h3RUI7GJyWW9ErfmEj0rM=", "narHash": "sha256-zXFSvK80qpI91B7DU9QSExAtafSrz6vzormh2kUi6kQ=",
"owner": "youwen5", "owner": "youwen5",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "2c138beb648d1cbbfae76695a8230ee04e4db25a", "rev": "9346c84657a9cab472bc4ee5a2d65d42a72d5346",
"type": "github" "type": "github"
}, },
"original": { "original": {
+18 -5
View File
@@ -2,6 +2,7 @@
description = "Home Manager configuration of phundrak"; description = "Home Manager configuration of phundrak";
inputs = { inputs = {
nixpkgsStable.url = "nixpkgs/nixos-25.11";
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
@@ -30,16 +31,18 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
opencode = {
url = "github:anomalyco/opencode/v1.3.15";
inputs.nixpkgs.follows = "nixpkgs";
};
pumo-system-info = { pumo-system-info = {
url = "git+https://labs.phundrak.com/phundrak/pumo-system-info"; url = "git+https://labs.phundrak.com/phundrak/pumo-system-info";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
rockchip = {
url = "github:raboof/nixos-rockchip/pinetab-linux-7.0";
inputs.utils.follows = "flake-utils";
inputs.nixpkgsStable.follows = "nixpkgsStable";
inputs.nixpkgsUnstable.follows = "nixpkgs";
};
sops-nix = { sops-nix = {
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -86,6 +89,7 @@
nixpkgs, nixpkgs,
flake-utils, flake-utils,
home-manager, home-manager,
rockchip,
srvos, srvos,
... ...
} @ inputs: } @ inputs:
@@ -138,6 +142,10 @@
inherit extraSpecialArgs pkgs; inherit extraSpecialArgs pkgs;
modules = withUserModules ./users/phundrak/host/naromk3.nix; modules = withUserModules ./users/phundrak/host/naromk3.nix;
}; };
"phundrak@pinetab2" = home-manager.lib.homeManagerConfiguration {
inherit extraSpecialArgs pkgs;
modules = withUserModules ./users/phundrak/host/pinetab2.nix;
};
"phundrak@tilo" = home-manager.lib.homeManagerConfiguration { "phundrak@tilo" = home-manager.lib.homeManagerConfiguration {
inherit extraSpecialArgs pkgs; inherit extraSpecialArgs pkgs;
modules = withUserModules ./users/phundrak/host/tilo.nix; modules = withUserModules ./users/phundrak/host/tilo.nix;
@@ -151,6 +159,10 @@
inputs.copyparty.nixosModules.default inputs.copyparty.nixosModules.default
]; ];
withSystemModules = modules: nixpkgs.lib.lists.flatten (defaultSystemModules ++ [modules]); withSystemModules = modules: nixpkgs.lib.lists.flatten (defaultSystemModules ++ [modules]);
pinetabConfig = import ./utils/pinetab.nix {
inherit nixpkgs rockchip specialArgs;
additionalModules = defaultSystemModules;
};
in { in {
alys = nixpkgs.lib.nixosSystem { alys = nixpkgs.lib.nixosSystem {
inherit specialArgs; inherit specialArgs;
@@ -177,6 +189,7 @@
./hosts/naromk3/configuration.nix ./hosts/naromk3/configuration.nix
]; ];
}; };
pinetab2 = pinetabConfig "x86_64-linux" ./hosts/pinetab2/gnome.nix;
tilo = nixpkgs.lib.nixosSystem { tilo = nixpkgs.lib.nixosSystem {
inherit specialArgs; inherit specialArgs;
modules = withSystemModules ./hosts/tilo/configuration.nix; modules = withSystemModules ./hosts/tilo/configuration.nix;
+1
View File
@@ -82,6 +82,7 @@
}; };
sound = { sound = {
enable = true; enable = true;
noisetorch = true;
jack = true; jack = true;
scarlett.enable = true; scarlett.enable = true;
}; };
+74
View File
@@ -0,0 +1,74 @@
{
config,
inputs,
...
}: {
imports = [
inputs.sops-nix.nixosModules.sops
../../system/desktop
../../system/dev
../../system/hardware
../../system/i18n
../../system/misc.nix
../../system/network
../../system/packages
../../system/security
../../system/services
../../system/users
];
system.stateVersion = "25.11";
# documentation.nixos.enable = false;
# nix.settings.trusted-users = ["root" "@wheel"];
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;
input.opentablet.enable = true;
sound.enable = true;
};
i18n.input.enable = true;
misc.keymap = "fr-bepo";
networking = {
hostname = "pinetab2";
id = "99a11b15";
wifi.disablePowersave = true;
};
packages = {
appimage.enable = true;
flatpak.enable = true;
nix = {
gc.automatic = true;
nix-ld.enable = true;
};
};
services.ssh.enable = true;
users = {
root.disablePassword = true;
phundrak = {
enable = true;
trusted = true;
};
};
};
sops.secrets.extraHosts = {
inherit (config.users.users.root) group;
owner = config.users.users.phundrak.name;
mode = "0440";
};
}
+37
View File
@@ -0,0 +1,37 @@
{
pkgs,
config,
...
}: {
# https://github.com/systemd/systemd/pull/35304#issuecomment-3855146191
# gnome autorotate expects 'normal' is the _display panel_ normal, but
# mutter autoconfiguration rotates by 90deg.
# compensating with gdctl for now, though it would be better to 'properly'
# fix this.
services.udev = {
extraHwdb = ''
sensor:modalias:*sc7a20:*
ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 0, 1; 0, 1, 0
'';
extraRules = ''
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1018", ATTRS{idProduct}=="1006", ENV{SYSTEMD_WANTS}+="landscape.service", TAG+="systemd"
'';
};
systemd.services.landscape = {
script = ''
${pkgs.mutter}/bin/gdctl set --logical-monitor --primary --monitor=DSI-1 --transform normal
'';
serviceConfig.User = "phundrak";
serviceConfig.Type = "oneshot";
environment = {
"DBUS_SESSION_BUS_ADDRESS" = "unix:path=/run/user/${toString config.users.users."phundrak".uid}/bus";
};
};
environment.systemPackages = with pkgs; [
gnomeExtensions.arc-menu
gnomeExtensions.dash-to-dock
gnomeExtensions.dash-to-panel
gnomeExtensions.gjs-osk
gnomeExtensions.one-window-wonderland
];
}
+1 -54
View File
@@ -1,68 +1,15 @@
{ {
lib,
config,
...
}:
with lib; let
cfg = config.mySystem.misc;
in {
imports = [ imports = [
./boot ./boot
./desktop ./desktop
./dev ./dev
./hardware ./hardware
./i18n ./i18n
./misc.nix
./network ./network
./packages ./packages
./security ./security
./services ./services
./users ./users
]; ];
options.mySystem.misc = {
timezone = mkOption {
type = types.str;
default = "Europe/Paris";
};
keymap = mkOption {
type = types.str;
default = "fr";
example = "fr-bepo";
description = "Keymap to use in the TTY console";
};
};
config = {
boot.tmp.cleanOnBoot = true;
console.keyMap = cfg.keymap;
time.timeZone = cfg.timezone;
environment.pathsToLink = [
"/share/bash-completion"
"/share/zsh"
];
services = {
orca.enable = false;
envfs.enable = true;
};
nix.settings = {
substituters = [
"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 = [
"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 = [
"nix-command"
"flakes"
];
};
};
} }
+4 -1
View File
@@ -20,6 +20,9 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
mySystem.users.phundrak = mkIf cfg.mySystem.users.phundrak.enable {
extraGroups = ["docker"] ++ lists.optional cfg.podman.enable "podman";
};
environment.systemPackages = with pkgs; environment.systemPackages = with pkgs;
[ [
dive # A tool for exploring each layer in a docker image dive # A tool for exploring each layer in a docker image
@@ -29,7 +32,7 @@ in {
podman-compose podman-compose
podman-desktop podman-desktop
]; ];
virtualisation = mkIf cfg.enable { virtualisation = {
docker = mkIf (!cfg.podman.enable) { docker = mkIf (!cfg.podman.enable) {
enable = true; enable = true;
enableNvidia = cfg.nvidia.enable; enableNvidia = cfg.nvidia.enable;
+2 -1
View File
@@ -3,8 +3,9 @@
./amdgpu.nix ./amdgpu.nix
./bluetooth.nix ./bluetooth.nix
./fingerprint.nix ./fingerprint.nix
./sound.nix
./input ./input
./pinetab2.nix
./sound.nix
]; ];
hardware.enableAllFirmware = lib.mkDefault true; hardware.enableAllFirmware = lib.mkDefault true;
+6 -3
View File
@@ -7,8 +7,11 @@ with lib; let
cfg = config.mySystem.hardware.input.opentablet; cfg = config.mySystem.hardware.input.opentablet;
in { in {
options.mySystem.hardware.input.opentablet.enable = mkEnableOption "Enables OpenTablet drivers"; options.mySystem.hardware.input.opentablet.enable = mkEnableOption "Enables OpenTablet drivers";
config.hardware.opentabletdriver = mkIf cfg.enable { config = mkIf cfg.enable {
inherit (cfg) enable; hardware.opentabletdriver = {
daemon.enable = true; inherit (cfg) enable;
daemon.enable = true;
};
boot.kernelModules = ["wacom"];
}; };
} }
+18
View File
@@ -0,0 +1,18 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.mySystem.hardware.pinetab2;
in {
options.mySystem.hardware.pinetab2.enable = mkEnableOption "Activate support for the PineTab2";
config = {
boot.kernelParams = ["console=tty0" "console=ttyS2,1500000n8" "rootwait" "root=LABEL=NIXOS_SD" "rw"];
hardware.sensor.iio.enable = true;
services.avahi = {
enable = true;
openFirewall = true;
};
};
}
+11 -7
View File
@@ -9,6 +9,7 @@ with lib; let
in { in {
options.mySystem.hardware.sound = { options.mySystem.hardware.sound = {
enable = mkEnableOption "Whether to enable sounds with Pipewire"; enable = mkEnableOption "Whether to enable sounds with Pipewire";
noisetorch = mkEnableOption "Whether to activate noisetorch support";
scarlett.enable = mkEnableOption "Activate support for Scarlett sound card"; scarlett.enable = mkEnableOption "Activate support for Scarlett sound card";
alsa = mkOption { alsa = mkOption {
type = types.bool; type = types.bool;
@@ -32,16 +33,19 @@ in {
config = { config = {
environment.systemPackages = mkIf cfg.scarlett.enable [pkgs.alsa-scarlett-gui]; environment.systemPackages = mkIf cfg.scarlett.enable [pkgs.alsa-scarlett-gui];
services.pipewire = mkIf cfg.enable { services = {
enable = true; pipewire = mkIf cfg.enable {
alsa = mkIf cfg.alsa { enable = true;
enable = mkDefault true; alsa = mkIf cfg.alsa {
support32Bit = mkDefault true; enable = mkDefault true;
support32Bit = mkDefault true;
};
jack.enable = mkDefault cfg.jack;
}; };
jack.enable = mkDefault cfg.jack; pulseaudio.enable = false;
}; };
programs.noisetorch = mkIf cfg.enable { programs.noisetorch = mkIf cfg.enable {
inherit (cfg) enable; enable = cfg.noisetorch;
}; };
}; };
} }
+55
View File
@@ -0,0 +1,55 @@
{
lib,
config,
...
}:
with lib; let
cfg = config.mySystem.misc;
in {
options.mySystem.misc = {
timezone = mkOption {
type = types.str;
default = "Europe/Paris";
};
keymap = mkOption {
type = types.str;
default = "fr";
example = "fr-bepo";
description = "Keymap to use in the TTY console";
};
};
config = {
boot.tmp.cleanOnBoot = true;
console.keyMap = cfg.keymap;
time.timeZone = cfg.timezone;
environment.pathsToLink = [
"/share/bash-completion"
"/share/zsh"
];
services = {
orca.enable = false;
envfs.enable = true;
};
nix.settings = {
substituters = [
"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 = [
"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 = [
"nix-command"
"flakes"
];
};
};
}
+9 -1
View File
@@ -51,12 +51,20 @@ in {
default = null; default = null;
}; };
}; };
wifi.disablePowersave = mkEnableOption ''
Disables powersave for Wifi.
Used mainly for the PineTab2, as leaving WiFi powersave with the bes2600 can cause stability issues.
'';
}; };
config.networking = { config.networking = {
hostName = cfg.hostname; # Define your hostname. hostName = cfg.hostname; # Define your hostname.
hostId = cfg.id; hostId = cfg.id;
networkmanager.enable = true; networkmanager = {
enable = true;
wifi.powersave = ! cfg.wifi.disablePowersave;
};
inherit (cfg) hostFiles domain; inherit (cfg) hostFiles domain;
firewall = { firewall = {
enable = true; enable = true;
+3 -7
View File
@@ -11,12 +11,8 @@ in {
enable = mkEnableOption "Enable Flatpak support"; enable = mkEnableOption "Enable Flatpak support";
builder.enable = mkEnableOption "Enable Flatpak builder"; builder.enable = mkEnableOption "Enable Flatpak builder";
}; };
config = { config = mkIf cfg.enable {
services.flatpak = mkIf cfg.enable { environment.systemPackages = lists.optional cfg.builder.enable pkgs.flatpak-builder;
inherit (cfg) enable; services.flatpak.enable = true;
};
environment.systemPackages = mkIf cfg.builder.enable [
pkgs.flatpak-buildR
];
}; };
} }
+1 -1
View File
@@ -27,7 +27,7 @@ in {
trusted-users = mkOption { trusted-users = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
example = ["alice" "bob"]; example = ["alice" "bob"];
default = []; default = ["@wheel" "root"];
}; };
}; };
+1
View File
@@ -2,4 +2,5 @@
imports = [ imports = [
./sops.nix ./sops.nix
]; ];
security.rtkit.enable = true;
} }
+8 -1
View File
@@ -10,13 +10,20 @@ in {
options.mySystem.users.phundrak = { options.mySystem.users.phundrak = {
enable = mkEnableOption "Enables user phundrak"; enable = mkEnableOption "Enables user phundrak";
trusted = mkEnableOption "Mark the user as trusted by Nix"; trusted = mkEnableOption "Mark the user as trusted by Nix";
extraGroups = mkOption {
type = types.listOf types.str;
default = [];
example = ["feedbackd"];
};
}; };
config = { config = {
users.users.phundrak = mkIf cfg.enable { users.users.phundrak = mkIf cfg.enable {
isNormalUser = true; isNormalUser = true;
description = "Lucien Cartier-Tilet"; description = "Lucien Cartier-Tilet";
extraGroups = ["networkmanager" "wheel" "docker" "dialout" "podman" "plugdev" "games" "audio" "input"]; extraGroups =
["networkmanager" "wheel" "dialout" "plugdev" "games" "audio" "input"]
++ extraGroups;
shell = pkgs.zsh; shell = pkgs.zsh;
openssh.authorizedKeys.keyFiles = lib.filesystem.listFilesRecursive ../../users/phundrak/keys; openssh.authorizedKeys.keyFiles = lib.filesystem.listFilesRecursive ../../users/phundrak/keys;
}; };
+1 -1
View File
@@ -31,6 +31,6 @@ in {
dev.fullDesktop = mkDefault cfg.fullDesktop; dev.fullDesktop = mkDefault cfg.fullDesktop;
media.fullDesktop = mkDefault cfg.fullDesktop; media.fullDesktop = mkDefault cfg.fullDesktop;
security.fullDesktop = mkDefault cfg.fullDesktop; security.fullDesktop = mkDefault cfg.fullDesktop;
services.fullDesktop = mkDefault cfg.fullDesktop; myServices.fullDesktop = mkDefault cfg.fullDesktop;
}; };
} }
+2
View File
@@ -45,6 +45,7 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.sessionVariables.MOZ_ENABLE_WAYLAND = "1";
programs.firefox = { programs.firefox = {
inherit (cfg) enable; inherit (cfg) enable;
package = package =
@@ -52,6 +53,7 @@ in {
then zen then zen
else pkgs.firefox; else pkgs.firefox;
nativeMessagingHosts = lists.optional cfg.tridactyl.enable pkgs.tridactyl-native; nativeMessagingHosts = lists.optional cfg.tridactyl.enable pkgs.tridactyl-native;
configPath = ".mozilla/firefox";
}; };
xdg.configFile."tridactyl/tridactylrc" = mkIf cfg.tridactyl.enable { xdg.configFile."tridactyl/tridactylrc" = mkIf cfg.tridactyl.enable {
text = concatStringsSep "\n" (filter (s: s != "") [ text = concatStringsSep "\n" (filter (s: s != "") [
+10
View File
@@ -62,6 +62,10 @@ in {
touchpad.natural_scroll = false; touchpad.natural_scroll = false;
sensitivity = "0"; sensitivity = "0";
}; };
device = {
name = "wacom-usb-bamboo-pad-finger";
sensitivity = 0.5;
};
monitor = monitor =
{ {
"marpa" = [ "marpa" = [
@@ -115,6 +119,12 @@ in {
++ lib.lists.optional (! caelestiaEnabled) "${pkgs.networkmanagerapplet}/bin/nm-applet"; ++ lib.lists.optional (! caelestiaEnabled) "${pkgs.networkmanagerapplet}/bin/nm-applet";
}; };
extraConfig = '' extraConfig = ''
device {
name = wacom-usb-bamboo-pad-finger
sensitivity = 0.5
accel_profile = adaptive
}
$left = c $left = c
$right = r $right = r
$up = s $up = s
+67 -65
View File
@@ -29,84 +29,86 @@ in {
detect_urls = true; detect_urls = true;
background_opacity = 0.7; background_opacity = 0.7;
}; };
keybindings = { keybindings = let
prefix = "kitty_mod+space";
in {
"alt+c" = "copy_to_clipboard"; "alt+c" = "copy_to_clipboard";
"kitty_mod+c" = "copy_to_clipboard"; "kitty_mod+c" = "copy_to_clipboard";
"alt+v" = "paste_from_clipboard"; "alt+v" = "paste_from_clipboard";
"kitty_mod+v" = "paste_from_clipboard"; "kitty_mod+v" = "paste_from_clipboard";
"kitty_mod+s>c" = "show_scrollback"; "${prefix}>s>c" = "show_scrollback";
"kitty_mod+s>down" = "scroll_line_down"; "${prefix}>s>down" = "scroll_line_down";
"kitty_mod+s>t" = "scroll_line_down"; "${prefix}>s>t" = "scroll_line_down";
"kitty_mod+s>up" = "scroll_line_up"; "${prefix}>s>up" = "scroll_line_up";
"kitty_mod+s>s" = "scroll_line_up"; "${prefix}>s>s" = "scroll_line_up";
"kitty_mod+s>end" = "scroll_end"; "${prefix}>s>end" = "scroll_end";
"kitty_mod+s>home" = "scroll_home"; "${prefix}>s>home" = "scroll_home";
"kitty_mod+s>page_down" = "scroll_page_down"; "${prefix}>s>page_down" = "scroll_page_down";
"kitty_mod+s>page_up" = "scroll_page_up"; "${prefix}>s>page_up" = "scroll_page_up";
"kitty_mod+enter" = "new_window"; "${prefix}>enter" = "new_window";
"kitty_mod+w>q" = "close_window"; "${prefix}>w>q" = "close_window";
"kitty_mod+w>p" = "next_window"; "${prefix}>w>p" = "next_window";
"kitty_mod+w>n" = "previous_window"; "${prefix}>w>n" = "previous_window";
"kitty_mod+w>f" = "move_window_forward"; "${prefix}>w>f" = "move_window_forward";
"kitty_mod+w>b" = "move_window_backward"; "${prefix}>w>b" = "move_window_backward";
"kitty_mod+w>t" = "move_window_to_top"; "${prefix}>w>t" = "move_window_to_top";
"kitty_mod+w>r" = "start_resizing_window"; "${prefix}>w>r" = "start_resizing_window";
"kitty_mod+w>1" = "first_window"; "${prefix}>w>1" = "first_window";
"kitty_mod+w>2" = "second_window"; "${prefix}>w>2" = "second_window";
"kitty_mod+w>3" = "third_window"; "${prefix}>w>3" = "third_window";
"kitty_mod+w>4" = "fourth_window"; "${prefix}>w>4" = "fourth_window";
"kitty_mod+w>5" = "fifth_window"; "${prefix}>w>5" = "fifth_window";
"kitty_mod+w>6" = "sixth_window"; "${prefix}>w>6" = "sixth_window";
"kitty_mod+w>7" = "seventh_window"; "${prefix}>w>7" = "seventh_window";
"kitty_mod+w>8" = "eighth_window"; "${prefix}>w>8" = "eighth_window";
"kitty_mod+w>9" = "ninth_window"; "${prefix}>w>9" = "ninth_window";
"kitty_mod+w>0" = "tenth_window"; "${prefix}>w>0" = "tenth_window";
"kitty_mod+tab>n" = "next_tab"; "${prefix}>tab>n" = "next_tab";
"kitty_mod+tab>p" = "previous_tab"; "${prefix}>tab>p" = "previous_tab";
"kitty_mod+tab>c" = "new_tab"; "${prefix}>tab>c" = "new_tab";
"kitty_mod+tab>q" = "close_tab"; "${prefix}>tab>q" = "close_tab";
"kitty_mod+tab>shift+n" = "move_tab_backward"; "${prefix}>tab>shift+n" = "move_tab_backward";
"kitty_mod+tab>shift+p" = "move_tab_forward"; "${prefix}>tab>shift+p" = "move_tab_forward";
"kitty_mod+tab>t" = "set_tab_title"; "${prefix}>tab>t" = "set_tab_title";
"kitty_mod+l" = "next_layout"; "${prefix}>l" = "next_layout";
"kitty_mod+f>equal" = "change_font_size all 0"; "${prefix}>f>equal" = "change_font_size all 0";
"kitty_mod+f>kp_add" = "change_font_size all +2.0"; "${prefix}>f>kp_add" = "change_font_size all +2.0";
"kitty_mod+f>plus" = "change_font_size all +2.0"; "${prefix}>f>plus" = "change_font_size all +2.0";
"kitty_mod+f>kp_subtract" = "change_font_size all -2.0"; "${prefix}>f>kp_subtract" = "change_font_size all -2.0";
"kitty_mod+f>minus" = "change_font_size all -2.0"; "${prefix}>f>minus" = "change_font_size all -2.0";
"kitty_mod+shift+h" = "kitten hints"; "${prefix}>shift+h" = "kitten hints";
"kitty_mod+h>p" = "kitten hints --type path --program -"; "${prefix}>h>p" = "kitten hints --type path --program -";
"kitty_mod+h>shift+p" = "kitten hints --type path"; "${prefix}>h>shift+p" = "kitten hints --type path";
"kitty_mod+h>l" = "kitten hints --type line --program -"; "${prefix}>h>l" = "kitten hints --type line --program -";
"kitty_mod+h>w" = "kitten hints --type word --program -"; "${prefix}>h>w" = "kitten hints --type word --program -";
"kitty_mod+h>h" = "kitten hints --type hash --program -"; "${prefix}>h>h" = "kitten hints --type hash --program -";
"kitty_mod+h>n" = "kitten hints --type linenum"; "${prefix}>h>n" = "kitten hints --type linenum";
"kitty_mod+h>y" = "kitten hints --type hyperlink"; "${prefix}>h>y" = "kitten hints --type hyperlink";
"kitty_mod+f10" = "toggle_maximized"; "${prefix}>f10" = "toggle_maximized";
"kitty_mod+f11" = "toggle_fullscreen"; "${prefix}>f11" = "toggle_fullscreen";
"kitty_mod+a>equal" = "set_background_opacity 1"; "${prefix}>a>equal" = "set_background_opacity 1";
"kitty_mod+a>d" = "set_background_opacity default"; "${prefix}>a>d" = "set_background_opacity default";
"kitty_mod+a>plus" = "set_background_opacity +0.1"; "${prefix}>a>plus" = "set_background_opacity +0.1";
"kitty_mod+a>up" = "set_background_opacity +0.1"; "${prefix}>a>up" = "set_background_opacity +0.1";
"kitty_mod+a>kp_add" = "set_background_opacity +0.1"; "${prefix}>a>kp_add" = "set_background_opacity +0.1";
"kitty_mod+a>minus" = "set_background_opacity -0.1"; "${prefix}>a>minus" = "set_background_opacity -0.1";
"kitty_mod+a>down" = "set_background_opacity -0.1"; "${prefix}>a>down" = "set_background_opacity -0.1";
"kitty_mod+a>kp_substract" = "set_background_opacity -0.1"; "${prefix}>a>kp_substract" = "set_background_opacity -0.1";
"kitty_mod+delete" = "clear_terminal reset active"; "${prefix}>delete" = "clear_terminal reset active";
"kitty_mod+escape" = "kitty_shell window"; "${prefix}>escape" = "kitty_shell window";
"kitty_mod+f2" = "edit_config_file"; "${prefix}>f2" = "edit_config_file";
"kitty_mod+n" = "new_os_window"; "${prefix}>n" = "new_os_window";
"kitty_mod+o" = "pass_selection_to_program"; "${prefix}>o" = "pass_selection_to_program";
"kitty_mod+u" = "kitten unicode_input"; "${prefix}>u" = "kitten unicode_input";
}; };
}; };
} }
+1 -4
View File
@@ -30,10 +30,7 @@ in {
}; };
ollama.enable = mkDefault cfg.enable; ollama.enable = mkDefault cfg.enable;
}; };
packages = let packages = [pkgs.lmstudio pkgs.opencode];
inherit (pkgs.stdenv.hostPlatform) system;
inherit (inputs.opencode.packages.${system}) opencode;
in [pkgs.lmstudio opencode];
}; };
programs.mcp = mkIf (cfg.mcpServers != {}) { programs.mcp = mkIf (cfg.mcpServers != {}) {
enable = true; enable = true;
+6
View File
@@ -40,6 +40,12 @@ in {
enable = mkEnableOption "Enables jj-cz"; enable = mkEnableOption "Enables jj-cz";
alias = mkEnableOption "Enable `jj cz` as an alias to `jj-cz`"; alias = mkEnableOption "Enable `jj cz` as an alias to `jj-cz`";
}; };
# used in my shell .nix files
shellCompletion = mkOption {
description = "Enable Jujutsu shell completion";
type = types.bool;
default = true;
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
+2 -2
View File
@@ -4,8 +4,8 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.home.services.blanket; cfg = config.home.myServices.blanket;
in { in {
options.home.services.blanket.enable = mkEnableOption "Enable blanket"; options.home.myServices.blanket.enable = mkEnableOption "Enable blanket";
config.services.blanket.enable = cfg.enable; config.services.blanket.enable = cfg.enable;
} }
+7 -3
View File
@@ -4,7 +4,7 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.home.services; cfg = config.home.myServices;
in { in {
imports = [ imports = [
./blanket.nix ./blanket.nix
@@ -12,8 +12,12 @@ in {
./mpris-proxy.nix ./mpris-proxy.nix
./playerctld.nix ./playerctld.nix
]; ];
options.home.services.fullDesktop = mkEnableOption "Enable all modules"; options.home.myServices.fullDesktop = mkOption {
config.home.services = { description = "Enable all modules";
type = types.bool;
default = config.home.fullDesktop;
};
config.home.myServices = {
blanket.enable = mkDefault cfg.fullDesktop; blanket.enable = mkDefault cfg.fullDesktop;
mbsync.enable = mkDefault cfg.fullDesktop; mbsync.enable = mkDefault cfg.fullDesktop;
mpris-proxy.enable = mkDefault cfg.fullDesktop; mpris-proxy.enable = mkDefault cfg.fullDesktop;
+2 -2
View File
@@ -4,9 +4,9 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.home.services.mbsync; cfg = config.home.myServices.mbsync;
in { in {
options.home.services.mbsync = { options.home.myServices.mbsync = {
enable = mkEnableOption "Enables mbsync"; enable = mkEnableOption "Enables mbsync";
service.enable = mkOption { service.enable = mkOption {
type = types.bool; type = types.bool;
+2 -2
View File
@@ -4,8 +4,8 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.home.services.mpris-proxy; cfg = config.home.myServices.mpris-proxy;
in { in {
options.home.services.mpris-proxy.enable = mkEnableOption "Enable MPRIS forwarding towards bluetooth and MIDI"; options.home.myServices.mpris-proxy.enable = mkEnableOption "Enable MPRIS forwarding towards bluetooth and MIDI";
config.services.mpris-proxy.enable = cfg.enable; config.services.mpris-proxy.enable = cfg.enable;
} }
+2 -2
View File
@@ -4,8 +4,8 @@
... ...
}: }:
with lib; let with lib; let
cfg = config.home.services.playerctld; cfg = config.home.myServices.playerctld;
in { in {
options.home.services.playerctld.enable = mkEnableOption "Enable playerctld daemon"; options.home.myServices.playerctld.enable = mkEnableOption "Enable playerctld daemon";
config.services.playerctld.enable = cfg.enable; config.services.playerctld.enable = cfg.enable;
} }
+1
View File
@@ -36,6 +36,7 @@ in {
concatLines concatLines
[ [
(strings.optionalString cfg.eatIntegration ''[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/bash"'') (strings.optionalString cfg.eatIntegration ''[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/bash"'')
(strings.optionalString config.home.dev.vcs.jj.shellCompletion "source <(jj util completion bash)")
cfg.bashrcExtra cfg.bashrcExtra
]; ];
enableCompletion = cfg.autocompletion; enableCompletion = cfg.autocompletion;
+3 -3
View File
@@ -97,15 +97,15 @@ in {
config.home.shell = { config.home.shell = {
enableShellIntegration = cfg.bash.enable or cfg.zsh.enable or cfg.fish.enable; enableShellIntegration = cfg.bash.enable or cfg.zsh.enable or cfg.fish.enable;
bash = { bash = {
aliases = cfg.aliases // defaultAliases; aliases = defaultAliases // cfg.aliases;
enable = mkDefault cfg.fullDesktop; enable = mkDefault cfg.fullDesktop;
}; };
fish = { fish = {
abbrs = cfg.aliases // defaultAliases; abbrs = defaultAliases // cfg.aliases;
enable = mkDefault cfg.fullDesktop; enable = mkDefault cfg.fullDesktop;
}; };
zsh = { zsh = {
abbrs = cfg.aliases // defaultAliases; abbrs = defaultAliases // cfg.aliases;
enable = mkDefault cfg.fullDesktop; enable = mkDefault cfg.fullDesktop;
}; };
}; };
+1
View File
@@ -41,6 +41,7 @@ in {
__fish_default_command_not_found_handler $argv __fish_default_command_not_found_handler $argv
end end
'' ''
(strings.optionalString config.home.dev.vcs.jj.shellCompletion "jj util completion fish | source")
cfg.extraShellInit cfg.extraShellInit
]; ];
plugins = [ plugins = [
+5
View File
@@ -62,6 +62,11 @@ in {
zstyle ':fzf-tab:complete:cd:*' fzf-preview '${pkgs.eza}/bin/eza $realpath' zstyle ':fzf-tab:complete:cd:*' fzf-preview '${pkgs.eza}/bin/eza $realpath'
'' ''
(strings.optionalString cfg.eatIntegration ''[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"'') (strings.optionalString cfg.eatIntegration ''[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"'')
(strings.optionalString config.home.dev.vcs.jj.shellCompletion ''
autoload -U compinit
compinit
source <(jj util completion zsh)
'')
cfg.zshrcExtra cfg.zshrcExtra
]; ];
oh-my-zsh = { oh-my-zsh = {
+1 -1
View File
@@ -10,7 +10,7 @@
desktop.hyprland.host = "marpa"; desktop.hyprland.host = "marpa";
phundrak.sshKey.content = builtins.readFile ../keys/id_marpa.pub; phundrak.sshKey.content = builtins.readFile ../keys/id_marpa.pub;
}; };
programs.caelestia.settings.bar = { programs.caelestia.settings.bar.status = {
showBattery = false; showBattery = false;
showWifi = false; showWifi = false;
}; };
+9
View File
@@ -0,0 +1,9 @@
{config, ...}: {
imports = [../home.nix];
home = {
cli.nh.flake = "${config.home.homeDirectory}/.dotfiles";
desktop.hyprland.host = "gampo";
phundrak.sshKey.content = builtins.readFile ../keys/id_pinetab2.pub;
};
programs.caelestia.settings.bar.persistent = false;
}
+1
View File
@@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJCMgI5WDOKVUe6rUrOG4VS+hoUUVrAb1UhOECawUkrv Lucien Cartier-Tilet <lucien@phundrak.com>
+1 -3
View File
@@ -32,9 +32,7 @@ in {
secrets."ssh/hosts" = {}; secrets."ssh/hosts" = {};
age = { age = {
# automatically import user SSH keys as age keys # automatically import user SSH keys as age keys
sshKeyPaths = [ sshKeyPaths = ["${config.home.homeDirectory}/.ssh/id_ed25519"];
"${config.home.homeDirectory}/.ssh/id_ed25519"
];
# this will use an age key that is expected to already be in the filesystem # this will use an age key that is expected to already be in the filesystem
keyFile = "${config.home.homeDirectory}/.local/sops-nix/key.txt"; keyFile = "${config.home.homeDirectory}/.local/sops-nix/key.txt";
# generate a new key if the key specified above does not exist # generate a new key if the key specified above does not exist
-1
View File
@@ -40,7 +40,6 @@ in {
# Misc # Misc
# gplates # gplates
kicad-small
qgis qgis
handy handy
libnotify libnotify
+29
View File
@@ -0,0 +1,29 @@
{
nixpkgs,
rockchip,
additionalModules,
specialArgs,
...
}: buildPlatform: variant:
nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
inherit specialArgs;
modules =
[
rockchip.nixosModules.sdImageRockchip
rockchip.nixosModules.dtOverlayPCIeFix
rockchip.nixosModules.noZFS
../hosts/pinetab2
variant
{
rockchip.uBoot = rockchip.packages.${buildPlatform}.uBootPineTab2;
boot.kernelPackages = rockchip.legacyPackages.${buildPlatform}.kernel_linux_7_0_pinetab_unstable;
hardware.firmware = [rockchip.packages.aarch64-linux.bes2600];
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (nixpkgs.lib.getName pkg) [
"bes2600-firmware"
];
}
]
++ additionalModules;
}