diff --git a/flake.lock b/flake.lock index be2b3d8..f900074 100644 --- a/flake.lock +++ b/flake.lock @@ -72,11 +72,11 @@ ] }, "locked": { - "lastModified": 1772764582, - "narHash": "sha256-hSwjmpXHFqzSXrndVekA0IheKrbC7wi0IbfZTYwlmXw=", + "lastModified": 1778125502, + "narHash": "sha256-QAAO9RCR6byVJi50l8RMVJWzrsNYbXonfR6tqU93vIQ=", "owner": "caelestia-dots", "repo": "cli", - "rev": "4bcd42f482d038b98145b0b03388244b68b7d35d", + "rev": "7b8a4281aa8b2b12745de531cce0c65d87aea2e5", "type": "github" }, "original": { @@ -94,11 +94,11 @@ "quickshell": "quickshell" }, "locked": { - "lastModified": 1775660122, - "narHash": "sha256-qMKB06TE0MY1anDQKBrzZEpktNPyvMxQQzTEEwWAA6I=", + "lastModified": 1778381004, + "narHash": "sha256-JwIlrajiY74obxyTMu/Ym6wOEQaCjpHwfziPK+E5u3Q=", "owner": "caelestia-dots", "repo": "shell", - "rev": "aa2b08dd45963dc9558de94dbff5e1615e347d02", + "rev": "2ca4ad4a434e91e73504debd5225e66dc5ebb2b6", "type": "github" }, "original": { @@ -115,11 +115,11 @@ ] }, "locked": { - "lastModified": 1775334496, - "narHash": "sha256-dUopEMj5KhH1vnv43o29kMsayp0Ki+9EfIn4UAE9sAU=", + "lastModified": 1778198574, + "narHash": "sha256-XzgYoibIH6diZoZ2GzoGeyV2xdXAwBtXdAze+Qu2kR0=", "owner": "9001", "repo": "copyparty", - "rev": "ede692925edfc6fca7a52f483414d543e9303237", + "rev": "139ef1851e5d698521a5c2078c56f951d6e54d00", "type": "github" }, "original": { @@ -374,11 +374,11 @@ ] }, "locked": { - "lastModified": 1775683737, - "narHash": "sha256-oBYyowo6yfgb95Z78s3uTnAd9KkpJpwzjJbfnpLaM2Y=", + "lastModified": 1778609305, + "narHash": "sha256-muTc+WME6k3sfTr/Pvmw8hrK7zXrbl961TEF9wPeAnk=", "owner": "nix-community", "repo": "home-manager", - "rev": "7ba4ee4228ed36123c7cb75d50524b43514ef992", + "rev": "5878fdadfe2cfe1b3383b38d66117f7b80696b68", "type": "github" }, "original": { @@ -398,11 +398,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1776813492, - "narHash": "sha256-gydjnWdoZm++hK0B1vpXerwKJQdCeUcxrbBr9iEUTTA=", + "lastModified": 1777830987, + "narHash": "sha256-fPsv7qZHb9EO04IoQ6cGAj+6/y1pSMEFWmvLCULOEuM=", "ref": "develop", - "rev": "9a6b94276b68263ad5b2ffebb64354b3bb4cc92a", - "revCount": 38, + "rev": "bd6892d91e1a04f9b092b22831a977f08a36cbe0", + "revCount": 40, "type": "git", "url": "https://labs.phundrak.com/phundrak/jj-cz" }, @@ -465,11 +465,11 @@ ] }, "locked": { - "lastModified": 1775365369, - "narHash": "sha256-DgH5mveLoau20CuTnaU5RXZWgFQWn56onQ4Du2CqYoI=", + "lastModified": 1778393439, + "narHash": "sha256-mOtQxUjtKaPHLeoLOY/YEDctmud1X9KwJr4kE1MJ3Wc=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "cef5cf82671e749ac87d69aadecbb75967e6f6c3", + "rev": "01466c414c7357ae2ce32be4a272a7c69e94ab5f", "type": "github" }, "original": { @@ -509,11 +509,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1775423009, - "narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=", + "lastModified": 1778443072, + "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9", + "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", "type": "github" }, "original": { @@ -523,25 +523,19 @@ "type": "github" } }, - "opencode": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, + "nixpkgsStable": { "locked": { - "lastModified": 1775336060, - "narHash": "sha256-KkjMN2xA8jGBnj96UtzffvOeYJJZM05/5T36nSdpZkE=", - "owner": "anomalyco", - "repo": "opencode", - "rev": "930e94a3ea098b9d56fcb6d08b545256d2546a82", + "lastModified": 1778430510, + "narHash": "sha256-Ti+ZBvW6yrWWAg2szExVTwCd4qOJ3KlVr1tFHfyfi8Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8fd9daa3db09ced9700431c5b7ad0e8ba199b575", "type": "github" }, "original": { - "owner": "anomalyco", - "ref": "v1.3.15", - "repo": "opencode", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-25.11", + "type": "indirect" } }, "pumo-system-info": { @@ -574,11 +568,11 @@ ] }, "locked": { - "lastModified": 1772925576, - "narHash": "sha256-mMoiXABDtkSJxCYDrkhJ/TrrJf5M46oUfIlJvv2gkZ0=", + "lastModified": 1778222427, + "narHash": "sha256-6GFiP611nEJvtm+m03sMyfaVIJ9QOCi//hS+PPKyyPA=", "ref": "refs/heads/master", - "rev": "15a84097653593dd15fad59a56befc2b7bdc270d", - "revCount": 750, + "rev": "d1760ed1f31c02a95b37a9bf4084129c829ebe7f", + "revCount": 817, "type": "git", "url": "https://git.outfoxxed.me/outfoxxed/quickshell" }, @@ -587,6 +581,33 @@ "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": { "inputs": { "caelestia-shell": "caelestia-shell", @@ -596,8 +617,9 @@ "jj-cz": "jj-cz", "nix-index-database": "nix-index-database", "nixpkgs": "nixpkgs", - "opencode": "opencode", + "nixpkgsStable": "nixpkgsStable", "pumo-system-info": "pumo-system-info", + "rockchip": "rockchip", "sops-nix": "sops-nix", "spicetify": "spicetify", "srvos": "srvos", @@ -670,11 +692,11 @@ ] }, "locked": { - "lastModified": 1775682595, - "narHash": "sha256-0E9PohY/VuESLq0LR4doaH7hTag513sDDW5n5qmHd1Q=", + "lastModified": 1777944972, + "narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=", "owner": "Mic92", "repo": "sops-nix", - "rev": "d2e8438d5886e92bc5e7c40c035ab6cae0c41f76", + "rev": "c591bf665727040c6cc5cb409079acb22dcce33c", "type": "github" }, "original": { @@ -691,11 +713,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1775421933, - "narHash": "sha256-JkEbzFDFTsUlVtHEzA8Y4r3O9LInhb96eOCbtGjGnbM=", + "lastModified": 1778540809, + "narHash": "sha256-FNXls2QZTcxY0Dem3QtSewnr8vUKMDsTw9m8pLOnhTc=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "ec8d73085fdf807d55765335dc8126e14e7b2096", + "rev": "83939d7df4c0f1b8ee88cabde112223280a48554", "type": "github" }, "original": { @@ -711,11 +733,11 @@ ] }, "locked": { - "lastModified": 1775701952, - "narHash": "sha256-xj9u8fz2hTTTELMorqox0hPWrmAvGRnQUEnlj+vCjFo=", + "lastModified": 1778468351, + "narHash": "sha256-A5ZdpWN5d+OmKln2EPPeMmPJaBwbugO9dEhyp3pn/X8=", "owner": "nix-community", "repo": "srvos", - "rev": "f56f1053ae9f878501d3a8ae1961c73d1d7abce3", + "rev": "23122d21dfbe00e072ce515e21af18882bc88fd7", "type": "github" }, "original": { @@ -814,11 +836,11 @@ ] }, "locked": { - "lastModified": 1775710180, - "narHash": "sha256-sCokvdNvl8zIzsnjgG0TN5h3RUI7GJyWW9ErfmEj0rM=", + "lastModified": 1778303188, + "narHash": "sha256-zXFSvK80qpI91B7DU9QSExAtafSrz6vzormh2kUi6kQ=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "2c138beb648d1cbbfae76695a8230ee04e4db25a", + "rev": "9346c84657a9cab472bc4ee5a2d65d42a72d5346", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index fba43bf..0545d51 100644 --- a/flake.nix +++ b/flake.nix @@ -2,6 +2,7 @@ description = "Home Manager configuration of phundrak"; inputs = { + nixpkgsStable.url = "nixpkgs/nixos-25.11"; nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; @@ -30,16 +31,18 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - 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"; }; + 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 = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; @@ -86,6 +89,7 @@ nixpkgs, flake-utils, home-manager, + rockchip, srvos, ... } @ inputs: @@ -138,6 +142,10 @@ inherit extraSpecialArgs pkgs; 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 { inherit extraSpecialArgs pkgs; modules = withUserModules ./users/phundrak/host/tilo.nix; @@ -151,6 +159,10 @@ inputs.copyparty.nixosModules.default ]; withSystemModules = modules: nixpkgs.lib.lists.flatten (defaultSystemModules ++ [modules]); + pinetabConfig = import ./utils/pinetab.nix { + inherit nixpkgs rockchip specialArgs; + additionalModules = defaultSystemModules; + }; in { alys = nixpkgs.lib.nixosSystem { inherit specialArgs; @@ -177,6 +189,7 @@ ./hosts/naromk3/configuration.nix ]; }; + pinetab2 = pinetabConfig "x86_64-linux" ./hosts/pinetab2/gnome.nix; tilo = nixpkgs.lib.nixosSystem { inherit specialArgs; modules = withSystemModules ./hosts/tilo/configuration.nix; diff --git a/hosts/pinetab2/default.nix b/hosts/pinetab2/default.nix new file mode 100644 index 0000000..fb25472 --- /dev/null +++ b/hosts/pinetab2/default.nix @@ -0,0 +1,75 @@ +{ + 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"; + }; + +} diff --git a/hosts/pinetab2/gnome.nix b/hosts/pinetab2/gnome.nix new file mode 100644 index 0000000..cd49212 --- /dev/null +++ b/hosts/pinetab2/gnome.nix @@ -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 + ]; +} diff --git a/system/default.nix b/system/default.nix index 69ddaa5..3a6b368 100644 --- a/system/default.nix +++ b/system/default.nix @@ -1,68 +1,15 @@ { - lib, - config, - ... -}: -with lib; let - cfg = config.mySystem.misc; -in { imports = [ ./boot ./desktop ./dev ./hardware ./i18n + ./misc.nix ./network ./packages ./security ./services ./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" - ]; - }; - }; } diff --git a/system/hardware/default.nix b/system/hardware/default.nix index 236ad6f..a3d2882 100644 --- a/system/hardware/default.nix +++ b/system/hardware/default.nix @@ -3,8 +3,9 @@ ./amdgpu.nix ./bluetooth.nix ./fingerprint.nix - ./sound.nix ./input + ./pinetab2.nix + ./sound.nix ]; hardware.enableAllFirmware = lib.mkDefault true; diff --git a/system/hardware/pinetab2.nix b/system/hardware/pinetab2.nix new file mode 100644 index 0000000..6ef7997 --- /dev/null +++ b/system/hardware/pinetab2.nix @@ -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; + }; + }; +} diff --git a/system/hardware/sound.nix b/system/hardware/sound.nix index d8e2805..ce07cd4 100644 --- a/system/hardware/sound.nix +++ b/system/hardware/sound.nix @@ -32,13 +32,16 @@ in { config = { environment.systemPackages = mkIf cfg.scarlett.enable [pkgs.alsa-scarlett-gui]; - services.pipewire = mkIf cfg.enable { - enable = true; - alsa = mkIf cfg.alsa { - enable = mkDefault true; - support32Bit = mkDefault true; + services = { + pipewire = mkIf cfg.enable { + enable = true; + alsa = mkIf cfg.alsa { + enable = mkDefault true; + support32Bit = mkDefault true; + }; + jack.enable = mkDefault cfg.jack; }; - jack.enable = mkDefault cfg.jack; + pulseaudio.enable = false; }; programs.noisetorch = mkIf cfg.enable { inherit (cfg) enable; diff --git a/system/misc.nix b/system/misc.nix new file mode 100644 index 0000000..ab050d1 --- /dev/null +++ b/system/misc.nix @@ -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" + ]; + }; + }; +} diff --git a/system/network/networking.nix b/system/network/networking.nix index 8251e06..4003ca3 100644 --- a/system/network/networking.nix +++ b/system/network/networking.nix @@ -51,12 +51,20 @@ in { 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 = { hostName = cfg.hostname; # Define your hostname. hostId = cfg.id; - networkmanager.enable = true; + networkmanager = { + enable = true; + wifi.powersave = ! cfg.wifi.disablePowersave; + }; inherit (cfg) hostFiles domain; firewall = { enable = true; diff --git a/system/packages/nix.nix b/system/packages/nix.nix index 3f2858e..8434cee 100644 --- a/system/packages/nix.nix +++ b/system/packages/nix.nix @@ -27,7 +27,7 @@ in { trusted-users = mkOption { type = types.listOf types.str; example = ["alice" "bob"]; - default = []; + default = ["@wheel" "root"]; }; }; diff --git a/system/security/default.nix b/system/security/default.nix index 7c110d7..f437212 100644 --- a/system/security/default.nix +++ b/system/security/default.nix @@ -2,4 +2,5 @@ imports = [ ./sops.nix ]; + security.rtkit.enable = true; } diff --git a/users/modules/default.nix b/users/modules/default.nix index dc15f1f..d08e679 100644 --- a/users/modules/default.nix +++ b/users/modules/default.nix @@ -31,6 +31,6 @@ in { dev.fullDesktop = mkDefault cfg.fullDesktop; media.fullDesktop = mkDefault cfg.fullDesktop; security.fullDesktop = mkDefault cfg.fullDesktop; - services.fullDesktop = mkDefault cfg.fullDesktop; + myServices.fullDesktop = mkDefault cfg.fullDesktop; }; } diff --git a/users/modules/desktop/firefox.nix b/users/modules/desktop/firefox.nix index 36ca4b5..753a76c 100644 --- a/users/modules/desktop/firefox.nix +++ b/users/modules/desktop/firefox.nix @@ -45,6 +45,7 @@ in { }; config = mkIf cfg.enable { + home.sessionVariables.MOZ_ENABLE_WAYLAND = "1"; programs.firefox = { inherit (cfg) enable; package = @@ -52,6 +53,7 @@ in { then zen else pkgs.firefox; nativeMessagingHosts = lists.optional cfg.tridactyl.enable pkgs.tridactyl-native; + configPath = ".mozilla/firefox"; }; xdg.configFile."tridactyl/tridactylrc" = mkIf cfg.tridactyl.enable { text = concatStringsSep "\n" (filter (s: s != "") [ diff --git a/users/modules/dev/ai/default.nix b/users/modules/dev/ai/default.nix index 9a6ed57..02d40c6 100644 --- a/users/modules/dev/ai/default.nix +++ b/users/modules/dev/ai/default.nix @@ -30,10 +30,7 @@ in { }; ollama.enable = mkDefault cfg.enable; }; - packages = let - inherit (pkgs.stdenv.hostPlatform) system; - inherit (inputs.opencode.packages.${system}) opencode; - in [pkgs.lmstudio opencode]; + packages = [pkgs.lmstudio pkgs.opencode]; }; programs.mcp = mkIf (cfg.mcpServers != {}) { enable = true; diff --git a/users/modules/services/blanket.nix b/users/modules/services/blanket.nix index 929f9cb..601f689 100644 --- a/users/modules/services/blanket.nix +++ b/users/modules/services/blanket.nix @@ -4,8 +4,8 @@ ... }: with lib; let - cfg = config.home.services.blanket; + cfg = config.home.myServices.blanket; in { - options.home.services.blanket.enable = mkEnableOption "Enable blanket"; + options.home.myServices.blanket.enable = mkEnableOption "Enable blanket"; config.services.blanket.enable = cfg.enable; } diff --git a/users/modules/services/default.nix b/users/modules/services/default.nix index cb8ecc1..949298a 100644 --- a/users/modules/services/default.nix +++ b/users/modules/services/default.nix @@ -4,7 +4,7 @@ ... }: with lib; let - cfg = config.home.services; + cfg = config.home.myServices; in { imports = [ ./blanket.nix @@ -12,8 +12,12 @@ in { ./mpris-proxy.nix ./playerctld.nix ]; - options.home.services.fullDesktop = mkEnableOption "Enable all modules"; - config.home.services = { + options.home.myServices.fullDesktop = mkOption { + description = "Enable all modules"; + type = types.bool; + default = config.home.fullDesktop; + }; + config.home.myServices = { blanket.enable = mkDefault cfg.fullDesktop; mbsync.enable = mkDefault cfg.fullDesktop; mpris-proxy.enable = mkDefault cfg.fullDesktop; diff --git a/users/modules/services/mbsync.nix b/users/modules/services/mbsync.nix index bb39eed..2f4f8e4 100644 --- a/users/modules/services/mbsync.nix +++ b/users/modules/services/mbsync.nix @@ -4,9 +4,9 @@ ... }: with lib; let - cfg = config.home.services.mbsync; + cfg = config.home.myServices.mbsync; in { - options.home.services.mbsync = { + options.home.myServices.mbsync = { enable = mkEnableOption "Enables mbsync"; service.enable = mkOption { type = types.bool; diff --git a/users/modules/services/mpris-proxy.nix b/users/modules/services/mpris-proxy.nix index ee00fd4..7de5061 100644 --- a/users/modules/services/mpris-proxy.nix +++ b/users/modules/services/mpris-proxy.nix @@ -4,8 +4,8 @@ ... }: with lib; let - cfg = config.home.services.mpris-proxy; + cfg = config.home.myServices.mpris-proxy; 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; } diff --git a/users/modules/services/playerctld.nix b/users/modules/services/playerctld.nix index e757de1..b9b74a9 100644 --- a/users/modules/services/playerctld.nix +++ b/users/modules/services/playerctld.nix @@ -4,8 +4,8 @@ ... }: with lib; let - cfg = config.home.services.playerctld; + cfg = config.home.myServices.playerctld; 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; } diff --git a/users/phundrak/host/pinetab2.nix b/users/phundrak/host/pinetab2.nix new file mode 100644 index 0000000..6d3d859 --- /dev/null +++ b/users/phundrak/host/pinetab2.nix @@ -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; +} diff --git a/users/phundrak/keys/id_pinetab2.pub b/users/phundrak/keys/id_pinetab2.pub new file mode 100644 index 0000000..50263c4 --- /dev/null +++ b/users/phundrak/keys/id_pinetab2.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJCMgI5WDOKVUe6rUrOG4VS+hoUUVrAb1UhOECawUkrv Lucien Cartier-Tilet diff --git a/users/phundrak/light-home.nix b/users/phundrak/light-home.nix index 84d74d3..37793cb 100644 --- a/users/phundrak/light-home.nix +++ b/users/phundrak/light-home.nix @@ -32,9 +32,7 @@ in { secrets."ssh/hosts" = {}; age = { # automatically import user SSH keys as age keys - sshKeyPaths = [ - "${config.home.homeDirectory}/.ssh/id_ed25519" - ]; + sshKeyPaths = ["${config.home.homeDirectory}/.ssh/id_ed25519"]; # this will use an age key that is expected to already be in the filesystem keyFile = "${config.home.homeDirectory}/.local/sops-nix/key.txt"; # generate a new key if the key specified above does not exist diff --git a/utils/pinetab.nix b/utils/pinetab.nix new file mode 100644 index 0000000..0678c7d --- /dev/null +++ b/utils/pinetab.nix @@ -0,0 +1,27 @@ +{ + 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; +}