From 054dda07a7c86cb54b1c518eaa854b6ce9b513be Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 9 Feb 2024 12:40:02 +0800 Subject: [PATCH 001/274] feat: add serial client and mbuffer --- home/util/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/util/home.nix b/home/util/home.nix index 3f43c287..4c0df172 100644 --- a/home/util/home.nix +++ b/home/util/home.nix @@ -7,6 +7,7 @@ in { home.packages = with pkgs; [ pv file wget e2fsprogs ] ++ optionals (!cfg.minimal) [ + tio mbuffer lsscsi zip unzip nix-index dnsutils whois pciutils usbutils nvme-cli From 8eedcbf3c288e4b3d12c3447586efe0db22239a5 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 9 Feb 2024 19:48:11 +0800 Subject: [PATCH 002/274] feat(eientei): add replication service --- spec/eientei/replication.nix | 43 ++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 spec/eientei/replication.nix diff --git a/spec/eientei/replication.nix b/spec/eientei/replication.nix new file mode 100644 index 00000000..9611807c --- /dev/null +++ b/spec/eientei/replication.nix @@ -0,0 +1,43 @@ +{ + services.syncoid = { + enable = true; + interval = "daily"; + sshKey = "/var/lib/syncoid/.ssh/id_ed25519"; + commonArgs = [ + "--recursive" + #"--use-hold" + "--compress=lz4" + "--mbuffer-size=128M" + ]; + localSourceAllow = [ + "bookmark" + "hold" + "send" + "snapshot" + "destroy" + "mount" + ]; + + commands = let + sendOptions = "w"; + remote = "koishi@archive:archive/backup/koishi/eientei"; + in { + "eientei/persist" = { + inherit sendOptions; + target = "${remote}/persist"; + }; + "eientei/service" = { + inherit sendOptions; + target = "${remote}/service"; + }; + "eientei/storage" = { + inherit sendOptions; + target = "${remote}/storage"; + }; + }; + }; + + users.users.syncoid.uid = 82; + users.groups.syncoid.gid = 82; + environment.persistence."/nix/persist/fhs".directories = [ "/var/lib/syncoid" ]; +} From fd767921a2a413d482782fd43d090fb3a093361c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 9 Feb 2024 22:25:08 +0800 Subject: [PATCH 003/274] fix(chireiden): add trackpad driver workaround --- spec/chireiden/default.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/spec/chireiden/default.nix b/spec/chireiden/default.nix index 0e3a9dde..723f3c6a 100644 --- a/spec/chireiden/default.nix +++ b/spec/chireiden/default.nix @@ -1,4 +1,4 @@ -{ +{ pkgs, ... }: { global = { id = "5d3c16fe58444e12ad621600039f10af"; fs.esp.uuid = "32A5-6257"; @@ -30,6 +30,18 @@ nvidiaBusId = "PCI:5:0:0"; }; + # trackpad driver resume workaround + systemd.services.trackpad-workaround = { + description = "Reload trackpad driver"; + after = [ "suspend.target" ]; + wantedBy = [ "suspend.target" ]; + path = with pkgs; [ kmod ]; + script = '' + modprobe -r psmouse + modprobe psmouse + ''; + }; + hardware.enableRedistributableFirmware = true; boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; From 8ecb10c72ca4ad00156e70cafa333dd44cd93ae8 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 9 Feb 2024 22:25:17 +0800 Subject: [PATCH 004/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index beb03ef9..111d6542 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1707175763, - "narHash": "sha256-0MKHC6tQ4KEuM5rui6DjKZ/VNiSANB4E+DJ/+wPS1PU=", + "lastModified": 1707467182, + "narHash": "sha256-/Bw/xgCXfj4nXDd8Xq+r1kaorfsYkkomMf5w5MpsDyA=", "owner": "nix-community", "repo": "home-manager", - "rev": "f99eace7c167b8a6a0871849493b1c613d0f1b80", + "rev": "5b9156fa9a8b8beba917b8f9adbfd27bf63e16af", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1706913249, - "narHash": "sha256-x3M7iV++CsvRXI1fpyFPduGELUckZEhSv0XWnUopAG8=", + "lastModified": 1707268954, + "narHash": "sha256-2en1kvde3cJVc3ZnTy8QeD2oKcseLFjYPLKhIGDanQ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e92b6015881907e698782c77641aa49298330223", + "rev": "f8e2ebd66d097614d51a56a755450d4ae1632df1", "type": "github" }, "original": { From c9b7059f3f40a65ee79be01f7994ee081579e1f4 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 00:16:09 +0800 Subject: [PATCH 005/274] feat(fs): add zfs split store options --- global/fs/default.nix | 2 +- global/fs/{zfs.nix => zfs/default.nix} | 17 ++++++++++++++++ global/fs/zfs/split.nix | 27 ++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) rename global/fs/{zfs.nix => zfs/default.nix} (78%) create mode 100644 global/fs/zfs/split.nix diff --git a/global/fs/default.nix b/global/fs/default.nix index e2c80c57..4805dc3e 100644 --- a/global/fs/default.nix +++ b/global/fs/default.nix @@ -8,8 +8,8 @@ in { ./ext4.nix ./f2fs.nix ./xfs.nix - ./zfs.nix ./bcachefs.nix + ./zfs ]; options.global.fs = { diff --git a/global/fs/zfs.nix b/global/fs/zfs/default.nix similarity index 78% rename from global/fs/zfs.nix rename to global/fs/zfs/default.nix index a7faedd8..a36916f2 100644 --- a/global/fs/zfs.nix +++ b/global/fs/zfs/default.nix @@ -4,6 +4,10 @@ , ... }: with lib; let cfg = config.global.fs; in { + imports = [ + ./split.nix + ]; + # -o ashift=12 # -O encryption=on -O keyformat=passphrase -O keylocation=prompt # -O compression=on -O mountpoint=none -O xattr=sa -O acltype=posixacl @@ -21,6 +25,19 @@ in { description = "zfs dataset mountpoints"; }; externalStore = mkEnableOption "external nix store filesystem"; + + split = { + enable = mkEnableOption "zfs state with split nix store"; + mdProg = mkOption { + type = with types; str; + default = "/usr/bin/true"; + description = "mdadm PROGRAM config value"; + }; + secret = mkOption { + type = with types; str; + description = "UUID of secret filesystem"; + }; + }; }; config = mkIf (cfg.type == "zfs") { diff --git a/global/fs/zfs/split.nix b/global/fs/zfs/split.nix new file mode 100644 index 00000000..ea0dd93b --- /dev/null +++ b/global/fs/zfs/split.nix @@ -0,0 +1,27 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.global.fs.zfs.split; +in mkIf cfg.enable { + # unconditionally enable fstrim for xfs and ext4 + services.fstrim.enable = mkDefault true; + + # enable swraid for split raid1 system array + boot.swraid.enable = mkDefault true; + boot.swraid.mdadmConf = mkDefault '' + PROGRAM ${cfg.mdProg} + ''; + + # secret filesystem backed by LUKS on swraid + fileSystems."/nix/var/secret" = + { device = "/dev/disk/by-uuid/${cfg.secret}"; + fsType = "ext4"; + options = [ "noatime" ]; + neededForBoot = true; + depends = [ "/nix/var" ]; + }; + + # import system state pool after encrypted filesystems become available for key loading + boot.initrd.systemd.services."zfs-import-${config.global.fs.store}".after = [ "cryptsetup.target" ]; +} From c0c5dd68ae9e74fb862071dcaa1ab86ddcdce4b7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 00:20:43 +0800 Subject: [PATCH 006/274] fix(fs): add missing fs options --- global/fs/zfs/default.nix | 4 ++++ global/fs/zfs/split.nix | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/global/fs/zfs/default.nix b/global/fs/zfs/default.nix index a36916f2..095f39d8 100644 --- a/global/fs/zfs/default.nix +++ b/global/fs/zfs/default.nix @@ -37,6 +37,10 @@ in { type = with types; str; description = "UUID of secret filesystem"; }; + store = mkOption { + type = with types; str; + description = "UUID of store filesystem"; + }; }; }; diff --git a/global/fs/zfs/split.nix b/global/fs/zfs/split.nix index ea0dd93b..f49c2c09 100644 --- a/global/fs/zfs/split.nix +++ b/global/fs/zfs/split.nix @@ -13,7 +13,7 @@ in mkIf cfg.enable { PROGRAM ${cfg.mdProg} ''; - # secret filesystem backed by LUKS on swraid + # secret filesystem backed by swraid fileSystems."/nix/var/secret" = { device = "/dev/disk/by-uuid/${cfg.secret}"; fsType = "ext4"; @@ -22,6 +22,14 @@ in mkIf cfg.enable { depends = [ "/nix/var" ]; }; + # external store backed by swraid + global.fs = { + zfs.externalStore = mkDefault true; + external.device = "/dev/disk/by-uuid/${cfg.store}"; + external.fsType = "xfs"; + external.options = [ "noatime" ]; + }; + # import system state pool after encrypted filesystems become available for key loading boot.initrd.systemd.services."zfs-import-${config.global.fs.store}".after = [ "cryptsetup.target" ]; } From 35ac5ad93278e3b64bf1e4f7d7627054cf2e0adb Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 00:23:47 +0800 Subject: [PATCH 007/274] feat(eientei): convert to global split zfs --- spec/eientei/default.nix | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/spec/eientei/default.nix b/spec/eientei/default.nix index 7ebf418f..a59baa1e 100644 --- a/spec/eientei/default.nix +++ b/spec/eientei/default.nix @@ -6,10 +6,9 @@ auth.openssh.enable = true; fs.esp.uuid = "C368-7571"; fs.type = "zfs"; - fs.zfs.externalStore = true; - fs.external.device = "/dev/disk/by-uuid/d9202e56-a14f-4342-acdb-dbae33d680fc"; - fs.external.fsType = "xfs"; - fs.external.options = [ "noatime" ]; + fs.zfs.split.enable = true; + fs.zfs.split.store = "d9202e56-a14f-4342-acdb-dbae33d680fc"; + fs.zfs.split.secret = "1404c4f1-b890-4cf0-ab8a-26bd81bd2254"; fs.cryptsetup.enable = true; fs.cryptsetup.allowDiscards = false; fs.cryptsetup.uuids.secret = "c33c9b18-a280-42d7-8740-3f8d3f60dc43"; @@ -19,20 +18,6 @@ oci.enable = true; }; - services.fstrim.enable = true; - boot.swraid.enable = true; - boot.swraid.mdadmConf = '' - PROGRAM /usr/bin/true - ''; - fileSystems."/nix/var/secret" = - { device = "/dev/disk/by-uuid/1404c4f1-b890-4cf0-ab8a-26bd81bd2254"; - fsType = "ext4"; - options = [ "noatime" ]; - neededForBoot = true; - depends = [ "/nix/var" ]; - }; - boot.initrd.systemd.services.zfs-import-eientei.after = [ "cryptsetup.target" ]; - services.udev.extraRules = '' SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="80:61:5f:07:9e:2f", NAME="ix0" SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:bb:30", NAME="ss0" From abc5cf8910bdcc624a6e5608307f594e14d29dc4 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 00:32:16 +0800 Subject: [PATCH 008/274] feat(focus): convert to global split zfs --- spec/focus/default.nix | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/spec/focus/default.nix b/spec/focus/default.nix index d8e281fe..1ad5e877 100644 --- a/spec/focus/default.nix +++ b/spec/focus/default.nix @@ -5,10 +5,9 @@ auth.openssh.enable = true; fs.esp.uuid = "8C36-CBE2"; fs.type = "zfs"; - fs.zfs.externalStore = true; - fs.external.device = "/dev/disk/by-uuid/59b73292-8098-4774-b8b6-59c23130d405"; - fs.external.fsType = "xfs"; - fs.external.options = [ "noatime" ]; + fs.zfs.split.enable = true; + fs.zfs.split.store = "59b73292-8098-4774-b8b6-59c23130d405"; + fs.zfs.split.secret = "f8983719-f9e7-42b2-b8f3-0f32f6b328ae"; fs.cryptsetup.enable = true; fs.cryptsetup.allowDiscards = false; fs.cryptsetup.uuids.secret = "c2bc361e-6f9a-48fa-b698-ed3603a9664a"; @@ -17,20 +16,6 @@ acme.enable = true; }; - services.fstrim.enable = true; - boot.swraid.enable = true; - boot.swraid.mdadmConf = '' - PROGRAM /usr/bin/true - ''; - fileSystems."/nix/var/secret" = - { device = "/dev/disk/by-uuid/f8983719-f9e7-42b2-b8f3-0f32f6b328ae"; - fsType = "ext4"; - options = [ "noatime" ]; - neededForBoot = true; - depends = [ "/nix/var" ]; - }; - boot.initrd.systemd.services.zfs-import-focus.after = [ "cryptsetup.target" ]; - services.udev.extraRules = '' SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="6c:b3:11:3d:80:13", NAME="2g5" ''; From 4b5cb04d727f7b9702e6d6ad659240bc09504653 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 00:57:35 +0800 Subject: [PATCH 009/274] feat(fs): add zfs replication options --- global/fs/zfs/default.nix | 19 +++++++++++++++++++ global/fs/zfs/replication.nix | 29 +++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 global/fs/zfs/replication.nix diff --git a/global/fs/zfs/default.nix b/global/fs/zfs/default.nix index 095f39d8..70520af2 100644 --- a/global/fs/zfs/default.nix +++ b/global/fs/zfs/default.nix @@ -6,6 +6,7 @@ in { imports = [ ./split.nix + ./replication.nix ]; # -o ashift=12 @@ -42,6 +43,24 @@ in { description = "UUID of store filesystem"; }; }; + + replication = { + enable = mkEnableOption "zfs replication to remote"; + remote = mkOption { + type = with types; str; + description = "remote host as replication destination"; + }; + datasets = mkOption { + type = with types; listOf str; + default = [ "persist" "service" "storage" ]; + description = "list of filesystems to perform replication for"; + }; + sendOptions = mkOption { + type = with types; str; + default = "w"; + description = "send options for all datasets"; + }; + }; }; config = mkIf (cfg.type == "zfs") { diff --git a/global/fs/zfs/replication.nix b/global/fs/zfs/replication.nix new file mode 100644 index 00000000..8f04cd63 --- /dev/null +++ b/global/fs/zfs/replication.nix @@ -0,0 +1,29 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.global.fs.zfs.replication; +in mkIf cfg.enable { + services.syncoid = { + enable = mkDefault true; + interval = mkDefault "daily"; + sshKey = mkDefault "/var/lib/syncoid/.ssh/id_ed25519"; + commonArgs = [ + "--recursive" + "--compress=lz4" + "--mbuffer-size=128M" + ]; + localSourceAllow = options.services.syncoid.localSourceAllow.default ++ [ "mount" ]; + + commands = (lists.foldr (name: commands: commands // { + "${config.global.fs.store}/${name}" = { + inherit (cfg) sendOptions; + target = "${cfg.remote}/${name}"; + }; + }) { }) cfg.datasets; + }; + + users.users.syncoid.uid = 82; + users.groups.syncoid.gid = 82; + environment.persistence."/nix/persist/fhs".directories = [ "/var/lib/syncoid" ]; +} From ce1313f2221009bda5918923048479296b012168 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 01:03:36 +0800 Subject: [PATCH 010/274] fix(fs): fix permission fix --- global/fs/zfs/replication.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global/fs/zfs/replication.nix b/global/fs/zfs/replication.nix index 8f04cd63..9022d7d2 100644 --- a/global/fs/zfs/replication.nix +++ b/global/fs/zfs/replication.nix @@ -13,7 +13,7 @@ in mkIf cfg.enable { "--compress=lz4" "--mbuffer-size=128M" ]; - localSourceAllow = options.services.syncoid.localSourceAllow.default ++ [ "mount" ]; + localSourceAllow = mkOptionDefault [ "mount" ]; commands = (lists.foldr (name: commands: commands // { "${config.global.fs.store}/${name}" = { From c454ec75273fe56a9f83dc587c56dce60357da2e Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 01:03:54 +0800 Subject: [PATCH 011/274] feat(eientei): convert to global zfs replication --- spec/eientei/default.nix | 2 ++ spec/eientei/replication.nix | 43 ------------------------------------ 2 files changed, 2 insertions(+), 43 deletions(-) delete mode 100644 spec/eientei/replication.nix diff --git a/spec/eientei/default.nix b/spec/eientei/default.nix index a59baa1e..9e30aa89 100644 --- a/spec/eientei/default.nix +++ b/spec/eientei/default.nix @@ -9,6 +9,8 @@ fs.zfs.split.enable = true; fs.zfs.split.store = "d9202e56-a14f-4342-acdb-dbae33d680fc"; fs.zfs.split.secret = "1404c4f1-b890-4cf0-ab8a-26bd81bd2254"; + fs.zfs.replication.enable = true; + fs.zfs.replication.remote = "koishi@archive:archive/backup/koishi/eientei"; fs.cryptsetup.enable = true; fs.cryptsetup.allowDiscards = false; fs.cryptsetup.uuids.secret = "c33c9b18-a280-42d7-8740-3f8d3f60dc43"; diff --git a/spec/eientei/replication.nix b/spec/eientei/replication.nix deleted file mode 100644 index 9611807c..00000000 --- a/spec/eientei/replication.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - services.syncoid = { - enable = true; - interval = "daily"; - sshKey = "/var/lib/syncoid/.ssh/id_ed25519"; - commonArgs = [ - "--recursive" - #"--use-hold" - "--compress=lz4" - "--mbuffer-size=128M" - ]; - localSourceAllow = [ - "bookmark" - "hold" - "send" - "snapshot" - "destroy" - "mount" - ]; - - commands = let - sendOptions = "w"; - remote = "koishi@archive:archive/backup/koishi/eientei"; - in { - "eientei/persist" = { - inherit sendOptions; - target = "${remote}/persist"; - }; - "eientei/service" = { - inherit sendOptions; - target = "${remote}/service"; - }; - "eientei/storage" = { - inherit sendOptions; - target = "${remote}/storage"; - }; - }; - }; - - users.users.syncoid.uid = 82; - users.groups.syncoid.gid = 82; - environment.persistence."/nix/persist/fhs".directories = [ "/var/lib/syncoid" ]; -} From 31f16868ec86c53fd1c56d3f52bbc84e8069e7f9 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 05:47:40 +0800 Subject: [PATCH 012/274] fix(eientei): remove proxy configuration --- spec/eientei/default.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/spec/eientei/default.nix b/spec/eientei/default.nix index 9e30aa89..8bdd5e56 100644 --- a/spec/eientei/default.nix +++ b/spec/eientei/default.nix @@ -25,11 +25,6 @@ SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:bb:30", NAME="ss0" ''; - networking.proxy = { - allProxy = "socks5://192.168.1.253:1080"; - noProxy = "10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1,localhost,.localdomain"; - }; - imports = lib.pipe ./. [ builtins.readDir (lib.filterAttrs (n: ty: ty == "regular" && n != "default.nix")) From a67c5090c3214fb439558e592b0c62ba50bbe5ef Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 10 Feb 2024 05:48:08 +0800 Subject: [PATCH 013/274] fix: add networkmanager as an adminGroup --- home/profile.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/profile.nix b/home/profile.nix index c6b20c45..ef8be539 100644 --- a/home/profile.nix +++ b/home/profile.nix @@ -86,6 +86,7 @@ in { adminGroups = [ "wheel" "kvm" "systemd-journal" + "networkmanager" ]; # base home modules in current directory From 971b6f79ab09279244b96574add515fdceb4dca5 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 12 Feb 2024 15:17:57 +0800 Subject: [PATCH 014/274] refactor(gnome): move desktop backgrounds --- home/gnome/impl/dconf.nix | 6 +++--- {home/gnome/impl => share}/catppuccin-nix.png | Bin {home/gnome/impl => share}/catppuccin.png | Bin 3 files changed, 3 insertions(+), 3 deletions(-) rename {home/gnome/impl => share}/catppuccin-nix.png (100%) rename {home/gnome/impl => share}/catppuccin.png (100%) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index 900f0bbe..f8426c5d 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -26,8 +26,8 @@ in mkIf cfg.enable { "${pd}/background" = { color-shading-type = "solid"; picture-options = "zoom"; - picture-uri = "file://${./catppuccin-nix.png}"; - picture-uri-dark = "file://${./catppuccin-nix.png}"; + picture-uri = "file://${../../../share/catppuccin-nix.png}"; + picture-uri-dark = "file://${../../../share/catppuccin-nix.png}"; primary-color = "#000000000000"; secondary-color = "#000000000000"; }; @@ -45,7 +45,7 @@ in mkIf cfg.enable { color-shading-type = "solid"; lock-enabled = false; picture-options = "zoom"; - picture-uri = "file://${./catppuccin-nix.png}"; + picture-uri = "file://${../../../share/catppuccin-nix.png}"; primary-color = "#000000000000"; secondary-color = "#000000000000"; }; diff --git a/home/gnome/impl/catppuccin-nix.png b/share/catppuccin-nix.png similarity index 100% rename from home/gnome/impl/catppuccin-nix.png rename to share/catppuccin-nix.png diff --git a/home/gnome/impl/catppuccin.png b/share/catppuccin.png similarity index 100% rename from home/gnome/impl/catppuccin.png rename to share/catppuccin.png From 8ef45fe1b7f2d95c0de8fa1c0a3fb30e46c5b731 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 12 Feb 2024 15:18:12 +0800 Subject: [PATCH 015/274] feat(koumakyou): enable gnome --- spec/koumakyou/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index 05bbe757..c6a8f17c 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -21,6 +21,7 @@ }; home = { + gnome.enable = true; gyroflow.enable = true; minecraft.enable = true; minecraft.allUsers = true; From ae25a545530e2140a02ee5882d640598afd1f4aa Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 12 Feb 2024 17:33:12 +0800 Subject: [PATCH 016/274] fix(gpu): greetd settings priority --- global/gpu/greetd.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/global/gpu/greetd.nix b/global/gpu/greetd.nix index ed9231da..17dc4e9e 100644 --- a/global/gpu/greetd.nix +++ b/global/gpu/greetd.nix @@ -8,13 +8,13 @@ in mkIf (cfg.enable && cfg.session) { enable = mkDefault true; cageArgs = [ "-s" "-d" "-m" "last" ]; settings = { - background.path = ../../share/54345906_p0.jpg; + background.path = mkDefault ../../share/54345906_p0.jpg; background.fit = "Fill"; GTK = { - application_prefer_dark_theme = true; - cursor_theme_name = "Bibata-Modern-Classic"; - icon_theme_name = "Papirus-Dark"; - theme_name = "WhiteSur-Dark"; + application_prefer_dark_theme = mkDefault true; + cursor_theme_name = mkDefault "Bibata-Modern-Classic"; + icon_theme_name = mkDefault "Papirus-Dark"; + theme_name = mkDefault "WhiteSur-Dark"; }; }; }; From 2367044b4a3ad9ba6d2c560f797332140bf03d18 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 12 Feb 2024 17:40:58 +0800 Subject: [PATCH 017/274] feat(gui): add catppuccin gtk and cursor themes --- home/gnome/impl/home.nix | 17 ---------- home/gui/catppuccin/home.nix | 13 +++++++ home/gui/catppuccin/nixos.nix | 64 +++++++++++++++++++++++++++++++++++ home/gui/home.nix | 52 +++++++++++++++------------- home/gui/nixos.nix | 14 +++++--- 5 files changed, 115 insertions(+), 45 deletions(-) create mode 100644 home/gui/catppuccin/home.nix create mode 100644 home/gui/catppuccin/nixos.nix diff --git a/home/gnome/impl/home.nix b/home/gnome/impl/home.nix index 49d3112b..24d15901 100644 --- a/home/gnome/impl/home.nix +++ b/home/gnome/impl/home.nix @@ -4,23 +4,6 @@ , ... }: with lib; let cfg = config.passthrough.gnome; in mkIf cfg.enable { - # cursor theme - home.pointerCursor = { - package = pkgs.catppuccin-cursors.frappeDark; - name = "Catppuccin-Frappe-Dark-Cursors"; - }; - - # gtk theme - gtk.theme = { - package = pkgs.catppuccin-gtk.override { - accents = [ "pink" ]; - size = "compact"; - #tweaks = [ "rimless" "black" ]; - variant = "frappe"; - }; - name = "Catppuccin-Frappe-Compact-Pink-Dark"; - }; - home.packages = with pkgs; with gnome; diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix new file mode 100644 index 00000000..84b27de6 --- /dev/null +++ b/home/gui/catppuccin/home.nix @@ -0,0 +1,13 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.catppuccin; +in mkIf cfg.enable { + # cursor theme + home.pointerCursor = { inherit (cfg.cursor) package name; }; + gtk.cursorTheme = { inherit (cfg.cursor) package name; }; + + # gtk theme + gtk.theme = { inherit (cfg.gtk) package name; }; +} diff --git a/home/gui/catppuccin/nixos.nix b/home/gui/catppuccin/nixos.nix new file mode 100644 index 00000000..6b22b3f7 --- /dev/null +++ b/home/gui/catppuccin/nixos.nix @@ -0,0 +1,64 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + gui = with config.global.gpu; enable && session; + cfg = config.home.catppuccin; +in { + options.home.catppuccin = { + enable = mkEnableOption "catppuccin colour scheme" // { default = gui; }; + + gtk = { + package = mkOption { + type = with types; package; + default = pkgs.catppuccin-gtk.override { + accents = [ "pink" ]; + size = "compact"; + #tweaks = [ "rimless" "black" ]; + variant = "frappe"; + }; + description = "catppuccin gtk theme package"; + }; + name = mkOption { + type = with types; str; + default = "Catppuccin-Frappe-Compact-Pink-Dark"; + description = "name of catppuccin gtk theme"; + }; + }; + + cursor = { + package = mkOption { + type = with types; package; + default = pkgs.catppuccin-cursors.frappeDark; + description = "catppuccin cursor theme package"; + }; + name = mkOption { + type = with types; str; + default = "Catppuccin-Frappe-Dark-Cursors"; + description = "name of catppuccin cursor theme"; + }; + }; + }; + + config = { + users.homeModules = [ + # this module passes catppuccin configuration to home-manager + { passthrough.catppuccin = cfg; } + ]; + + # gtk and cursor themes + environment.systemPackages = with cfg; mkIf cfg.enable [ + gtk.package cursor.package + ]; + + # override greetd theme + programs.regreet = mkIf cfg.enable { + settings = { + GTK = { + cursor_theme_name = cfg.cursor.name; + theme_name = cfg.gtk.name; + }; + }; + }; + }; +} diff --git a/home/gui/home.nix b/home/gui/home.nix index db833554..5168a78c 100644 --- a/home/gui/home.nix +++ b/home/gui/home.nix @@ -1,29 +1,33 @@ { pkgs , lib , config -, ... }: with lib; mkIf config.passthrough.gui { - # cursor theme - home.pointerCursor = { - package = mkDefault pkgs.bibata-cursors; - name = mkDefault "Bibata-Modern-Classic"; - size = 24; +, ... }: with lib; { + imports = [ ./catppuccin/home.nix ]; + + config = mkIf config.passthrough.gui { + # cursor theme + home.pointerCursor = { + package = mkDefault pkgs.bibata-cursors; + name = mkDefault "Bibata-Modern-Classic"; + size = 24; + }; + + # gtk theme + gtk.theme = { + package = mkDefault pkgs.whitesur-gtk-theme; + name = mkDefault "WhiteSur-Dark"; + }; + + # gtk icons + gtk.iconTheme = { + package = mkDefault pkgs.papirus-icon-theme; + name = mkDefault "Papirus-Dark"; + }; + + # unify qt theme + qt.platformTheme = mkDefault "gtk"; + + gtk.enable = mkDefault true; + qt.enable = mkDefault true; }; - - # gtk theme - gtk.theme = { - package = mkDefault pkgs.whitesur-gtk-theme; - name = mkDefault "WhiteSur-Dark"; - }; - - # gtk icons - gtk.iconTheme = { - package = mkDefault pkgs.papirus-icon-theme; - name = mkDefault "Papirus-Dark"; - }; - - # unify qt theme - qt.platformTheme = mkDefault "gtk"; - - gtk.enable = mkDefault true; - qt.enable = mkDefault true; } diff --git a/home/gui/nixos.nix b/home/gui/nixos.nix index abde0634..82012777 100644 --- a/home/gui/nixos.nix +++ b/home/gui/nixos.nix @@ -3,7 +3,10 @@ , config , ... }: with lib; let gui = with config.global.gpu; enable && session; + catppuccin = config.home.catppuccin; in { + imports = [ ./catppuccin/nixos.nix ]; + config = { users.homeModules = [ # this module passes gui configuration to home-manager @@ -12,10 +15,13 @@ in { users.adminGroups = mkIf gui [ "video" ]; # themes and icons - environment.systemPackages = with pkgs; mkIf gui [ - whitesur-gtk-theme whitesur-icon-theme - papirus-icon-theme bibata-cursors - ]; + environment.systemPackages = with pkgs; mkIf gui ([ + papirus-icon-theme + ] ++ optionals (!catppuccin.enable) [ + whitesur-gtk-theme + whitesur-icon-theme + bibata-cursors + ]); fonts.enableDefaultPackages = mkIf gui true; From 819e55bba09941a262cbffd6ad67d225d8089e9d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 12 Feb 2024 19:25:55 +0800 Subject: [PATCH 018/274] feat(gui): theme sway with catppuccin --- home/gui/catppuccin/home.nix | 60 ++++++++++ home/gui/catppuccin/nixos.nix | 9 +- home/gui/catppuccin/palette.nix | 205 ++++++++++++++++++++++++++++++++ home/gui/catppuccin/solid.png | Bin 0 -> 29882 bytes 4 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 home/gui/catppuccin/palette.nix create mode 100644 home/gui/catppuccin/solid.png diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix index 84b27de6..d06e419c 100644 --- a/home/gui/catppuccin/home.nix +++ b/home/gui/catppuccin/home.nix @@ -3,6 +3,7 @@ , config , ... }: with lib; let cfg = config.passthrough.catppuccin; + palette = import ./palette.nix; in mkIf cfg.enable { # cursor theme home.pointerCursor = { inherit (cfg.cursor) package name; }; @@ -10,4 +11,63 @@ in mkIf cfg.enable { # gtk theme gtk.theme = { inherit (cfg.gtk) package name; }; + + # sway colour palette override + wayland.windowManager.sway.config = { + colors = with palette.sway.${cfg.sway}; { + focused = { border = lavender; background = base; text = text; indicator = rosewater; childBorder = lavender; }; + focusedInactive = { border = overlay0; background = base; text = text; indicator = rosewater; childBorder = overlay0; }; + unfocused = { border = overlay0; background = base; text = text; indicator = rosewater; childBorder = overlay0; }; + urgent = { border = peach; background = base; text = peach; indicator = overlay0; childBorder = peach; }; + placeholder = { border = overlay0; background = base; text = text; indicator = overlay0; childBorder = overlay0; }; + background = base; + }; + + bars = mkForce [ { + colors = let + p = palette.sway.${cfg.sway}; + in { + background = p.base; + statusline = p.text; + focusedStatusline = p.text; + focusedSeparator = p.base; + focusedWorkspace = { border = p.base; background = p.base; text = p.green; }; + activeWorkspace = { border = p.base; background = p.base; text = p.blue; }; + inactiveWorkspace = { border = p.base; background = p.base; text = p.surface1; }; + urgentWorkspace = { border = p.base; background = p.base; text = p.surface1; }; + bindingMode = { border = p.base; background = p.base; text = p.surface1; }; + }; + + mode = "dock"; + position = "bottom"; + workspaceButtons = true; + workspaceNumbers = true; + statusCommand = "${pkgs.i3status}/bin/i3status"; + fonts = { + names = [ "monospace" ]; + size = 8.0; + }; + trayOutput = "primary"; + } ]; + + output."*".bg = mkForce "${palette.sway.${cfg.sway}.base} solid_color"; + + gaps.inner = 12; + gaps.outer = 5; + # dodge the status bar + gaps.bottom = 0; + }; + + programs.i3status.general = with palette.sway.${cfg.sway}; { + color_good = lavender; + color_degraded = yellow; + color_bad = red; + }; + + # foot colour palette override + programs.foot.settings.colors = { + inherit (palette.foot.${cfg.sway}) foreground background + regular0 regular1 regular2 regular3 regular4 regular5 regular6 regular7 + bright0 bright1 bright2 bright3 bright4 bright5 bright6 bright7; + }; } diff --git a/home/gui/catppuccin/nixos.nix b/home/gui/catppuccin/nixos.nix index 6b22b3f7..92e6371e 100644 --- a/home/gui/catppuccin/nixos.nix +++ b/home/gui/catppuccin/nixos.nix @@ -8,6 +8,12 @@ in { options.home.catppuccin = { enable = mkEnableOption "catppuccin colour scheme" // { default = gui; }; + sway = mkOption { + type = with types; str; + default = "frappe"; + description = "colour palette used in sway"; + }; + gtk = { package = mkOption { type = with types; package; @@ -54,9 +60,10 @@ in { # override greetd theme programs.regreet = mkIf cfg.enable { settings = { + background.path = ./solid.png; GTK = { - cursor_theme_name = cfg.cursor.name; theme_name = cfg.gtk.name; + cursor_theme_name = cfg.cursor.name; }; }; }; diff --git a/home/gui/catppuccin/palette.nix b/home/gui/catppuccin/palette.nix new file mode 100644 index 00000000..5f2f084d --- /dev/null +++ b/home/gui/catppuccin/palette.nix @@ -0,0 +1,205 @@ +{ + sway = { + latte = { + rosewater = "#dc8a78"; + flamingo = "#dd7878"; + pink = "#ea76cb"; + mauve = "#8839ef"; + red = "#d20f39"; + maroon = "#e64553"; + peach = "#fe640b"; + yellow = "#df8e1d"; + green = "#40a02b"; + teal = "#179299"; + sky = "#04a5e5"; + sapphire = "#209fb5"; + blue = "#1e66f5"; + lavender = "#7287fd"; + text = "#4c4f69"; + subtext1 = "#5c5f77"; + subtext0 = "#6c6f85"; + overlay2 = "#7c7f93"; + overlay1 = "#8c8fa1"; + overlay0 = "#9ca0b0"; + surface2 = "#acb0be"; + surface1 = "#bcc0cc"; + surface0 = "#ccd0da"; + base = "#eff1f5"; + mantle = "#e6e9ef"; + crust = "#dce0e8"; + }; + + frappe = { + rosewater = "#f2d5cf"; + flamingo = "#eebebe"; + pink = "#f4b8e4"; + mauve = "#ca9ee6"; + red = "#e78284"; + maroon = "#ea999c"; + peach = "#ef9f76"; + yellow = "#e5c890"; + green = "#a6d189"; + teal = "#81c8be"; + sky = "#99d1db"; + sapphire = "#85c1dc"; + blue = "#8caaee"; + lavender = "#babbf1"; + text = "#c6d0f5"; + subtext1 = "#b5bfe2"; + subtext0 = "#a5adce"; + overlay2 = "#949cbb"; + overlay1 = "#838ba7"; + overlay0 = "#737994"; + surface2 = "#626880"; + surface1 = "#51576d"; + surface0 = "#414559"; + base = "#303446"; + mantle = "#292c3c"; + crust = "#232634"; + }; + + macchiato = { + rosewater = "#f4dbd6"; + flamingo = "#f0c6c6"; + pink = "#f5bde6"; + mauve = "#c6a0f6"; + red = "#ed8796"; + maroon = "#ee99a0"; + peach = "#f5a97f"; + yellow = "#eed49f"; + green = "#a6da95"; + teal = "#8bd5ca"; + sky = "#91d7e3"; + sapphire = "#7dc4e4"; + blue = "#8aadf4"; + lavender = "#b7bdf8"; + text = "#cad3f5"; + subtext1 = "#b8c0e0"; + subtext0 = "#a5adcb"; + overlay2 = "#939ab7"; + overlay1 = "#8087a2"; + overlay0 = "#6e738d"; + surface2 = "#5b6078"; + surface1 = "#494d64"; + surface0 = "#363a4f"; + base = "#24273a"; + mantle = "#1e2030"; + crust = "#181926"; + }; + + mocha = { + rosewater = "#f5e0dc"; + flamingo = "#f2cdcd"; + pink = "#f5c2e7"; + mauve = "#cba6f7"; + red = "#f38ba8"; + maroon = "#eba0ac"; + peach = "#fab387"; + yellow = "#f9e2af"; + green = "#a6e3a1"; + teal = "#94e2d5"; + sky = "#89dceb"; + sapphire = "#74c7ec"; + blue = "#89b4fa"; + lavender = "#b4befe"; + text = "#cdd6f4"; + subtext1 = "#bac2de"; + subtext0 = "#a6adc8"; + overlay2 = "#9399b2"; + overlay1 = "#7f849c"; + overlay0 = "#6c7086"; + surface2 = "#585b70"; + surface1 = "#45475a"; + surface0 = "#313244"; + base = "#1e1e2e"; + mantle = "#181825"; + crust = "#11111b"; + }; + }; + + foot = { + latte = { + foreground = "4c4f69"; # Text + background = "eff1f5"; # Base + regular0 = "5c5f77"; # Subtext 1 + regular1 = "d20f39"; # red + regular2 = "40a02b"; # green + regular3 = "df8e1d"; # yellow + regular4 = "1e66f5"; # blue + regular5 = "ea76cb"; # pink + regular6 = "179299"; # teal + regular7 = "acb0be"; # Surface 2 + bright0 = "6c6f85"; # Subtext 0 + bright1 = "d20f39"; # red + bright2 = "40a02b"; # green + bright3 = "df8e1d"; # yellow + bright4 = "1e66f5"; # blue + bright5 = "ea76cb"; # pink + bright6 = "179299"; # teal + bright7 = "bcc0cc"; # Surface 1 + }; + + frappe = { + foreground = "c6d0f5"; # Text + background = "303446"; # Base + regular0 = "51576d"; # Surface 1 + regular1 = "e78284"; # red + regular2 = "a6d189"; # green + regular3 = "e5c890"; # yellow + regular4 = "8caaee"; # blue + regular5 = "f4b8e4"; # pink + regular6 = "81c8be"; # teal + regular7 = "b5bfe2"; # Subtext 1 + bright0 = "626880"; # Surface 2 + bright1 = "e78284"; # red + bright2 = "a6d189"; # green + bright3 = "e5c890"; # yellow + bright4 = "8caaee"; # blue + bright5 = "f4b8e4"; # pink + bright6 = "81c8be"; # teal + bright7 = "a5adce"; # Subtext 0 + }; + + macchiato = { + foreground = "cad3f5"; # Text + background = "24273a"; # Base + regular0 = "494d64"; # Surface 1 + regular1 = "ed8796"; # red + regular2 = "a6da95"; # green + regular3 = "eed49f"; # yellow + regular4 = "8aadf4"; # blue + regular5 = "f5bde6"; # pink + regular6 = "8bd5ca"; # teal + regular7 = "b8c0e0"; # Subtext 1 + bright0 = "5b6078"; # Surface 2 + bright1 = "ed8796"; # red + bright2 = "a6da95"; # green + bright3 = "eed49f"; # yellow + bright4 = "8aadf4"; # blue + bright5 = "f5bde6"; # pink + bright6 = "8bd5ca"; # teal + bright7 = "a5adcb"; # Subtext 0 + }; + + mocha = { + foreground = "cdd6f4"; # Text + background = "1e1e2e"; # Base + regular0 = "45475a"; # Surface 1 + regular1 = "f38ba8"; # red + regular2 = "a6e3a1"; # green + regular3 = "f9e2af"; # yellow + regular4 = "89b4fa"; # blue + regular5 = "f5c2e7"; # pink + regular6 = "94e2d5"; # teal + regular7 = "bac2de"; # Subtext 1 + bright0 = "585b70"; # Surface 2 + bright1 = "f38ba8"; # red + bright2 = "a6e3a1"; # green + bright3 = "f9e2af"; # yellow + bright4 = "89b4fa"; # blue + bright5 = "f5c2e7"; # pink + bright6 = "94e2d5"; # teal + bright7 = "a6adc8"; # Subtext 0 + }; + }; +} diff --git a/home/gui/catppuccin/solid.png b/home/gui/catppuccin/solid.png new file mode 100644 index 0000000000000000000000000000000000000000..2c512dd6394541a9e2c3c5b5b44eeb870f5b098f GIT binary patch literal 29882 zcmeAS@N?(olHy`uVBq!ia0y~y;Adc9;3(i=Vqjp9zZ0X%z`)p?>FgZf>FlgfP?VpR znUl)EpfRy_qOHf_0FhSz;H8U1*{wS)Tvqs%1qvRIYE=s1*y^;JPfh=Cvl_2wSNGxv zQ3W5;H@3-MU7inJqVmOSrNK9aPtc`9F;YOwM=wZ2ue z{C+xJOP=~!EPZWI@>;u}+=nY`Q)j*oQT9j@^q!#L21szhL6w=H)#0>Dzn;1_sFz*N775{M_8syb=cIqSVBa)D(sC%#sWR zcTeAd@J2py1_lKNPZ!6Kid%1PIr1_n2plkQxM+K!q2BXF#3ipA)z$B!84!Tg9h4@Z z`~`;?c%e)N28I-g1&nZB0}rzaoWn37v4IW2Gvc{`;5f7~N+EbB3>=sdJV~|;1V`cU zsAZ$UIGR94^BDufXbHkFS~iYWF$|-XC&Os7V6=6`z%be@7;P4eHVZ)gz0oeyXwP%B zSuolxU>I!{42fpJk2kj%IT;uj8W#Lte_QYcU!pVeP?;GE(g;|>sMKg^AO=K7)5d5{ zL8OM!!eO+iM4Dq6EgVJ*hta|T9s;A;VKh6y69dC&U5TZxyr^|E2euXf8dRgXW;EA8 zlL7<7Xs#K}4x`y&G&{gUU{GcU<+8U8EDQ_`4j2Akf6GzQ&V;lIZG$56;xg$`DWs)# zqoFaHHsCp%VKk?V77n9@13W*BW{1)2Fq$1kvjZ#yMjK0`jU`xGU>I#Ijb?|@>@b=g z;2|)Y9Y(VQJTVN#+TqAL*$E&IaQyneOSbWy0Ei974ZO&EHE#$Y@An*)8VwC_A^{Vl zX=5~}AZ-R8EgXhc;qc+}#qY4S0Hbj?wBl|wzDDB@b=gKsf=7N3+9db{NeL;H&^5Xp$W|VyzWGVJz_Ff2lRoT}6;ZV4TB&bPU>oHssUI zMx{nW1Dr;{#Aw44=(2T;H;Ffa_tjk=>}*^QoM2Th-&Np$pVjnOh{^lS}8aWGn& zkJjd+hZ(~2!)SIG%?_j4VKh6yLSVG9G}>5#rG*i5E*}%CvtSpqmC*{2&ploJT-G@y GGywoS=TkcX literal 0 HcmV?d00001 From 686eae0cdbc342967144480eca1021de40b8ce98 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 12 Feb 2024 23:29:13 +0800 Subject: [PATCH 019/274] feat(vscode): add vscodium and extensions --- home/vscode/home.nix | 23 +++++++++++++++++++++++ home/vscode/nixos.nix | 19 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 home/vscode/home.nix create mode 100644 home/vscode/nixos.nix diff --git a/home/vscode/home.nix b/home/vscode/home.nix new file mode 100644 index 00000000..6662884b --- /dev/null +++ b/home/vscode/home.nix @@ -0,0 +1,23 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.vscode; +in mkIf cfg.enable { + programs.vscode = { + enable = true; + mutableExtensionsDir = false; + enableUpdateCheck = false; + enableExtensionUpdateCheck = false; + package = pkgs.vscodium; + extensions = with pkgs.vscode-extensions; [ + catppuccin.catppuccin-vsc catppuccin.catppuccin-vsc-icons + bbenoist.nix golang.go rust-lang.rust-analyzer + ]; + userSettings = { + "workbench.colorTheme" = "Catppuccin FrappĂ©"; + "workbench.iconTheme" = "catppuccin-frappe"; + "[nix]"."editor.tabSize" = 2; + }; + }; +} diff --git a/home/vscode/nixos.nix b/home/vscode/nixos.nix new file mode 100644 index 00000000..7ecffe47 --- /dev/null +++ b/home/vscode/nixos.nix @@ -0,0 +1,19 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.home.vscode; +in { + options.home.vscode = { + enable = mkEnableOption "vscode text editor"; + }; + + config = { + users.homeModules = [ + # this module passes vscode configuration to home-manager + { passthrough.vscode = cfg; } + ]; + + users.home.persist.directories = mkIf cfg.enable [ ".config/VSCodium" ]; + }; +} From 3bbb1fbd8355fc9ea30127b8069cf4e1e533c6e1 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 12 Feb 2024 23:30:11 +0800 Subject: [PATCH 020/274] feat(reimaden): enable vscode --- spec/reimaden/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index 64fb3dbc..6e0fc5a8 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -12,6 +12,7 @@ home = { gyroflow.enable = true; + vscode.enable = true; libreoffice.enable = true; minecraft.enable = true; steam.enable = true; From 8bf875ba643f9fbe579645d4a28deccfbb407ac5 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 12 Feb 2024 23:30:56 +0800 Subject: [PATCH 021/274] feat(chireiden): enable vscode --- spec/chireiden/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/chireiden/default.nix b/spec/chireiden/default.nix index 723f3c6a..c640e355 100644 --- a/spec/chireiden/default.nix +++ b/spec/chireiden/default.nix @@ -18,6 +18,7 @@ }; home = { + vscode.enable = true; minecraft.enable = true; steam.enable = true; }; From c7adeb3e82d8c95bfcf8a653447fd217e567281c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 13 Feb 2024 00:42:30 +0800 Subject: [PATCH 022/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 111d6542..81f8fa8e 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1707467182, - "narHash": "sha256-/Bw/xgCXfj4nXDd8Xq+r1kaorfsYkkomMf5w5MpsDyA=", + "lastModified": 1707683400, + "narHash": "sha256-Zc+J3UO1Xpx+NL8UB6woPHyttEy9cXXtm+0uWwzuYDc=", "owner": "nix-community", "repo": "home-manager", - "rev": "5b9156fa9a8b8beba917b8f9adbfd27bf63e16af", + "rev": "21b078306a2ab68748abf72650db313d646cf2ca", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1707268954, - "narHash": "sha256-2en1kvde3cJVc3ZnTy8QeD2oKcseLFjYPLKhIGDanQ0=", + "lastModified": 1707546158, + "narHash": "sha256-nYYJTpzfPMDxI8mzhQsYjIUX+grorqjKEU9Np6Xwy/0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f8e2ebd66d097614d51a56a755450d4ae1632df1", + "rev": "d934204a0f8d9198e1e4515dd6fec76a139c87f0", "type": "github" }, "original": { From cda19fc379bc605633490b16d1d3b9627378c6e3 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 13 Feb 2024 11:26:48 +0800 Subject: [PATCH 023/274] fix(sway): set default workspace --- home/sway/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/sway/home.nix b/home/sway/home.nix index a5b61907..eccf1583 100644 --- a/home/sway/home.nix +++ b/home/sway/home.nix @@ -10,6 +10,7 @@ swaynag.enable = true; config = { + defaultWorkspace = "workspace number 1"; modifier = "Mod4"; keybindings = let modifier = config.wayland.windowManager.sway.config.modifier; From a6f2a81fc409cd9d1d63e35a2d9598afe249d8d4 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 13 Feb 2024 11:55:39 +0800 Subject: [PATCH 024/274] feat(gui): add flake background --- home/gui/catppuccin/flake.png | Bin 0 -> 50243 bytes home/gui/catppuccin/home.nix | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 home/gui/catppuccin/flake.png diff --git a/home/gui/catppuccin/flake.png b/home/gui/catppuccin/flake.png new file mode 100644 index 0000000000000000000000000000000000000000..97fb644a2a2db6ff6e867e552d8cb809a9ba98f9 GIT binary patch literal 50243 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 literal 0 HcmV?d00001 diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix index d06e419c..f08d6265 100644 --- a/home/gui/catppuccin/home.nix +++ b/home/gui/catppuccin/home.nix @@ -50,7 +50,8 @@ in mkIf cfg.enable { trayOutput = "primary"; } ]; - output."*".bg = mkForce "${palette.sway.${cfg.sway}.base} solid_color"; + #output."*".bg = mkForce "${palette.sway.${cfg.sway}.base} solid_color"; + output."*".bg = mkForce "${./flake.png} fill"; gaps.inner = 12; gaps.outer = 5; From ec24aaaf1fe9f2bd79a3211a3cc29fe12db68332 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 14 Feb 2024 03:23:48 +0800 Subject: [PATCH 025/274] feat(reimaden): add platform support kernel module --- spec/reimaden/ac71/Makefile | 25 +++ spec/reimaden/ac71/battery.c | 123 +++++++++++ spec/reimaden/ac71/battery.h | 26 +++ spec/reimaden/ac71/default.nix | 6 + spec/reimaden/ac71/ec.c | 101 +++++++++ spec/reimaden/ac71/ec.h | 256 +++++++++++++++++++++++ spec/reimaden/ac71/events.c | 369 +++++++++++++++++++++++++++++++++ spec/reimaden/ac71/events.h | 26 +++ spec/reimaden/ac71/fan.c | 212 +++++++++++++++++++ spec/reimaden/ac71/fan.h | 22 ++ spec/reimaden/ac71/hwmon.c | 35 ++++ spec/reimaden/ac71/hwmon.h | 26 +++ spec/reimaden/ac71/hwmon_fan.c | 152 ++++++++++++++ spec/reimaden/ac71/hwmon_fan.h | 10 + spec/reimaden/ac71/hwmon_pwm.c | 122 +++++++++++ spec/reimaden/ac71/hwmon_pwm.h | 10 + spec/reimaden/ac71/main.c | 130 ++++++++++++ spec/reimaden/ac71/misc.c | 35 ++++ spec/reimaden/ac71/misc.h | 12 ++ spec/reimaden/ac71/package.nix | 19 ++ spec/reimaden/ac71/pdev.c | 295 ++++++++++++++++++++++++++ spec/reimaden/ac71/pdev.h | 17 ++ spec/reimaden/ac71/pr.h | 9 + spec/reimaden/ac71/util.h | 7 + spec/reimaden/ac71/wmi.h | 24 +++ spec/reimaden/default.nix | 2 + 26 files changed, 2071 insertions(+) create mode 100644 spec/reimaden/ac71/Makefile create mode 100644 spec/reimaden/ac71/battery.c create mode 100644 spec/reimaden/ac71/battery.h create mode 100644 spec/reimaden/ac71/default.nix create mode 100644 spec/reimaden/ac71/ec.c create mode 100644 spec/reimaden/ac71/ec.h create mode 100644 spec/reimaden/ac71/events.c create mode 100644 spec/reimaden/ac71/events.h create mode 100644 spec/reimaden/ac71/fan.c create mode 100644 spec/reimaden/ac71/fan.h create mode 100644 spec/reimaden/ac71/hwmon.c create mode 100644 spec/reimaden/ac71/hwmon.h create mode 100644 spec/reimaden/ac71/hwmon_fan.c create mode 100644 spec/reimaden/ac71/hwmon_fan.h create mode 100644 spec/reimaden/ac71/hwmon_pwm.c create mode 100644 spec/reimaden/ac71/hwmon_pwm.h create mode 100644 spec/reimaden/ac71/main.c create mode 100644 spec/reimaden/ac71/misc.c create mode 100644 spec/reimaden/ac71/misc.h create mode 100644 spec/reimaden/ac71/package.nix create mode 100644 spec/reimaden/ac71/pdev.c create mode 100644 spec/reimaden/ac71/pdev.h create mode 100644 spec/reimaden/ac71/pr.h create mode 100644 spec/reimaden/ac71/util.h create mode 100644 spec/reimaden/ac71/wmi.h diff --git a/spec/reimaden/ac71/Makefile b/spec/reimaden/ac71/Makefile new file mode 100644 index 00000000..80f68679 --- /dev/null +++ b/spec/reimaden/ac71/Makefile @@ -0,0 +1,25 @@ +# SPDX-License-Identifier: GPL-2.0 +PWD := $(shell pwd) +MODNAME = ac71 +MODVER = 0.0 + +obj-m += $(MODNAME).o + +# alphabetically sorted +$(MODNAME)-y += ec.o \ + main.o \ + misc.o \ + pdev.o \ + events.o \ + +$(MODNAME)-$(CONFIG_ACPI_BATTERY) += battery.o +$(MODNAME)-$(CONFIG_HWMON) += hwmon.o hwmon_fan.o hwmon_pwm.o fan.o + +all: + $(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules + +install: + $(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules_install + +clean: + $(MAKE) -C $(KERNEL_DIR) M=$(PWD) clean diff --git a/spec/reimaden/ac71/battery.c b/spec/reimaden/ac71/battery.c new file mode 100644 index 00000000..67311c22 --- /dev/null +++ b/spec/reimaden/ac71/battery.c @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ec.h" + +/* ========================================================================== */ + +#if IS_ENABLED(CONFIG_ACPI_BATTERY) + +static bool battery_hook_registered; + +static bool nobattery; +module_param(nobattery, bool, 0444); +MODULE_PARM_DESC(nobattery, "do not expose battery related controls (default=false)"); + +/* ========================================================================== */ + +static ssize_t charge_control_end_threshold_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int status = ec_read_byte(BATT_CHARGE_CTRL_ADDR); + + if (status < 0) + return status; + + status &= BATT_CHARGE_CTRL_VALUE_MASK; + + if (status == 0) + status = 100; + + return sprintf(buf, "%d\n", status); +} + +static ssize_t charge_control_end_threshold_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + int status, value; + + if (kstrtoint(buf, 10, &value) || !(1 <= value && value <= 100)) + return -EINVAL; + + status = ec_read_byte(BATT_CHARGE_CTRL_ADDR); + if (status < 0) + return status; + + if (value == 100) + value = 0; + + status = (status & ~BATT_CHARGE_CTRL_VALUE_MASK) | value; + + status = ec_write_byte(BATT_CHARGE_CTRL_ADDR, status); + + if (status < 0) + return status; + + return count; +} + +static DEVICE_ATTR_RW(charge_control_end_threshold); +static struct attribute *ac71_batt_attrs[] = { + &dev_attr_charge_control_end_threshold.attr, + NULL +}; +ATTRIBUTE_GROUPS(ac71_batt); + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0) +static int ac71_batt_add(struct power_supply *battery, struct acpi_battery_hook *hook) +#else +static int ac71_batt_add(struct power_supply *battery) +#endif +{ + if (strcmp(battery->desc->name, "BAT0") != 0) + return 0; + + return device_add_groups(&battery->dev, ac71_batt_groups); +} + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0) +static int ac71_batt_remove(struct power_supply *battery, struct acpi_battery_hook *hook) +#else +static int ac71_batt_remove(struct power_supply *battery) +#endif +{ + if (strcmp(battery->desc->name, "BAT0") != 0) + return 0; + + device_remove_groups(&battery->dev, ac71_batt_groups); + return 0; +} + +static struct acpi_battery_hook ac71_batt_hook = { + .add_battery = ac71_batt_add, + .remove_battery = ac71_batt_remove, + .name = "AC71 laptop battery extension", +}; + +int __init ac71_battery_setup(void) +{ + if (nobattery) + return -ENODEV; + + battery_hook_register(&ac71_batt_hook); + battery_hook_registered = true; + + return 0; +} + +void ac71_battery_cleanup(void) +{ + if (battery_hook_registered) + battery_hook_unregister(&ac71_batt_hook); +} + +#endif diff --git a/spec/reimaden/ac71/battery.h b/spec/reimaden/ac71/battery.h new file mode 100644 index 00000000..eeffb19c --- /dev/null +++ b/spec/reimaden/ac71/battery.h @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_BATTERY_H +#define AC71_BATTERY_H + +#if IS_ENABLED(CONFIG_ACPI_BATTERY) + +#include + +int __init ac71_battery_setup(void); +void ac71_battery_cleanup(void); + +#else + +static inline int ac71_battery_setup(void) +{ + return 0; +} + +static inline void ac71_battery_cleanup(void) +{ + +} + +#endif + +#endif /* AC71_BATTERY_H */ diff --git a/spec/reimaden/ac71/default.nix b/spec/reimaden/ac71/default.nix new file mode 100644 index 00000000..87ccdd59 --- /dev/null +++ b/spec/reimaden/ac71/default.nix @@ -0,0 +1,6 @@ +{ config +, ... }: { + boot.extraModulePackages = [ + (config.boot.kernelPackages.callPackage ./package.nix { }) + ]; +} diff --git a/spec/reimaden/ac71/ec.c b/spec/reimaden/ac71/ec.c new file mode 100644 index 00000000..2ce7a02c --- /dev/null +++ b/spec/reimaden/ac71/ec.c @@ -0,0 +1,101 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include +#include +#include + +#include "ec.h" +#include "wmi.h" + +/* ========================================================================== */ + +static DECLARE_RWSEM(ec_lock); + +/* ========================================================================== */ + +int __must_check ac71_ec_lock(void) +{ + return down_write_killable(&ec_lock); +} + +void ac71_ec_unlock(void) +{ + up_write(&ec_lock); +} + +int __must_check ac71_ec_transaction(uint16_t addr, uint16_t data, + union ac71_ec_result *result, bool read) +{ + uint8_t buf[] = { + addr & 0xFF, + addr >> 8, + data & 0xFF, + data >> 8, + 0, + read ? 1 : 0, + 0, + 0, + }; + static_assert(ARRAY_SIZE(buf) == 8); + + /* the returned ACPI_TYPE_BUFFER is 40 bytes long for some reason ... */ + uint8_t output_buf[sizeof(union acpi_object) + 40]; + + struct acpi_buffer input = { sizeof(buf), buf }, + output = { sizeof(output_buf), output_buf }; + union acpi_object *obj; + acpi_status status = AE_OK; + int err; + + if (read) err = down_read_killable(&ec_lock); + else err = down_write_killable(&ec_lock); + + if (err) + goto out; + + memset(output_buf, 0, sizeof(output_buf)); + + status = wmi_evaluate_method(AC71_WMI_WMBC_GUID, 0, + AC71_WMBC_GETSETULONG_ID, &input, &output); + + if (read) up_read(&ec_lock); + else up_write(&ec_lock); + + if (ACPI_FAILURE(status)) { + err = -EIO; + goto out; + } + + obj = output.pointer; + + if (result) { + if (obj && obj->type == ACPI_TYPE_BUFFER && obj->buffer.length >= sizeof(*result)) { + memcpy(result, obj->buffer.pointer, sizeof(*result)); + } else { + err = -ENODATA; + goto out; + } + } + +out: + pr_debug( + "%s(addr=%#06x, data=%#06x, result=%c, read=%c)" + ": (%d) [%#010lx] %s" + ": [%*ph]\n", + + __func__, (unsigned int) addr, (unsigned int) data, + result ? 'y' : 'n', read ? 'y' : 'n', + err, (unsigned long) status, acpi_format_exception(status), + (obj && obj->type == ACPI_TYPE_BUFFER) ? + (int) min(sizeof(*result), (size_t) obj->buffer.length) : 0, + (obj && obj->type == ACPI_TYPE_BUFFER) ? + obj->buffer.pointer : NULL + ); + + return err; +} +ALLOW_ERROR_INJECTION(ac71_ec_transaction, ERRNO); diff --git a/spec/reimaden/ac71/ec.h b/spec/reimaden/ac71/ec.h new file mode 100644 index 00000000..739cbb6c --- /dev/null +++ b/spec/reimaden/ac71/ec.h @@ -0,0 +1,256 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_LAPTOP_EC_H +#define AC71_LAPTOP_EC_H + +#include +#include + +/* ========================================================================== */ +/* + * EC register addresses and bitmasks, + * some of them are not used, + * only for documentation + */ + +#define ADDR(page, offset) (((uint16_t)(page) << 8) | ((uint16_t)(offset))) + +/* ========================================================================== */ + +#define AP_BIOS_BYTE_ADDR ADDR(0x07, 0xA4) +#define AP_BIOS_BYTE_FN_LOCK_SWITCH BIT(3) + +/* ========================================================================== */ + +/* battery charger control register */ +#define BATT_CHARGE_CTRL_ADDR ADDR(0x07, 0xB9) +#define BATT_CHARGE_CTRL_VALUE_MASK GENMASK(6, 0) +#define BATT_CHARGE_CTRL_REACHED BIT(7) + +#define BATT_STATUS_ADDR ADDR(0x04, 0x32) +#define BATT_STATUS_DISCHARGING BIT(0) + +/* possibly temp (in C) = value / 10 + X */ +#define BATT_TEMP_ADDR ADDR(0x04, 0xA2) + +#define BATT_ALERT_ADDR ADDR(0x04, 0x94) + +#define BIOS_CTRL_1_ADDR ADDR(0x07, 0x4E) +#define BIOS_CTRL_1_FN_LOCK_STATUS BIT(4) + +#define BIOS_CTRL_2_ADDR ADDR(0x07, 0x82) +#define BIOS_CTRL_2_FAN_V2_NEW BIT(0) +#define BIOS_CTRL_2_FAN_QKEY BIT(1) +#define BIOS_CTRL_2_OFFICE_MODE_FAN_TABLE_TYPE BIT(2) +#define BIOS_CTRL_2_FAN_V3 BIT(3) +#define BIOS_CTRL_2_DEFAULT_MODE BIT(4) + +/* 3rd control register of a different kind */ +#define BIOS_CTRL_3_ADDR ADDR(0x7, 0xA3) +#define BIOS_CTRL_3_FAN_REDUCED_DUTY_CYCLE BIT(5) +#define BIOS_CTRL_3_FAN_ALWAYS_ON BIT(6) + +#define BIOS_INFO_1_ADDR ADDR(0x04, 0x9F) +#define BIOS_INFO_5_ADDR ADDR(0x04, 0x66) + +/* ========================================================================== */ + +#define CTRL_1_ADDR ADDR(0x07, 0x41) +#define CTRL_1_MANUAL_MODE BIT(0) +#define CTRL_1_ITE_KBD_EFFECT_REACTIVE BIT(3) +#define CTRL_1_FAN_ABNORMAL BIT(5) + +#define CTRL_2_ADDR ADDR(0x07, 0x8C) +#define CTRL_2_SINGLE_COLOR_KEYBOARD BIT(0) +#define CTRL_2_SINGLE_COLOR_KBD_BL_OFF BIT(1) +#define CTRL_2_TURBO_LEVEL_MASK GENMASK(3, 2) +#define CTRL_2_TURBO_LEVEL_0 0x00 +#define CTRL_2_TURBO_LEVEL_1 BIT(2) +#define CTRL_2_TURBO_LEVEL_2 BIT(3) +#define CTRL_2_TURBO_LEVEL_3 (BIT(2) | BIT(3)) +// #define CTRL_2_SINGLE_COLOR_KBD_? BIT(4) +#define CTRL_2_SINGLE_COLOR_KBD_BRIGHTNESS GENMASK(7, 5) + +#define CTRL_3_ADDR ADDR(0x07, 0xA5) +#define CTRL_3_PWR_LED_MASK GENMASK(1, 0) +#define CTRL_3_PWR_LED_NONE BIT(1) +#define CTRL_3_PWR_LED_BOTH BIT(0) +#define CTRL_3_PWR_LED_LEFT 0x00 +#define CTRL_3_FAN_QUIET BIT(2) +#define CTRL_3_OVERBOOST BIT(4) +#define CTRL_3_HIGH_PWR BIT(7) + +#define CTRL_4_ADDR ADDR(0x07, 0xA6) +#define CTRL_4_OVERBOOST_DYN_TEMP_OFF BIT(1) +#define CTRL_4_TOUCHPAD_TOGGLE_OFF BIT(6) + +#define CTRL_5_ADDR ADDR(0x07, 0xC5) + +#define CTRL_6_ADDR ADDR(0x07, 0x8E) + +/* ========================================================================== */ + +#define DEVICE_STATUS_ADDR ADDR(0x04, 0x7B) +#define DEVICE_STATUS_WIFI_ON BIT(7) + +/* ========================================================================== */ + +/* fan control register */ +#define FAN_CTRL_ADDR ADDR(0x07, 0x51) +#define FAN_CTRL_LEVEL_MASK GENMASK(2, 0) +#define FAN_CTRL_TURBO BIT(4) +#define FAN_CTRL_AUTO BIT(5) +#define FAN_CTRL_FAN_BOOST BIT(6) + +#define FAN_RPM_1_ADDR ADDR(0x04, 0x64) +#define FAN_RPM_2_ADDR ADDR(0x04, 0x6C) + +#define FAN_PWM_1_ADDR ADDR(0x18, 0x04) +#define FAN_PWM_2_ADDR ADDR(0x18, 0x09) + +#define FAN_TEMP_1_ADDR ADDR(0x04, 0x3e) +#define FAN_TEMP_2_ADDR ADDR(0x04, 0x4f) + +#define FAN_MODE_INDEX_ADDR ADDR(0x07, 0xAB) +#define FAN_MODE_INDEX_LOW_MASK GENMASK(3, 0) +#define FAN_MODE_INDEX_HIGH_MASK GENMASK(7, 4) + +/* ========================================================================== */ + +/* + * the actual keyboard type is seemingly determined from this number, + * the project id, the controller firmware version, + * and the HID usage page of the descriptor of the controller + */ +#define KEYBOARD_TYPE_ADDR ADDR(0x07, 0x3C) +#define KEYBOARD_TYPE_101 25 +#define KEYBOARD_TYPE_101M 41 +#define KEYBOARD_TYPE_102 17 +#define KEYBOARD_TYPE_102M 33 +#define KEYBOARD_TYPE_85 25 +#define KEYBOARD_TYPE_86 17 +#define KEYBOARD_TYPE_87 73 +#define KEYBOARD_TYPE_88 65 +#define KEYBOARD_TYPE_97 57 +#define KEYBOARD_TYPE_98 49 +#define KEYBOARD_TYPE_99 121 +#define KEYBOARD_TYPE_100 113 + +/* ========================================================================== */ + +#define PROJ_ID_ADDR ADDR(0x07, 0x40) +#define PROJ_ID_GIxKN 1 +#define PROJ_ID_GJxKN 2 +#define PROJ_ID_GKxCN 3 +#define PROJ_ID_GIxCN 4 +#define PROJ_ID_GJxCN 5 +#define PROJ_ID_GK5CN_X 6 +#define PROJ_ID_GK7CN_S 7 +#define PROJ_ID_GK7CPCS_GK5CQ7Z 8 +#define PROJ_ID_IDP 11 +#define PROJ_ID_ID6Y 12 +#define PROJ_ID_ID7Y 13 +#define PROJ_ID_PF4MU_PF4MN_PF5MU 14 +#define PROJ_ID_CML_GAMING 15 +#define PROJ_ID_GK7NXXR 16 +#define PROJ_ID_GM5MU1Y 17 + +/* ========================================================================== */ + +#define STATUS_1_ADDR ADDR(0x07, 0x68) +#define STATUS_1_SUPER_KEY_LOCK BIT(0) +#define STATUS_1_LIGHTBAR BIT(1) +#define STATUS_1_FAN_BOOST BIT(2) + +#define SUPPORT_1_ADDR ADDR(0x07, 0x65) +#define SUPPORT_1_AIRPLANE_MODE BIT(0) +#define SUPPORT_1_GPS_SWITCH BIT(1) +#define SUPPORT_1_OVERCLOCK BIT(2) +#define SUPPORT_1_MACRO_KEY BIT(3) +#define SUPPORT_1_SHORTCUT_KEY BIT(4) +#define SUPPORT_1_SUPER_KEY_LOCK BIT(5) +#define SUPPORT_1_LIGHTBAR BIT(6) +#define SUPPORT_1_FAN_BOOST BIT(7) + +#define SUPPORT_2_ADDR ADDR(0x07, 0x66) +#define SUPPORT_2_SILENT_MODE BIT(0) +#define SUPPORT_2_USB_CHARGING BIT(1) +#define SUPPORT_2_SINGLE_ZONE_KBD BIT(2) +#define SUPPORT_2_CHINA_MODE BIT(5) +#define SUPPORT_2_MY_BATTERY BIT(6) + +#define SUPPORT_5_ADDR ADDR(0x07, 0x42) +#define SUPPORT_5_FAN_TURBO BIT(4) +#define SUPPORT_5_FAN BIT(5) + +#define SUPPORT_6 ADDR(0x07, 0x8E) +#define SUPPORT_6_FAN3P5 BIT(1) + +/* ========================================================================== */ + +#define TRIGGER_1_ADDR ADDR(0x07, 0x67) +#define TRIGGER_1_SUPER_KEY_LOCK BIT(0) +#define TRIGGER_1_LIGHTBAR BIT(1) +#define TRIGGER_1_FAN_BOOST BIT(2) +#define TRIGGER_1_SILENT_MODE BIT(3) +#define TRIGGER_1_USB_CHARGING BIT(4) + +#define TRIGGER_2_ADDR ADDR(0x07, 0x5D) + +/* ========================================================================== */ + +#define PLATFORM_ID_ADDR ADDR(0x04, 0x56) +#define POWER_STATUS_ADDR ADDR(0x04, 0x5E) +#define POWER_SOURCE_ADDR ADDR(0x04, 0x90) + +#define PL1_ADDR ADDR(0x07, 0x83) +#define PL2_ADDR ADDR(0x07, 0x84) +#define PL4_ADDR ADDR(0x07, 0x85) + +/* ========================================================================== */ + +union ac71_ec_result { + uint32_t dword; + struct { + uint16_t w1; + uint16_t w2; + } words; + struct { + uint8_t b1; + uint8_t b2; + uint8_t b3; + uint8_t b4; + } bytes; +}; + +int __must_check ac71_ec_transaction(uint16_t addr, uint16_t data, + union ac71_ec_result *result, bool read); + +static inline __must_check int ac71_ec_read(uint16_t addr, union ac71_ec_result *result) +{ + return ac71_ec_transaction(addr, 0, result, true); +} + +static inline __must_check int ac71_ec_write(uint16_t addr, uint16_t data) +{ + return ac71_ec_transaction(addr, data, NULL, false); +} + +static inline __must_check int ec_write_byte(uint16_t addr, uint8_t data) +{ + return ac71_ec_write(addr, data); +} + +static inline __must_check int ec_read_byte(uint16_t addr) +{ + union ac71_ec_result result; + int err; + + err = ac71_ec_read(addr, &result); + + if (err) + return err; + + return result.bytes.b1; +} + +#endif /* AC71_LAPTOP_EC_H */ diff --git a/spec/reimaden/ac71/events.c b/spec/reimaden/ac71/events.c new file mode 100644 index 00000000..5f3212a1 --- /dev/null +++ b/spec/reimaden/ac71/events.c @@ -0,0 +1,369 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "misc.h" +#include "pdev.h" +#include "wmi.h" + +/* ========================================================================== */ + +#define KBD_BL_LED_SUFFIX ":" LED_FUNCTION_KBD_BACKLIGHT + +/* ========================================================================== */ + +static struct { + const char *guid; + bool handler_installed; +} ac71_wmi_event_guids[] = { + { .guid = AC71_WMI_EVENT0_GUID }, + { .guid = AC71_WMI_EVENT1_GUID }, + { .guid = AC71_WMI_EVENT2_GUID }, +}; + +static const struct key_entry ac71_wmi_hotkeys[] = { + + /* reported via keyboard controller */ + { KE_IGNORE, 0x01, { KEY_CAPSLOCK }}, + { KE_IGNORE, 0x02, { KEY_NUMLOCK }}, + { KE_IGNORE, 0x03, { KEY_SCROLLLOCK }}, + + /* reported via "video bus" */ + { KE_IGNORE, 0x14, { KEY_BRIGHTNESSUP }}, + { KE_IGNORE, 0x15, { KEY_BRIGHTNESSDOWN }}, + + /* reported via keyboard controller */ + { KE_IGNORE, 0x35, { KEY_MUTE }}, + { KE_IGNORE, 0x36, { KEY_VOLUMEDOWN }}, + { KE_IGNORE, 0x37, { KEY_VOLUMEUP }}, + + /* + * not reported by other means when in manual mode, + * handled automatically when it automatic mode + */ + { KE_KEY, 0xb1, { KEY_KBDILLUMDOWN }}, + { KE_KEY, 0xb2, { KEY_KBDILLUMUP }}, + { KE_KEY, 0xb8, { KEY_FN_ESC }}, + + { KE_END } + +}; + +/* ========================================================================== */ + +static struct input_dev *ac71_input_dev; + +/* ========================================================================== */ + +static void toggle_fn_lock_from_event_handler(void) +{ + int status = ac71_fn_lock_get_state(); + + if (status < 0) + return; + + /* seemingly the returned status in the WMI event handler is not the current */ + pr_info("setting Fn lock state from %d to %d\n", !status, status); + ac71_fn_lock_set_state(status); +} + +#if IS_ENABLED(CONFIG_LEDS_BRIGHTNESS_HW_CHANGED) +extern struct rw_semaphore leds_list_lock; +extern struct list_head leds_list; + +static void emit_keyboard_led_hw_changed(void) +{ + struct led_classdev *led; + + if (down_read_killable(&leds_list_lock)) + return; + + list_for_each_entry (led, &leds_list, node) { + size_t name_length; + const char *suffix; + + if (!(led->flags & LED_BRIGHT_HW_CHANGED)) + continue; + + name_length = strlen(led->name); + + if (name_length < strlen(KBD_BL_LED_SUFFIX)) + continue; + + suffix = led->name + name_length - strlen(KBD_BL_LED_SUFFIX); + + if (strcmp(suffix, KBD_BL_LED_SUFFIX) == 0) { + if (mutex_lock_interruptible(&led->led_access)) + break; + + if (led_update_brightness(led) >= 0) + led_classdev_notify_brightness_hw_changed(led, led->brightness); + + mutex_unlock(&led->led_access); + break; + } + } + + up_read(&leds_list_lock); +} +#endif + +static void ac71_wmi_event_d2_handler(union acpi_object *obj) +{ + bool do_report = true; + + if (!obj || obj->type != ACPI_TYPE_INTEGER) + return; + + switch (obj->integer.value) { + /* caps lock */ + case 1: + pr_info("caps lock\n"); + break; + + /* num lock */ + case 2: + pr_info("num lock\n"); + break; + + /* scroll lock */ + case 3: + pr_info("scroll lock\n"); + break; + + /* touchpad on */ + case 4: + pr_info("touchpad on\n"); + break; + + /* touchpad off */ + case 5: + pr_info("touchpad off\n"); + break; + + /* increase screen brightness */ + case 20: + pr_info("increase screen brightness\n"); + /* do_report = !acpi_video_handles_brightness_key_presses() */ + break; + + /* decrease screen brightness */ + case 21: + pr_info("decrease screen brightness\n"); + /* do_report = !acpi_video_handles_brightness_key_presses() */ + break; + + /* mute/unmute */ + case 53: + pr_info("toggle mute\n"); + break; + + /* decrease volume */ + case 54: + pr_info("decrease volume\n"); + break; + + /* increase volume */ + case 55: + pr_info("increase volume\n"); + break; + + /* enable super key (win key) lock */ + case 64: + pr_info("enable super key lock\n"); + break; + + /* decrease volume */ + case 65: + pr_info("disable super key lock\n"); + break; + + /* enable/disable airplane mode */ + case 164: + pr_info("toggle airplane mode\n"); + break; + + /* super key (win key) lock state changed */ + case 165: + pr_info("super key lock state changed\n"); + sysfs_notify(&ac71_platform_dev->dev.kobj, NULL, "super_key_lock"); + break; + + case 166: + pr_info("lightbar state changed\n"); + break; + + /* fan boost state changed */ + case 167: + pr_info("fan boost state changed\n"); + break; + + /* charger unplugged/plugged in */ + case 171: + pr_info("AC plugged/unplugged\n"); + break; + + /* perf mode button pressed */ + case 176: + pr_info("change perf mode\n"); + /* TODO: should it be handled here? */ + break; + + /* increase keyboard backlight */ + case 177: + pr_info("keyboard backlight decrease\n"); + /* TODO: should it be handled here? */ + break; + + /* decrease keyboard backlight */ + case 178: + pr_info("keyboard backlight increase\n"); + /* TODO: should it be handled here? */ + break; + + /* toggle Fn lock (Fn+ESC)*/ + case 184: + pr_info("toggle Fn lock\n"); + toggle_fn_lock_from_event_handler(); + sysfs_notify(&ac71_platform_dev->dev.kobj, NULL, "fn_lock"); + break; + + /* keyboard backlight brightness changed */ + case 240: + pr_info("keyboard backlight changed\n"); + +#if IS_ENABLED(CONFIG_LEDS_BRIGHTNESS_HW_CHANGED) + emit_keyboard_led_hw_changed(); +#endif + break; + + default: + pr_warn("unknown code: %u\n", (unsigned int) obj->integer.value); + break; + } + + if (do_report && ac71_input_dev) + sparse_keymap_report_event(ac71_input_dev, + obj->integer.value, 1, true); + +} + +static void ac71_wmi_event_handler(u32 value, void *context) +{ + struct acpi_buffer response = { ACPI_ALLOCATE_BUFFER, NULL }; + union acpi_object *obj; + acpi_status status; + + pr_info("%s(value=%#04x)\n", __func__, (unsigned int) value); + status = wmi_get_event_data(value, &response); + + if (ACPI_FAILURE(status)) { + pr_err("bad WMI event status: %#010x\n", (unsigned int) status); + return; + } + + obj = response.pointer; + + if (obj) { + pr_info("obj->type = %d\n", (int) obj->type); + if (obj->type == ACPI_TYPE_INTEGER) { + pr_info("int = %u\n", (unsigned int) obj->integer.value); + } else if (obj->type == ACPI_TYPE_STRING) { + pr_info("string = '%s'\n", obj->string.pointer); + } else if (obj->type == ACPI_TYPE_BUFFER) { + uint32_t i; + + for (i = 0; i < obj->buffer.length; i++) + pr_info("buf[%u] = %#04x\n", + (unsigned int) i, + (unsigned int) obj->buffer.pointer[i]); + } + } + + switch (value) { + case 0xd2: + ac71_wmi_event_d2_handler(obj); + break; + case 0xd1: + case 0xd0: + break; + } + + kfree(obj); +} + +static int __init setup_input_dev(void) +{ + int err = 0; + + ac71_input_dev = input_allocate_device(); + if (!ac71_input_dev) + return -ENOMEM; + + ac71_input_dev->name = "AC71 laptop input device"; + ac71_input_dev->phys = "ac71/input0"; + ac71_input_dev->id.bustype = BUS_HOST; + ac71_input_dev->dev.parent = &ac71_platform_dev->dev; + + err = sparse_keymap_setup(ac71_input_dev, ac71_wmi_hotkeys, NULL); + if (err) + goto err_free_device; + + err = input_register_device(ac71_input_dev); + if (err) + goto err_free_device; + + return err; + +err_free_device: + input_free_device(ac71_input_dev); + ac71_input_dev = NULL; + + return err; +} + +/* ========================================================================== */ + +int __init ac71_wmi_events_setup(void) +{ + int err = 0, i; + + (void) setup_input_dev(); + + for (i = 0; i < ARRAY_SIZE(ac71_wmi_event_guids); i++) { + const char *guid = ac71_wmi_event_guids[i].guid; + acpi_status status = + wmi_install_notify_handler(guid, ac71_wmi_event_handler, NULL); + + if (ACPI_FAILURE(status)) { + pr_warn("could not install WMI notify handler for '%s': [%#010lx] %s\n", + guid, (unsigned long) status, acpi_format_exception(status)); + } else { + ac71_wmi_event_guids[i].handler_installed = true; + } + } + + return err; +} + +void ac71_wmi_events_cleanup(void) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(ac71_wmi_event_guids); i++) { + if (ac71_wmi_event_guids[i].handler_installed) { + wmi_remove_notify_handler(ac71_wmi_event_guids[i].guid); + ac71_wmi_event_guids[i].handler_installed = false; + } + } + + if (ac71_input_dev) + input_unregister_device(ac71_input_dev); +} diff --git a/spec/reimaden/ac71/events.h b/spec/reimaden/ac71/events.h new file mode 100644 index 00000000..313b9487 --- /dev/null +++ b/spec/reimaden/ac71/events.h @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_WMI_EVENTS_H +#define AC71_WMI_EVENTS_H + +#if IS_ENABLED(CONFIG_LEDS_CLASS) + +#include + +int __init ac71_wmi_events_setup(void); +void ac71_wmi_events_cleanup(void); + +#else + +static inline int ac71_wmi_events_setup(void) +{ + return 0; +} + +static inline void ac71_wmi_events_cleanup(void) +{ + +} + +#endif + +#endif /* AC71_WMI_EVENTS_H */ diff --git a/spec/reimaden/ac71/fan.c b/spec/reimaden/ac71/fan.c new file mode 100644 index 00000000..fb6cb29c --- /dev/null +++ b/spec/reimaden/ac71/fan.c @@ -0,0 +1,212 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include + +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 12, 0) +static inline int fixp_linear_interpolate(int x0, int y0, int x1, int y1, int x) +{ + if (y0 == y1 || x == x0) + return y0; + if (x1 == x0 || x == x1) + return y1; + + return y0 + ((y1 - y0) * (x - x0) / (x1 - x0)); +} +#else +#include /* fixp-arith.h needs it, but doesn't include it */ +#include +#endif + +#include +#include +#include + +#include "ec.h" +#include "fan.h" +#include "util.h" + +/* ========================================================================== */ + +static const uint16_t ac71_fan_rpm_addrs[] = { + FAN_RPM_1_ADDR, + FAN_RPM_2_ADDR, +}; + +static const uint16_t ac71_fan_pwm_addrs[] = { + FAN_PWM_1_ADDR, + FAN_PWM_2_ADDR, +}; + +static const uint16_t ac71_fan_temp_addrs[] = { + FAN_TEMP_1_ADDR, + FAN_TEMP_2_ADDR, +}; + +/* ========================================================================== */ + +static DEFINE_MUTEX(fan_lock); + +/* ========================================================================== */ + +static int ac71_fan_get_status(void) +{ + return ec_read_byte(FAN_CTRL_ADDR); +} + +/* 'fan_lock' must be held */ +static int ac71_fan_get_mode_unlocked(void) +{ + int err; + + lockdep_assert_held(&fan_lock); + + err = ec_read_byte(CTRL_1_ADDR); + if (err < 0) + return err; + + if (err & CTRL_1_MANUAL_MODE) { + err = ac71_fan_get_status(); + if (err < 0) + return err; + + if (err & FAN_CTRL_FAN_BOOST) { + err = ac71_fan_get_pwm(0); + + if (err < 0) + return err; + + if (err == FAN_MAX_PWM) + err = 0; /* disengaged */ + else + err = 1; /* manual */ + + } else if (err & FAN_CTRL_AUTO) { + err = 2; /* automatic fan control */ + } else { + err = 1; /* manual */ + } + } else { + err = 2; /* automatic fan control */ + } + + return err; +} + +/* ========================================================================== */ + +int ac71_fan_get_rpm(uint8_t fan_index) +{ + union ac71_ec_result res; + int err; + + if (fan_index >= ARRAY_SIZE(ac71_fan_rpm_addrs)) + return -EINVAL; + + err = ac71_ec_read(ac71_fan_rpm_addrs[fan_index], &res); + + if (err) + return err; + + return res.bytes.b1 << 8 | res.bytes.b2; +} + +int ac71_fan_query_abnorm(void) +{ + int res = ec_read_byte(CTRL_1_ADDR); + + if (res < 0) + return res; + + return !!(res & CTRL_1_FAN_ABNORMAL); +} + +int ac71_fan_get_pwm(uint8_t fan_index) +{ + int err; + + if (fan_index >= ARRAY_SIZE(ac71_fan_pwm_addrs)) + return -EINVAL; + + err = ec_read_byte(ac71_fan_pwm_addrs[fan_index]); + if (err < 0) + return err; + + return fixp_linear_interpolate(0, 0, FAN_MAX_PWM, U8_MAX, err); +} + +int ac71_fan_set_pwm(uint8_t fan_index, uint8_t pwm) +{ + if (fan_index >= ARRAY_SIZE(ac71_fan_pwm_addrs)) + return -EINVAL; + + return ec_write_byte(ac71_fan_pwm_addrs[fan_index], + fixp_linear_interpolate(0, 0, + U8_MAX, FAN_MAX_PWM, + pwm)); +} + +int ac71_fan_get_temp(uint8_t fan_index) +{ + if (fan_index >= ARRAY_SIZE(ac71_fan_temp_addrs)) + return -EINVAL; + + return ec_read_byte(ac71_fan_temp_addrs[fan_index]); +} + +int ac71_fan_get_mode(void) +{ + int err = mutex_lock_interruptible(&fan_lock); + + if (err) + return err; + + err = ac71_fan_get_mode_unlocked(); + + mutex_unlock(&fan_lock); + return err; +} + +int ac71_fan_set_mode(uint8_t mode) +{ + int err, oldpwm; + + err = mutex_lock_interruptible(&fan_lock); + if (err) + return err; + + switch (mode) { + case 0: + err = ec_write_byte(FAN_CTRL_ADDR, FAN_CTRL_FAN_BOOST); + if (err) + goto out; + + err = ac71_fan_set_pwm(0, FAN_MAX_PWM); + break; + case 1: + oldpwm = err = ac71_fan_get_pwm(0); + if (err < 0) + goto out; + + err = ec_write_byte(FAN_CTRL_ADDR, FAN_CTRL_FAN_BOOST); + if (err < 0) + goto out; + + err = ac71_fan_set_pwm(0, oldpwm); + if (err < 0) + (void) ec_write_byte(FAN_CTRL_ADDR, 0x80 | FAN_CTRL_AUTO); + /* try to restore automatic fan control */ + + break; + case 2: + err = ec_write_byte(FAN_CTRL_ADDR, 0x80 | FAN_CTRL_AUTO); + break; + default: + err = -EINVAL; + break; + } + +out: + mutex_unlock(&fan_lock); + return err; +} diff --git a/spec/reimaden/ac71/fan.h b/spec/reimaden/ac71/fan.h new file mode 100644 index 00000000..deab2b99 --- /dev/null +++ b/spec/reimaden/ac71/fan.h @@ -0,0 +1,22 @@ +#ifndef AC71_LAPTOP_FAN_H +#define AC71_LAPTOP_FAN_H + +#include + +/* ========================================================================== */ + +#define FAN_MAX_PWM 200 +#define FAN_CTRL_MAX_LEVEL 7 +#define FAN_CTRL_LEVEL(level) (128 + (level)) + +/* ========================================================================== */ + +int ac71_fan_get_rpm(uint8_t fan_index); +int ac71_fan_query_abnorm(void); +int ac71_fan_get_pwm(uint8_t fan_index); +int ac71_fan_set_pwm(uint8_t fan_index, uint8_t pwm); +int ac71_fan_get_temp(uint8_t fan_index); +int ac71_fan_get_mode(void); +int ac71_fan_set_mode(uint8_t mode); + +#endif /* AC71_LAPTOP_FAN_H */ diff --git a/spec/reimaden/ac71/hwmon.c b/spec/reimaden/ac71/hwmon.c new file mode 100644 index 00000000..5098dead --- /dev/null +++ b/spec/reimaden/ac71/hwmon.c @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include + +#include "hwmon_fan.h" +#include "hwmon_pwm.h" + +/* ========================================================================== */ + +static bool nohwmon; +module_param(nohwmon, bool, 0444); +MODULE_PARM_DESC(nohwmon, "do not report to the hardware monitoring subsystem (default=false)"); + +/* ========================================================================== */ + +int __init ac71_hwmon_setup(void) +{ + if (nohwmon) + return -ENODEV; + + (void) ac71_hwmon_fan_setup(); + (void) ac71_hwmon_pwm_setup(); + + return 0; +} + +void ac71_hwmon_cleanup(void) +{ + (void) ac71_hwmon_fan_cleanup(); + (void) ac71_hwmon_pwm_cleanup(); +} diff --git a/spec/reimaden/ac71/hwmon.h b/spec/reimaden/ac71/hwmon.h new file mode 100644 index 00000000..13489234 --- /dev/null +++ b/spec/reimaden/ac71/hwmon.h @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_HWMON_H +#define AC71_HWMON_H + +#if IS_ENABLED(CONFIG_HWMON) + +#include + +int __init ac71_hwmon_setup(void); +void ac71_hwmon_cleanup(void); + +#else + +static inline int ac71_hwmon_setup(void) +{ + return 0; +} + +static inline void ac71_hwmon_cleanup(void) +{ + +} + +#endif + +#endif /* AC71_HWMON_H */ diff --git a/spec/reimaden/ac71/hwmon_fan.c b/spec/reimaden/ac71/hwmon_fan.c new file mode 100644 index 00000000..48df41a1 --- /dev/null +++ b/spec/reimaden/ac71/hwmon_fan.c @@ -0,0 +1,152 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include +#include +#include + +#include "ec.h" +#include "fan.h" +#include "pdev.h" + +/* ========================================================================== */ + +static struct device *ac71_hwmon_fan_dev; + +/* ========================================================================== */ + +static umode_t ac71_hwmon_fan_is_visible(const void *data, enum hwmon_sensor_types type, + u32 attr, int channel) +{ + switch (type) { + case hwmon_fan: + switch (attr) { + case hwmon_fan_input: + case hwmon_fan_fault: + return 0444; + } + break; + case hwmon_temp: + switch (attr) { + case hwmon_temp_input: + case hwmon_temp_label: + return 0444; + } + default: + break; + } + + return 0; +} + +static int ac71_hwmon_fan_read(struct device *device, enum hwmon_sensor_types type, + u32 attr, int channel, long *value) +{ + int err; + + switch (type) { + case hwmon_fan: + switch (attr) { + case hwmon_fan_input: + err = ac71_fan_get_rpm(channel); + if (err < 0) + return err; + + *value = err; + break; + default: + return -EOPNOTSUPP; + } + break; + case hwmon_temp: + switch (attr) { + case hwmon_temp_input: + err = ac71_fan_get_temp(channel); + if (err < 0) + return err; + + *value = err * 1000; + break; + default: + return -EOPNOTSUPP; + } + break; + default: + return -EOPNOTSUPP; + } + + return 0; +} + +static int ac71_hwmon_fan_read_string(struct device *dev, enum hwmon_sensor_types type, + u32 attr, int channel, const char **str) +{ + static const char * const temp_labels[] = { + "fan1_temp", + "fan2_temp", + }; + + switch (type) { + case hwmon_temp: + switch (attr) { + case hwmon_temp_label: + *str = temp_labels[channel]; + break; + default: + return -EOPNOTSUPP; + } + break; + default: + return -EOPNOTSUPP; + } + + return 0; +} + +/* ========================================================================== */ + +static const struct hwmon_channel_info *ac71_hwmon_fan_ch_info[] = { + HWMON_CHANNEL_INFO(fan, + HWMON_F_INPUT, + HWMON_F_INPUT), + HWMON_CHANNEL_INFO(temp, + HWMON_T_INPUT | HWMON_T_LABEL, + HWMON_T_INPUT | HWMON_T_LABEL), + NULL +}; + +static const struct hwmon_ops ac71_hwmon_fan_ops = { + .is_visible = ac71_hwmon_fan_is_visible, + .read = ac71_hwmon_fan_read, + .read_string = ac71_hwmon_fan_read_string, +}; + +static const struct hwmon_chip_info ac71_hwmon_fan_chip_info = { + .ops = &ac71_hwmon_fan_ops, + .info = ac71_hwmon_fan_ch_info, +}; + +/* ========================================================================== */ + +int __init ac71_hwmon_fan_setup(void) +{ + int err = 0; + + ac71_hwmon_fan_dev = hwmon_device_register_with_info( + &ac71_platform_dev->dev, KBUILD_MODNAME ".hwmon.fan", NULL, + &ac71_hwmon_fan_chip_info, NULL); + + if (IS_ERR(ac71_hwmon_fan_dev)) + err = PTR_ERR(ac71_hwmon_fan_dev); + + return err; +} + +void ac71_hwmon_fan_cleanup(void) +{ + if (!IS_ERR_OR_NULL(ac71_hwmon_fan_dev)) + hwmon_device_unregister(ac71_hwmon_fan_dev); +} diff --git a/spec/reimaden/ac71/hwmon_fan.h b/spec/reimaden/ac71/hwmon_fan.h new file mode 100644 index 00000000..ce3b6ca4 --- /dev/null +++ b/spec/reimaden/ac71/hwmon_fan.h @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_HWMON_FAN_H +#define AC71_HWMON_FAN_H + +#include + +int __init ac71_hwmon_fan_setup(void); +void ac71_hwmon_fan_cleanup(void); + +#endif /* AC71_HWMON_FAN_H */ diff --git a/spec/reimaden/ac71/hwmon_pwm.c b/spec/reimaden/ac71/hwmon_pwm.c new file mode 100644 index 00000000..b0a39388 --- /dev/null +++ b/spec/reimaden/ac71/hwmon_pwm.c @@ -0,0 +1,122 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "fan.h" +#include "pdev.h" +#include "util.h" + +/* ========================================================================== */ + +static struct device *ac71_hwmon_pwm_dev; + +/* ========================================================================== */ + +static umode_t ac71_hwmon_pwm_is_visible(const void *data, enum hwmon_sensor_types type, + u32 attr, int channel) +{ + if (type != hwmon_pwm && attr != hwmon_pwm_enable) + return -EOPNOTSUPP; + + return 0644; +} + +static int ac71_hwmon_pwm_read(struct device *device, enum hwmon_sensor_types type, + u32 attr, int channel, long *value) +{ + int err; + + switch (type) { + case hwmon_pwm: + switch (attr) { + case hwmon_pwm_enable: + err = ac71_fan_get_mode(); + if (err < 0) + return err; + + *value = err; + break; + case hwmon_pwm_input: + err = ac71_fan_get_pwm(channel); + if (err < 0) + return err; + + *value = err; + break; + default: + return -EOPNOTSUPP; + } + break; + default: + return -EOPNOTSUPP; + } + + return 0; +} + +static int ac71_hwmon_pwm_write(struct device *device, enum hwmon_sensor_types type, + u32 attr, int channel, long value) +{ + switch (type) { + case hwmon_pwm: + switch (attr) { + case hwmon_pwm_enable: + return ac71_fan_set_mode(value); + case hwmon_pwm_input: + return ac71_fan_set_pwm(channel, value); + default: + return -EOPNOTSUPP; + } + default: + return -EOPNOTSUPP; + } + + return 0; +} + +static const struct hwmon_channel_info *ac71_hwmon_pwm_ch_info[] = { + HWMON_CHANNEL_INFO(pwm, HWMON_PWM_ENABLE), + HWMON_CHANNEL_INFO(pwm, HWMON_PWM_INPUT, HWMON_PWM_INPUT), + NULL +}; + +static const struct hwmon_ops ac71_hwmon_pwm_ops = { + .is_visible = ac71_hwmon_pwm_is_visible, + .read = ac71_hwmon_pwm_read, + .write = ac71_hwmon_pwm_write, +}; + +static const struct hwmon_chip_info ac71_hwmon_pwm_chip_info = { + .ops = &ac71_hwmon_pwm_ops, + .info = ac71_hwmon_pwm_ch_info, +}; + +/* ========================================================================== */ + +int __init ac71_hwmon_pwm_setup(void) +{ + int err = 0; + + ac71_hwmon_pwm_dev = hwmon_device_register_with_info( + &ac71_platform_dev->dev, KBUILD_MODNAME ".hwmon.pwm", NULL, + &ac71_hwmon_pwm_chip_info, NULL); + + if (IS_ERR(ac71_hwmon_pwm_dev)) + err = PTR_ERR(ac71_hwmon_pwm_dev); + + return err; +} + +void ac71_hwmon_pwm_cleanup(void) +{ + if (!IS_ERR_OR_NULL(ac71_hwmon_pwm_dev)) + hwmon_device_unregister(ac71_hwmon_pwm_dev); +} diff --git a/spec/reimaden/ac71/hwmon_pwm.h b/spec/reimaden/ac71/hwmon_pwm.h new file mode 100644 index 00000000..8c5110a3 --- /dev/null +++ b/spec/reimaden/ac71/hwmon_pwm.h @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_HWMON_PWM_H +#define AC71_HWMON_PWM_H + +#include + +int __init ac71_hwmon_pwm_setup(void); +void ac71_hwmon_pwm_cleanup(void); + +#endif /* AC71_HWMON_PWM_H */ diff --git a/spec/reimaden/ac71/main.c b/spec/reimaden/ac71/main.c new file mode 100644 index 00000000..fbc5449b --- /dev/null +++ b/spec/reimaden/ac71/main.c @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "ec.h" +#include "wmi.h" + +/* submodules */ +#include "pdev.h" +#include "events.h" +#include "hwmon.h" +#include "battery.h" + +/* ========================================================================== */ + +#define SUBMODULE_ENTRY(_name, _req) { .name = #_name, .init = ac71_ ## _name ## _setup, .cleanup = ac71_ ## _name ## _cleanup, .required = _req } + +static struct ac71_submodule { + const char *name; + + bool required : 1, + initialized : 1; + + int (*init)(void); + void (*cleanup)(void); +} ac71_submodules[] __refdata = { + SUBMODULE_ENTRY(pdev, true), /* must be first */ + SUBMODULE_ENTRY(wmi_events, false), + SUBMODULE_ENTRY(hwmon, false), + SUBMODULE_ENTRY(battery, false), +}; + +#undef SUBMODULE_ENTRY + +static void do_cleanup(void) +{ + int i; + + for (i = ARRAY_SIZE(ac71_submodules) - 1; i >= 0; i--) { + const struct ac71_submodule *sm = &ac71_submodules[i]; + + if (sm->initialized) + sm->cleanup(); + } +} + +static const struct dmi_system_id ac71_dmi_table[] __initconst = { + { + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "LAPAC71H"), + { } + } + } +}; + +static int __init ac71_module_init(void) +{ + int err = 0, i; + + if (!wmi_has_guid(AC71_WMI_WMBC_GUID)) { + pr_err("WMI GUID not found\n"); + err = -ENODEV; goto out; + } + + if (!dmi_check_system(ac71_dmi_table)) { + pr_err("no DMI match\n"); + err = -ENODEV; goto out; + } + + err = ec_read_byte(PROJ_ID_ADDR); + if (err < 0) { + pr_err("failed to query project id: %d\n", err); + goto out; + } + + pr_info("project id: %d\n", err); + + err = ec_read_byte(PLATFORM_ID_ADDR); + if (err < 0) { + pr_err("failed to query platform id: %d\n", err); + goto out; + } + + pr_info("platform id: %d\n", err); + + for (i = 0; i < ARRAY_SIZE(ac71_submodules); i++) { + struct ac71_submodule *sm = &ac71_submodules[i]; + + err = sm->init(); + if (err) { + pr_warn("failed to initialize %s submodule: %d\n", sm->name, err); + if (sm->required) + goto out; + } else { + sm->initialized = true; + } + } + + err = 0; + +out: + if (err) + do_cleanup(); + else + pr_info("module loaded\n"); + + return err; +} + +static void __exit ac71_module_cleanup(void) +{ + do_cleanup(); + pr_info("module unloaded\n"); +} + +/* ========================================================================== */ + +module_init(ac71_module_init); +module_exit(ac71_module_cleanup); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("AC71 laptop platform driver"); +MODULE_ALIAS("wmi:" AC71_WMI_WMBC_GUID); diff --git a/spec/reimaden/ac71/misc.c b/spec/reimaden/ac71/misc.c new file mode 100644 index 00000000..8c4c49d0 --- /dev/null +++ b/spec/reimaden/ac71/misc.c @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include + +#include "ec.h" +#include "misc.h" +#include "util.h" + +/* ========================================================================== */ + +int ac71_fn_lock_get_state(void) +{ + int status = ec_read_byte(BIOS_CTRL_1_ADDR); + + if (status < 0) + return status; + + return !!(status & BIOS_CTRL_1_FN_LOCK_STATUS); +} + +int ac71_fn_lock_set_state(bool state) +{ + int status = ec_read_byte(BIOS_CTRL_1_ADDR); + + if (status < 0) + return status; + + status = SET_BIT(status, BIOS_CTRL_1_FN_LOCK_STATUS, state); + + return ec_write_byte(BIOS_CTRL_1_ADDR, status); +} diff --git a/spec/reimaden/ac71/misc.h b/spec/reimaden/ac71/misc.h new file mode 100644 index 00000000..3b394d8a --- /dev/null +++ b/spec/reimaden/ac71/misc.h @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_MISC_H +#define AC71_MISC_H + +#include + +/* ========================================================================== */ + +int ac71_fn_lock_get_state(void); +int ac71_fn_lock_set_state(bool state); + +#endif /* AC71_MISC_H */ diff --git a/spec/reimaden/ac71/package.nix b/spec/reimaden/ac71/package.nix new file mode 100644 index 00000000..7d7fba1f --- /dev/null +++ b/spec/reimaden/ac71/package.nix @@ -0,0 +1,19 @@ +{ stdenv +, lib +, kernel +, kmod }: stdenv.mkDerivation rec { + name = "ac71-${version}-${kernel.version}"; + version = "2024.2.13"; + + # adapted from https://github.com/pobrn/qc71_laptop + src = ./.; + + hardeningDisable = [ "pic" "format" ]; + nativeBuildInputs = kernel.moduleBuildDependencies; + + makeFlags = [ + "KERNELRELEASE=${kernel.modDirVersion}" + "KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + "INSTALL_MOD_PATH=$(out)" + ]; +} diff --git a/spec/reimaden/ac71/pdev.c b/spec/reimaden/ac71/pdev.c new file mode 100644 index 00000000..ec2ceed9 --- /dev/null +++ b/spec/reimaden/ac71/pdev.c @@ -0,0 +1,295 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "pr.h" + +#include +#include +#include +#include +#include + +#include "util.h" +#include "ec.h" +#include "misc.h" +#include "pdev.h" + +/* ========================================================================== */ + +struct platform_device *ac71_platform_dev; + +/* ========================================================================== */ + +static ssize_t fan_reduced_duty_cycle_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int status = ec_read_byte(BIOS_CTRL_3_ADDR); + + if (status < 0) + return status; + + return sprintf(buf, "%d\n", !!(status & BIOS_CTRL_3_FAN_REDUCED_DUTY_CYCLE)); +} + +static ssize_t fan_reduced_duty_cycle_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + int status; + bool value; + + if (kstrtobool(buf, &value)) + return -EINVAL; + + status = ec_read_byte(BIOS_CTRL_3_ADDR); + if (status < 0) + return status; + + status = SET_BIT(status, BIOS_CTRL_3_FAN_REDUCED_DUTY_CYCLE, value); + + status = ec_write_byte(BIOS_CTRL_3_ADDR, status); + + if (status < 0) + return status; + + return count; +} + +static ssize_t fan_always_on_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int status = ec_read_byte(BIOS_CTRL_3_ADDR); + + if (status < 0) + return status; + + return sprintf(buf, "%d\n", !!(status & BIOS_CTRL_3_FAN_ALWAYS_ON)); +} + +static ssize_t fan_always_on_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + int status; + bool value; + + if (kstrtobool(buf, &value)) + return -EINVAL; + + status = ec_read_byte(BIOS_CTRL_3_ADDR); + if (status < 0) + return status; + + status = SET_BIT(status, BIOS_CTRL_3_FAN_ALWAYS_ON, value); + + status = ec_write_byte(BIOS_CTRL_3_ADDR, status); + + if (status < 0) + return status; + + return count; +} + +static ssize_t fn_lock_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int status = ac71_fn_lock_get_state(); + + if (status < 0) + return status; + + return sprintf(buf, "%d\n", status); +} + +static ssize_t fn_lock_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + int status; + bool value; + + if (kstrtobool(buf, &value)) + return -EINVAL; + + status = ac71_fn_lock_set_state(value); + if (status < 0) + return status; + + return count; +} + +static ssize_t fn_lock_switch_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int status = ec_read_byte(AP_BIOS_BYTE_ADDR); + + if (status < 0) + return status; + + return sprintf(buf, "%d\n", !!(status & AP_BIOS_BYTE_FN_LOCK_SWITCH)); +} + +static ssize_t fn_lock_switch_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + int status; + bool value; + + if (kstrtobool(buf, &value)) + return -EINVAL; + + status = ec_read_byte(AP_BIOS_BYTE_ADDR); + if (status < 0) + return status; + + status = SET_BIT(status, AP_BIOS_BYTE_FN_LOCK_SWITCH, value); + + status = ec_write_byte(AP_BIOS_BYTE_ADDR, status); + + if (status < 0) + return status; + + return count; +} + +static ssize_t manual_control_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int status = ec_read_byte(CTRL_1_ADDR); + + if (status < 0) + return status; + + return sprintf(buf, "%d\n", !!(status & CTRL_1_MANUAL_MODE)); +} + +static ssize_t manual_control_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + int status; + bool value; + + if (kstrtobool(buf, &value)) + return -EINVAL; + + status = ec_read_byte(CTRL_1_ADDR); + if (status < 0) + return status; + + status = SET_BIT(status, CTRL_1_MANUAL_MODE, value); + + status = ec_write_byte(CTRL_1_ADDR, status); + + if (status < 0) + return status; + + return count; +} + +static ssize_t super_key_lock_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + int status = ec_read_byte(STATUS_1_ADDR); + + if (status < 0) + return status; + + return sprintf(buf, "%d\n", !!(status & STATUS_1_SUPER_KEY_LOCK)); +} + +static ssize_t super_key_lock_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + int status; + bool value; + + if (kstrtobool(buf, &value)) + return -EINVAL; + + status = ec_read_byte(STATUS_1_ADDR); + if (status < 0) + return status; + + if (value != !!(status & STATUS_1_SUPER_KEY_LOCK)) { + status = ec_write_byte(TRIGGER_1_ADDR, TRIGGER_1_SUPER_KEY_LOCK); + + if (status < 0) + return status; + } + + return count; +} + +/* ========================================================================== */ + +static DEVICE_ATTR_RW(fn_lock); +static DEVICE_ATTR_RW(fn_lock_switch); +static DEVICE_ATTR_RW(fan_always_on); +static DEVICE_ATTR_RW(fan_reduced_duty_cycle); +static DEVICE_ATTR_RW(manual_control); +static DEVICE_ATTR_RW(super_key_lock); + +static struct attribute *ac71_attrs[] = { + &dev_attr_fn_lock.attr, + &dev_attr_fn_lock_switch.attr, + &dev_attr_fan_always_on.attr, + &dev_attr_fan_reduced_duty_cycle.attr, + &dev_attr_manual_control.attr, + &dev_attr_super_key_lock.attr, + NULL +}; + +/* ========================================================================== */ + +static umode_t ac71_attr_is_visible(struct kobject *kobj, struct attribute *attr, int n) +{ + bool ok = false; + + if (attr == &dev_attr_fn_lock.attr || attr == &dev_attr_fn_lock_switch.attr) + ok = true; + else if (attr == &dev_attr_fan_always_on.attr || attr == &dev_attr_fan_reduced_duty_cycle.attr) + ok = true; + else if (attr == &dev_attr_manual_control.attr) + ok = true; + else if (attr == &dev_attr_super_key_lock.attr) + ok = false; + + return ok ? attr->mode : 0; +} + +/* ========================================================================== */ + +static const struct attribute_group ac71_group = { + .is_visible = ac71_attr_is_visible, + .attrs = ac71_attrs, +}; + +static const struct attribute_group *ac71_groups[] = { + &ac71_group, + NULL +}; + +/* ========================================================================== */ + +int __init ac71_pdev_setup(void) +{ + int err; + + ac71_platform_dev = platform_device_alloc(KBUILD_MODNAME, PLATFORM_DEVID_NONE); + if (!ac71_platform_dev) { + err = -ENOMEM; + goto out; + } + + ac71_platform_dev->dev.groups = ac71_groups; + + err = platform_device_add(ac71_platform_dev); + if (err) { + platform_device_put(ac71_platform_dev); + ac71_platform_dev = NULL; + } + +out: + return err; +} + +void ac71_pdev_cleanup(void) +{ + /* checks for IS_ERR_OR_NULL() */ + platform_device_unregister(ac71_platform_dev); +} diff --git a/spec/reimaden/ac71/pdev.h b/spec/reimaden/ac71/pdev.h new file mode 100644 index 00000000..33e176a5 --- /dev/null +++ b/spec/reimaden/ac71/pdev.h @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_PDEV_H +#define AC71_PDEV_H + +#include +#include + +/* ========================================================================== */ + +extern struct platform_device *ac71_platform_dev; + +/* ========================================================================== */ + +int __init ac71_pdev_setup(void); +void ac71_pdev_cleanup(void); + +#endif /* AC71_PDEV_H */ diff --git a/spec/reimaden/ac71/pr.h b/spec/reimaden/ac71/pr.h new file mode 100644 index 00000000..853a4e21 --- /dev/null +++ b/spec/reimaden/ac71/pr.h @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_PR_H +#define AC71_PR_H + +#define pr_fmt(fmt) KBUILD_MODNAME "/" KBUILD_BASENAME ": %s: " fmt, __func__ + +#include + +#endif /* AC71_PR_H */ diff --git a/spec/reimaden/ac71/util.h b/spec/reimaden/ac71/util.h new file mode 100644 index 00000000..7a8b356b --- /dev/null +++ b/spec/reimaden/ac71/util.h @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_UTIL_H +#define AC71_UTIL_H + +#define SET_BIT(value, bit, on) ((on) ? ((value) | (bit)) : ((value) & ~(bit))) + +#endif /* AC71_UTIL_H */ diff --git a/spec/reimaden/ac71/wmi.h b/spec/reimaden/ac71/wmi.h new file mode 100644 index 00000000..7fd2172d --- /dev/null +++ b/spec/reimaden/ac71/wmi.h @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0 +#ifndef AC71_LAPTOP_WMI_H +#define AC71_LAPTOP_WMI_H + +/* ========================================================================== */ +/* WMI methods */ + +/* AcpiTest_MULong */ +#define AC71_WMI_WMBC_GUID "ABBC0F6F-8EA1-11D1-00A0-C90629100000" +#define AC71_WMBC_GETSETULONG_ID 4 + +/* ========================================================================== */ +/* WMI events */ + +/* AcpiTest_EventULong */ +#define AC71_WMI_EVENT0_GUID "ABBC0F72-8EA1-11D1-00A0-C90629100000" + +/* AcpiTest_EventString */ +#define AC71_WMI_EVENT1_GUID "ABBC0F71-8EA1-11D1-00A0-C90629100000" + +/* AcpiTest_EventPackage */ +#define AC71_WMI_EVENT2_GUID "ABBC0F70-8EA1-11D1-00A0-C90629100000" + +#endif /* AC71_LAPTOP_WMI_H */ diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index 6e0fc5a8..c82f1cf5 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -29,4 +29,6 @@ boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; hardware.cpu.intel.updateMicrocode = true; + + imports = [ ./ac71 ]; } From 816422ebea2abd5c616bd75be201c617193dab11 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 14 Feb 2024 12:33:51 +0800 Subject: [PATCH 026/274] feat(sway): switch to swaylock-effects --- home/gui/catppuccin/home.nix | 36 ++++++++++++++++++++++++++++++++++-- home/sway/home.nix | 22 +++++++++++++++++++++- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix index f08d6265..d13a4b21 100644 --- a/home/gui/catppuccin/home.nix +++ b/home/gui/catppuccin/home.nix @@ -50,15 +50,47 @@ in mkIf cfg.enable { trayOutput = "primary"; } ]; - #output."*".bg = mkForce "${palette.sway.${cfg.sway}.base} solid_color"; output."*".bg = mkForce "${./flake.png} fill"; - gaps.inner = 12; gaps.outer = 5; # dodge the status bar gaps.bottom = 0; }; + programs.swaylock.settings = with palette.sway.${cfg.sway}; let + transparent = "00000000"; + in { + color = base; + bs-hl-color = rosewater; + caps-lock-bs-hl-color = rosewater; + caps-lock-key-hl-color = green; + inside-color = transparent; + inside-clear-color = transparent; + inside-caps-lock-color = transparent; + inside-ver-color = transparent; + inside-wrong-color = transparent; + key-hl-color = green; + layout-bg-color = transparent; + layout-border-color = transparent; + layout-text-color = text; + line-color = transparent; + line-clear-color = transparent; + line-caps-lock-color = transparent; + line-ver-color = transparent; + line-wrong-color = transparent; + ring-color = lavender; + ring-clear-color = rosewater; + ring-caps-lock-color = peach; + ring-ver-color = blue; + ring-wrong-color = maroon; + separator-color = transparent; + text-color = text; + text-clear-color = rosewater; + text-caps-lock-color = peach; + text-ver-color = blue; + text-wrong-color = maroon; + }; + programs.i3status.general = with palette.sway.${cfg.sway}; { color_good = lavender; color_degraded = yellow; diff --git a/home/sway/home.nix b/home/sway/home.nix index eccf1583..139995cd 100644 --- a/home/sway/home.nix +++ b/home/sway/home.nix @@ -18,7 +18,7 @@ XF86MonBrightnessUp = "light -A 5"; XF86MonBrightnessDown = "light -U 5"; - "Control+Alt+l" = "exec ${pkgs.swaylock}/bin/swaylock -c 000000"; + "Control+Alt+l" = "exec swaylock -f --grace 0"; "Print" = "exec ${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy"; "${modifier}+Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy"; "${modifier}+q" = "exec google-chrome-stable"; @@ -45,4 +45,24 @@ output."*".bg = "#000000 solid_color"; }; }; + + programs.swaylock = { + enable = true; + package = pkgs.swaylock-effects; + settings = { + indicator-caps-lock = true; + font-size = 20; + ignore-empty-password = true; + show-failed-attempts = true; + color = mkDefault "#00000000"; + + # Ring + indicator-radius = 115; + + # Swaylock-effects specific settings + clock = true; + timestr = "%r"; + grace = 2; + }; + }; } From 13cae9ba899d90106f8118f2d68f358776376848 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 14 Feb 2024 13:04:17 +0800 Subject: [PATCH 027/274] fix(swaylock): isolate from sway --- home/sway/home.nix | 20 -------------------- home/sway/nixos.nix | 1 - home/swaylock/home.nix | 24 ++++++++++++++++++++++++ home/swaylock/nixos.nix | 8 ++++++++ 4 files changed, 32 insertions(+), 21 deletions(-) create mode 100644 home/swaylock/home.nix create mode 100644 home/swaylock/nixos.nix diff --git a/home/sway/home.nix b/home/sway/home.nix index 139995cd..0f389fe4 100644 --- a/home/sway/home.nix +++ b/home/sway/home.nix @@ -45,24 +45,4 @@ output."*".bg = "#000000 solid_color"; }; }; - - programs.swaylock = { - enable = true; - package = pkgs.swaylock-effects; - settings = { - indicator-caps-lock = true; - font-size = 20; - ignore-empty-password = true; - show-failed-attempts = true; - color = mkDefault "#00000000"; - - # Ring - indicator-radius = 115; - - # Swaylock-effects specific settings - clock = true; - timestr = "%r"; - grace = 2; - }; - }; } diff --git a/home/sway/nixos.nix b/home/sway/nixos.nix index 3817720f..f5b2bbdc 100644 --- a/home/sway/nixos.nix +++ b/home/sway/nixos.nix @@ -33,6 +33,5 @@ in mkIf gui { } // { providedSessions = [ pkgs.sway.meta.mainProgram ]; }) ]; - security.pam.services.swaylock = { }; programs.light.enable = true; } diff --git a/home/swaylock/home.nix b/home/swaylock/home.nix new file mode 100644 index 00000000..25a72c88 --- /dev/null +++ b/home/swaylock/home.nix @@ -0,0 +1,24 @@ +{ pkgs +, lib +, config +, ... }: with lib; mkIf config.passthrough.gui { + programs.swaylock = { + enable = true; + package = pkgs.swaylock-effects; + settings = { + indicator-caps-lock = true; + font-size = 20; + ignore-empty-password = true; + show-failed-attempts = true; + color = mkDefault "#00000000"; + + # Ring + indicator-radius = 115; + + # Swaylock-effects specific settings + clock = true; + timestr = "%r"; + grace = 2; + }; + }; +} diff --git a/home/swaylock/nixos.nix b/home/swaylock/nixos.nix new file mode 100644 index 00000000..3891904b --- /dev/null +++ b/home/swaylock/nixos.nix @@ -0,0 +1,8 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + gui = with config.global.gpu; enable && session; +in mkIf gui { + security.pam.services.swaylock = { }; +} From 839bec39db978122bd503ec67bf058df4da913cb Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 14 Feb 2024 14:40:48 +0800 Subject: [PATCH 028/274] fix(gui): fix catppuccin palette --- home/gui/catppuccin/home.nix | 26 ++- home/gui/catppuccin/nixos.nix | 4 +- home/gui/catppuccin/palette.nix | 308 ++++++++++++-------------------- 3 files changed, 129 insertions(+), 209 deletions(-) diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix index d13a4b21..541350aa 100644 --- a/home/gui/catppuccin/home.nix +++ b/home/gui/catppuccin/home.nix @@ -3,7 +3,7 @@ , config , ... }: with lib; let cfg = config.passthrough.catppuccin; - palette = import ./palette.nix; + palette = (import ./palette.nix).${cfg.palette}; in mkIf cfg.enable { # cursor theme home.pointerCursor = { inherit (cfg.cursor) package name; }; @@ -14,7 +14,7 @@ in mkIf cfg.enable { # sway colour palette override wayland.windowManager.sway.config = { - colors = with palette.sway.${cfg.sway}; { + colors = with palette; { focused = { border = lavender; background = base; text = text; indicator = rosewater; childBorder = lavender; }; focusedInactive = { border = overlay0; background = base; text = text; indicator = rosewater; childBorder = overlay0; }; unfocused = { border = overlay0; background = base; text = text; indicator = rosewater; childBorder = overlay0; }; @@ -25,7 +25,7 @@ in mkIf cfg.enable { bars = mkForce [ { colors = let - p = palette.sway.${cfg.sway}; + p = palette; in { background = p.base; statusline = p.text; @@ -57,7 +57,7 @@ in mkIf cfg.enable { gaps.bottom = 0; }; - programs.swaylock.settings = with palette.sway.${cfg.sway}; let + programs.swaylock.settings = with palette; let transparent = "00000000"; in { color = base; @@ -91,16 +91,24 @@ in mkIf cfg.enable { text-wrong-color = maroon; }; - programs.i3status.general = with palette.sway.${cfg.sway}; { + programs.i3status.general = with palette; { color_good = lavender; color_degraded = yellow; color_bad = red; }; # foot colour palette override - programs.foot.settings.colors = { - inherit (palette.foot.${cfg.sway}) foreground background - regular0 regular1 regular2 regular3 regular4 regular5 regular6 regular7 - bright0 bright1 bright2 bright3 bright4 bright5 bright6 bright7; + programs.foot.settings.colors = with palette; let + c = substring 1 7; + in { + foreground = c text; background = c base; + regular0 = c subtext1; regular1 = c red; + regular2 = c green; regular3 = c yellow; + regular4 = c blue; regular5 = c pink; + regular6 = c teal; regular7 = c surface2; + bright0 = c subtext0; bright1 = c red; + bright2 = c green; bright3 = c yellow; + bright4 = c blue; bright5 = c pink; + bright6 = c teal; bright7 = c surface1; }; } diff --git a/home/gui/catppuccin/nixos.nix b/home/gui/catppuccin/nixos.nix index 92e6371e..4d360baa 100644 --- a/home/gui/catppuccin/nixos.nix +++ b/home/gui/catppuccin/nixos.nix @@ -8,10 +8,10 @@ in { options.home.catppuccin = { enable = mkEnableOption "catppuccin colour scheme" // { default = gui; }; - sway = mkOption { + palette = mkOption { type = with types; str; default = "frappe"; - description = "colour palette used in sway"; + description = "colour palette in use"; }; gtk = { diff --git a/home/gui/catppuccin/palette.nix b/home/gui/catppuccin/palette.nix index 5f2f084d..1e330574 100644 --- a/home/gui/catppuccin/palette.nix +++ b/home/gui/catppuccin/palette.nix @@ -1,205 +1,117 @@ { - sway = { - latte = { - rosewater = "#dc8a78"; - flamingo = "#dd7878"; - pink = "#ea76cb"; - mauve = "#8839ef"; - red = "#d20f39"; - maroon = "#e64553"; - peach = "#fe640b"; - yellow = "#df8e1d"; - green = "#40a02b"; - teal = "#179299"; - sky = "#04a5e5"; - sapphire = "#209fb5"; - blue = "#1e66f5"; - lavender = "#7287fd"; - text = "#4c4f69"; - subtext1 = "#5c5f77"; - subtext0 = "#6c6f85"; - overlay2 = "#7c7f93"; - overlay1 = "#8c8fa1"; - overlay0 = "#9ca0b0"; - surface2 = "#acb0be"; - surface1 = "#bcc0cc"; - surface0 = "#ccd0da"; - base = "#eff1f5"; - mantle = "#e6e9ef"; - crust = "#dce0e8"; - }; - - frappe = { - rosewater = "#f2d5cf"; - flamingo = "#eebebe"; - pink = "#f4b8e4"; - mauve = "#ca9ee6"; - red = "#e78284"; - maroon = "#ea999c"; - peach = "#ef9f76"; - yellow = "#e5c890"; - green = "#a6d189"; - teal = "#81c8be"; - sky = "#99d1db"; - sapphire = "#85c1dc"; - blue = "#8caaee"; - lavender = "#babbf1"; - text = "#c6d0f5"; - subtext1 = "#b5bfe2"; - subtext0 = "#a5adce"; - overlay2 = "#949cbb"; - overlay1 = "#838ba7"; - overlay0 = "#737994"; - surface2 = "#626880"; - surface1 = "#51576d"; - surface0 = "#414559"; - base = "#303446"; - mantle = "#292c3c"; - crust = "#232634"; - }; - - macchiato = { - rosewater = "#f4dbd6"; - flamingo = "#f0c6c6"; - pink = "#f5bde6"; - mauve = "#c6a0f6"; - red = "#ed8796"; - maroon = "#ee99a0"; - peach = "#f5a97f"; - yellow = "#eed49f"; - green = "#a6da95"; - teal = "#8bd5ca"; - sky = "#91d7e3"; - sapphire = "#7dc4e4"; - blue = "#8aadf4"; - lavender = "#b7bdf8"; - text = "#cad3f5"; - subtext1 = "#b8c0e0"; - subtext0 = "#a5adcb"; - overlay2 = "#939ab7"; - overlay1 = "#8087a2"; - overlay0 = "#6e738d"; - surface2 = "#5b6078"; - surface1 = "#494d64"; - surface0 = "#363a4f"; - base = "#24273a"; - mantle = "#1e2030"; - crust = "#181926"; - }; - - mocha = { - rosewater = "#f5e0dc"; - flamingo = "#f2cdcd"; - pink = "#f5c2e7"; - mauve = "#cba6f7"; - red = "#f38ba8"; - maroon = "#eba0ac"; - peach = "#fab387"; - yellow = "#f9e2af"; - green = "#a6e3a1"; - teal = "#94e2d5"; - sky = "#89dceb"; - sapphire = "#74c7ec"; - blue = "#89b4fa"; - lavender = "#b4befe"; - text = "#cdd6f4"; - subtext1 = "#bac2de"; - subtext0 = "#a6adc8"; - overlay2 = "#9399b2"; - overlay1 = "#7f849c"; - overlay0 = "#6c7086"; - surface2 = "#585b70"; - surface1 = "#45475a"; - surface0 = "#313244"; - base = "#1e1e2e"; - mantle = "#181825"; - crust = "#11111b"; - }; + latte = { + rosewater = "#dc8a78"; + flamingo = "#dd7878"; + pink = "#ea76cb"; + mauve = "#8839ef"; + red = "#d20f39"; + maroon = "#e64553"; + peach = "#fe640b"; + yellow = "#df8e1d"; + green = "#40a02b"; + teal = "#179299"; + sky = "#04a5e5"; + sapphire = "#209fb5"; + blue = "#1e66f5"; + lavender = "#7287fd"; + text = "#4c4f69"; + subtext1 = "#5c5f77"; + subtext0 = "#6c6f85"; + overlay2 = "#7c7f93"; + overlay1 = "#8c8fa1"; + overlay0 = "#9ca0b0"; + surface2 = "#acb0be"; + surface1 = "#bcc0cc"; + surface0 = "#ccd0da"; + base = "#eff1f5"; + mantle = "#e6e9ef"; + crust = "#dce0e8"; }; - foot = { - latte = { - foreground = "4c4f69"; # Text - background = "eff1f5"; # Base - regular0 = "5c5f77"; # Subtext 1 - regular1 = "d20f39"; # red - regular2 = "40a02b"; # green - regular3 = "df8e1d"; # yellow - regular4 = "1e66f5"; # blue - regular5 = "ea76cb"; # pink - regular6 = "179299"; # teal - regular7 = "acb0be"; # Surface 2 - bright0 = "6c6f85"; # Subtext 0 - bright1 = "d20f39"; # red - bright2 = "40a02b"; # green - bright3 = "df8e1d"; # yellow - bright4 = "1e66f5"; # blue - bright5 = "ea76cb"; # pink - bright6 = "179299"; # teal - bright7 = "bcc0cc"; # Surface 1 - }; + frappe = { + rosewater = "#f2d5cf"; + flamingo = "#eebebe"; + pink = "#f4b8e4"; + mauve = "#ca9ee6"; + red = "#e78284"; + maroon = "#ea999c"; + peach = "#ef9f76"; + yellow = "#e5c890"; + green = "#a6d189"; + teal = "#81c8be"; + sky = "#99d1db"; + sapphire = "#85c1dc"; + blue = "#8caaee"; + lavender = "#babbf1"; + text = "#c6d0f5"; + subtext1 = "#b5bfe2"; + subtext0 = "#a5adce"; + overlay2 = "#949cbb"; + overlay1 = "#838ba7"; + overlay0 = "#737994"; + surface2 = "#626880"; + surface1 = "#51576d"; + surface0 = "#414559"; + base = "#303446"; + mantle = "#292c3c"; + crust = "#232634"; + }; - frappe = { - foreground = "c6d0f5"; # Text - background = "303446"; # Base - regular0 = "51576d"; # Surface 1 - regular1 = "e78284"; # red - regular2 = "a6d189"; # green - regular3 = "e5c890"; # yellow - regular4 = "8caaee"; # blue - regular5 = "f4b8e4"; # pink - regular6 = "81c8be"; # teal - regular7 = "b5bfe2"; # Subtext 1 - bright0 = "626880"; # Surface 2 - bright1 = "e78284"; # red - bright2 = "a6d189"; # green - bright3 = "e5c890"; # yellow - bright4 = "8caaee"; # blue - bright5 = "f4b8e4"; # pink - bright6 = "81c8be"; # teal - bright7 = "a5adce"; # Subtext 0 - }; + macchiato = { + rosewater = "#f4dbd6"; + flamingo = "#f0c6c6"; + pink = "#f5bde6"; + mauve = "#c6a0f6"; + red = "#ed8796"; + maroon = "#ee99a0"; + peach = "#f5a97f"; + yellow = "#eed49f"; + green = "#a6da95"; + teal = "#8bd5ca"; + sky = "#91d7e3"; + sapphire = "#7dc4e4"; + blue = "#8aadf4"; + lavender = "#b7bdf8"; + text = "#cad3f5"; + subtext1 = "#b8c0e0"; + subtext0 = "#a5adcb"; + overlay2 = "#939ab7"; + overlay1 = "#8087a2"; + overlay0 = "#6e738d"; + surface2 = "#5b6078"; + surface1 = "#494d64"; + surface0 = "#363a4f"; + base = "#24273a"; + mantle = "#1e2030"; + crust = "#181926"; + }; - macchiato = { - foreground = "cad3f5"; # Text - background = "24273a"; # Base - regular0 = "494d64"; # Surface 1 - regular1 = "ed8796"; # red - regular2 = "a6da95"; # green - regular3 = "eed49f"; # yellow - regular4 = "8aadf4"; # blue - regular5 = "f5bde6"; # pink - regular6 = "8bd5ca"; # teal - regular7 = "b8c0e0"; # Subtext 1 - bright0 = "5b6078"; # Surface 2 - bright1 = "ed8796"; # red - bright2 = "a6da95"; # green - bright3 = "eed49f"; # yellow - bright4 = "8aadf4"; # blue - bright5 = "f5bde6"; # pink - bright6 = "8bd5ca"; # teal - bright7 = "a5adcb"; # Subtext 0 - }; - - mocha = { - foreground = "cdd6f4"; # Text - background = "1e1e2e"; # Base - regular0 = "45475a"; # Surface 1 - regular1 = "f38ba8"; # red - regular2 = "a6e3a1"; # green - regular3 = "f9e2af"; # yellow - regular4 = "89b4fa"; # blue - regular5 = "f5c2e7"; # pink - regular6 = "94e2d5"; # teal - regular7 = "bac2de"; # Subtext 1 - bright0 = "585b70"; # Surface 2 - bright1 = "f38ba8"; # red - bright2 = "a6e3a1"; # green - bright3 = "f9e2af"; # yellow - bright4 = "89b4fa"; # blue - bright5 = "f5c2e7"; # pink - bright6 = "94e2d5"; # teal - bright7 = "a6adc8"; # Subtext 0 - }; + mocha = { + rosewater = "#f5e0dc"; + flamingo = "#f2cdcd"; + pink = "#f5c2e7"; + mauve = "#cba6f7"; + red = "#f38ba8"; + maroon = "#eba0ac"; + peach = "#fab387"; + yellow = "#f9e2af"; + green = "#a6e3a1"; + teal = "#94e2d5"; + sky = "#89dceb"; + sapphire = "#74c7ec"; + blue = "#89b4fa"; + lavender = "#b4befe"; + text = "#cdd6f4"; + subtext1 = "#bac2de"; + subtext0 = "#a6adc8"; + overlay2 = "#9399b2"; + overlay1 = "#7f849c"; + overlay0 = "#6c7086"; + surface2 = "#585b70"; + surface1 = "#45475a"; + surface0 = "#313244"; + base = "#1e1e2e"; + mantle = "#181825"; + crust = "#11111b"; }; } From 54af9c23bef4948fb4232155d7628bc3c97111b6 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 14 Feb 2024 14:47:48 +0800 Subject: [PATCH 029/274] fix(gui): theme mako --- home/gui/catppuccin/home.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix index 541350aa..f61c8ecd 100644 --- a/home/gui/catppuccin/home.nix +++ b/home/gui/catppuccin/home.nix @@ -57,6 +57,7 @@ in mkIf cfg.enable { gaps.bottom = 0; }; + # swaylock colour palette override programs.swaylock.settings = with palette; let transparent = "00000000"; in { @@ -91,12 +92,25 @@ in mkIf cfg.enable { text-wrong-color = maroon; }; + # i3status colour palette override programs.i3status.general = with palette; { color_good = lavender; color_degraded = yellow; color_bad = red; }; + # mako colour palette override + services.mako = with palette; { + backgroundColor = base; + textColor = text; + borderColor = blue; + progressColor = "over ${surface0}"; + extraConfig = '' + [urgency=high] + border-color=${peach} + ''; + }; + # foot colour palette override programs.foot.settings.colors = with palette; let c = substring 1 7; From 1bcec42adbc1113acdeffca39edb0cf5cedd3dd2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 14 Feb 2024 15:38:19 +0800 Subject: [PATCH 030/274] feat(swayidle): set up idle behaviour --- home/swayidle/home.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 home/swayidle/home.nix diff --git a/home/swayidle/home.nix b/home/swayidle/home.nix new file mode 100644 index 00000000..93158c26 --- /dev/null +++ b/home/swayidle/home.nix @@ -0,0 +1,20 @@ +{ pkgs +, lib +, config +, ... }: with lib; mkIf config.passthrough.gui { + services.swayidle = { + enable = true; + systemdTarget = "sway-session.target"; + timeouts = [ + { timeout = 600; command = "swaymsg 'output * dpms off'"; resumeCommand = "swaymsg 'output * dpms on'"; } + ]; + events = [ + { event = "before-sleep"; command = "${pkgs.swaylock-effects}/bin/swaylock -f --grace 0"; } + ]; + }; + + # fullscreen as simple idle inhibitor shortcut + wayland.windowManager.sway.config.window.commands = [ + { criteria.shell = ".*"; command = "inhibit_idle fullscreen"; } + ]; +} From 0cedbe7b87013f0fefe72f72dc146922424310b9 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 14 Feb 2024 16:47:30 +0800 Subject: [PATCH 031/274] fix(swayidle): fix idle commands --- home/swayidle/home.nix | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/home/swayidle/home.nix b/home/swayidle/home.nix index 93158c26..c7d0daef 100644 --- a/home/swayidle/home.nix +++ b/home/swayidle/home.nix @@ -2,14 +2,18 @@ , lib , config , ... }: with lib; mkIf config.passthrough.gui { - services.swayidle = { + services.swayidle = let + sway = config.wayland.windowManager.sway.package; + swaymsg = "${sway}/bin/swaymsg"; + swaylock = "${config.programs.swaylock.package}/bin/swaylock"; + in { enable = true; systemdTarget = "sway-session.target"; timeouts = [ - { timeout = 600; command = "swaymsg 'output * dpms off'"; resumeCommand = "swaymsg 'output * dpms on'"; } + { timeout = 600; command = "${swaymsg} 'output * dpms off'"; resumeCommand = "${swaymsg} 'output * dpms on'"; } ]; events = [ - { event = "before-sleep"; command = "${pkgs.swaylock-effects}/bin/swaylock -f --grace 0"; } + { event = "before-sleep"; command = "${swaylock} -f --grace 0"; } ]; }; From e79e43c5131ea053a4695f7c7440bb61d36b44c7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 15 Feb 2024 12:30:07 +0800 Subject: [PATCH 032/274] feat(gui): add catppuccin icons --- home/gui/catppuccin/home.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix index f61c8ecd..b3bd6afd 100644 --- a/home/gui/catppuccin/home.nix +++ b/home/gui/catppuccin/home.nix @@ -11,6 +11,10 @@ in mkIf cfg.enable { # gtk theme gtk.theme = { inherit (cfg.gtk) package name; }; + gtk.iconTheme.package = pkgs.catppuccin-papirus-folders.override { + flavor = cfg.palette; + accent = "pink"; + }; # sway colour palette override wayland.windowManager.sway.config = { From cc252a1ea849c62ba2f67d8a20b9c40314a48049 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 15 Feb 2024 17:20:28 +0800 Subject: [PATCH 033/274] fix(incinerator): unlock initrd emergency access --- spec/incinerator/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/incinerator/default.nix b/spec/incinerator/default.nix index 89b26aa6..124e93a6 100644 --- a/spec/incinerator/default.nix +++ b/spec/incinerator/default.nix @@ -21,4 +21,5 @@ boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; boot.kernelParams = [ "console=ttyS0,115200n8" ]; + boot.initrd.systemd.emergencyAccess = true; } From 46099c947e76f100dfbc700130dc37807f0dfe88 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 17 Feb 2024 23:52:50 +0800 Subject: [PATCH 034/274] fix(eientei): add hass deps --- spec/eientei/hass.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/eientei/hass.nix b/spec/eientei/hass.nix index 70aa960e..cbad0c79 100644 --- a/spec/eientei/hass.nix +++ b/spec/eientei/hass.nix @@ -13,6 +13,10 @@ "mqtt" "synology_dsm" ]; + + extraPackages = python3Packages: with python3Packages; [ + aiogithubapi gtts radios + ]; }; nixpkgs.config.permittedInsecurePackages = [ "openssl-1.1.1w" ]; From 7074bf8de900029ceb0462bfffef2b5c33b98ecf Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 18 Feb 2024 12:49:39 +0800 Subject: [PATCH 035/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 81f8fa8e..34e66436 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1707683400, - "narHash": "sha256-Zc+J3UO1Xpx+NL8UB6woPHyttEy9cXXtm+0uWwzuYDc=", + "lastModified": 1708031129, + "narHash": "sha256-EH20hJfNnc1/ODdDVat9B7aKm0B95L3YtkIRwKLvQG8=", "owner": "nix-community", "repo": "home-manager", - "rev": "21b078306a2ab68748abf72650db313d646cf2ca", + "rev": "3d6791b3897b526c82920a2ab5f61d71985b3cf8", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1707546158, - "narHash": "sha256-nYYJTpzfPMDxI8mzhQsYjIUX+grorqjKEU9Np6Xwy/0=", + "lastModified": 1708118438, + "narHash": "sha256-kk9/0nuVgA220FcqH/D2xaN6uGyHp/zoxPNUmPCMmEE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d934204a0f8d9198e1e4515dd6fec76a139c87f0", + "rev": "5863c27340ba4de8f83e7e3c023b9599c3cb3c80", "type": "github" }, "original": { From 0993c0a6256f49f771ed2e3d28cfdf2becab447c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 18 Feb 2024 17:36:49 +0800 Subject: [PATCH 036/274] feat(netdata): add netdata module and nginx wrapper --- global/netdata/default.nix | 52 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 global/netdata/default.nix diff --git a/global/netdata/default.nix b/global/netdata/default.nix new file mode 100644 index 00000000..fb9bebf6 --- /dev/null +++ b/global/netdata/default.nix @@ -0,0 +1,52 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.global.netdata; +in { + options.global.netdata = { + enable = mkEnableOption "netdata"; + host = mkOption { + type = with types; str; + default = "localhost"; + description = "hostname of netdata web interface"; + }; + addSSL = mkEnableOption "add SSL to netdata proxy"; + useACMEHost = mkOption { + type = with types; nullOr str; + default = null; + description = "existing acme host"; + }; + basicAuthFile = mkOption { + type = with types; nullOr path; + default = "/nix/persist/secret/netdata"; + description = "path to passwd file"; + }; + }; + + config = mkIf cfg.enable { + services.netdata = { + enable = true; + config = { + global = { + "error log" = "syslog"; + "access log" = "none"; + "debug log" = "syslog"; + }; + web."bind to" = "unix:/var/run/netdata/netdata.sock"; + }; + }; + + users.users.netdata.uid = 287; + users.groups.netdata.gid = 287; + + services.nginx.enable = mkDefault true; + services.nginx.virtualHosts.${cfg.host} = { + inherit (cfg) addSSL useACMEHost basicAuthFile; + locations."/".proxyPass = "http://unix:/var/run/netdata/netdata.sock"; + }; + users.users.nginx.extraGroups = [ "netdata" ]; + + environment.persistence."/nix/persist/fhs".directories = [ "/var/lib/netdata" ]; + }; +} From 0e91cf41d5b0b3d78a41e0ee0b3f224fa40661e5 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 18 Feb 2024 17:59:13 +0800 Subject: [PATCH 037/274] perf(focus): remove grafana dashboard --- spec/focus/grafana.nix | 36 ------------------------------------ spec/focus/nginx.nix | 8 -------- 2 files changed, 44 deletions(-) delete mode 100644 spec/focus/grafana.nix diff --git a/spec/focus/grafana.nix b/spec/focus/grafana.nix deleted file mode 100644 index bd667368..00000000 --- a/spec/focus/grafana.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ config -, ... }: { - services.grafana = { - enable = true; - dataDir = "/nix/persist/service/grafana"; - settings = { - server = { - http_addr = "127.0.0.1"; - http_port = 3000; - domain = "sf.514fpv.io"; - root_url = "https://sf.514fpv.io:8086/dash"; - serve_from_sub_path = true; - }; - }; - }; - - services.prometheus = { - enable = true; - port = 9001; - exporters = { - node = { - enable = true; - enabledCollectors = [ "systemd" ]; - port = 9002; - }; - }; - }; - - services.nginx.virtualHosts."sf.514fpv.io".locations."/dash/" = { - proxyPass = "http://${toString config.services.grafana.settings.server.http_addr}:${toString config.services.grafana.settings.server.http_port}"; - proxyWebsockets = true; - recommendedProxySettings = true; - }; - - global.fs.zfs.mountpoints."/nix/persist/service/grafana" = "service/grafana"; -} diff --git a/spec/focus/nginx.nix b/spec/focus/nginx.nix index 38c33ba0..7c8bb5e7 100644 --- a/spec/focus/nginx.nix +++ b/spec/focus/nginx.nix @@ -17,14 +17,6 @@ useACMEHost = ".sf.514fpv.io"; extraConfig = "return 444;"; }; - - "sf.514fpv.io" = { - addSSL = true; - useACMEHost = "sf.514fpv.io"; - locations."/" = { - return = "307 https://sf.514fpv.io:8086/dash/"; - }; - }; }; }; From 54746d5b117da65b303605fdfe557ed2405040bc Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 18 Feb 2024 17:59:23 +0800 Subject: [PATCH 038/274] feat(focus): enable netdata dashboard --- spec/focus/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/focus/default.nix b/spec/focus/default.nix index 1ad5e877..2d54633a 100644 --- a/spec/focus/default.nix +++ b/spec/focus/default.nix @@ -14,6 +14,10 @@ boot.lanzaboote = true; boot.memtest = 4; acme.enable = true; + netdata.enable = true; + netdata.host = "sf.514fpv.io"; + netdata.addSSL = true; + netdata.useACMEHost = "sf.514fpv.io"; }; services.udev.extraRules = '' From 902af299433b7f8fcd8f7de37ff64642950e6348 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 18 Feb 2024 18:41:27 +0800 Subject: [PATCH 039/274] refactor(eientei): move hass nginx configuration --- spec/eientei/hass.nix | 14 +++++++++++++- spec/eientei/nginx.nix | 12 ------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/spec/eientei/hass.nix b/spec/eientei/hass.nix index cbad0c79..210d6755 100644 --- a/spec/eientei/hass.nix +++ b/spec/eientei/hass.nix @@ -19,7 +19,19 @@ ]; }; - nixpkgs.config.permittedInsecurePackages = [ "openssl-1.1.1w" ]; + services.nginx.virtualHosts."home.514fpv.io" = { + useACMEHost = ".514fpv.io"; + addSSL = true; + extraConfig = '' + proxy_buffering off; + ''; + locations."/" = { + proxyPass = "http://127.0.0.1:8123"; + proxyWebsockets = true; + }; + }; global.fs.zfs.mountpoints."/nix/persist/service/hass" = "service/hass"; + + nixpkgs.config.permittedInsecurePackages = [ "openssl-1.1.1w" ]; } diff --git a/spec/eientei/nginx.nix b/spec/eientei/nginx.nix index facdc9ba..a83b542e 100644 --- a/spec/eientei/nginx.nix +++ b/spec/eientei/nginx.nix @@ -17,18 +17,6 @@ useACMEHost = ".514fpv.io"; extraConfig = "return 444;"; }; - - "home.514fpv.io" = { - useACMEHost = ".514fpv.io"; - addSSL = true; - extraConfig = '' - proxy_buffering off; - ''; - locations."/" = { - proxyPass = "http://127.0.0.1:8123"; - proxyWebsockets = true; - }; - }; }; }; From 42193845a032dcd11f3958c4e07d7aa73f4ba1f7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 18 Feb 2024 19:08:27 +0800 Subject: [PATCH 040/274] feat(eientei): add jellyfin --- spec/eientei/jellyfin.nix | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 spec/eientei/jellyfin.nix diff --git a/spec/eientei/jellyfin.nix b/spec/eientei/jellyfin.nix new file mode 100644 index 00000000..75003a31 --- /dev/null +++ b/spec/eientei/jellyfin.nix @@ -0,0 +1,33 @@ +{ pkgs +, config +, ...}: { + services.jellyfin = { + enable = true; + openFirewall = true; + dataDir = "/nix/persist/service/jellyfin"; + }; + + users.users.jellyfin.uid = 282; + users.groups.jellyfin.gid = 282; + + services.nginx.virtualHosts."jellyfin.514fpv.io" = { + useACMEHost = ".514fpv.io"; + addSSL = true; + locations = { + "= /".return = "302 https://jellyfin.514fpv.io:2096/web/"; + "/" = { + proxyPass = "http://127.0.0.1:8096"; + extraConfig = '' + proxy_buffering off; + ''; + }; + "= /web/".proxyPass = "http://127.0.0.1:8096/web/index.html"; + "/socket" = { + proxyPass = "http://127.0.0.1:8096"; + proxyWebsockets = true; + }; + }; + }; + + global.fs.zfs.mountpoints."/nix/persist/service/jellyfin" = "service/jellyfin"; +} From 15b0695e830c795218f535f603863943ffa250f2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 18 Feb 2024 21:48:47 +0800 Subject: [PATCH 041/274] feat(btop): add btop and catppuccin colours --- home/btop/home.nix | 101 ++++++++++++++++++++++++++++++++++++++++++++ home/btop/nixos.nix | 17 ++++++++ 2 files changed, 118 insertions(+) create mode 100644 home/btop/home.nix create mode 100644 home/btop/nixos.nix diff --git a/home/btop/home.nix b/home/btop/home.nix new file mode 100644 index 00000000..ade22460 --- /dev/null +++ b/home/btop/home.nix @@ -0,0 +1,101 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.btop; +in mkIf cfg.enable { + programs.btop = { + enable = true; + settings = { + color_theme = "catppuccin"; + theme_background = false; + }; + }; + + home.file."${config.xdg.configHome}/btop/themes/catppuccin.theme".text = with (import ../gui/catppuccin/palette.nix) + .${config.passthrough.catppuccin.palette}; '' + # Main background, empty for terminal default, need to be empty if you want transparent background + theme[main_bg]="${base}" + + # Main text color + theme[main_fg]="${text}" + + # Title color for boxes + theme[title]="${text}" + + # Highlight color for keyboard shortcuts + theme[hi_fg]="${blue}" + + # Background color of selected item in processes box + theme[selected_bg]="${surface1}" + + # Foreground color of selected item in processes box + theme[selected_fg]="${blue}" + + # Color of inactive/disabled text + theme[inactive_fg]="${overlay1}" + + # Color of text appearing on top of graphs, i.e uptime and current network graph scaling + theme[graph_text]="${rosewater}" + + # Background color of the percentage meters + theme[meter_bg]="${surface1}" + + # Misc colors for processes box including mini cpu graphs, details memory graph and details status text + theme[proc_misc]="${rosewater}" + + # CPU, Memory, Network, Proc box outline colors + theme[cpu_box]="${mauve}" #Mauve + theme[mem_box]="${green}" #Green + theme[net_box]="${maroon}" #Maroon + theme[proc_box]="${blue}" #Blue + + # Box divider line and small boxes line color + theme[div_line]="${overlay0}" + + # Temperature graph color (Green -> Yellow -> Red) + theme[temp_start]="${green}" + theme[temp_mid]="${yellow}" + theme[temp_end]="${red}" + + # CPU graph colors (Teal -> Lavender) + theme[cpu_start]="${teal}" + theme[cpu_mid]="${sapphire}" + theme[cpu_end]="${lavender}" + + # Mem/Disk free meter (Mauve -> Lavender -> Blue) + theme[free_start]="${mauve}" + theme[free_mid]="${lavender}" + theme[free_end]="${blue}" + + # Mem/Disk cached meter (Sapphire -> Lavender) + theme[cached_start]="${sapphire}" + theme[cached_mid]="${blue}" + theme[cached_end]="${lavender}" + + # Mem/Disk available meter (Peach -> Red) + theme[available_start]="${peach}" + theme[available_mid]="${maroon}" + theme[available_end]="${red}" + + # Mem/Disk used meter (Green -> Sky) + theme[used_start]="${green}" + theme[used_mid]="${teal}" + theme[used_end]="${sky}" + + # Download graph colors (Peach -> Red) + theme[download_start]="${peach}" + theme[download_mid]="${maroon}" + theme[download_end]="${red}" + + # Upload graph colors (Green -> Sky) + theme[upload_start]="${green}" + theme[upload_mid]="${teal}" + theme[upload_end]="${sky}" + + # Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) + theme[process_start]="${sapphire}" + theme[process_mid]="${lavender}" + theme[process_end]="${mauve}" + ''; +} diff --git a/home/btop/nixos.nix b/home/btop/nixos.nix new file mode 100644 index 00000000..3379a317 --- /dev/null +++ b/home/btop/nixos.nix @@ -0,0 +1,17 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.home.btop; +in { + options.home.btop = { + enable = mkEnableOption "btop" // { default = !config.home.util.minimal; }; + }; + + config = { + users.homeModules = [ + # this module passes gyroflow configuration to home-manager + { passthrough.btop = cfg; } + ]; + }; +} From 4d54568c62979ab5f064dcfd7ebc415a346cccf6 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 19 Feb 2024 12:36:44 +0800 Subject: [PATCH 042/274] feat(eientei): add jellyfin packages --- spec/eientei/jellyfin.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/eientei/jellyfin.nix b/spec/eientei/jellyfin.nix index 75003a31..9f3c3671 100644 --- a/spec/eientei/jellyfin.nix +++ b/spec/eientei/jellyfin.nix @@ -7,6 +7,8 @@ dataDir = "/nix/persist/service/jellyfin"; }; + environment.systemPackages = with pkgs; [ jellyfin jellyfin-web jellyfin-ffmpeg ]; + users.users.jellyfin.uid = 282; users.groups.jellyfin.gid = 282; From 93277c7c2b041eb7f81aa9dafbd47105b0eb7b16 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 19 Feb 2024 12:55:23 +0800 Subject: [PATCH 043/274] fix(gpu): add checks for session-specific options --- global/gpu/default.nix | 13 ++++++++----- global/gpu/greetd.nix | 3 ++- global/gpu/plymouth.nix | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/global/gpu/default.nix b/global/gpu/default.nix index 24c84b9e..1980ad8d 100644 --- a/global/gpu/default.nix +++ b/global/gpu/default.nix @@ -46,11 +46,14 @@ in { optional (cfg.type == "nvidia") vulkan-validation-layers; }; - services.xserver.videoDrivers = - optional nvidia "nvidia" ++ - optional (cfg.type == "amdgpu") "amdgpu"; - # inhibits default display manager - services.xserver.displayManager.startx.enable = mkDefault true; + services.xserver = mkIf cfg.session { + videoDrivers = + optional nvidia "nvidia" ++ + optional (cfg.type == "amdgpu") "amdgpu"; + # inhibits default display manager + + displayManager.startx.enable = mkDefault true; + }; hardware.nvidia = mkIf nvidia { modesetting.enable = true; diff --git a/global/gpu/greetd.nix b/global/gpu/greetd.nix index 17dc4e9e..d31f6c5c 100644 --- a/global/gpu/greetd.nix +++ b/global/gpu/greetd.nix @@ -3,7 +3,8 @@ , config , ... }: with lib; let cfg = config.global.gpu; -in mkIf (cfg.enable && cfg.session) { + gui = with cfg; enable && session; +in mkIf gui { programs.regreet = { enable = mkDefault true; cageArgs = [ "-s" "-d" "-m" "last" ]; diff --git a/global/gpu/plymouth.nix b/global/gpu/plymouth.nix index 2d7f7404..0705fd8a 100644 --- a/global/gpu/plymouth.nix +++ b/global/gpu/plymouth.nix @@ -3,7 +3,8 @@ , config , ... }: with lib; let cfg = config.global.gpu; -in mkIf cfg.enable { + gui = with cfg; enable && session; +in mkIf gui { boot = { loader.timeout = mkDefault 0; consoleLogLevel = 0; From 5262080b2b05560f06112cac347192ff925f39b1 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 19 Feb 2024 12:55:37 +0800 Subject: [PATCH 044/274] feat(eientei): enable gpu drivers --- spec/eientei/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/eientei/default.nix b/spec/eientei/default.nix index 8bdd5e56..f33d3c8a 100644 --- a/spec/eientei/default.nix +++ b/spec/eientei/default.nix @@ -14,6 +14,9 @@ fs.cryptsetup.enable = true; fs.cryptsetup.allowDiscards = false; fs.cryptsetup.uuids.secret = "c33c9b18-a280-42d7-8740-3f8d3f60dc43"; + gpu.enable = true; + gpu.type = "intel"; + gpu.session = false; boot.lanzaboote = true; boot.memtest = 4; acme.enable = true; From 474b8433ead40e24c7de0a8e51512944f3c8c791 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 19 Feb 2024 13:58:55 +0800 Subject: [PATCH 045/274] fix(gui): improve catppuccin terminal visibility --- home/gui/catppuccin/home.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix index b3bd6afd..5d6a587a 100644 --- a/home/gui/catppuccin/home.nix +++ b/home/gui/catppuccin/home.nix @@ -120,7 +120,7 @@ in mkIf cfg.enable { c = substring 1 7; in { foreground = c text; background = c base; - regular0 = c subtext1; regular1 = c red; + regular0 = c overlay2; regular1 = c red; regular2 = c green; regular3 = c yellow; regular4 = c blue; regular5 = c pink; regular6 = c teal; regular7 = c surface2; From 4cd9b0c535c061850c4f930053cff934499dd05d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 19 Feb 2024 15:19:11 +0800 Subject: [PATCH 046/274] fix(fs): remove replication compress flag --- global/fs/zfs/replication.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/global/fs/zfs/replication.nix b/global/fs/zfs/replication.nix index 9022d7d2..c8f58b44 100644 --- a/global/fs/zfs/replication.nix +++ b/global/fs/zfs/replication.nix @@ -10,7 +10,6 @@ in mkIf cfg.enable { sshKey = mkDefault "/var/lib/syncoid/.ssh/id_ed25519"; commonArgs = [ "--recursive" - "--compress=lz4" "--mbuffer-size=128M" ]; localSourceAllow = mkOptionDefault [ "mount" ]; From bef7d89542f8d0c1538337455612f127615239d6 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 19 Feb 2024 15:19:22 +0800 Subject: [PATCH 047/274] fix(eientei): change replication user --- spec/eientei/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/eientei/default.nix b/spec/eientei/default.nix index f33d3c8a..a5d67f3f 100644 --- a/spec/eientei/default.nix +++ b/spec/eientei/default.nix @@ -10,7 +10,7 @@ fs.zfs.split.store = "d9202e56-a14f-4342-acdb-dbae33d680fc"; fs.zfs.split.secret = "1404c4f1-b890-4cf0-ab8a-26bd81bd2254"; fs.zfs.replication.enable = true; - fs.zfs.replication.remote = "koishi@archive:archive/backup/koishi/eientei"; + fs.zfs.replication.remote = "eientei@archive:archive/backup/koishi/eientei"; fs.cryptsetup.enable = true; fs.cryptsetup.allowDiscards = false; fs.cryptsetup.uuids.secret = "c33c9b18-a280-42d7-8740-3f8d3f60dc43"; From a6fb91aa4c9a05ec1022c096ba2117a5b376b026 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 21 Feb 2024 21:53:08 +0800 Subject: [PATCH 048/274] fix: add nixos module imports --- package/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package/default.nix b/package/default.nix index 38b64d27..3f21f9d6 100644 --- a/package/default.nix +++ b/package/default.nix @@ -10,4 +10,10 @@ else { }); }) (builtins.attrNames (builtins.readDir ./.))) ) ]; + + imports = lib.pipe ./. [ + builtins.readDir + (lib.filterAttrs (n: ty: ty == "directory" && builtins.pathExists ./${n}/nixos.nix)) + (lib.mapAttrsToList (n: _: ./${n}/nixos.nix)) + ]; } From 54d757354157541bfc60988dc615ea49015fc284 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 21 Feb 2024 23:25:06 +0800 Subject: [PATCH 049/274] feat(tubesync): add tubesync application and module --- package/tubesync/database-local-socket.patch | 27 +++ package/tubesync/default.nix | 122 +++++++++++++ package/tubesync/gunicorn-env.patch | 19 ++ package/tubesync/nixos.nix | 172 +++++++++++++++++++ package/tubesync/state-dir-env.patch | 16 ++ 5 files changed, 356 insertions(+) create mode 100644 package/tubesync/database-local-socket.patch create mode 100644 package/tubesync/default.nix create mode 100644 package/tubesync/gunicorn-env.patch create mode 100644 package/tubesync/nixos.nix create mode 100644 package/tubesync/state-dir-env.patch diff --git a/package/tubesync/database-local-socket.patch b/package/tubesync/database-local-socket.patch new file mode 100644 index 00000000..b422f3ed --- /dev/null +++ b/package/tubesync/database-local-socket.patch @@ -0,0 +1,27 @@ +diff --git a/tubesync/tubesync/local_settings.py.container b/tubesync/tubesync/local_settings.py.container +index a7a07ab..7564138 100644 +--- a/tubesync/tubesync/local_settings.py.container ++++ b/tubesync/tubesync/local_settings.py.container +@@ -34,14 +34,20 @@ if database_connection_env: + database_dict = parse_database_connection_string(database_connection_env) + + ++database_host = database_dict.get("HOST") ++if database_host == "localhost": ++ database_dict["HOST"] = None ++ database_dict["PASSWORD"] = None ++ ++ + if database_dict: + log.info(f'Using database connection: {database_dict["ENGINE"]}://' +- f'{database_dict["USER"]}:[hidden]@{database_dict["HOST"]}:' ++ f'{database_dict["USER"]}:[hidden]@{database_host}:' + f'{database_dict["PORT"]}/{database_dict["NAME"]}') + DATABASES = { + 'default': database_dict, + } +- DATABASE_CONNECTION_STR = (f'{database_dict["DRIVER"]} at "{database_dict["HOST"]}:' ++ DATABASE_CONNECTION_STR = (f'{database_dict["DRIVER"]} at "{database_host}:' + f'{database_dict["PORT"]}" database ' + f'"{database_dict["NAME"]}"') + else: diff --git a/package/tubesync/default.nix b/package/tubesync/default.nix new file mode 100644 index 00000000..c038690d --- /dev/null +++ b/package/tubesync/default.nix @@ -0,0 +1,122 @@ +{ lib +, stdenvNoCC +, ffmpeg +, callPackage +, fetchFromGitHub +, fetchPypi +, makeWrapper +, python3Packages }: with python3Packages; let + mkPypi = pname: version: src: format: buildPythonPackage { + inherit pname version src format; + doCheck = false; + nativeBuildInputs = [ setuptools ]; + }; + + mkPypi' = pname: version: hash: format: mkPypi pname version + (fetchPypi { + inherit pname version hash; + }) format; + + mkPypi'' = pname: version: hash: mkPypi' pname version hash + "setuptools"; + + django-compat = mkPypi'' "django-compat" "1.0.15" "sha256-OsmjvtxWuTZdnrJBvFFX0MGTdpv5lfmnjcG8JOfCMxs="; + django-appconf = mkPypi'' "django-appconf" "1.0.6" "sha256-z+h+qCfE7gS5pw+rkLhtcEywLymB+J2oQjyw+r+I778="; + django-basicauth = mkPypi'' "django-basicauth" "0.5.3" "sha256-FenjZvaY9TxxseeU2v6gYPmQoqxVa65rczDdJTJKCRw="; + django-sass-processor = mkPypi'' "django-sass-processor" "1.4" "sha256-sX850H06dRCuxCXBkZN+IwUC3ut8pr9pUKGt+LS3wcM="; + django-background-tasks = mkPypi'' "django-background-tasks" "1.2.5" "sha256-4bGejUlaJ2ydZMWh/4tBEy910vWORb5xt4ZQ2tWa+d4="; + + django-compressor = let + pname = "django-compressor"; + version = "4.4"; + in mkPypi pname version (fetchFromGitHub { + owner = pname; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-c9uS5Z077b23Aj8jV30XNsshbEfrLRX3ozXasitQ6UQ="; + }) "setuptools"; + + app = buildPythonApplication rec { + pname = "tubesync"; + version = "0.13.3"; + format = "other"; + + src = fetchFromGitHub { + name = "${pname}-src"; + owner = "meeb"; + repo = pname; + rev = "v${version}"; + hash = "sha256-33DDbECEn/3vrQ0qvxoz5OZ/y8bR6BZ2cYUtPsA7YYc="; + }; + + patches = [ + ./gunicorn-env.patch + ./state-dir-env.patch + ./database-local-socket.patch + ]; + + propagatedBuildInputs = [ + yt-dlp requests + httptools pillow + gunicorn whitenoise + psycopg2 mysqlclient + redis hiredis + libsass six + ] ++ [ + django_3 + django-compat + django-appconf + django-compressor + django-basicauth + django-sass-processor + django-background-tasks + ]; + + buildPhase = '' + mv "tubesync/tubesync/local_settings.py.container" "tubesync/tubesync/local_settings.py" + rm "tubesync/tubesync/local_settings.py.example" + rm "tubesync/tubesync/local_settings.py.container.orig" + + python3 tubesync/manage.py compilescss + python3 tubesync/manage.py collectstatic --no-input + ''; + + installPhase = '' + mkdir -p "$out" + cp -r "tubesync" "$out/app" + + FFMPEG_VERSION=$(${ffmpeg}/bin/ffmpeg -version | head -n 1 | awk '{ print $3 }') + echo "ffmpeg_version = '$FFMPEG_VERSION'" >> "$out/app/common/third_party_versions.py" + + mv "$out/app/static" "$out/static" + ln -s "/tmp/tubesync/static" "$out/app/static" + ''; + }; +in stdenvNoCC.mkDerivation { + pname = "${app.pname}-wrapped"; + inherit (app) version; + + nativeBuildInputs = [ makeWrapper ]; + unpackPhase = "true"; + installPhase = '' + mkdir -p "$out/bin" + + makeWrapper "${python}/bin/python3" "$out/bin/tubesync-worker" \ + --chdir ${app}/app --add-flags \ + "${app}/app/manage.py process_tasks" \ + --set PATH ${lib.makeBinPath [ ffmpeg ]} + + makeWrapper "${gunicorn}/bin/gunicorn" "$out/bin/tubesync-gunicorn" \ + --chdir ${app}/app --add-flags \ + "-c ${app}/app/tubesync/gunicorn.py --capture-output tubesync.wsgi:application" + + makeWrapper "${python}/bin/python3" "$out/bin/tubesync-migrate" \ + --chdir "${app}/app" --add-flags \ + "${app}/app/manage.py migrate" + ''; + + passthru = { + inherit app; + pythonPath = makePythonPath app.propagatedBuildInputs; + }; +} diff --git a/package/tubesync/gunicorn-env.patch b/package/tubesync/gunicorn-env.patch new file mode 100644 index 00000000..d1ee0965 --- /dev/null +++ b/package/tubesync/gunicorn-env.patch @@ -0,0 +1,19 @@ +diff --git a/tubesync/tubesync/gunicorn.py b/tubesync/tubesync/gunicorn.py +index d59c138..341af25 100644 +--- a/tubesync/tubesync/gunicorn.py ++++ b/tubesync/tubesync/gunicorn.py +@@ -23,11 +23,10 @@ def get_bind(): + + workers = get_num_workers() + timeout = 30 +-chdir = '/app' + daemon = False +-pidfile = '/run/app/gunicorn.pid' +-user = 'app' +-group = 'app' ++pidfile = os.getenv('GUNICORN_PID_FILE', '/var/run/tubesync/gunicorn.pid') ++user = os.getenv('GUNICORN_USER', 'tubesync') ++group = os.getenv('GUNICORN_GROUP', 'tubesync') + loglevel = 'info' + errorlog = '-' + accesslog = '/dev/null' # Access logs are printed to stdout from nginx diff --git a/package/tubesync/nixos.nix b/package/tubesync/nixos.nix new file mode 100644 index 00000000..efa6cbf5 --- /dev/null +++ b/package/tubesync/nixos.nix @@ -0,0 +1,172 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.services.tubesync; +in { + options.services.tubesync = { + enable = mkEnableOption "tubesync stack"; + debug = mkEnableOption "debug logging"; + package = mkOption { + type = with types; package; + default = pkgs.tubesync; + description = "tubesync launcher package"; + }; + + user = mkOption { + type = with types; str; + default = "tubesync"; + description = "user under which tubesync runs"; + }; + group = mkOption { + type = with types; str; + default = "tubesync"; + description = "group under which tubesync runs"; + }; + + listen = { + host = mkOption { + type = with types; str; + default = "127.0.0.1"; + description = "host to listen on"; + }; + port = mkOption { + type = with types; port; + default = 8080; + description = "port to listen on"; + }; + }; + + stateDir = mkOption { + type = with types; str; + default = "/var/lib/tubesync"; + description = "path to tubesync state storage directory"; + }; + + dataDir = mkOption { + type = with types; str; + default = "${cfg.stateDir}/downloads"; + description = "path to tubesync video downloads"; + }; + + database = mkOption { + type = with types; str; + default = "postgresql://tubesync:@localhost:5432/tubesync"; + description = "database connection string"; + }; + }; + + config = mkIf cfg.enable { + systemd.services = let + env = { + PYTHONPATH = cfg.package.pythonPath; + GUNICORN_PID_FILE = "${cfg.stateDir}/run/gunicorn.pid"; + GUNICORN_USER = cfg.user; + GUNICORN_GROUP = cfg.group; + DATABASE_CONNECTION = cfg.database; + CONFIG_BASE_DIR = cfg.stateDir; + DOWNLOADS_BASE_DIR = cfg.dataDir; + TUBESYNC_DEBUG = mkIf cfg.debug "True"; + + REDIS_CONNECTION = "redis+socket://" + + "${cfg.stateDir}/run/redis.sock"; + }; + + base = description: { + description = "tubesync: ${description}"; + wantedBy = [ "multi-user.target" ]; + environment = env; + path = [ cfg.package ]; + serviceConfig = { + WorkingDirectory = cfg.stateDir; + User = cfg.user; + Group = cfg.group; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateTmp = true; + PrivateDevices = true; + PrivateUsers = false; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + ProcSubset = "all"; + ProtectSystem = "strict"; + RemoveIPC = true; + ReadWritePaths = with cfg; [ stateDir dataDir ]; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_NETLINK" + "AF_UNIX" + ]; + SystemCallArchitectures = "native"; + SystemCallFilter = [ + "@system-service" + "~@privileged" + "@chown" + ]; + UMask = "0077"; + }; + }; + + base' = description: (base description) // { + after = [ "tubesync.service" ]; + partOf = [ "tubesync.service" ]; + }; + in { + tubesync = recursiveUpdate (base "gunicorn") ({ + after = [ "network.target" ]; + serviceConfig = { + PIDFile = env.GUNICORN_PID_FILE; + ExecStartPre = pkgs.writeShellScript "tubesync-setup" '' + set -xe + tubesync-migrate + + mkdir -p "/tmp/tubesync" + cp -r "${cfg.package.app}/static/." "/tmp/tubesync/static" + chmod +w -R "/tmp/tubesync/static" + ''; + ExecStart = "${cfg.package}/bin/tubesync-gunicorn"; + ExecReload = "/usr/bin/env kill -s HUP $MAINPID"; + ExecStop = "/usr/bin/env kill -s TERM $MAINPID"; + ExecStopPost = pkgs.writeShellScript "tubesync-cleanup" '' + rm -f "$GUNICORN_PID_FILE" + rm -rf "/tmp/tubesync" + ''; + }; + }); + + tubesync-worker = recursiveUpdate (base' "worker") ({ + serviceConfig.ExecStart = "${cfg.package}/bin/tubesync-worker"; + }); + }; + + services.redis.servers.tubesync-celery = { + enable = true; + inherit (cfg) user; + unixSocket = "${cfg.stateDir}/run/redis.sock"; + save = [ ]; + }; + + users.users = mkIf (cfg.user == "tubesync") { + tubesync = { + description = "tubesync service account"; + group = cfg.group; + uid = config.ids.uids.tubesync; + }; + }; + + users.groups = mkIf (cfg.group == "tubesync") { + tubesync.gid = config.ids.gids.tubesync; + }; + + ids.uids.tubesync = 101; + ids.gids.tubesync = 101; + }; +} diff --git a/package/tubesync/state-dir-env.patch b/package/tubesync/state-dir-env.patch new file mode 100644 index 00000000..f7bb1d2d --- /dev/null +++ b/package/tubesync/state-dir-env.patch @@ -0,0 +1,16 @@ +diff --git a/tubesync/tubesync/local_settings.py.container b/tubesync/tubesync/local_settings.py.container +index a7a07ab..9207c7f 100644 +--- a/tubesync/tubesync/local_settings.py.container ++++ b/tubesync/tubesync/local_settings.py.container +@@ -6,9 +6,8 @@ from common.utils import parse_database_connection_string + + + BASE_DIR = Path(__file__).resolve().parent.parent +-ROOT_DIR = Path('/') +-CONFIG_BASE_DIR = ROOT_DIR / 'config' +-DOWNLOADS_BASE_DIR = ROOT_DIR / 'downloads' ++CONFIG_BASE_DIR = Path(os.getenv('CONFIG_BASE_DIR', "/var/lib/tubesync")) ++DOWNLOADS_BASE_DIR = Path(os.getenv('DOWNLOADS_BASE_DIR', f"{CONFIG_BASE_DIR}/downloads")) + DJANGO_URL_PREFIX = os.getenv('DJANGO_URL_PREFIX', None) + STATIC_URL = str(os.getenv('DJANGO_STATIC_URL', '/static/')) + if DJANGO_URL_PREFIX and STATIC_URL: From 49ba083745e6a450626b20ba0a090e685d3cb22a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 21 Feb 2024 23:36:27 +0800 Subject: [PATCH 050/274] fix(tubesync): create run directory pre-startup --- package/tubesync/nixos.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/package/tubesync/nixos.nix b/package/tubesync/nixos.nix index efa6cbf5..3745e71f 100644 --- a/package/tubesync/nixos.nix +++ b/package/tubesync/nixos.nix @@ -127,6 +127,7 @@ in { ExecStartPre = pkgs.writeShellScript "tubesync-setup" '' set -xe tubesync-migrate + mkdir -p "${cfg.stateDir}/run" mkdir -p "/tmp/tubesync" cp -r "${cfg.package.app}/static/." "/tmp/tubesync/static" From 30c75a44a06811a997f067a235788e22e4183913 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 22 Feb 2024 00:01:25 +0800 Subject: [PATCH 051/274] fix(tubesync): allow redis access to run directory --- package/tubesync/nixos.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package/tubesync/nixos.nix b/package/tubesync/nixos.nix index 3745e71f..0d62e52d 100644 --- a/package/tubesync/nixos.nix +++ b/package/tubesync/nixos.nix @@ -146,6 +146,9 @@ in { tubesync-worker = recursiveUpdate (base' "worker") ({ serviceConfig.ExecStart = "${cfg.package}/bin/tubesync-worker"; }); + + # allow binding to unix socket + redis-tubesync-celery.serviceConfig.ReadWritePaths = [ "${cfg.stateDir}/run" ]; }; services.redis.servers.tubesync-celery = { From b8e9eb31b38325c37945689b30352e07d7dc9e76 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 22 Feb 2024 00:45:24 +0800 Subject: [PATCH 052/274] feat(eientei): enable tubesync --- spec/eientei/tubesync.nix | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 spec/eientei/tubesync.nix diff --git a/spec/eientei/tubesync.nix b/spec/eientei/tubesync.nix new file mode 100644 index 00000000..f67b7e49 --- /dev/null +++ b/spec/eientei/tubesync.nix @@ -0,0 +1,8 @@ +{ + services.tubesync = { + enable = true; + stateDir = "/nix/persist/service/tubesync"; + }; + + global.fs.zfs.mountpoints."/nix/persist/service/tubesync" = "service/tubesync"; +} From c4f8c093a293821d0304793e6a9a91981e66c2d7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 22 Feb 2024 00:45:35 +0800 Subject: [PATCH 053/274] fix(tubesync): remove umask --- package/tubesync/nixos.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/tubesync/nixos.nix b/package/tubesync/nixos.nix index 0d62e52d..e4552f4b 100644 --- a/package/tubesync/nixos.nix +++ b/package/tubesync/nixos.nix @@ -111,7 +111,7 @@ in { "~@privileged" "@chown" ]; - UMask = "0077"; + #UMask = "0077"; }; }; From 7295e836684e78c160fab59be1b56decdbef9048 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 22 Feb 2024 11:24:59 +0800 Subject: [PATCH 054/274] fix(tubesync): add worker option --- package/tubesync/nixos.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/package/tubesync/nixos.nix b/package/tubesync/nixos.nix index e4552f4b..53628cf2 100644 --- a/package/tubesync/nixos.nix +++ b/package/tubesync/nixos.nix @@ -13,6 +13,12 @@ in { description = "tubesync launcher package"; }; + workers = mkOption { + type = with types; int; + default = 1; + description = "maximum amount of concurrent workers"; + }; + user = mkOption { type = with types; str; default = "tubesync"; @@ -59,7 +65,6 @@ in { config = mkIf cfg.enable { systemd.services = let env = { - PYTHONPATH = cfg.package.pythonPath; GUNICORN_PID_FILE = "${cfg.stateDir}/run/gunicorn.pid"; GUNICORN_USER = cfg.user; GUNICORN_GROUP = cfg.group; @@ -67,7 +72,9 @@ in { CONFIG_BASE_DIR = cfg.stateDir; DOWNLOADS_BASE_DIR = cfg.dataDir; TUBESYNC_DEBUG = mkIf cfg.debug "True"; + TUBESYNC_WORKERS = toString cfg.workers; + PYTHONPATH = cfg.package.pythonPath; REDIS_CONNECTION = "redis+socket://" + "${cfg.stateDir}/run/redis.sock"; }; From fb4903f4a01967f714a806d0b3e0d18cbba95c86 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 23 Feb 2024 10:45:54 +0800 Subject: [PATCH 055/274] fix(tubesync): add tools called by yt-dlp to PATH --- package/tubesync/default.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/package/tubesync/default.nix b/package/tubesync/default.nix index c038690d..22cd3726 100644 --- a/package/tubesync/default.nix +++ b/package/tubesync/default.nix @@ -1,6 +1,8 @@ { lib , stdenvNoCC , ffmpeg +, rtmpdump +, atomicparsley , callPackage , fetchFromGitHub , fetchPypi @@ -98,17 +100,22 @@ in stdenvNoCC.mkDerivation { nativeBuildInputs = [ makeWrapper ]; unpackPhase = "true"; - installPhase = '' + installPhase = let + prefix = ''--prefix PATH : "${lib.makeBinPath [ + ffmpeg rtmpdump atomicparsley + ]}"''; + in '' mkdir -p "$out/bin" makeWrapper "${python}/bin/python3" "$out/bin/tubesync-worker" \ --chdir ${app}/app --add-flags \ "${app}/app/manage.py process_tasks" \ - --set PATH ${lib.makeBinPath [ ffmpeg ]} + ${prefix} makeWrapper "${gunicorn}/bin/gunicorn" "$out/bin/tubesync-gunicorn" \ --chdir ${app}/app --add-flags \ - "-c ${app}/app/tubesync/gunicorn.py --capture-output tubesync.wsgi:application" + "-c ${app}/app/tubesync/gunicorn.py --capture-output tubesync.wsgi:application" \ + ${prefix} makeWrapper "${python}/bin/python3" "$out/bin/tubesync-migrate" \ --chdir "${app}/app" --add-flags \ From f85bc4780a6c66cbba33d7f77545057e7d4b4f33 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 24 Feb 2024 15:08:45 +0800 Subject: [PATCH 056/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 34e66436..8ed0f889 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1708031129, - "narHash": "sha256-EH20hJfNnc1/ODdDVat9B7aKm0B95L3YtkIRwKLvQG8=", + "lastModified": 1708591310, + "narHash": "sha256-8mQGVs8JccWTnORgoLOTh9zvf6Np+x2JzhIc+LDcJ9s=", "owner": "nix-community", "repo": "home-manager", - "rev": "3d6791b3897b526c82920a2ab5f61d71985b3cf8", + "rev": "0e0e9669547e45ea6cca2de4044c1a384fd0fe55", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1708118438, - "narHash": "sha256-kk9/0nuVgA220FcqH/D2xaN6uGyHp/zoxPNUmPCMmEE=", + "lastModified": 1708655239, + "narHash": "sha256-ZrP/yACUvDB+zbqYJsln4iwotbH6CTZiTkANJ0AgDv4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5863c27340ba4de8f83e7e3c023b9599c3cb3c80", + "rev": "cbc4211f0afffe6dfd2478a62615dd5175a13f9a", "type": "github" }, "original": { From e93b65fff55f2dbad96ba94cf53e3f66c603d104 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 24 Feb 2024 15:35:03 +0800 Subject: [PATCH 057/274] fix: add test password for koishi in vmVariant --- home/profile.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/profile.nix b/home/profile.nix index ef8be539..d14f39c4 100644 --- a/home/profile.nix +++ b/home/profile.nix @@ -159,6 +159,12 @@ in { # enable passwordless sudo security.sudo.wheelNeedsPassword = false; + + # enable access in build-vm + virtualisation.vmVariant = { + users.users.koishi.password = "passwd"; + users.users.koishi.hashedPasswordFile = mkForce null; + }; }; # this is for home components that need to extend nixos From e138af419cd74709c507e2ae650db1c69b9ead62 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 24 Feb 2024 17:19:50 +0800 Subject: [PATCH 058/274] build(web): convert to bundlerEnv --- spec/web/site/Gemfile | 2 +- spec/web/site/Gemfile.lock | 65 +---- spec/web/site/default.nix | 57 +---- spec/web/site/gemset.nix | 495 +++++++++++++++++++++++++++++++++++++ spec/web/site/gemset.sh | 3 + 5 files changed, 520 insertions(+), 102 deletions(-) create mode 100644 spec/web/site/gemset.nix create mode 100755 spec/web/site/gemset.sh diff --git a/spec/web/site/Gemfile b/spec/web/site/Gemfile index d464b577..b6961f93 100644 --- a/spec/web/site/Gemfile +++ b/spec/web/site/Gemfile @@ -20,4 +20,4 @@ gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin] # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem # do not have a Java counterpart. -gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby] +gem "http_parser.rb", "~> 0.6.0"#, :platforms => [:jruby] diff --git a/spec/web/site/Gemfile.lock b/spec/web/site/Gemfile.lock index d44f5b11..fd1b90e6 100644 --- a/spec/web/site/Gemfile.lock +++ b/spec/web/site/Gemfile.lock @@ -13,12 +13,7 @@ GEM eventmachine (1.2.7) ffi (1.16.3) forwardable-extended (2.6.0) - google-protobuf (3.25.2) - google-protobuf (3.25.2-aarch64-linux) - google-protobuf (3.25.2-arm64-darwin) - google-protobuf (3.25.2-x86-linux) - google-protobuf (3.25.2-x86_64-darwin) - google-protobuf (3.25.2-x86_64-linux) + google-protobuf (3.25.3) html-proofer (4.4.3) addressable (~> 2.3) mercenary (~> 0.3) @@ -28,7 +23,7 @@ GEM typhoeus (~> 1.3) yell (~> 2.0) zeitwerk (~> 2.5) - http_parser.rb (0.8.0) + http_parser.rb (0.6.0) i18n (1.14.1) concurrent-ruby (~> 1.0) jekyll (4.3.3) @@ -60,7 +55,7 @@ GEM jekyll (>= 3.8, < 5.0) jekyll-sitemap (1.4.0) jekyll (>= 3.7, < 5.0) - jekyll-theme-chirpy (6.4.2) + jekyll-theme-chirpy (6.5.0) jekyll (~> 4.3) jekyll-archives (~> 2.2) jekyll-include-cache (~> 0.2) @@ -79,17 +74,9 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) - nokogiri (1.16.0-aarch64-linux) - racc (~> 1.4) - nokogiri (1.16.0-arm-linux) - racc (~> 1.4) - nokogiri (1.16.0-arm64-darwin) - racc (~> 1.4) - nokogiri (1.16.0-x86-linux) - racc (~> 1.4) - nokogiri (1.16.0-x86_64-darwin) - racc (~> 1.4) - nokogiri (1.16.0-x86_64-linux) + mini_portile2 (2.8.5) + nokogiri (1.16.2) + mini_portile2 (~> 2.8.2) racc (~> 1.4) parallel (1.24.0) pathutil (0.16.2) @@ -97,32 +84,16 @@ GEM public_suffix (5.0.4) racc (1.7.3) rainbow (3.1.1) + rake (13.1.0) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) rexml (3.2.6) rouge (4.2.0) safe_yaml (1.0.5) - sass-embedded (1.69.7-aarch64-linux-gnu) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-aarch64-linux-musl) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-arm-linux-gnueabihf) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-arm-linux-musleabihf) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-arm64-darwin) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-x86-linux-gnu) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-x86-linux-musl) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-x86_64-darwin) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-x86_64-linux-gnu) - google-protobuf (~> 3.25) - sass-embedded (1.69.7-x86_64-linux-musl) + sass-embedded (1.71.1) google-protobuf (~> 3.25) + rake (>= 13.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) typhoeus (1.4.1) @@ -130,22 +101,10 @@ GEM unicode-display_width (2.5.0) webrick (1.8.1) yell (2.2.2) - zeitwerk (2.6.12) + zeitwerk (2.6.13) PLATFORMS - aarch64-linux - aarch64-linux-gnu - aarch64-linux-musl - arm-linux - arm-linux-gnueabihf - arm-linux-musleabihf - arm64-darwin - x86-linux - x86-linux-gnu - x86-linux-musl - x86_64-darwin - x86_64-linux-gnu - x86_64-linux-musl + ruby DEPENDENCIES html-proofer (~> 4.4) @@ -156,4 +115,4 @@ DEPENDENCIES wdm (~> 0.1.1) BUNDLED WITH - 2.5.3 + 2.5.5 diff --git a/spec/web/site/default.nix b/spec/web/site/default.nix index 6dc201a9..63913a06 100644 --- a/spec/web/site/default.nix +++ b/spec/web/site/default.nix @@ -1,9 +1,7 @@ { lib , stdenvNoCC , ruby -, bundler -, libffi -, gcc +, bundlerEnv , writeShellScriptBin , fetchFromGitHub }: let name = "website"; @@ -17,58 +15,21 @@ hash = "sha256-Uxe7PMNwzKUN2b77QbjWLxEtOOLodPOyeMuUM1eKdlc="; }; - vendor = stdenvNoCC.mkDerivation { - pname = "${name}-vendor"; - inherit version; - src = ./.; - - nativeBuildInputs = [ bundler ]; - - buildPhase = '' - export HOME="$(mktemp -d)" - bundle config set --local path "$out" - bundler package --no-install - ''; - - installPhase = '' - cp Gemfile* $out - ''; - - outputHashAlgo = "sha256"; - outputHashMode = "recursive"; - outputHash = "sha256-TEpo7m4a257kAFxCCx51PRZBRF4Fk6ItX+6t4GEp6Zs="; - }; - - deps = stdenvNoCC.mkDerivation { - pname = "${name}-deps"; - inherit version; - src = vendor; - - buildInputs = [ ruby libffi gcc ]; - - nativeBuildInputs = [ bundler ]; - - buildPhase = '' - export HOME="$(mktemp -d)" - bundle config set --local path "$out" - mkdir -p "vendor" - mv ruby/*/cache "vendor/" - bundle install --local - ''; + gems = bundlerEnv { + name = "${name}-gems"; + inherit ruby; + gemfile = ./Gemfile; + lockfile = ./Gemfile.lock; + gemset = ./gemset.nix; }; in stdenvNoCC.mkDerivation { pname = name; inherit version; src = ./.; - - buildInputs = [ ruby libffi gcc ]; - - nativeBuildInputs = [ (writeShellScriptBin "git" "true") bundler ]; + buildInputs = [ gems ruby ]; + nativeBuildInputs = [ (writeShellScriptBin "git" "true") ]; configurePhase = '' - export HOME="$(mktemp -d)" - bundle config set --local path "${deps}" - cp -r ${assets}/. assets/lib/ ''; diff --git a/spec/web/site/gemset.nix b/spec/web/site/gemset.nix new file mode 100644 index 00000000..b526c889 --- /dev/null +++ b/spec/web/site/gemset.nix @@ -0,0 +1,495 @@ +{ + addressable = { + dependencies = ["public_suffix"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0irbdwkkjwzajq1ip6ba46q49sxnrl2cw7ddkdhsfhb6aprnm3vr"; + type = "gem"; + }; + version = "2.8.6"; + }; + colorator = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72"; + type = "gem"; + }; + version = "1.1.0"; + }; + concurrent-ruby = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qh1b14jwbbj242klkyz5fc7npd4j0mvndz62gajhvl1l3wd7zc2"; + type = "gem"; + }; + version = "1.2.3"; + }; + em-websocket = { + dependencies = ["eventmachine" "http_parser.rb"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1a66b0kjk6jx7pai9gc7i27zd0a128gy73nmas98gjz6wjyr4spm"; + type = "gem"; + }; + version = "0.5.3"; + }; + ethon = { + dependencies = ["ffi"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "17ix0mijpsy3y0c6ywrk5ibarmvqzjsirjyprpsy3hwax8fdm85v"; + type = "gem"; + }; + version = "0.16.0"; + }; + eventmachine = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0wh9aqb0skz80fhfn66lbpr4f86ya2z5rx6gm5xlfhd05bj1ch4r"; + type = "gem"; + }; + version = "1.2.7"; + }; + ffi = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd"; + type = "gem"; + }; + version = "1.16.3"; + }; + forwardable-extended = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v"; + type = "gem"; + }; + version = "2.6.0"; + }; + google-protobuf = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1mnxzcq8kmyfb9bkzqnp019d1hx1vprip3yzdkkha6b3qz5rgg9r"; + type = "gem"; + }; + version = "3.25.3"; + }; + html-proofer = { + dependencies = ["addressable" "mercenary" "nokogiri" "parallel" "rainbow" "typhoeus" "yell" "zeitwerk"]; + groups = ["test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00hhwzl5llvsasbj6gpgd1272xrqz8wlxzq7qm0xa4z3mk24013j"; + type = "gem"; + }; + version = "4.4.3"; + }; + "http_parser.rb" = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi"; + type = "gem"; + }; + version = "0.6.0"; + }; + i18n = { + dependencies = ["concurrent-ruby"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx"; + type = "gem"; + }; + version = "1.14.1"; + }; + jekyll = { + dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table" "webrick"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0638cvpmk3py1w2dxpav6l0c854y6l94b6gyc2aa16i7r897z64a"; + type = "gem"; + }; + version = "4.3.3"; + }; + jekyll-archives = { + dependencies = ["jekyll"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0c2rks7xf6ajp18h4f4wmmbqm5ljprv70bqcz2sabi17zncmz9n0"; + type = "gem"; + }; + version = "2.2.1"; + }; + jekyll-include-cache = { + dependencies = ["jekyll"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01d2l6qrmjc42664ns83cv36jbvalcxqbkmj5i22fakka7jvkm67"; + type = "gem"; + }; + version = "0.2.1"; + }; + jekyll-paginate = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8"; + type = "gem"; + }; + version = "1.1.0"; + }; + jekyll-redirect-from = { + dependencies = ["jekyll"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1nz6kd6qsa160lmjmls4zgx7fwcpp8ac07mpzy80z6zgd7jwldb6"; + type = "gem"; + }; + version = "0.16.0"; + }; + jekyll-sass-converter = { + dependencies = ["sass-embedded"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "00n9v19h0qgjijygfdkdh2gwpmdlz49nw1mqk6fnp43f317ngrz2"; + type = "gem"; + }; + version = "3.0.0"; + }; + jekyll-seo-tag = { + dependencies = ["jekyll"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0638mqhqynghnlnaz0xi1kvnv53wkggaq94flfzlxwandn8x2biz"; + type = "gem"; + }; + version = "2.8.0"; + }; + jekyll-sitemap = { + dependencies = ["jekyll"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0622rwsn5i0m5xcyzdn86l68wgydqwji03lqixdfm1f1xdfqrq0d"; + type = "gem"; + }; + version = "1.4.0"; + }; + jekyll-theme-chirpy = { + dependencies = ["jekyll" "jekyll-archives" "jekyll-include-cache" "jekyll-paginate" "jekyll-redirect-from" "jekyll-seo-tag" "jekyll-sitemap"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0xlrwyz68rfr820gm98gidc49vprb80im32s6ydli0q1mv1inmzq"; + type = "gem"; + }; + version = "6.5.0"; + }; + jekyll-watch = { + dependencies = ["listen"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1qd7hy1kl87fl7l0frw5qbn22x7ayfzlv9a5ca1m59g0ym1ysi5w"; + type = "gem"; + }; + version = "2.2.1"; + }; + kramdown = { + dependencies = ["rexml"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ic14hdcqxn821dvzki99zhmcy130yhv5fqfffkcf87asv5mnbmn"; + type = "gem"; + }; + version = "2.4.0"; + }; + kramdown-parser-gfm = { + dependencies = ["kramdown"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv"; + type = "gem"; + }; + version = "1.1.0"; + }; + liquid = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1czxv2i1gv3k7hxnrgfjb0z8khz74l4pmfwd70c7kr25l2qypksg"; + type = "gem"; + }; + version = "4.0.4"; + }; + listen = { + dependencies = ["rb-fsevent" "rb-inotify"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13rgkfar8pp31z1aamxf5y7cfq88wv6rxxcwy7cmm177qq508ycn"; + type = "gem"; + }; + version = "3.8.0"; + }; + mercenary = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj"; + type = "gem"; + }; + version = "0.4.0"; + }; + mini_portile2 = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1kl9c3kdchjabrihdqfmcplk3lq4cw1rr9f378y6q22qwy5dndvs"; + type = "gem"; + }; + version = "2.8.5"; + }; + nokogiri = { + dependencies = ["mini_portile2" "racc"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "173zavvxlwyi48lfskk48wcrdbkvjlhjhvy4jpcrfx72rpjjx4k8"; + type = "gem"; + }; + version = "1.16.2"; + }; + parallel = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "15wkxrg1sj3n1h2g8jcrn7gcapwcgxr659ypjf75z1ipkgxqxwsv"; + type = "gem"; + }; + version = "1.24.0"; + }; + pathutil = { + dependencies = ["forwardable-extended"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4"; + type = "gem"; + }; + version = "0.16.2"; + }; + public_suffix = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1bni4qjrsh2q49pnmmd6if4iv3ak36bd2cckrs6npl111n769k9m"; + type = "gem"; + }; + version = "5.0.4"; + }; + racc = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "01b9662zd2x9bp4rdjfid07h09zxj7kvn7f5fghbqhzc625ap1dp"; + type = "gem"; + }; + version = "1.7.3"; + }; + rainbow = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503"; + type = "gem"; + }; + version = "3.1.1"; + }; + rake = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ilr853hawi09626axx0mps4rkkmxcs54mapz9jnqvpnlwd3wsmy"; + type = "gem"; + }; + version = "13.1.0"; + }; + rb-fsevent = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1zmf31rnpm8553lqwibvv3kkx0v7majm1f341xbxc0bk5sbhp423"; + type = "gem"; + }; + version = "0.11.2"; + }; + rb-inotify = { + dependencies = ["ffi"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1jm76h8f8hji38z3ggf4bzi8vps6p7sagxn3ab57qc0xyga64005"; + type = "gem"; + }; + version = "0.10.1"; + }; + rexml = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0"; + type = "gem"; + }; + version = "3.2.6"; + }; + rouge = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1fkfa0iq3r9b0zzrxpxha17avmyzci3kidzmfbf6fd1279mndpb0"; + type = "gem"; + }; + version = "4.2.0"; + }; + safe_yaml = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0j7qv63p0vqcd838i2iy2f76c3dgwzkiz1d1xkg7n0pbnxj2vb56"; + type = "gem"; + }; + version = "1.0.5"; + }; + sass-embedded = { + dependencies = ["google-protobuf" "rake"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1ccqqkmicqs2nbawyknb17qfafwqq0k6jxibcm86vqd1jp185pxa"; + type = "gem"; + }; + version = "1.71.1"; + }; + terminal-table = { + dependencies = ["unicode-display_width"]; + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "14dfmfjppmng5hwj7c5ka6qdapawm3h6k9lhn8zj001ybypvclgr"; + type = "gem"; + }; + version = "3.0.2"; + }; + typhoeus = { + dependencies = ["ethon"]; + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "0z7gamf6s83wy0yqms3bi4srirn3fc0lc7n65lqanidxcj1xn5qw"; + type = "gem"; + }; + version = "1.4.1"; + }; + unicode-display_width = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky"; + type = "gem"; + }; + version = "2.5.0"; + }; + webrick = { + groups = ["default"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r"; + type = "gem"; + }; + version = "1.8.1"; + }; + yell = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1g16kcdhdfvczn7x81jiq6afg3bdxmb73skqjyjlkp5nqcy6y5hx"; + type = "gem"; + }; + version = "2.2.2"; + }; + zeitwerk = { + groups = ["default" "test"]; + platforms = []; + source = { + remotes = ["https://rubygems.org"]; + sha256 = "1m67qmsak3x8ixs8rb971azl3l7wapri65pmbf5z886h46q63f1d"; + type = "gem"; + }; + version = "2.6.13"; + }; +} diff --git a/spec/web/site/gemset.sh b/spec/web/site/gemset.sh new file mode 100755 index 00000000..bf061e7a --- /dev/null +++ b/spec/web/site/gemset.sh @@ -0,0 +1,3 @@ +#!/bin/sh +rm -f Gemfile.lock gemset.nix +BUNDLE_FORCE_RUBY_PLATFORM=true nix run nixpkgs#bundix --impure -- --lock From d4363a4be98b7b520ac16047325a35c9d488058a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 24 Feb 2024 22:09:39 +0800 Subject: [PATCH 059/274] feat(web): about: update link to server spec --- spec/web/site/_tabs/about.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/web/site/_tabs/about.md b/spec/web/site/_tabs/about.md index 2f30913e..e5c2bea5 100644 --- a/spec/web/site/_tabs/about.md +++ b/spec/web/site/_tabs/about.md @@ -4,7 +4,7 @@ order: 4 --- I fly multirotor aircraft, with a focus on cinematic and long range FPV cruising. -I also write software, and I self host [almost everything](https://src.514fpv.io:2096/koishi/nixos/src/branch/master/spec/library){:target="_blank"} I use online, including the [website](https://src.514fpv.io:2096/koishi/nixos/src/branch/master/spec/web/site){:target="_blank"} you're currently visiting. +I also write software, and I self host [almost everything](https://src.514fpv.io:2096/koishi/nixos/src/branch/master/spec/eientei){:target="_blank"} I use online, including the [website](https://src.514fpv.io:2096/koishi/nixos/src/branch/master/spec/web/site){:target="_blank"} you're currently visiting. If you find what I do interesting, feel free to drop by and say hi, I would really appreciate that. From bbf5a6a4f31a8424f017e8c1c27a84774cfb7c09 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 28 Feb 2024 08:57:47 +0800 Subject: [PATCH 060/274] fix(focus): increase fastcgi read timeout --- spec/focus/nextcloud.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/focus/nextcloud.nix b/spec/focus/nextcloud.nix index 45d011f3..91732de1 100644 --- a/spec/focus/nextcloud.nix +++ b/spec/focus/nextcloud.nix @@ -14,6 +14,7 @@ in { configureRedis = true; webfinger = true; maxUploadSize = "128G"; + fastcgiTimeout = 300; hostName = host; phpExtraExtensions = all: with all; [ bz2 ]; database.createLocally = true; From 557b169ed042f4f69608b06bd927ee8f502830cf Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 2 Mar 2024 18:20:40 +0800 Subject: [PATCH 061/274] chore(flake): bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 8ed0f889..3a760ef9 100644 --- a/flake.lock +++ b/flake.lock @@ -56,11 +56,11 @@ ] }, "locked": { - "lastModified": 1706830856, - "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", "type": "github" }, "original": { @@ -95,11 +95,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1709126324, + "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "d465f4819400de7c8d874d50b982301f28a84605", "type": "github" }, "original": { @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1708591310, - "narHash": "sha256-8mQGVs8JccWTnORgoLOTh9zvf6Np+x2JzhIc+LDcJ9s=", + "lastModified": 1709204054, + "narHash": "sha256-U1idK0JHs1XOfSI1APYuXi4AEADf+B+ZU4Wifc0pBHk=", "owner": "nix-community", "repo": "home-manager", - "rev": "0e0e9669547e45ea6cca2de4044c1a384fd0fe55", + "rev": "2f3367769a93b226c467551315e9e270c3f78b15", "type": "github" }, "original": { @@ -170,11 +170,11 @@ }, "impermanence": { "locked": { - "lastModified": 1706639736, - "narHash": "sha256-CaG4j9+UwBDfinxxvJMo6yOonSmSo0ZgnbD7aj2Put0=", + "lastModified": 1708968331, + "narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=", "owner": "nix-community", "repo": "impermanence", - "rev": "cd13c2917eaa68e4c49fea0ff9cada45440d7045", + "rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1708655239, - "narHash": "sha256-ZrP/yACUvDB+zbqYJsln4iwotbH6CTZiTkANJ0AgDv4=", + "lastModified": 1709237383, + "narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cbc4211f0afffe6dfd2478a62615dd5175a13f9a", + "rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8", "type": "github" }, "original": { From 11b24d43e795e2b4afab09e45f68bbb090b3cfc3 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 3 Mar 2024 15:04:33 +0800 Subject: [PATCH 062/274] feat(fs): add zfs replication custom ssh port --- global/fs/zfs/default.nix | 5 +++++ global/fs/zfs/replication.nix | 1 + 2 files changed, 6 insertions(+) diff --git a/global/fs/zfs/default.nix b/global/fs/zfs/default.nix index 70520af2..99e4f59c 100644 --- a/global/fs/zfs/default.nix +++ b/global/fs/zfs/default.nix @@ -50,6 +50,11 @@ in { type = with types; str; description = "remote host as replication destination"; }; + port = mkOption { + type = with types; port; + description = "ssh port of replication target"; + default = 22; + }; datasets = mkOption { type = with types; listOf str; default = [ "persist" "service" "storage" ]; diff --git a/global/fs/zfs/replication.nix b/global/fs/zfs/replication.nix index c8f58b44..f2edba41 100644 --- a/global/fs/zfs/replication.nix +++ b/global/fs/zfs/replication.nix @@ -11,6 +11,7 @@ in mkIf cfg.enable { commonArgs = [ "--recursive" "--mbuffer-size=128M" + "--sshport=${toString cfg.port}" ]; localSourceAllow = mkOptionDefault [ "mount" ]; From 81a9301000bdb40bec46a0a089e7874a0795bdd9 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 3 Mar 2024 15:04:49 +0800 Subject: [PATCH 063/274] feat(focus): enable zfs replication --- spec/focus/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/focus/default.nix b/spec/focus/default.nix index 2d54633a..1845261a 100644 --- a/spec/focus/default.nix +++ b/spec/focus/default.nix @@ -8,6 +8,9 @@ fs.zfs.split.enable = true; fs.zfs.split.store = "59b73292-8098-4774-b8b6-59c23130d405"; fs.zfs.split.secret = "f8983719-f9e7-42b2-b8f3-0f32f6b328ae"; + fs.zfs.replication.enable = true; + fs.zfs.replication.remote = "focus@edge.514fpv.io:archive/backup/koishi/focus"; + fs.zfs.replication.port = 8087; fs.cryptsetup.enable = true; fs.cryptsetup.allowDiscards = false; fs.cryptsetup.uuids.secret = "c2bc361e-6f9a-48fa-b698-ed3603a9664a"; From 0865074af4774a545aaecfdeaa7331034c03c7eb Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 3 Mar 2024 21:37:51 +0800 Subject: [PATCH 064/274] chore(flake): bump inputs --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 3a760ef9..6a63bde6 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1709204054, - "narHash": "sha256-U1idK0JHs1XOfSI1APYuXi4AEADf+B+ZU4Wifc0pBHk=", + "lastModified": 1709445365, + "narHash": "sha256-DVv6nd9FQBbMWbOmhq0KVqmlc3y3FMSYl49UXmMcO+0=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f3367769a93b226c467551315e9e270c3f78b15", + "rev": "4de84265d7ec7634a69ba75028696d74de9a44a7", "type": "github" }, "original": { From 2b2a06e98b854ef1c097747bde73dbeaea6c3441 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 4 Mar 2024 09:26:16 +0800 Subject: [PATCH 065/274] feat(photoview): package photoview --- package/photoview/default.nix | 63 +++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 package/photoview/default.nix diff --git a/package/photoview/default.nix b/package/photoview/default.nix new file mode 100644 index 00000000..d4d8e4a4 --- /dev/null +++ b/package/photoview/default.nix @@ -0,0 +1,63 @@ +{ lib +, pkg-config +, libjpeg_turbo +, libheif +, lapack +, dlib +, blas +, ffmpeg +, exiftool +, darktable +, fetchFromGitHub +, buildGoModule +, buildNpmPackage +, makeWrapper }: buildGoModule rec { + pname = "photoview"; + version = "2.3.13"; + + source = fetchFromGitHub { + name = "${pname}-src"; + owner = pname; + repo = pname; + rev = "refs/tags/v${version}"; + hash = "sha256-O6k5nbiWTsuOi8YLX0rsZJ9dOIo5d6pdwjhFZrdwI0E="; + }; + + src = source + "/api"; + vendorHash = "sha256-0SWywy9YdPtgvxRhwKhKvspPmhbnibSuhvzhsjIQvZk="; + nativeBuildInputs = [ + pkg-config + makeWrapper + ]; + buildInputs = [ + libjpeg_turbo + libheif + lapack + dlib + blas + ]; + + ui = buildNpmPackage { + pname = "${pname}-ui"; + inherit version; + src = source + "/ui"; + npmDepsHash = "sha256-31CyjyNd85hNg4MXIWctoQ3YgorGqCMz+wDAu/K1lWo="; + }; + + postInstall = '' + mv "$out/bin/api" "$out/bin/${pname}" + mkdir -p "$out/lib/${pname}" + wrapProgram $out/bin/${pname} \ + --prefix PATH ":" "${lib.makeBinPath [ + ffmpeg + exiftool + darktable + ]}" \ + --set PHOTOVIEW_SERVE_UI 1 \ + --set PHOTOVIEW_UI_PATH "$out/lib/${pname}/ui" + + cp -r \ + "${ui}/lib/node_modules/photoview-ui/dist" \ + "$out/lib/${pname}/ui" + ''; +} From 18174df8feff44316f255adf0a7d99d6646ebd88 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 4 Mar 2024 12:07:20 +0800 Subject: [PATCH 066/274] fix(photoview): install model data, ui build info --- package/photoview/default.nix | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/package/photoview/default.nix b/package/photoview/default.nix index d4d8e4a4..40194a29 100644 --- a/package/photoview/default.nix +++ b/package/photoview/default.nix @@ -11,6 +11,7 @@ , fetchFromGitHub , buildGoModule , buildNpmPackage +, runCommandLocal , makeWrapper }: buildGoModule rec { pname = "photoview"; version = "2.3.13"; @@ -41,12 +42,19 @@ pname = "${pname}-ui"; inherit version; src = source + "/ui"; + + #REACT_APP_API_ENDPOINT = ""; + REACT_APP_BUILD_VERSION = version; + REACT_APP_BUILD_DATE = builtins.readFile (runCommandLocal "date" { } "date -uI > $out" ); + REACT_APP_BUILD_COMMIT_SHA = "nix"; + npmDepsHash = "sha256-31CyjyNd85hNg4MXIWctoQ3YgorGqCMz+wDAu/K1lWo="; }; postInstall = '' - mv "$out/bin/api" "$out/bin/${pname}" mkdir -p "$out/lib/${pname}" + + mv "$out/bin/api" "$out/bin/${pname}" wrapProgram $out/bin/${pname} \ --prefix PATH ":" "${lib.makeBinPath [ ffmpeg @@ -55,6 +63,9 @@ ]}" \ --set PHOTOVIEW_SERVE_UI 1 \ --set PHOTOVIEW_UI_PATH "$out/lib/${pname}/ui" + cp -r \ + "${src}/data/" \ + "$out/lib/${pname}/data/" cp -r \ "${ui}/lib/node_modules/photoview-ui/dist" \ From 8dbc49b8e82d705410932b423fb268dd78e03b64 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 4 Mar 2024 12:14:05 +0800 Subject: [PATCH 067/274] feat(photoview): add nixos module --- package/photoview/nixos.nix | 148 ++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 package/photoview/nixos.nix diff --git a/package/photoview/nixos.nix b/package/photoview/nixos.nix new file mode 100644 index 00000000..08c7d167 --- /dev/null +++ b/package/photoview/nixos.nix @@ -0,0 +1,148 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.services.photoview; +in { + options.services.photoview = { + enable = mkEnableOption "photoview server"; + + package = mkOption { + type = with types; package; + default = pkgs.photoview; + description = "photoview package"; + }; + + user = mkOption { + type = with types; str; + default = "photoview"; + description = "user under which photoview runs"; + }; + group = mkOption { + type = with types; str; + default = "photoview"; + description = "group under which photoview runs"; + }; + + listen = { + host = mkOption { + type = with types; str; + default = "127.0.0.1"; + description = "host to listen on"; + }; + port = mkOption { + type = with types; port; + default = 8000; + description = "port to listen on"; + }; + }; + + database = { + driver = mkOption { + type = with types; enum [ "sqlite" "mysql" "postgres" ]; + default = "sqlite"; + description = "database driver"; + }; + string = mkOption { + type = with types; str; + description = "database connection string"; + }; + }; + + stateDir = mkOption { + type = with types; str; + default = "/var/lib/photoview"; + description = "path to photoview state directory"; + }; + + cacheDir = mkOption { + type = with types; str; + default = "${cfg.stateDir}/media_cache"; + description = "path to photoview media cache"; + }; + + secrets = mkOption { + type = with types; nullOr str; + default = null; + description = "path to secrets environment file"; + example = '' + MAPBOX_TOKEN= + ''; + }; + }; + + config = mkIf cfg.enable { + systemd.services.photoview = { + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + description = "Photoview - Photo gallery for self-hosted personal servers"; + environment = with cfg; { + PHOTOVIEW_LISTEN_IP = listen.host; + PHOTOVIEW_LISTEN_PORT = toString listen.port; + PHOTOVIEW_MEDIA_CACHE = cacheDir; + PHOTOVIEW_DATABASE_DRIVER = database.driver; + "PHOTOVIEW_${toUpper database.driver}_URL" = database.string; + }; + serviceConfig = { + ExecStartPre = pkgs.writeShellScript "photoview-pre" '' + rm -f "${cfg.stateDir}/data" + ln -s "${cfg.package}/lib/photoview/data" "${cfg.stateDir}/data" + ''; + ExecStart = "${cfg.package}/bin/photoview"; + WorkingDirectory = cfg.stateDir; + User = cfg.user; + Group = cfg.group; + EnvironmentFile = mkIf (cfg.secrets != null) cfg.secrets; + + DevicePolicy = "closed"; + LockPersonality = true; + MemoryDenyWriteExecute = true; + NoNewPrivileges = true; + PrivateTmp = true; + PrivateUsers = true; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + ProcSubset = "all"; + ProtectSystem = "strict"; + RemoveIPC = true; + ReadWritePaths = [ cfg.stateDir ]; + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_NETLINK" + "AF_UNIX" + ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + SystemCallFilter = [ + "@system-service" + "~@privileged" + ]; + UMask = "0077"; + }; + }; + + users.users = mkIf (cfg.user == "photoview") { + photoview = { + description = "photoview service account"; + group = cfg.group; + uid = config.ids.uids.photoview; + }; + }; + + users.groups = mkIf (cfg.group == "photoview") { + photoview.gid = config.ids.gids.photoview; + }; + + ids.uids.photoview = 287; + ids.gids.photoview = 287; + }; +} From 10f6dc66b3b1c8aad40b0944747a7345facc66f4 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 4 Mar 2024 21:28:16 +0800 Subject: [PATCH 068/274] feat(shinkirou): initial configuration --- global/auth/pub/shinkirou.pub | 1 + spec/shinkirou/default.nix | 52 +++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 global/auth/pub/shinkirou.pub create mode 100644 spec/shinkirou/default.nix diff --git a/global/auth/pub/shinkirou.pub b/global/auth/pub/shinkirou.pub new file mode 100644 index 00000000..8da18c48 --- /dev/null +++ b/global/auth/pub/shinkirou.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDwV7Z+PDC8ARRj1LxUJlv59gJ3A84LCMMyMSqLtRtuQ koishi@shinkirou diff --git a/spec/shinkirou/default.nix b/spec/shinkirou/default.nix new file mode 100644 index 00000000..faf06ae7 --- /dev/null +++ b/spec/shinkirou/default.nix @@ -0,0 +1,52 @@ +{ pkgs +, ... }: { + global = { + id = "23c46cfc573f4f889af9ba5d4678c2ab"; + fs.esp.uuid = "6695-0740"; + fs.type = "zfs"; + boot.lanzaboote = true; + gpu.enable = true; + gpu.type = "prime"; + android.enable = true; + asusd.enable = true; + }; + + home = { + gyroflow.enable = true; + vscode.enable = true; + libreoffice.enable = true; + minecraft.enable = true; + steam.enable = true; + }; + + users.homeModules = [ { + wayland.windowManager.sway.config = { + input."1267:16857:ELAN9009:00_04F3:41D9".map_to_output = "DP-3"; + output = { + eDP-1.scale = "1.5"; + eDP-1.pos = "0 0"; + DP-3.scale = "2.25"; + DP-3.pos = "0 1066"; + }; + }; + } ]; + + powerManagement.enable = true; + powerManagement.cpuFreqGovernor = "performance"; + boot.kernelParams = [ "zfs.zfs_arc_max=34359738368" ]; + console.packages = [ pkgs.terminus_font ]; + console.font = "ter-v32n"; + console.earlySetup = true; + + hardware.nvidia.prime = { + amdgpuBusId = "PCI:9:0:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + + hardware.enableRedistributableFirmware = true; + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + hardware.cpu.amd.updateMicrocode = true; +} From 30001135a9174affb31157894f9a35e065ff4034 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 4 Mar 2024 21:31:34 +0800 Subject: [PATCH 069/274] feat(fs): switch default zfs kernel to lts --- global/fs/zfs/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/global/fs/zfs/default.nix b/global/fs/zfs/default.nix index 99e4f59c..37ca13ee 100644 --- a/global/fs/zfs/default.nix +++ b/global/fs/zfs/default.nix @@ -87,6 +87,7 @@ in { services.zfs.autoSnapshot.enable = true; services.zfs.autoScrub.enable = true; boot.zfs.devNodes = mkDefault "/dev/disk/by-partuuid"; - boot.kernelPackages = mkDefault config.boot.zfs.package.latestCompatibleLinuxPackages; + #boot.kernelPackages = mkDefault config.boot.zfs.package.latestCompatibleLinuxPackages; + global.kernel.lts = mkDefault true; }; } From 1bd9057a67e8d8f37f3987f2465830e8387cda8f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 5 Mar 2024 07:52:44 +0800 Subject: [PATCH 070/274] feat(chireiden): enable libreoffice --- spec/chireiden/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/chireiden/default.nix b/spec/chireiden/default.nix index c640e355..a1ea35b6 100644 --- a/spec/chireiden/default.nix +++ b/spec/chireiden/default.nix @@ -19,6 +19,7 @@ home = { vscode.enable = true; + libreoffice.enable = true; minecraft.enable = true; steam.enable = true; }; From df749a0cddc76016d3698aa6055da5d377126d26 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 5 Mar 2024 09:39:03 +0800 Subject: [PATCH 071/274] feat(eientei): enable photoview --- spec/eientei/photoview.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 spec/eientei/photoview.nix diff --git a/spec/eientei/photoview.nix b/spec/eientei/photoview.nix new file mode 100644 index 00000000..f127e015 --- /dev/null +++ b/spec/eientei/photoview.nix @@ -0,0 +1,20 @@ +{ + services.photoview = { + enable = true; + database.driver = "postgres"; + database.string = "postgresql:///photoview?host=/var/run/postgresql"; + stateDir = "/nix/persist/service/photoview"; + secrets = "/nix/persist/service/photoview/secrets.env" ; + }; + + services.nginx.virtualHosts."raw.514fpv.io" = { + useACMEHost = ".514fpv.io"; + addSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:8000"; + proxyWebsockets = true; + }; + }; + + global.fs.zfs.mountpoints."/nix/persist/service/photoview" = "service/photoview"; +} From 83999a3b7311c9c0e8946538a1a4a7f1dff59ed2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 6 Mar 2024 09:09:06 +0800 Subject: [PATCH 072/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 6a63bde6..b032d45b 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1709445365, - "narHash": "sha256-DVv6nd9FQBbMWbOmhq0KVqmlc3y3FMSYl49UXmMcO+0=", + "lastModified": 1709578243, + "narHash": "sha256-hF96D+c2PBmAFhymMw3z8hou++lqKtZ7IzpFbYeL1/Y=", "owner": "nix-community", "repo": "home-manager", - "rev": "4de84265d7ec7634a69ba75028696d74de9a44a7", + "rev": "23ff9821bcaec12981e32049e8687f25f11e5ef3", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709237383, - "narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=", + "lastModified": 1709479366, + "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8", + "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", "type": "github" }, "original": { From cdfd2c0477b13c86d272445eb2df2251a02f8b22 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 6 Mar 2024 10:26:31 +0800 Subject: [PATCH 073/274] fix(shinkirou): scale login screen --- spec/shinkirou/default.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/spec/shinkirou/default.nix b/spec/shinkirou/default.nix index faf06ae7..d93f5920 100644 --- a/spec/shinkirou/default.nix +++ b/spec/shinkirou/default.nix @@ -1,4 +1,6 @@ -{ pkgs +{ lib +, pkgs +, config , ... }: { global = { id = "23c46cfc573f4f889af9ba5d4678c2ab"; @@ -43,6 +45,13 @@ nvidiaBusId = "PCI:1:0:0"; }; + services.greetd.settings.default_session.command = let + cfg = config.programs.regreet; + in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' + ${lib.getExe pkgs.wlr-randr} --output DP-3 --scale 2.25 + ${lib.getExe cfg.package} + ''}"; + hardware.enableRedistributableFirmware = true; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; From 980c04b760bc9cd6f5e20758a76623e3b67c5fc3 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 6 Mar 2024 13:48:49 +0800 Subject: [PATCH 074/274] fix(chrome): add ozone wayland variable --- home/chrome/nixos.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/chrome/nixos.nix b/home/chrome/nixos.nix index cdb23871..44a2b5c0 100644 --- a/home/chrome/nixos.nix +++ b/home/chrome/nixos.nix @@ -6,4 +6,5 @@ in { users.home.persist.directories = mkIf gui [ ".config/google-chrome" ]; security.chromiumSuidSandbox.enable = mkIf gui true; + environment.sessionVariables.NIXOS_OZONE_WL = "1"; } From 835badd15d1e31984a6cdbb09aba93da25da4de6 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 6 Mar 2024 14:03:08 +0800 Subject: [PATCH 075/274] fix(gyroflow): add qtwayland --- home/gyroflow/home.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/home/gyroflow/home.nix b/home/gyroflow/home.nix index afdb7ee4..9146afda 100644 --- a/home/gyroflow/home.nix +++ b/home/gyroflow/home.nix @@ -4,5 +4,11 @@ , ... }: with lib; let cfg = config.passthrough.gyroflow; in mkIf cfg.enable { - home.packages = with pkgs; [ gyroflow ]; + home.packages = with pkgs; [ (gyroflow.overrideAttrs (finalAttrs: previousAttrs: { + buildInputs = previousAttrs.buildInputs ++ [ pkgs.qt6Packages.qtwayland ]; + })) ]; + + wayland.windowManager.sway.config.window.commands = [ + { criteria.app_id = "xyz.gyroflow.gyroflow"; command = "floating enable"; } + ]; } From 3ffd84ff4c44c1787b7051f0905f2b1dc45ccd0e Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 7 Mar 2024 07:58:42 +0800 Subject: [PATCH 076/274] fix(eientei): disable photoview --- spec/eientei/photoview.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/eientei/photoview.nix b/spec/eientei/photoview.nix index f127e015..86e716a8 100644 --- a/spec/eientei/photoview.nix +++ b/spec/eientei/photoview.nix @@ -1,6 +1,6 @@ { services.photoview = { - enable = true; + enable = false; database.driver = "postgres"; database.string = "postgresql:///photoview?host=/var/run/postgresql"; stateDir = "/nix/persist/service/photoview"; From d170d40ae48ac32a54bc4ae951e286f37cc985a3 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 7 Mar 2024 08:39:56 +0800 Subject: [PATCH 077/274] feat(eientei): enable photoprism --- spec/eientei/photoprism.nix | 24 ++++++++++++++++++++++++ spec/eientei/photoview.nix | 20 -------------------- 2 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 spec/eientei/photoprism.nix delete mode 100644 spec/eientei/photoview.nix diff --git a/spec/eientei/photoprism.nix b/spec/eientei/photoprism.nix new file mode 100644 index 00000000..05cf9e38 --- /dev/null +++ b/spec/eientei/photoprism.nix @@ -0,0 +1,24 @@ +{ + services.photoprism = { + enable = true; + originalsPath = "/run/storage/aerial"; + settings.PHOTOPRISM_ADMIN_USER = "koishi"; + passwordFile = "/var/lib/photoprism/password"; + }; + + services.nginx.virtualHosts."raw.514fpv.io" = { + useACMEHost = ".514fpv.io"; + addSSL = true; + extraConfig = '' + proxy_buffering off; + ''; + locations."/" = { + proxyPass = "http://127.0.0.1:2342"; + proxyWebsockets = true; + }; + }; + + environment.persistence."/nix/persist/fhs".directories = [ + "/var/lib/photoprism" + ]; +} diff --git a/spec/eientei/photoview.nix b/spec/eientei/photoview.nix deleted file mode 100644 index 86e716a8..00000000 --- a/spec/eientei/photoview.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - services.photoview = { - enable = false; - database.driver = "postgres"; - database.string = "postgresql:///photoview?host=/var/run/postgresql"; - stateDir = "/nix/persist/service/photoview"; - secrets = "/nix/persist/service/photoview/secrets.env" ; - }; - - services.nginx.virtualHosts."raw.514fpv.io" = { - useACMEHost = ".514fpv.io"; - addSSL = true; - locations."/" = { - proxyPass = "http://127.0.0.1:8000"; - proxyWebsockets = true; - }; - }; - - global.fs.zfs.mountpoints."/nix/persist/service/photoview" = "service/photoview"; -} From 3c1a31e281235d5c1fe028092b385179c1986c17 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 7 Mar 2024 08:49:53 +0800 Subject: [PATCH 078/274] fix(eientei): photoprism use intel hwaccel --- spec/eientei/photoprism.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/eientei/photoprism.nix b/spec/eientei/photoprism.nix index 05cf9e38..cd775081 100644 --- a/spec/eientei/photoprism.nix +++ b/spec/eientei/photoprism.nix @@ -3,6 +3,7 @@ enable = true; originalsPath = "/run/storage/aerial"; settings.PHOTOPRISM_ADMIN_USER = "koishi"; + settings.PHOTOPRISM_FFMPEG_ENCODER = "intel"; passwordFile = "/var/lib/photoprism/password"; }; From 01e8b44ae986d4d60c0139d8c5f0db4008198742 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 7 Mar 2024 08:53:58 +0800 Subject: [PATCH 079/274] fix(eientei): photoprism remove limits --- spec/eientei/photoprism.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/spec/eientei/photoprism.nix b/spec/eientei/photoprism.nix index cd775081..55ccb7fe 100644 --- a/spec/eientei/photoprism.nix +++ b/spec/eientei/photoprism.nix @@ -2,8 +2,12 @@ services.photoprism = { enable = true; originalsPath = "/run/storage/aerial"; - settings.PHOTOPRISM_ADMIN_USER = "koishi"; - settings.PHOTOPRISM_FFMPEG_ENCODER = "intel"; + settings = { + PHOTOPRISM_ADMIN_USER = "koishi"; + PHOTOPRISM_FFMPEG_ENCODER = "intel"; + PHOTOPRISM_ORIGINALS_LIMIT = "-1"; + PHOTOPRISM_RESOLUTION_LIMIT = "-1"; + }; passwordFile = "/var/lib/photoprism/password"; }; From 067db9bb0f46208dbc0bcfb80d4bfecc38cc5ceb Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 7 Mar 2024 21:54:15 +0800 Subject: [PATCH 080/274] fix(eientei): photoprism switch to vaapi hwaccel --- spec/eientei/photoprism.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/spec/eientei/photoprism.nix b/spec/eientei/photoprism.nix index 55ccb7fe..5532320d 100644 --- a/spec/eientei/photoprism.nix +++ b/spec/eientei/photoprism.nix @@ -1,10 +1,11 @@ -{ +{ lib +, ... }: with lib; { services.photoprism = { enable = true; originalsPath = "/run/storage/aerial"; settings = { PHOTOPRISM_ADMIN_USER = "koishi"; - PHOTOPRISM_FFMPEG_ENCODER = "intel"; + PHOTOPRISM_FFMPEG_ENCODER = "vaapi"; PHOTOPRISM_ORIGINALS_LIMIT = "-1"; PHOTOPRISM_RESOLUTION_LIMIT = "-1"; }; @@ -23,6 +24,12 @@ }; }; + systemd.services.photoprism.serviceConfig = { + PrivateDevices = mkForce false; + DevicePolicy = "closed"; + DeviceAllow = [ "/dev/dri/renderD128 rw" ]; + }; + environment.persistence."/nix/persist/fhs".directories = [ "/var/lib/photoprism" ]; From 173aa0977e3432960648ce24f165a5a1a8ab7f68 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 8 Mar 2024 19:33:02 +0800 Subject: [PATCH 081/274] fix(sway): redirect output to file --- home/sway/nixos.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/sway/nixos.nix b/home/sway/nixos.nix index f5b2bbdc..feeb32cd 100644 --- a/home/sway/nixos.nix +++ b/home/sway/nixos.nix @@ -22,7 +22,7 @@ in mkIf gui { for profile in ''${(z)NIX_PROFILES}; do fpath+=($profile/share/zsh/site-functions $profile/share/zsh/$ZSH_VERSION/functions $profile/share/zsh/vendor-completions) done - exec sway ${if nvidia then "--unsupported-gpu" else ""} + exec sway${if nvidia then " --unsupported-gpu" else ""} 2>&1 >> $XDG_CACHE_HOME/sway ''; checkPhase = '' ${pkgs.stdenv.shellDryRun} "$target" From ab74a05de6c804020841f2bb0f69142b04af0636 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 10 Mar 2024 15:04:33 +0800 Subject: [PATCH 082/274] fix(eientei): photoprism update path --- spec/eientei/photoprism.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/eientei/photoprism.nix b/spec/eientei/photoprism.nix index 5532320d..a9e0af7f 100644 --- a/spec/eientei/photoprism.nix +++ b/spec/eientei/photoprism.nix @@ -2,7 +2,7 @@ , ... }: with lib; { services.photoprism = { enable = true; - originalsPath = "/run/storage/aerial"; + originalsPath = "/run/storage/aerial/raw"; settings = { PHOTOPRISM_ADMIN_USER = "koishi"; PHOTOPRISM_FFMPEG_ENCODER = "vaapi"; From 2db6789f5db98d38ad170811135b62f1fea8356b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 11 Mar 2024 15:08:00 +0800 Subject: [PATCH 083/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index b032d45b..2de8c6a8 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1709578243, - "narHash": "sha256-hF96D+c2PBmAFhymMw3z8hou++lqKtZ7IzpFbYeL1/Y=", + "lastModified": 1709938482, + "narHash": "sha256-2Vw2WOFmEXWQH8ziFNOr0U48Guh5FacuD6BOEIcE99s=", "owner": "nix-community", "repo": "home-manager", - "rev": "23ff9821bcaec12981e32049e8687f25f11e5ef3", + "rev": "17431970b4ebc75a92657101ccffcfc9e1f9d8f0", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709479366, - "narHash": "sha256-n6F0n8UV6lnTZbYPl1A9q1BS0p4hduAv1mGAP17CVd0=", + "lastModified": 1709703039, + "narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b8697e57f10292a6165a20f03d2f42920dfaf973", + "rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d", "type": "github" }, "original": { From 7de7cf0ab1695c8a07e22da0c2aae2b9dd579ed4 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 11 Mar 2024 21:39:46 +0800 Subject: [PATCH 084/274] fix(libvirt): add virtiofsd to environment --- global/libvirt/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/global/libvirt/default.nix b/global/libvirt/default.nix index a11d63cf..b8149719 100644 --- a/global/libvirt/default.nix +++ b/global/libvirt/default.nix @@ -20,6 +20,8 @@ in { parallelShutdown = 5; }; + environment.systemPackages = with pkgs; [ virtiofsd ]; + # USB redirection requires a setuid wrapper virtualisation.spiceUSBRedirection.enable = true; From dcf230a54651d50801c661c6db107d7eddbc0a15 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 14 Mar 2024 10:06:54 +0800 Subject: [PATCH 085/274] fix(tubesync): patch yt-dlp options These new options ensure integrity. --- package/tubesync/default.nix | 1 + package/tubesync/ensure-fragments.patch | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 package/tubesync/ensure-fragments.patch diff --git a/package/tubesync/default.nix b/package/tubesync/default.nix index 22cd3726..321dc1fc 100644 --- a/package/tubesync/default.nix +++ b/package/tubesync/default.nix @@ -55,6 +55,7 @@ ./gunicorn-env.patch ./state-dir-env.patch ./database-local-socket.patch + ./ensure-fragments.patch ]; propagatedBuildInputs = [ diff --git a/package/tubesync/ensure-fragments.patch b/package/tubesync/ensure-fragments.patch new file mode 100644 index 00000000..c3f30bea --- /dev/null +++ b/package/tubesync/ensure-fragments.patch @@ -0,0 +1,13 @@ +diff --git a/tubesync/sync/youtube.py b/tubesync/sync/youtube.py +index 4ac6e83..2915bf9 100644 +--- a/tubesync/sync/youtube.py ++++ b/tubesync/sync/youtube.py +@@ -119,6 +119,8 @@ def download_media(url, media_format, extension, output_file, info_json, + 'writesubtitles': write_subtitles, + 'writeautomaticsub': auto_subtitles, + 'subtitleslangs': sub_langs.split(','), ++ 'fragment_retries': 65536, ++ 'skip_unavailable_fragments': False, + } + + sbopt = { From 796be72e3c269a44499897e91f8256cf85e13194 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 14 Mar 2024 10:46:52 +0800 Subject: [PATCH 086/274] chore(flake): bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 2de8c6a8..70751d42 100644 --- a/flake.lock +++ b/flake.lock @@ -95,11 +95,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1709938482, - "narHash": "sha256-2Vw2WOFmEXWQH8ziFNOr0U48Guh5FacuD6BOEIcE99s=", + "lastModified": 1710349883, + "narHash": "sha256-bjbdS2mC76xNJwt1d/uZa+JdHR8CCyYbF4Ey/NgOJus=", "owner": "nix-community", "repo": "home-manager", - "rev": "17431970b4ebc75a92657101ccffcfc9e1f9d8f0", + "rev": "2f0db7d418e781354d8a3c50e611e3b1cd413087", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709703039, - "narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=", + "lastModified": 1710272261, + "narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d", + "rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2", "type": "github" }, "original": { From a12e3b1d940fbcd91984af6fed1696f52f7e3054 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 14 Mar 2024 10:47:46 +0800 Subject: [PATCH 087/274] feat(eientei): enable photoview --- spec/eientei/photoview.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 spec/eientei/photoview.nix diff --git a/spec/eientei/photoview.nix b/spec/eientei/photoview.nix new file mode 100644 index 00000000..f7ccb595 --- /dev/null +++ b/spec/eientei/photoview.nix @@ -0,0 +1,20 @@ +{ + services.photoview = { + enable = true; + database.driver = "postgres"; + database.string = "postgresql:///photoview?host=/var/run/postgresql"; + stateDir = "/nix/persist/service/photoview"; + secrets = "/nix/persist/service/photoview/secrets.env" ; + }; + + services.nginx.virtualHosts."dvr.514fpv.io" = { + useACMEHost = ".514fpv.io"; + addSSL = true; + locations."/" = { + proxyPass = "http://127.0.0.1:8000"; + proxyWebsockets = true; + }; + }; + + global.fs.zfs.mountpoints."/nix/persist/service/photoview" = "service/photoview"; +} From aba0f201348a495daca7bb893779fe22fddd06df Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 14 Mar 2024 17:40:56 +0800 Subject: [PATCH 088/274] fix(fs): ensure /var/lib/private mode --- global/fs/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/global/fs/default.nix b/global/fs/default.nix index 4805dc3e..0871b015 100644 --- a/global/fs/default.nix +++ b/global/fs/default.nix @@ -90,5 +90,10 @@ in { inherit (cfg.cryptsetup) allowDiscards bypassWorkqueues; device = "/dev/disk/by-uuid/${uuid}"; }) cfg.cryptsetup.uuids); + + environment.persistence."/nix/persist/fhs".files = [ { + file = "/var/lib/private/mode"; + parentDirectory.mode = "0700"; + } ]; }; } From e9db5fd1ed16a5d60a0fe83f35255718a060b6c2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 14 Mar 2024 17:41:14 +0800 Subject: [PATCH 089/274] fix(eientei): fix photoprism persistence path --- spec/eientei/photoprism.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/eientei/photoprism.nix b/spec/eientei/photoprism.nix index a9e0af7f..66a3874e 100644 --- a/spec/eientei/photoprism.nix +++ b/spec/eientei/photoprism.nix @@ -31,6 +31,6 @@ }; environment.persistence."/nix/persist/fhs".directories = [ - "/var/lib/photoprism" + "/var/lib/private/photoprism" ]; } From 165cdc41ced05ef0f5a80f0bb550a206d1bdf758 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 14 Mar 2024 18:51:59 +0800 Subject: [PATCH 090/274] fix(tubesync): patch yt-dlp options These options disable continue. --- package/tubesync/ensure-fragments.patch | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package/tubesync/ensure-fragments.patch b/package/tubesync/ensure-fragments.patch index c3f30bea..42c38673 100644 --- a/package/tubesync/ensure-fragments.patch +++ b/package/tubesync/ensure-fragments.patch @@ -1,13 +1,14 @@ diff --git a/tubesync/sync/youtube.py b/tubesync/sync/youtube.py -index 4ac6e83..2915bf9 100644 +index 4ac6e83..f0cf5b7 100644 --- a/tubesync/sync/youtube.py +++ b/tubesync/sync/youtube.py -@@ -119,6 +119,8 @@ def download_media(url, media_format, extension, output_file, info_json, +@@ -119,6 +119,9 @@ def download_media(url, media_format, extension, output_file, info_json, 'writesubtitles': write_subtitles, 'writeautomaticsub': auto_subtitles, 'subtitleslangs': sub_langs.split(','), + 'fragment_retries': 65536, + 'skip_unavailable_fragments': False, ++ 'continue_dl': False, } sbopt = { From b7634b24a9cc8ff47f61d20e763a6c1a850d2a0d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 18 Mar 2024 09:38:16 +0800 Subject: [PATCH 091/274] refactor(gyroflow): move package to module --- home/gyroflow/home.nix | 4 +--- home/gyroflow/nixos.nix | 7 +++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/home/gyroflow/home.nix b/home/gyroflow/home.nix index 9146afda..5ec39359 100644 --- a/home/gyroflow/home.nix +++ b/home/gyroflow/home.nix @@ -4,9 +4,7 @@ , ... }: with lib; let cfg = config.passthrough.gyroflow; in mkIf cfg.enable { - home.packages = with pkgs; [ (gyroflow.overrideAttrs (finalAttrs: previousAttrs: { - buildInputs = previousAttrs.buildInputs ++ [ pkgs.qt6Packages.qtwayland ]; - })) ]; + home.packages = [ cfg.package ]; wayland.windowManager.sway.config.window.commands = [ { criteria.app_id = "xyz.gyroflow.gyroflow"; command = "floating enable"; } diff --git a/home/gyroflow/nixos.nix b/home/gyroflow/nixos.nix index 94e86471..02b46551 100644 --- a/home/gyroflow/nixos.nix +++ b/home/gyroflow/nixos.nix @@ -6,6 +6,13 @@ in { options.home.gyroflow = { enable = mkEnableOption "gyroflow stabilisation software"; + package = mkOption { + type = with types; package; + default = pkgs.gyroflow.overrideAttrs (finalAttrs: previousAttrs: { + buildInputs = previousAttrs.buildInputs ++ [ pkgs.qt6Packages.qtwayland ]; + }); + description = "gyroflow package"; + }; }; config = { From 845873ced68c396dbd7343ed35959f479c9a0eb2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 18 Mar 2024 11:09:56 +0800 Subject: [PATCH 092/274] feat(web): enable uptime-kuma --- spec/web/nginx.nix | 9 +++++++++ spec/web/uptime.nix | 11 +++++++++++ 2 files changed, 20 insertions(+) create mode 100644 spec/web/uptime.nix diff --git a/spec/web/nginx.nix b/spec/web/nginx.nix index c0bf7f1e..ae1506bc 100644 --- a/spec/web/nginx.nix +++ b/spec/web/nginx.nix @@ -25,6 +25,15 @@ globalRedirect = "514fpv.one"; enableACME = true; }; + + "uptime.514fpv.one" = { + locations."/" = { + proxyPass = "http://127.0.0.1:4000"; + proxyWebsockets = true; + }; + forceSSL = true; + enableACME = true; + }; }; }; diff --git a/spec/web/uptime.nix b/spec/web/uptime.nix new file mode 100644 index 00000000..d9b27c68 --- /dev/null +++ b/spec/web/uptime.nix @@ -0,0 +1,11 @@ +{ + services.uptime-kuma = { + enable = true; + settings.HOST = "127.0.0.1"; + settings.PORT = "4000"; + }; + + environment.persistence."/nix/persist/fhs".directories = [ + "/var/lib/private/uptime-kuma" + ]; +} From d5aa5ac42f09e4e5f104a2daa880b9afb3c57b68 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 18 Mar 2024 11:46:47 +0800 Subject: [PATCH 093/274] fix(eientei): proxy matrix health endpoint --- spec/eientei/matrix.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/eientei/matrix.nix b/spec/eientei/matrix.nix index 8b884e5f..1af2d400 100644 --- a/spec/eientei/matrix.nix +++ b/spec/eientei/matrix.nix @@ -40,6 +40,7 @@ in { locations."/".extraConfig = '' return 404; ''; + locations."/health".proxyPass = "http://127.0.0.1:8008"; locations."/_matrix".proxyPass = "http://127.0.0.1:8008"; locations."/_synapse/client".proxyPass = "http://127.0.0.1:8008"; }; From 79c7daccfd03b4d0643540779607ed74083f3497 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 19 Mar 2024 08:56:21 +0800 Subject: [PATCH 094/274] fix(auth): add ssh ports --- home/auth/home.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/home/auth/home.nix b/home/auth/home.nix index 890628c3..4b2cfeba 100644 --- a/home/auth/home.nix +++ b/home/auth/home.nix @@ -22,4 +22,12 @@ }; }; }; + + programs.ssh = { + enable = true; + matchBlocks = { + "edge.514fpv.io".port = 8086; + "sf.514fpv.io".port = 8087; + }; + }; } From ff3eba7c9db78a6742ccd7af7d6fcbde94e29e9e Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 19 Mar 2024 09:05:57 +0800 Subject: [PATCH 095/274] fix(eientei): fix frigate firewall interface names --- spec/eientei/frigate.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/eientei/frigate.nix b/spec/eientei/frigate.nix index c3239f10..dcdbb2e5 100644 --- a/spec/eientei/frigate.nix +++ b/spec/eientei/frigate.nix @@ -23,8 +23,8 @@ ]; }; - networking.firewall.interfaces.enp0s20f0u1.allowedTCPPorts = [ 5000 8554 8555 ]; - networking.firewall.interfaces.enp0s20f0u1.allowedUDPPorts = [ 8555 ]; + networking.firewall.interfaces.ss0.allowedTCPPorts = [ 5000 8554 8555 ]; + networking.firewall.interfaces.ss0.allowedUDPPorts = [ 8555 ]; global.fs.zfs.mountpoints."/nix/persist/service/frigate" = "service/frigate"; } From b1f0ed6112246aa2ae67d129f2e5f6ff7b389594 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 19 Mar 2024 09:50:08 +0800 Subject: [PATCH 096/274] feat(eientei): enable vaultwarden --- spec/eientei/vaultwarden.nix | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 spec/eientei/vaultwarden.nix diff --git a/spec/eientei/vaultwarden.nix b/spec/eientei/vaultwarden.nix new file mode 100644 index 00000000..8e6d6d30 --- /dev/null +++ b/spec/eientei/vaultwarden.nix @@ -0,0 +1,27 @@ +{ + services.vaultwarden = { + enable = true; + environmentFile = "/nix/persist/service/vaultwarden/secret.env"; + config = { + domain = "https://vault.514fpv.io:2096"; + signupsAllowed = true; + rocketAddress = "127.0.0.1"; + rocketPort = 8222; + rocketLog = "critical"; + databaseUrl = "postgresql:///vaultwarden"; + }; + dbBackend = "postgresql"; + }; + + services.nginx.virtualHosts."vault.514fpv.io" = { + useACMEHost = ".514fpv.io"; + addSSL = true; + locations."/".proxyPass = "http://127.0.0.1:8222"; + }; + + environment.persistence."/nix/persist/fhs".directories = [ + "/var/lib/bitwarden_rs" + ]; + + global.fs.zfs.mountpoints."/nix/persist/service/vaultwarden" = "service/vaultwarden"; +} From 449ab039e14481622b3669b898e9dbb59fc4702c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 21 Mar 2024 08:14:58 +0800 Subject: [PATCH 097/274] fix(eientei): set zfs_arc_max --- spec/eientei/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/eientei/default.nix b/spec/eientei/default.nix index a5d67f3f..f864e146 100644 --- a/spec/eientei/default.nix +++ b/spec/eientei/default.nix @@ -27,6 +27,7 @@ SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="80:61:5f:07:9e:2f", NAME="ix0" SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:e0:4c:68:bb:30", NAME="ss0" ''; + boot.kernelParams = [ "zfs.zfs_arc_max=17179869184" ]; imports = lib.pipe ./. [ builtins.readDir From 9d6a74e7fa330784a68c9911a95282019103927e Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 21 Mar 2024 08:30:13 +0800 Subject: [PATCH 098/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 70751d42..2e9ce5c4 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1710349883, - "narHash": "sha256-bjbdS2mC76xNJwt1d/uZa+JdHR8CCyYbF4Ey/NgOJus=", + "lastModified": 1710974515, + "narHash": "sha256-jZpdsypecYTOO9l12Vy77otGmh9uz8tGzcguifA30Vs=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f0db7d418e781354d8a3c50e611e3b1cd413087", + "rev": "1c2acec99933f9835cc7ad47e35303de92d923a4", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1710272261, - "narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=", + "lastModified": 1710806803, + "narHash": "sha256-qrxvLS888pNJFwJdK+hf1wpRCSQcqA6W5+Ox202NDa0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2", + "rev": "b06025f1533a1e07b6db3e75151caa155d1c7eb3", "type": "github" }, "original": { From 579f3276e06440b2c807bc8a51c9a107db90f0a7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 21 Mar 2024 09:06:23 +0800 Subject: [PATCH 099/274] fix(tubesync): patch yt-dlp options These options print newlines as progress. --- package/tubesync/ensure-fragments.patch | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package/tubesync/ensure-fragments.patch b/package/tubesync/ensure-fragments.patch index 42c38673..f25534ea 100644 --- a/package/tubesync/ensure-fragments.patch +++ b/package/tubesync/ensure-fragments.patch @@ -1,11 +1,12 @@ diff --git a/tubesync/sync/youtube.py b/tubesync/sync/youtube.py -index 4ac6e83..f0cf5b7 100644 +index 4ac6e83..192b031 100644 --- a/tubesync/sync/youtube.py +++ b/tubesync/sync/youtube.py -@@ -119,6 +119,9 @@ def download_media(url, media_format, extension, output_file, info_json, +@@ -119,6 +119,10 @@ def download_media(url, media_format, extension, output_file, info_json, 'writesubtitles': write_subtitles, 'writeautomaticsub': auto_subtitles, 'subtitleslangs': sub_langs.split(','), ++ 'progress_with_newline': True, + 'fragment_retries': 65536, + 'skip_unavailable_fragments': False, + 'continue_dl': False, From dfdddc46e1ec51f0d1d118455cca82d8da71c912 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 21 Mar 2024 17:11:58 +0800 Subject: [PATCH 100/274] fix(tubesync): patch ffmpeg --- package/tubesync/default.nix | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/package/tubesync/default.nix b/package/tubesync/default.nix index 321dc1fc..8ddb6f0f 100644 --- a/package/tubesync/default.nix +++ b/package/tubesync/default.nix @@ -6,6 +6,7 @@ , callPackage , fetchFromGitHub , fetchPypi +, fetchpatch , makeWrapper , python3Packages }: with python3Packages; let mkPypi = pname: version: src: format: buildPythonPackage { @@ -88,13 +89,21 @@ mkdir -p "$out" cp -r "tubesync" "$out/app" - FFMPEG_VERSION=$(${ffmpeg}/bin/ffmpeg -version | head -n 1 | awk '{ print $3 }') + FFMPEG_VERSION=$(${ffmpegFix}/bin/ffmpeg -version | head -n 1 | awk '{ print $3 }') echo "ffmpeg_version = '$FFMPEG_VERSION'" >> "$out/app/common/third_party_versions.py" mv "$out/app/static" "$out/static" ln -s "/tmp/tubesync/static" "$out/app/static" ''; }; + + ffmpegFix = ffmpeg.overrideAttrs (finalAttrs: previousAttrs: { + patches = previousAttrs.patches ++ [ (fetchpatch { + name = "avformat-webvttdec-skip-style-region.patch"; + url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/51d303e20cbb0874172f50b5172c515a973587d4"; + hash = "sha256-dxCjKZUz2H2QyktsprkzyfNp5aDG6X8deF4ZGdvhvfk="; + }) ]; + }); in stdenvNoCC.mkDerivation { pname = "${app.pname}-wrapped"; inherit (app) version; @@ -103,7 +112,7 @@ in stdenvNoCC.mkDerivation { unpackPhase = "true"; installPhase = let prefix = ''--prefix PATH : "${lib.makeBinPath [ - ffmpeg rtmpdump atomicparsley + ffmpegFix rtmpdump atomicparsley ]}"''; in '' mkdir -p "$out/bin" From 54ddf63ea5135f4c6048dedaa06ca60a33c91ebe Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 24 Mar 2024 11:10:09 +0800 Subject: [PATCH 101/274] feat(virtualbox): add kvm virtualbox host --- global/virtualbox/default.nix | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 global/virtualbox/default.nix diff --git a/global/virtualbox/default.nix b/global/virtualbox/default.nix new file mode 100644 index 00000000..bf705e14 --- /dev/null +++ b/global/virtualbox/default.nix @@ -0,0 +1,34 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.global.virtualbox; +in { + options.global.virtualbox = { + enable = mkEnableOption "virtualbox host (kvm)"; + }; + + config = mkIf cfg.enable { + virtualisation.virtualbox.host = { + enable = true; + enableKvm = true; + enableExtensionPack = true; + + enableHardening = false; + addNetworkInterface = false; + }; + + # allow virtualbox USB passthrough + users.adminGroups = [ "vboxusers" ]; + + users.home.persist.directories = [ + ".config/VirtualBox" + ]; + + users.homeModules = [ { + wayland.windowManager.sway.config.window.commands = [ + { criteria.class = "VirtualBox Manager"; command = "floating enable"; } + ]; + } ]; + }; +} From ebb41b6a1f14170ef396b32d9a87e5820358d23c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 25 Mar 2024 09:36:56 +0800 Subject: [PATCH 102/274] feat: add sedutil --- home/util/home.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/util/home.nix b/home/util/home.nix index 4c0df172..45d5823e 100644 --- a/home/util/home.nix +++ b/home/util/home.nix @@ -7,7 +7,7 @@ in { home.packages = with pkgs; [ pv file wget e2fsprogs ] ++ optionals (!cfg.minimal) [ - tio mbuffer + tio mbuffer sedutil lsscsi zip unzip nix-index dnsutils whois pciutils usbutils nvme-cli From 09d9ab05fb6c75041d740e2696d7df84c9bde7dd Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 25 Mar 2024 12:31:50 +0800 Subject: [PATCH 103/274] feat(fs): add zfs alerts --- global/fs/zfs/alert.nix | 120 ++++++++++++++++++++++++++++++++++++++ global/fs/zfs/default.nix | 11 ++++ 2 files changed, 131 insertions(+) create mode 100644 global/fs/zfs/alert.nix diff --git a/global/fs/zfs/alert.nix b/global/fs/zfs/alert.nix new file mode 100644 index 00000000..d9c76ae7 --- /dev/null +++ b/global/fs/zfs/alert.nix @@ -0,0 +1,120 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.global.fs.zfs.alert; + + backend = { + text = pkgs.writeShellScript "telegram-text" '' + set -e + source ${cfg.secret} + + ${pkgs.curl}/bin/curl -sG \ + --data-urlencode "chat_id=$CHATID" \ + --data-urlencode "text=$ALERT" \ + "https://api.telegram.org/bot$APIKEY/sendMessage" + ''; + image = pkgs.writeShellScript "telegram-image" '' + set -e + source ${cfg.secret} + + ${pkgs.curl}/bin/curl -sG \ + -F "chat_id=$CHATID" \ + -F "caption=$ALERT" \ + -F "photo=@-" \ + "https://api.telegram.org/bot$APIKEY/sendPhoto" + ''; + }; + + zedAlert = pkgs.writeShellScript "zed-alert" '' + set -e + export BODY="$(cat)" + + # add tag + ALERT="$1 #zfs" + + export ALERT + echo -e "$BODY" | \ + ${pkgs.imagemagick}/bin/convert \ + -size 1500x2000 xc:black \ + -font "${pkgs.freefont_ttf}/share/fonts/truetype/FreeMono.ttf" \ + -pointsize 16 \ + -fill white -annotate +15+80 "@-" \ + -trim -bordercolor "#000" \ + -border 32 +repage \ + png:- | \ + ${backend.image} + ''; + + mdadmAlert = pkgs.writeShellScript "mdadm-alert" '' + set -e + + EVENT="$1" + ARRAY="$2" + DEVICE="$3" + + # fallback alert + ALERT="$EVENT | $ARRAY | $DEVICE" + + case $EVENT in + DegradedArray) + ALERT="Array $ARRAY is in a degraded state" + ;; + DeviceDisappeared) + ALERT="Array $ARRAY disappeared" + ;; + Fail) + ALERT="Array $ARRAY encountered failure of component $DEVICE" + ;; + FailSpare) + ALERT="Array $ARRAY encountered failure of spare component $DEVICE during rebuild" + ;; + MoveSpare) + ALERT="Spare $DEVICE moved to array $ARRAY" + ;; + NewArray) + ALERT="Array $ARRAY appeared" + ;; + Rebuild??) + ALERT="Array $ARRAY rebuild is now $(echo $EVENT | ${pkgs.sedutil}/bin/sed 's/Rebuild//')% complete" + ;; + RebuildFinished) + ALERT="Rebuild of array $ARRAY has concluded" + ;; + RebuildStarted) + ALERT="Rebuild of array $ARRAY has started" + ;; + SpareActive) + ALERT="Spare $DEVICE activated in array $ARRAY" + ;; + SparesMissing) + ALERT="Array $ARRAY missing one or more spares" + ;; + TestMessage) + ALERT="Test message generated for array $ARRAY" + ;; + esac + + # add tag + ALERT="$ALERT #swraid" + + export ALERT + exec ${backend.text} + ''; +in mkIf (cfg.secret != null) { + services.zfs.zed = mkIf cfg.zed { + settings = { + ZED_EMAIL_ADDR = [ "root" ]; + ZED_EMAIL_PROG = toString zedAlert; + ZED_EMAIL_OPTS = "'@SUBJECT@'"; + + ZED_NOTIFY_INTERVAL_SECS = 3600; + ZED_NOTIFY_VERBOSE = false; + + ZED_USE_ENCLOSURE_LEDS = true; + ZED_SCRUB_AFTER_RESILVER = false; + }; + }; + + global.fs.zfs.split.mdProg = mkIf cfg.swraid (toString mdadmAlert); +} diff --git a/global/fs/zfs/default.nix b/global/fs/zfs/default.nix index 37ca13ee..10c88a85 100644 --- a/global/fs/zfs/default.nix +++ b/global/fs/zfs/default.nix @@ -5,6 +5,7 @@ cfg = config.global.fs; in { imports = [ + ./alert.nix ./split.nix ./replication.nix ]; @@ -13,6 +14,16 @@ in { # -O encryption=on -O keyformat=passphrase -O keylocation=prompt # -O compression=on -O mountpoint=none -O xattr=sa -O acltype=posixacl options.global.fs.zfs = { + alert = { + zed = mkEnableOption "zfs event alerts" // { default = true; }; + swraid = mkEnableOption "software raid alerts" // { default = true; }; + secret = mkOption { + type = with types; nullOr str; + default = null; + description = "path to alert secrets"; + }; + }; + persist = mkOption { type = with types; str; default = cfg.store; From 5380a6d2e312aac29c72cda092377c8a0f770b4f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 25 Mar 2024 12:32:01 +0800 Subject: [PATCH 104/274] feat(eientei): enable zfs alerts --- spec/eientei/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/eientei/default.nix b/spec/eientei/default.nix index f864e146..4da7d086 100644 --- a/spec/eientei/default.nix +++ b/spec/eientei/default.nix @@ -6,6 +6,7 @@ auth.openssh.enable = true; fs.esp.uuid = "C368-7571"; fs.type = "zfs"; + fs.zfs.alert.secret = "/nix/persist/secret/telegram"; fs.zfs.split.enable = true; fs.zfs.split.store = "d9202e56-a14f-4342-acdb-dbae33d680fc"; fs.zfs.split.secret = "1404c4f1-b890-4cf0-ab8a-26bd81bd2254"; From 2d6e3f944af27537ea0ca9370675f9a858451162 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 25 Mar 2024 12:46:45 +0800 Subject: [PATCH 105/274] feat(focus): enable zfs alerts --- spec/focus/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/focus/default.nix b/spec/focus/default.nix index 1845261a..019932da 100644 --- a/spec/focus/default.nix +++ b/spec/focus/default.nix @@ -5,6 +5,7 @@ auth.openssh.enable = true; fs.esp.uuid = "8C36-CBE2"; fs.type = "zfs"; + fs.zfs.alert.secret = "/nix/persist/secret/telegram"; fs.zfs.split.enable = true; fs.zfs.split.store = "59b73292-8098-4774-b8b6-59c23130d405"; fs.zfs.split.secret = "f8983719-f9e7-42b2-b8f3-0f32f6b328ae"; From 0f348a9fae28389662284907cdcb37fa6553e47d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 25 Mar 2024 13:15:25 +0800 Subject: [PATCH 106/274] feat(fs): add ability to customise curl args --- global/fs/zfs/alert.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/global/fs/zfs/alert.nix b/global/fs/zfs/alert.nix index d9c76ae7..9af1317d 100644 --- a/global/fs/zfs/alert.nix +++ b/global/fs/zfs/alert.nix @@ -12,6 +12,7 @@ ${pkgs.curl}/bin/curl -sG \ --data-urlencode "chat_id=$CHATID" \ --data-urlencode "text=$ALERT" \ + $CURL_EXTRA_ARGS \ "https://api.telegram.org/bot$APIKEY/sendMessage" ''; image = pkgs.writeShellScript "telegram-image" '' @@ -22,6 +23,7 @@ -F "chat_id=$CHATID" \ -F "caption=$ALERT" \ -F "photo=@-" \ + $CURL_EXTRA_ARGS \ "https://api.telegram.org/bot$APIKEY/sendPhoto" ''; }; From 6b74c299bdb2b999f4217ac4f3be095e45960124 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 26 Mar 2024 08:57:36 +0800 Subject: [PATCH 107/274] chore(tubesync): 0.13.3 -> 0.13.6 --- package/tubesync/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/tubesync/default.nix b/package/tubesync/default.nix index 8ddb6f0f..5318f882 100644 --- a/package/tubesync/default.nix +++ b/package/tubesync/default.nix @@ -41,7 +41,7 @@ app = buildPythonApplication rec { pname = "tubesync"; - version = "0.13.3"; + version = "0.13.6"; format = "other"; src = fetchFromGitHub { @@ -49,7 +49,7 @@ owner = "meeb"; repo = pname; rev = "v${version}"; - hash = "sha256-33DDbECEn/3vrQ0qvxoz5OZ/y8bR6BZ2cYUtPsA7YYc="; + hash = "sha256-5l1HkMoTn99rNeeK5u+KoFejTFi2LfLyt8upq7xwrj0="; }; patches = [ From 243379f73ecb90eef7299a77b4c4b012377ff7bf Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 28 Mar 2024 08:01:16 +0800 Subject: [PATCH 108/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 2e9ce5c4..fd5f3a94 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1710974515, - "narHash": "sha256-jZpdsypecYTOO9l12Vy77otGmh9uz8tGzcguifA30Vs=", + "lastModified": 1711554349, + "narHash": "sha256-RypwcWEIFePBI0Hubfj4chanbM/G2yzJzC6wgz+dmS4=", "owner": "nix-community", "repo": "home-manager", - "rev": "1c2acec99933f9835cc7ad47e35303de92d923a4", + "rev": "179f6acaf7c068c7870542cdae72afec9427a5b0", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1710806803, - "narHash": "sha256-qrxvLS888pNJFwJdK+hf1wpRCSQcqA6W5+Ox202NDa0=", + "lastModified": 1711333969, + "narHash": "sha256-5PiWGn10DQjMZee5NXzeA6ccsv60iLu+Xtw+mfvkUAs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b06025f1533a1e07b6db3e75151caa155d1c7eb3", + "rev": "57e6b3a9e4ebec5aa121188301f04a6b8c354c9b", "type": "github" }, "original": { From 4ae418e39df23f644a3c98bceedc1aa75fc1796b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 28 Mar 2024 08:13:19 +0800 Subject: [PATCH 109/274] chore: update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index b2be92b7..141b99d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ +result-* result +repl-result-* From 1cb0e12246d986a1163647325dcce2fdd0603bb8 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 28 Mar 2024 08:37:04 +0800 Subject: [PATCH 110/274] refactor(flake): compact input lines --- flake.nix | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/flake.nix b/flake.nix index 37bfbfbf..14cf472b 100644 --- a/flake.nix +++ b/flake.nix @@ -3,24 +3,14 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - flake-utils.url = "github:numtide/flake-utils"; - flake-parts = { - url = "github:hercules-ci/flake-parts"; - inputs.nixpkgs-lib.follows = "nixpkgs"; - }; - + flake-parts.url = "github:hercules-ci/flake-parts"; + flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; impermanence.url = "github:nix-community/impermanence/master"; - - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - lanzaboote = { - url = "github:nix-community/lanzaboote/v0.3.0"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + home-manager.url = "github:nix-community/home-manager"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + lanzaboote.url = "github:nix-community/lanzaboote/v0.3.0"; + lanzaboote.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs: From 61e84067f233a3d5788298f7c9bd1d8ba3c32561 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 29 Mar 2024 10:29:57 +0800 Subject: [PATCH 111/274] feat(io): add net-priv hosts --- global/io/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/global/io/default.nix b/global/io/default.nix index 9aad2d97..e76751c6 100644 --- a/global/io/default.nix +++ b/global/io/default.nix @@ -20,6 +20,10 @@ in { '' else ""); networking.networkmanager.enable = mkDefault true; + networking.hosts = { + "10.5.14.0" = [ "codec" ]; + "10.15.14.0" = [ "redir" ]; + }; hardware.bluetooth.enable = mkDefault cfg.bluetooth; hardware.pulseaudio = mkIf cfg.audio { From 2fe93a31996205fc112ab1a6a03b98a9bb11b1ab Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 29 Mar 2024 10:33:23 +0800 Subject: [PATCH 112/274] feat(io): add netvm to hosts --- global/io/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/global/io/default.nix b/global/io/default.nix index e76751c6..b75bb71c 100644 --- a/global/io/default.nix +++ b/global/io/default.nix @@ -23,6 +23,8 @@ in { networking.hosts = { "10.5.14.0" = [ "codec" ]; "10.15.14.0" = [ "redir" ]; + + "192.168.123.1" = [ "netvm" ]; }; hardware.bluetooth.enable = mkDefault cfg.bluetooth; From 653c87dcf4384b32bf18bff172d88c4ad84c8e6d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 29 Mar 2024 11:02:13 +0800 Subject: [PATCH 113/274] fix(gpu): remove i915 from initrd when arc is set --- global/gpu/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global/gpu/default.nix b/global/gpu/default.nix index 1980ad8d..768ed74e 100644 --- a/global/gpu/default.nix +++ b/global/gpu/default.nix @@ -94,7 +94,7 @@ in { boot.initrd.kernelModules = optional amdgpu "amdgpu" ++ - optional intel "i915" ++ + optional (intel && cfg.arc == null) "i915" ++ optionals nvidia [ "nvidia" "nvidia_drm" "nvidia_modeset" "nvidia_uvm" ] ++ optional (cfg.arc != null) "vfio-pci"; From cfdc86aa20883d5c1143c65c7c31b47efbbe05f7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 29 Mar 2024 21:47:16 +0800 Subject: [PATCH 114/274] fix(focus): update proxy address --- spec/focus/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/focus/default.nix b/spec/focus/default.nix index 019932da..2b83d710 100644 --- a/spec/focus/default.nix +++ b/spec/focus/default.nix @@ -29,7 +29,7 @@ ''; networking.proxy = { - allProxy = "socks5://192.168.1.1:1080"; + allProxy = "http://10.0.0.2:3128"; noProxy = "10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1,localhost,.localdomain"; }; From 9c7a918b1fcc520f5bc56ba2e91c9bd0473bf203 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 30 Mar 2024 14:01:48 +0800 Subject: [PATCH 115/274] fix(io): update redir address --- global/io/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global/io/default.nix b/global/io/default.nix index b75bb71c..1b9b6ef8 100644 --- a/global/io/default.nix +++ b/global/io/default.nix @@ -22,7 +22,7 @@ in { networking.networkmanager.enable = mkDefault true; networking.hosts = { "10.5.14.0" = [ "codec" ]; - "10.15.14.0" = [ "redir" ]; + "10.5.14.1" = [ "redir" ]; "192.168.123.1" = [ "netvm" ]; }; From 34f4b4b849e00f7fea1bd1b365a61298728e5896 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 30 Mar 2024 14:09:52 +0800 Subject: [PATCH 116/274] fix(auth): translate key list --- global/auth/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/global/auth/default.nix b/global/auth/default.nix index aaad15f3..45e245fd 100644 --- a/global/auth/default.nix +++ b/global/auth/default.nix @@ -7,6 +7,8 @@ builtins.readDir (lib.filterAttrs (n: ty: ty == "regular")) (lib.mapAttrsToList (n: _: builtins.readFile ./pub/${n})) + (foldr (payload: keys: (splitString "\n" payload) ++ keys) [ ]) + (foldr (candidate: keys: keys ++ (if candidate == "" then [ ] else [ candidate ])) [ ]) ]; in { options.global.auth = { @@ -15,7 +17,7 @@ in { enable = mkEnableOption "openssh server"; password = mkEnableOption "password authentication"; publicKeys = mkOption { - type = with types; listOf str; + type = with types; listOf singleLineStr; default = pub; description = "list of trusted openssh keys"; }; From e541ce8951a17df6389d6ad8caae38430fcae0c2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 1 Apr 2024 08:07:29 +0800 Subject: [PATCH 117/274] fix(auth): add utility port to firewall allow --- global/auth/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global/auth/default.nix b/global/auth/default.nix index 45e245fd..1c0572a6 100644 --- a/global/auth/default.nix +++ b/global/auth/default.nix @@ -42,7 +42,7 @@ in { settings.PasswordAuthentication = cfg.openssh.password; }; - networking.firewall.allowedTCPPorts = [ ] ++ + networking.firewall.allowedTCPPorts = [ 1300 ] ++ # utility port optional (cfg.openssh.enable && (cfg.openssh.port != null)) cfg.openssh.port; environment.persistence."/nix/persist/fhs".directories = [ ] ++ From 33595ac31703f42a31980bda4f74720e8d22d91a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 1 Apr 2024 08:26:47 +0800 Subject: [PATCH 118/274] feat(headless): add headless module --- home/headless/home.nix | 24 +++++++++++++++++++ home/headless/nixos.nix | 51 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 home/headless/home.nix create mode 100644 home/headless/nixos.nix diff --git a/home/headless/home.nix b/home/headless/home.nix new file mode 100644 index 00000000..e30334d8 --- /dev/null +++ b/home/headless/home.nix @@ -0,0 +1,24 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.headless; +in mkIf (cfg.enable != null) { + wayland.windowManager.sway.config = { + output = { + ${cfg.enable}.pos = "0 0"; + HEADLESS-1 = cfg.output; + }; + + startup = [ { command = "swaymsg create_output && swaymsg output HEADLESS-1 disable"; } ]; + }; + + home.packages = [ (pkgs.writeShellScriptBin "headless" '' + swaymsg output HEADLESS-1 enable + ${pkgs.wayvnc}/bin/wayvnc \ + --output=HEADLESS-1 \ + ${cfg.extraArgs} \ + ${cfg.host} ${toString cfg.port} + swaymsg output HEADLESS-1 disable + '') ]; +} diff --git a/home/headless/nixos.nix b/home/headless/nixos.nix new file mode 100644 index 00000000..77521f05 --- /dev/null +++ b/home/headless/nixos.nix @@ -0,0 +1,51 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.home.headless; +in { + options.home.headless = { + enable = mkOption { + type = with types; nullOr str; + default = null; + description = "a headless, remotely viewed sway display"; + }; + + output = mkOption { + type = with types; attrsOf str; + default = { + # pixel tablet + mode = "2560x1600"; + scale = "2"; + pos = "1920 0"; + }; + description = "headless display configuration"; + }; + + host = mkOption { + type = with types; str; + default = "0.0.0.0"; + description = "wayvnc listen host"; + }; + + port = mkOption { + type = with types; port; + # utility port + default = 1300; + description = "wayvnc listen port"; + }; + + extraArgs = mkOption { + type = with types; str; + default = "--max-fps=60"; + description = "extra wayvnc args"; + }; + }; + + config = { + users.homeModules = [ + # this module passes headless configuration to home-manager + { passthrough.headless = cfg; } + ]; + }; +} From 0fb1cd7e63cf2c523fc44503be84c75036a60cfb Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 1 Apr 2024 08:27:09 +0800 Subject: [PATCH 119/274] feat(reimaden): enable headless --- spec/reimaden/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index c82f1cf5..af2ca9ba 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -11,6 +11,7 @@ }; home = { + headless.enable = "eDP-1"; gyroflow.enable = true; vscode.enable = true; libreoffice.enable = true; From 2a1b5eb42f658fe67543186e2c175f889e945012 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 1 Apr 2024 08:30:50 +0800 Subject: [PATCH 120/274] fix(auth): fix allowed_signers file generation --- home/auth/home.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/auth/home.nix b/home/auth/home.nix index 4b2cfeba..ee07ceed 100644 --- a/home/auth/home.nix +++ b/home/auth/home.nix @@ -17,7 +17,7 @@ # compiled from trusted keys in auth module ssh.allowedSignersFile = toString (pkgs.writeText "allowed_signers" (foldr (key: folded: - folded + "koishi@514fpv.one ${key}") "" + folded + "koishi@514fpv.one ${key}\n") "" config.passthrough.publicKeys)); }; }; From 9e58857991668ef8c6fb76ce4c2235a7222f8765 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 1 Apr 2024 11:00:44 +0800 Subject: [PATCH 121/274] fix(web): add home redirects --- spec/web/nginx.nix | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/spec/web/nginx.nix b/spec/web/nginx.nix index ae1506bc..fa4cb3da 100644 --- a/spec/web/nginx.nix +++ b/spec/web/nginx.nix @@ -9,7 +9,13 @@ recommendedGzipSettings = true; recommendedProxySettings = true; - virtualHosts = { + virtualHosts = let + mkRedirect = host: { + locations."/".return = "307 https://${host}$request_uri"; + forceSSL = true; + enableACME = true; + }; + in { "_" = { rejectSSL = true; extraConfig = "return 444;"; @@ -34,6 +40,10 @@ forceSSL = true; enableACME = true; }; + + # redirections to home server + "src.514fpv.one" = mkRedirect "src.514fpv.io:2096"; + "cloud.514fpv.one" = mkRedirect "cloud.514fpv.io:2096"; }; }; From f23a0aa43da6c51d49330b061adba86af271db26 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 4 Apr 2024 11:55:17 +0800 Subject: [PATCH 122/274] chore(flake): bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index fd5f3a94..7a0b42bd 100644 --- a/flake.lock +++ b/flake.lock @@ -56,11 +56,11 @@ ] }, "locked": { - "lastModified": 1709336216, - "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "type": "github" }, "original": { @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1711554349, - "narHash": "sha256-RypwcWEIFePBI0Hubfj4chanbM/G2yzJzC6wgz+dmS4=", + "lastModified": 1712093955, + "narHash": "sha256-94I0sXz6fiVBvUAk2tg6t3UpM5rOImj4JTSTNFbg64s=", "owner": "nix-community", "repo": "home-manager", - "rev": "179f6acaf7c068c7870542cdae72afec9427a5b0", + "rev": "80546b220e95a575c66c213af1b09fe255299438", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1711333969, - "narHash": "sha256-5PiWGn10DQjMZee5NXzeA6ccsv60iLu+Xtw+mfvkUAs=", + "lastModified": 1712122226, + "narHash": "sha256-pmgwKs8Thu1WETMqCrWUm0CkN1nmCKX3b51+EXsAZyY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "57e6b3a9e4ebec5aa121188301f04a6b8c354c9b", + "rev": "08b9151ed40350725eb40b1fe96b0b86304a654b", "type": "github" }, "original": { From d9ff56dadca34b1e81d817dc05cfc336d894e6ec Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 8 Apr 2024 11:24:37 +0800 Subject: [PATCH 123/274] fix(auth): float Bitwarden windows --- home/auth/home.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/auth/home.nix b/home/auth/home.nix index ee07ceed..1e86f8e1 100644 --- a/home/auth/home.nix +++ b/home/auth/home.nix @@ -30,4 +30,8 @@ "sf.514fpv.io".port = 8087; }; }; + + wayland.windowManager.sway.config.window.commands = mkIf config.passthrough.gui [ + { criteria.title = "Bitwarden"; command = "floating enable"; } + ]; } From cd210a15166e02fcbc4f40f0ea21d41836627a40 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 8 Apr 2024 11:25:24 +0800 Subject: [PATCH 124/274] feat(focus): add webauthn nextcloud app --- spec/focus/nextcloud.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/focus/nextcloud.nix b/spec/focus/nextcloud.nix index 91732de1..01067df3 100644 --- a/spec/focus/nextcloud.nix +++ b/spec/focus/nextcloud.nix @@ -8,7 +8,8 @@ in { extraApps = { inherit (pkgs.nextcloud28Packages.apps) notify_push impersonate spreed - contacts bookmarks deck polls notes forms; + contacts bookmarks deck polls notes forms + twofactor_webauthn; }; home = "/nix/persist/service/nextcloud"; configureRedis = true; From 2bd724cf19aec6d947a8bb1a4039d552c35fc77b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 8 Apr 2024 11:26:41 +0800 Subject: [PATCH 125/274] feat(eientei): add webauthn nextcloud app --- spec/eientei/nextcloud.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/eientei/nextcloud.nix b/spec/eientei/nextcloud.nix index be80b390..d0a7b6a1 100644 --- a/spec/eientei/nextcloud.nix +++ b/spec/eientei/nextcloud.nix @@ -8,7 +8,8 @@ in { extraApps = { inherit (pkgs.nextcloud28Packages.apps) notify_push impersonate spreed - contacts bookmarks deck polls notes forms; + contacts bookmarks deck polls notes forms + twofactor_webauthn; }; home = "/nix/persist/service/nextcloud"; configureRedis = true; From 565103a656885962eda09089a9648a34d215d0c2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 8 Apr 2024 22:25:06 +0800 Subject: [PATCH 126/274] chore(flake): bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 7a0b42bd..de6446de 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1712093955, - "narHash": "sha256-94I0sXz6fiVBvUAk2tg6t3UpM5rOImj4JTSTNFbg64s=", + "lastModified": 1712462372, + "narHash": "sha256-WA3bbBWhd3o1wAgyHZNypjb/LG4oq+IWxFq8ey8yNPU=", "owner": "nix-community", "repo": "home-manager", - "rev": "80546b220e95a575c66c213af1b09fe255299438", + "rev": "a561ad6ab38578c812cc9af3b04f2cc60ebf48c9", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712122226, - "narHash": "sha256-pmgwKs8Thu1WETMqCrWUm0CkN1nmCKX3b51+EXsAZyY=", + "lastModified": 1712439257, + "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "08b9151ed40350725eb40b1fe96b0b86304a654b", + "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", "type": "github" }, "original": { From dd247bd85d166d9c4142daeef806ad8f86141834 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 9 Apr 2024 12:17:05 +0800 Subject: [PATCH 127/274] fix(eientei): disable vaultwarden registration --- spec/eientei/vaultwarden.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/eientei/vaultwarden.nix b/spec/eientei/vaultwarden.nix index 8e6d6d30..8e3df95f 100644 --- a/spec/eientei/vaultwarden.nix +++ b/spec/eientei/vaultwarden.nix @@ -4,7 +4,7 @@ environmentFile = "/nix/persist/service/vaultwarden/secret.env"; config = { domain = "https://vault.514fpv.io:2096"; - signupsAllowed = true; + signupsAllowed = false; rocketAddress = "127.0.0.1"; rocketPort = 8222; rocketLog = "critical"; From 501be0b107859679e8ba7c6dc20c11712e561261 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 11 Apr 2024 14:26:48 +0800 Subject: [PATCH 128/274] spec(chireiden): move trackpad workaround to powerManagement --- spec/chireiden/default.nix | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/spec/chireiden/default.nix b/spec/chireiden/default.nix index a1ea35b6..bfc15ee2 100644 --- a/spec/chireiden/default.nix +++ b/spec/chireiden/default.nix @@ -26,24 +26,17 @@ powerManagement.enable = true; powerManagement.cpuFreqGovernor = "powersave"; + powerManagement.resumeCommands = '' + # trackpad driver resume workaround + ${pkgs.kmod}/bin/modprobe -r psmouse + ${pkgs.kmod}/bin/modprobe psmouse + ''; hardware.nvidia.prime = { intelBusId = "PCI:0:2:0"; nvidiaBusId = "PCI:5:0:0"; }; - # trackpad driver resume workaround - systemd.services.trackpad-workaround = { - description = "Reload trackpad driver"; - after = [ "suspend.target" ]; - wantedBy = [ "suspend.target" ]; - path = with pkgs; [ kmod ]; - script = '' - modprobe -r psmouse - modprobe psmouse - ''; - }; - hardware.enableRedistributableFirmware = true; boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; From ec79999becedc44ae361c31768f26838fbd3657f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 11 Apr 2024 14:44:32 +0800 Subject: [PATCH 129/274] global(io): add compat to hosts --- global/io/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/global/io/default.nix b/global/io/default.nix index 1b9b6ef8..25c4f647 100644 --- a/global/io/default.nix +++ b/global/io/default.nix @@ -23,6 +23,7 @@ in { networking.hosts = { "10.5.14.0" = [ "codec" ]; "10.5.14.1" = [ "redir" ]; + "10.5.14.2" = [ "compat" ]; "192.168.123.1" = [ "netvm" ]; }; From 13c32dcf44648e71ff4101e67d89dfb4ae7fa844 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 11 Apr 2024 15:15:55 +0800 Subject: [PATCH 130/274] spec(focus): update proxy address --- spec/focus/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/focus/default.nix b/spec/focus/default.nix index 2b83d710..46b14034 100644 --- a/spec/focus/default.nix +++ b/spec/focus/default.nix @@ -29,7 +29,7 @@ ''; networking.proxy = { - allProxy = "http://10.0.0.2:3128"; + allProxy = "http://compat:3128"; noProxy = "10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,127.0.0.1,localhost,.localdomain"; }; From c027c6459f9180117507aeb156b6d34d05b88afd Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 15 Apr 2024 10:33:03 +0800 Subject: [PATCH 131/274] flake: bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index de6446de..02b7d196 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1712462372, - "narHash": "sha256-WA3bbBWhd3o1wAgyHZNypjb/LG4oq+IWxFq8ey8yNPU=", + "lastModified": 1713131281, + "narHash": "sha256-/Jm1X9MPfLXAxZSCdWmQAFNUQggEfNWHol5jSyyzFzw=", "owner": "nix-community", "repo": "home-manager", - "rev": "a561ad6ab38578c812cc9af3b04f2cc60ebf48c9", + "rev": "9f32c66a51d05e6d4ec0dea555bbff9135749ec7", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712439257, - "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", + "lastModified": 1712963716, + "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", + "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", "type": "github" }, "original": { From ac9daca0ea74642c8ae60c5a523ea09878f2947a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 19 Apr 2024 08:15:03 +0800 Subject: [PATCH 132/274] flake: bump inputs --- flake.lock | 12 ++++++------ home/gui/home.nix | 2 +- home/sway/nixos.nix | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index 02b7d196..19a977d2 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1713131281, - "narHash": "sha256-/Jm1X9MPfLXAxZSCdWmQAFNUQggEfNWHol5jSyyzFzw=", + "lastModified": 1713479280, + "narHash": "sha256-e8+ZgayVccw6h8ay15jM9hXh+sjZDc1XdBGLn3pdYdc=", "owner": "nix-community", "repo": "home-manager", - "rev": "9f32c66a51d05e6d4ec0dea555bbff9135749ec7", + "rev": "ff1c3646541316258b1ca64e9b25d4c9cca8e587", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712963716, - "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", + "lastModified": 1713297878, + "narHash": "sha256-hOkzkhLT59wR8VaMbh1ESjtZLbGi+XNaBN6h49SPqEc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", + "rev": "66adc1e47f8784803f2deb6cacd5e07264ec2d5c", "type": "github" }, "original": { diff --git a/home/gui/home.nix b/home/gui/home.nix index 5168a78c..10c81c94 100644 --- a/home/gui/home.nix +++ b/home/gui/home.nix @@ -25,7 +25,7 @@ }; # unify qt theme - qt.platformTheme = mkDefault "gtk"; + qt.platformTheme.name = mkDefault "gtk"; gtk.enable = mkDefault true; qt.enable = mkDefault true; diff --git a/home/sway/nixos.nix b/home/sway/nixos.nix index feeb32cd..44b3e32c 100644 --- a/home/sway/nixos.nix +++ b/home/sway/nixos.nix @@ -5,7 +5,7 @@ gui = with config.global.gpu; enable && session; nvidia = with config.global.gpu; type == "nvidia" || type == "prime"; in mkIf gui { - services.xserver.displayManager.sessionPackages = [ + services.displayManager.sessionPackages = [ (pkgs.writeTextFile { name = "sway-session"; destination = "/share/wayland-sessions/sway.desktop"; From 1a57ce180b488e5f0065b409e4cc47a76fb572a5 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 19 Apr 2024 09:24:37 +0800 Subject: [PATCH 133/274] home(foot): enable terminal transparency --- home/foot/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/foot/home.nix b/home/foot/home.nix index 87c6f7fa..80325207 100644 --- a/home/foot/home.nix +++ b/home/foot/home.nix @@ -6,5 +6,6 @@ enable = true; settings.main.term = "xterm-256color"; settings.main.font = "DejaVu Sans Mono:size=11"; + settings.colors.alpha = 0.8; }; } From 15715751916207fb3ebe8c73071690af0ce7f25c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 19 Apr 2024 09:27:33 +0800 Subject: [PATCH 134/274] spec(reimaden): disable headless due to scaling bugs --- spec/reimaden/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index af2ca9ba..e99cb890 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -11,7 +11,7 @@ }; home = { - headless.enable = "eDP-1"; + #headless.enable = "eDP-1"; gyroflow.enable = true; vscode.enable = true; libreoffice.enable = true; From 5cf310fbd2954db6f388025f11c6b34b5ca121e0 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 22 Apr 2024 12:54:50 +0800 Subject: [PATCH 135/274] flake: bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 19a977d2..89ed6dbd 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1713479280, - "narHash": "sha256-e8+ZgayVccw6h8ay15jM9hXh+sjZDc1XdBGLn3pdYdc=", + "lastModified": 1713732794, + "narHash": "sha256-AYCofb8Zu4Mbc1lHDtju/uxeARawRijmOueAqEMEfMU=", "owner": "nix-community", "repo": "home-manager", - "rev": "ff1c3646541316258b1ca64e9b25d4c9cca8e587", + "rev": "670d9ecc3e46a6e3265c203c2d136031a3d3548e", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1713297878, - "narHash": "sha256-hOkzkhLT59wR8VaMbh1ESjtZLbGi+XNaBN6h49SPqEc=", + "lastModified": 1713537308, + "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "66adc1e47f8784803f2deb6cacd5e07264ec2d5c", + "rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f", "type": "github" }, "original": { From c5528719bf5075d60aa75d0c7db77cfe27305064 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 22 Apr 2024 15:59:18 +0800 Subject: [PATCH 136/274] home(util): add jellyfin-media-player --- home/util/home.nix | 1 + home/util/nixos.nix | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/home/util/home.nix b/home/util/home.nix index 45d5823e..19d6eb0d 100644 --- a/home/util/home.nix +++ b/home/util/home.nix @@ -16,6 +16,7 @@ in { gnome-themes-extra xfce.thunar gimp + jellyfin-media-player mission-planner betaflight-configurator inav-configurator diff --git a/home/util/nixos.nix b/home/util/nixos.nix index 9ff31114..4e55af9a 100644 --- a/home/util/nixos.nix +++ b/home/util/nixos.nix @@ -23,9 +23,17 @@ in { ".cache/nix-index" ] ++ optionals gui [ + # jellyfin-media-player + ".config/jellyfin.org" + ".local/share/jellyfinmediaplayer" + ".local/share/Jellyfin Media Player" + # mission-planner ".local/share/Mission Planner" + # expresslrs-configurator ".config/ExpressLRS Configurator" + # betaflight-configurator ".config/betaflight-configurator" + # inav-configurator ".config/inav-configurator" ]; }; From 0ea405fa8f1e3880198125bea663c7b1de84f69c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 28 Apr 2024 09:36:26 +0800 Subject: [PATCH 137/274] flake: bump inputs --- flake.lock | 12 ++++++------ package/blhelisuite32/default.nix | 2 +- package/expresslrs-configurator/default.nix | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index 89ed6dbd..e094042a 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1713732794, - "narHash": "sha256-AYCofb8Zu4Mbc1lHDtju/uxeARawRijmOueAqEMEfMU=", + "lastModified": 1714203603, + "narHash": "sha256-eT7DENhYy7EPLOqHI9zkIMD9RvMCXcqh6gGqOK5BWYQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "670d9ecc3e46a6e3265c203c2d136031a3d3548e", + "rev": "c1609d584a6b5e9e6a02010f51bd368cb4782f8e", "type": "github" }, "original": { @@ -213,11 +213,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1713537308, - "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=", + "lastModified": 1714076141, + "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f", + "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", "type": "github" }, "original": { diff --git a/package/blhelisuite32/default.nix b/package/blhelisuite32/default.nix index d07b318b..65f3b509 100644 --- a/package/blhelisuite32/default.nix +++ b/package/blhelisuite32/default.nix @@ -65,7 +65,7 @@ ''; }; in buildFHSUserEnv { - inherit pname; + inherit pname version; targetPkgs = pkgs: (with pkgs; [ glib libGL curl libgcc gtk3 diff --git a/package/expresslrs-configurator/default.nix b/package/expresslrs-configurator/default.nix index 12cebf46..e68f639a 100644 --- a/package/expresslrs-configurator/default.nix +++ b/package/expresslrs-configurator/default.nix @@ -23,7 +23,7 @@ genericName = "radio link configuration & build tool"; }; in buildFHSUserEnv { - inherit pname; + inherit pname version; # copied from chromium deps targetPkgs = pkgs: (with pkgs; [ glib fontconfig freetype pango cairo xorg.libX11 xorg.libXi atk nss nspr From 49837d8d322d67072865e4b008d289f44ad83d9f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 28 Apr 2024 10:58:54 +0800 Subject: [PATCH 138/274] home(jetbrains): add jetbrains products and directories --- home/jetbrains/home.nix | 11 +++++++++++ home/jetbrains/nixos.nix | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 home/jetbrains/home.nix create mode 100644 home/jetbrains/nixos.nix diff --git a/home/jetbrains/home.nix b/home/jetbrains/home.nix new file mode 100644 index 00000000..90f931d2 --- /dev/null +++ b/home/jetbrains/home.nix @@ -0,0 +1,11 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.jetbrains; +in mkIf cfg.enable { + home.packages = with pkgs.jetbrains; [ ] ++ + optional cfg.idea idea-community ++ + optional cfg.clion clion ++ + optional cfg.goland goland; +} diff --git a/home/jetbrains/nixos.nix b/home/jetbrains/nixos.nix new file mode 100644 index 00000000..e0a69550 --- /dev/null +++ b/home/jetbrains/nixos.nix @@ -0,0 +1,26 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.home.jetbrains; +in { + options.home.jetbrains = { + enable = mkEnableOption "jetbrains text editor"; + idea = mkEnableOption "intellij idea"; + clion = mkEnableOption "clion ide"; + goland = mkEnableOption "goland ide" // { default = true; }; + }; + + config = { + users.homeModules = [ + # this module passes jetbrains configuration to home-manager + { passthrough.jetbrains = cfg; } + ]; + + users.home.persist.directories = mkIf cfg.enable [ + ".java/.userPrefs" + ".config/JetBrains" + ".local/share/JetBrains" + ]; + }; +} From 503896473303cccdffff14f98bfc50d2e85861da Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 28 Apr 2024 11:00:10 +0800 Subject: [PATCH 139/274] spec(reimaden): enable jetbrains defaults --- spec/reimaden/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index e99cb890..d5d80bda 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -13,6 +13,7 @@ home = { #headless.enable = "eDP-1"; gyroflow.enable = true; + jetbrains.enable = true; vscode.enable = true; libreoffice.enable = true; minecraft.enable = true; From 397c434015db092fd8e1b8f5610cb0983f93b581 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 29 Apr 2024 22:36:32 +0800 Subject: [PATCH 140/274] spec(koumakyou): init --- flake.lock | 60 ++++++++++++++++++++++++++++++++- flake.nix | 3 ++ global/auth/pub/koumakyou.pub | 1 + spec/koumakyou/default.nix | 63 ++++++++++++++++++----------------- spec/koumakyou/jovian.nix | 28 ++++++++++++++++ 5 files changed, 124 insertions(+), 31 deletions(-) create mode 100644 global/auth/pub/koumakyou.pub create mode 100644 spec/koumakyou/jovian.nix diff --git a/flake.lock b/flake.lock index e094042a..18ece039 100644 --- a/flake.lock +++ b/flake.lock @@ -184,6 +184,25 @@ "type": "github" } }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1714235105, + "narHash": "sha256-QCEp+JZOQzFWsNSs3KMCAMf4Ik+YglNdrQJXq10yYaw=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "03448a4e169d4590d21138f0ac65ab64bd1a2d85", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, "lanzaboote": { "inputs": { "crane": "crane", @@ -211,6 +230,28 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1690328911, + "narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "96df4a39c52f53cb7098b923224d8ce941b64747", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1714076141, @@ -243,6 +284,22 @@ "type": "github" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1714076141, + "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": [ @@ -280,8 +337,9 @@ "flake-utils": "flake-utils", "home-manager": "home-manager", "impermanence": "impermanence", + "jovian": "jovian", "lanzaboote": "lanzaboote", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_2" } }, "rust-overlay": { diff --git a/flake.nix b/flake.nix index 14cf472b..565ff4ae 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,9 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; lanzaboote.url = "github:nix-community/lanzaboote/v0.3.0"; lanzaboote.inputs.nixpkgs.follows = "nixpkgs"; + + # steamdeck + jovian.url = "github:Jovian-Experiments/Jovian-NixOS"; }; outputs = inputs: diff --git a/global/auth/pub/koumakyou.pub b/global/auth/pub/koumakyou.pub new file mode 100644 index 00000000..305fe6a9 --- /dev/null +++ b/global/auth/pub/koumakyou.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINJOoXrfB4D8Vi6HH4E7RqHHIWhPPqEiiOeLRfggW1XZ koishi@koumakyou diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index c6a8f17c..bda72da0 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -1,51 +1,54 @@ -{ pkgs -, lib -, ... }: { +{ pkgs, lib, config, ... }: { global = { - id = "eeb44fb1150944aab7d146b7caad789f"; - auth.openssh.enable = true; - fs.esp.uuid = "B20E-5994"; + id = "0a920a834b5f480bab258040096d4c6e"; + fs.esp.uuid = "ACB3-4AFF"; fs.type = "xfs"; - fs.store = "e8eea851-51b0-4c29-80c4-3d9358c4f3f8"; - fs.external.enable = true; - fs.external.device = "/dev/disk/by-uuid/f0e13b58-1223-479c-b673-3a8e629c7f72"; - fs.external.fsType = "ext4"; + fs.store = "6b885fa6-5c13-4a46-94da-a287232606b9"; fs.cryptsetup.enable = true; - fs.cryptsetup.uuids.nix = "84baa53a-c76d-4716-813a-196f5a53e44d"; - fs.cryptsetup.uuids.persist = "e31f8b1c-6504-4b43-93dd-997ad17ebf5e"; + fs.cryptsetup.uuids.persist = "b4a5a66d-b491-4ac7-bc71-1ea8b1a503be"; boot.lanzaboote = true; gpu.enable = true; - gpu.type = "prime"; - asusd.enable = true; - oci.enable = true; + gpu.type = "amdgpu"; }; home = { - gnome.enable = true; - gyroflow.enable = true; + vscode.enable = true; minecraft.enable = true; - minecraft.allUsers = true; - steam.enable = true; - steam.allUsers = true; }; + users.homeModules = [ { + wayland.windowManager.sway.config = { + input."1046:911:Goodix_Capacitive_TouchScreen".map_to_output = "eDP-1"; + output = { + eDP-1.scale = "1.75"; + }; + }; + } ]; + powerManagement.enable = true; powerManagement.cpuFreqGovernor = "performance"; + powerManagement.resumeCommands = '' + # trackpad driver resume workaround + ${pkgs.kmod}/bin/modprobe -r bmi260_i2c + ${pkgs.kmod}/bin/modprobe -r bmi260_core + ${pkgs.kmod}/bin/modprobe bmi260_i2c + ${pkgs.kmod}/bin/modprobe bmi260_core + ''; - hardware.nvidia.prime = { - amdgpuBusId = "PCI:6:0:0"; - nvidiaBusId = "PCI:1:0:0"; - }; - imports = lib.pipe ./. [ - builtins.readDir - (lib.filterAttrs (n: ty: ty == "regular" && n != "default.nix")) - (lib.mapAttrsToList (n: _: ./${n})) - ]; + services.greetd.settings.default_session.command = let + cfg = config.programs.regreet; + in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' + ${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2 + ${lib.getExe cfg.package} + ''}"; hardware.enableRedistributableFirmware = true; - boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "ahci" "sd_mod" ]; + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; + hardware.cpu.intel.updateMicrocode = true; + + imports = [ ./jovian.nix ]; } diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix new file mode 100644 index 00000000..69ee35f3 --- /dev/null +++ b/spec/koumakyou/jovian.nix @@ -0,0 +1,28 @@ +{ jovian, ... }: { + jovian = { + hardware.has.amd.gpu = true; + steamos.useSteamOSConfig = true; + + steam = { + enable = true; + user = "app"; + #desktopSession + }; + + decky-loader = { + enable = true; + stateDir = "/nix/persist/decky"; + }; + }; + + users.home.persistApp.directories = [ + ".steam" ".local/share/Steam" ".config/gamescope" + ]; + + users.users.decky.uid = 514; + users.groups.decky.gid = 514; + + imports = [ + jovian.nixosModules.jovian + ]; +} From 439365c8d42c8c904d0a5c9018040cf1a826b0be Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 30 Apr 2024 19:50:42 +0800 Subject: [PATCH 141/274] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 18ece039..055fe22b 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1714203603, - "narHash": "sha256-eT7DENhYy7EPLOqHI9zkIMD9RvMCXcqh6gGqOK5BWYQ=", + "lastModified": 1714430505, + "narHash": "sha256-SSJQ/KOy8uISnoZgqDoRha7g7PFLSFP/BtMWm0wUz8Q=", "owner": "nix-community", "repo": "home-manager", - "rev": "c1609d584a6b5e9e6a02010f51bd368cb4782f8e", + "rev": "f8e6694edabe4aaa7a85aac47b43ea5d978b116d", "type": "github" }, "original": { @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1714235105, - "narHash": "sha256-QCEp+JZOQzFWsNSs3KMCAMf4Ik+YglNdrQJXq10yYaw=", + "lastModified": 1714464433, + "narHash": "sha256-ztvukQ2LvrRQBtiRiut8FgCOyKXgqLTIp3Deg/OguUY=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "03448a4e169d4590d21138f0ac65ab64bd1a2d85", + "rev": "2a5194b960801b68cfc4c811eb1733cf3aa8ece6", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1714076141, - "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", "type": "github" }, "original": { From 2352c82edae840c8dd7fbba862c4ca66a51f4c5b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 1 May 2024 01:48:58 +0800 Subject: [PATCH 142/274] spec(koumakyou): remove steamos cmdline --- spec/koumakyou/jovian.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index 69ee35f3..004a33b4 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -2,11 +2,11 @@ jovian = { hardware.has.amd.gpu = true; steamos.useSteamOSConfig = true; + steamos.enableDefaultCmdlineConfig = false; steam = { enable = true; user = "app"; - #desktopSession }; decky-loader = { From 9b5df7f4cf5313d4394c6f9460be1abaada12c40 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 5 May 2024 20:52:07 +0800 Subject: [PATCH 143/274] spec(yume): enable jetbrains defaults --- spec/yume/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/yume/default.nix b/spec/yume/default.nix index 6e5d0d1f..82cb255b 100644 --- a/spec/yume/default.nix +++ b/spec/yume/default.nix @@ -14,6 +14,8 @@ home = { gyroflow.enable = true; + jetbrains.enable = true; + vscode.enable = true; libreoffice.enable = true; minecraft.enable = true; steam.enable = true; From 503f466b037d4f1fb91df19daeaa5c3591f6c843 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 5 May 2024 23:13:53 +0800 Subject: [PATCH 144/274] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 055fe22b..49dcf123 100644 --- a/flake.lock +++ b/flake.lock @@ -56,11 +56,11 @@ ] }, "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "lastModified": 1714641030, + "narHash": "sha256-yzcRNDoyVP7+SCNX0wmuDju1NUCt8Dz9+lyUXEI0dbI=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "rev": "e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e", "type": "github" }, "original": { @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1714430505, - "narHash": "sha256-SSJQ/KOy8uISnoZgqDoRha7g7PFLSFP/BtMWm0wUz8Q=", + "lastModified": 1714900398, + "narHash": "sha256-H7XYHpjk1G6dkA3AnbYrKtaTFjcCE7ul6nUVlVQxtsA=", "owner": "nix-community", "repo": "home-manager", - "rev": "f8e6694edabe4aaa7a85aac47b43ea5d978b116d", + "rev": "fdaaf543bad047639ef0b356ea2e6caec2f1215c", "type": "github" }, "original": { @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1714464433, - "narHash": "sha256-ztvukQ2LvrRQBtiRiut8FgCOyKXgqLTIp3Deg/OguUY=", + "lastModified": 1714803703, + "narHash": "sha256-4m9wG6mZR0I2d7itErhpY0JqSHomNnUdoKfkjnYp+wI=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "2a5194b960801b68cfc4c811eb1733cf3aa8ece6", + "rev": "d0799ebebfb37fd2df6409dc8da622738c5930bb", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1714253743, - "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "lastModified": 1714763106, + "narHash": "sha256-DrDHo74uTycfpAF+/qxZAMlP/Cpe04BVioJb6fdI0YY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", + "rev": "e9be42459999a253a9f92559b1f5b72e1b44c13d", "type": "github" }, "original": { From a60bb467ab62de9e6b1d312a317199d81356dfb7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 8 May 2024 15:22:12 +0800 Subject: [PATCH 145/274] spec(koumakyou): disable decky --- spec/koumakyou/default.nix | 1 - spec/koumakyou/jovian.nix | 15 +++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index bda72da0..6346244b 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -35,7 +35,6 @@ ${pkgs.kmod}/bin/modprobe bmi260_core ''; - services.greetd.settings.default_session.command = let cfg = config.programs.regreet; in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index 004a33b4..27e911f6 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -8,21 +8,20 @@ enable = true; user = "app"; }; - - decky-loader = { - enable = true; - stateDir = "/nix/persist/decky"; - }; }; users.home.persistApp.directories = [ ".steam" ".local/share/Steam" ".config/gamescope" ]; - users.users.decky.uid = 514; - users.groups.decky.gid = 514; - imports = [ jovian.nixosModules.jovian ]; +} // { + #users.users.decky.uid = 514; + #users.groups.decky.gid = 514; + #jovian.decky-loader = { + # enable = true; + # stateDir = "/nix/persist/decky"; + #}; } From 4c643fe2442f970f7516d104a94ef24ae73e588a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 11 May 2024 00:03:05 +0800 Subject: [PATCH 146/274] spec(koumakyou): boot to gamescope --- spec/koumakyou/default.nix | 16 ++++++++++------ spec/koumakyou/jovian.nix | 10 +++++++--- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index 6346244b..f9177341 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -35,12 +35,16 @@ ${pkgs.kmod}/bin/modprobe bmi260_core ''; - services.greetd.settings.default_session.command = let - cfg = config.programs.regreet; - in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' - ${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2 - ${lib.getExe cfg.package} - ''}"; + specialisation.desktop.configuration = { + programs.regreet.enable = lib.mkForce true; + jovian.steam.autoStart = lib.mkForce false; + services.greetd.settings.default_session.command = let + cfg = config.programs.regreet; + in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' + ${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2 + ${lib.getExe cfg.package} + ''}"; + }; hardware.enableRedistributableFirmware = true; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "usb_storage" "sd_mod" ]; diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index 27e911f6..1906e734 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -1,4 +1,8 @@ { jovian, ... }: { + imports = [ + jovian.nixosModules.jovian + ]; + jovian = { hardware.has.amd.gpu = true; steamos.useSteamOSConfig = true; @@ -6,6 +10,8 @@ steam = { enable = true; + autoStart = true; + desktopSession = "sway"; user = "app"; }; }; @@ -14,9 +20,7 @@ ".steam" ".local/share/Steam" ".config/gamescope" ]; - imports = [ - jovian.nixosModules.jovian - ]; + programs.regreet.enable = false; } // { #users.users.decky.uid = 514; #users.groups.decky.gid = 514; From 1cecf718b58aeb100d4bd6848119b0acc4d30871 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 11 May 2024 10:30:20 +0800 Subject: [PATCH 147/274] home(foot): disable terminal transparency --- home/foot/home.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/foot/home.nix b/home/foot/home.nix index 80325207..af10a83a 100644 --- a/home/foot/home.nix +++ b/home/foot/home.nix @@ -6,6 +6,6 @@ enable = true; settings.main.term = "xterm-256color"; settings.main.font = "DejaVu Sans Mono:size=11"; - settings.colors.alpha = 0.8; + #settings.colors.alpha = 0.8; }; } From d0ed58da5eb727b0564daf0439cbb51bf3c6733e Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 11 May 2024 10:30:26 +0800 Subject: [PATCH 148/274] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 49dcf123..b935cb00 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1714900398, - "narHash": "sha256-H7XYHpjk1G6dkA3AnbYrKtaTFjcCE7ul6nUVlVQxtsA=", + "lastModified": 1715380449, + "narHash": "sha256-716+f9Rj3wjSyD1xitCv2FcYbgPz1WIVDj+ZBclH99Y=", "owner": "nix-community", "repo": "home-manager", - "rev": "fdaaf543bad047639ef0b356ea2e6caec2f1215c", + "rev": "d7682620185f213df384c363288093b486b2883f", "type": "github" }, "original": { @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1714803703, - "narHash": "sha256-4m9wG6mZR0I2d7itErhpY0JqSHomNnUdoKfkjnYp+wI=", + "lastModified": 1715329503, + "narHash": "sha256-0JbGas4wnC4KEVclsC7QGUMhLAujCpPRwqMcLQekLuM=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "d0799ebebfb37fd2df6409dc8da622738c5930bb", + "rev": "653ade87d2918df1fff927ed6666e72d26ffcdff", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1714763106, - "narHash": "sha256-DrDHo74uTycfpAF+/qxZAMlP/Cpe04BVioJb6fdI0YY=", + "lastModified": 1715266358, + "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e9be42459999a253a9f92559b1f5b72e1b44c13d", + "rev": "f1010e0469db743d14519a1efd37e23f8513d714", "type": "github" }, "original": { From c6e1dc19e2ec6ceb333b16f190b231534939e70f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 13 May 2024 08:38:38 +0800 Subject: [PATCH 149/274] home(gui): cleaner defaults --- home/gui/home.nix | 18 +++++++++--------- home/vscode/home.nix | 5 +++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/home/gui/home.nix b/home/gui/home.nix index 10c81c94..52eac590 100644 --- a/home/gui/home.nix +++ b/home/gui/home.nix @@ -6,22 +6,22 @@ config = mkIf config.passthrough.gui { # cursor theme - home.pointerCursor = { - package = mkDefault pkgs.bibata-cursors; - name = mkDefault "Bibata-Modern-Classic"; + home.pointerCursor = mkDefault { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; size = 24; }; # gtk theme - gtk.theme = { - package = mkDefault pkgs.whitesur-gtk-theme; - name = mkDefault "WhiteSur-Dark"; + gtk.theme = mkDefault { + package = pkgs.whitesur-gtk-theme; + name = "WhiteSur-Dark"; }; # gtk icons - gtk.iconTheme = { - package = mkDefault pkgs.papirus-icon-theme; - name = mkDefault "Papirus-Dark"; + gtk.iconTheme = mkDefault { + package = pkgs.papirus-icon-theme; + name = "Papirus-Dark"; }; # unify qt theme diff --git a/home/vscode/home.nix b/home/vscode/home.nix index 6662884b..6fb4b99b 100644 --- a/home/vscode/home.nix +++ b/home/vscode/home.nix @@ -3,6 +3,7 @@ , config , ... }: with lib; let cfg = config.passthrough.vscode; + theme = config.passthrough.catppuccin.enable; in mkIf cfg.enable { programs.vscode = { enable = true; @@ -15,8 +16,8 @@ in mkIf cfg.enable { bbenoist.nix golang.go rust-lang.rust-analyzer ]; userSettings = { - "workbench.colorTheme" = "Catppuccin FrappĂ©"; - "workbench.iconTheme" = "catppuccin-frappe"; + "workbench.colorTheme" = mkIf theme "Catppuccin FrappĂ©"; + "workbench.iconTheme" = mkIf theme "catppuccin-frappe"; "[nix]"."editor.tabSize" = 2; }; }; From f07cbf3deb41918b0202d7b709d65bd60778a995 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 13 May 2024 08:55:58 +0800 Subject: [PATCH 150/274] home(plasma): add plasma-manager --- flake.nix | 3 +++ home/plasma/config.nix | 13 +++++++++++++ home/plasma/home.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ home/plasma/nixos.nix | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+) create mode 100644 home/plasma/config.nix create mode 100644 home/plasma/home.nix create mode 100644 home/plasma/nixos.nix diff --git a/flake.nix b/flake.nix index 565ff4ae..50b13ca2 100644 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,9 @@ impermanence.url = "github:nix-community/impermanence/master"; home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; + plasma-manager.url = "github:pjones/plasma-manager"; + plasma-manager.inputs.nixpkgs.follows = "nixpkgs"; + plasma-manager.inputs.home-manager.follows = "home-manager"; lanzaboote.url = "github:nix-community/lanzaboote/v0.3.0"; lanzaboote.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/home/plasma/config.nix b/home/plasma/config.nix new file mode 100644 index 00000000..207bba57 --- /dev/null +++ b/home/plasma/config.nix @@ -0,0 +1,13 @@ +{ + programs.plasma = { + workspace = { + lookAndFeel = "org.kde.breezedark.desktop"; + #clickItemTo = "select"; + }; + + configFile = { + baloofilerc."Basic Settings"."Indexing-Enabled" = false; + kcminputrc.Libinput."2362"."597"."UNIW0001:00 093A:0255 Touchpad".NaturalScroll = true; + }; + }; +} diff --git a/home/plasma/home.nix b/home/plasma/home.nix new file mode 100644 index 00000000..f5aba0a0 --- /dev/null +++ b/home/plasma/home.nix @@ -0,0 +1,42 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.plasma; +in mkIf cfg.enable { + programs.plasma = { + # https://github.com/pjones/plasma-manager + enable = true; + overrideConfig = true; + + workspace = { + lookAndFeel = "org.kde.breezedark.desktop"; + }; + + configFile = { + baloofilerc."Basic Settings"."Indexing-Enabled" = false; + }; + } // cfg.extraConfig; + + qt.enable = false; + qt.platformTheme.name = null; + + # cursor theme + home.pointerCursor = { + package = pkgs.kdePackages.breeze; + name = "breeze_cursors"; + size = 24; + }; + + # gtk theme + gtk.theme = { + package = pkgs.kdePackages.breeze-gtk; + name = "Breeze-Dark"; + }; + + # gtk icons + gtk.iconTheme = { + package = pkgs.kdePackages.breeze-icons; + name = "breeze-dark"; + }; +} diff --git a/home/plasma/nixos.nix b/home/plasma/nixos.nix new file mode 100644 index 00000000..87b551cd --- /dev/null +++ b/home/plasma/nixos.nix @@ -0,0 +1,38 @@ +{ pkgs +, lib +, config +, plasma-manager +, ... }: with lib; let + cfg = config.home.plasma; +in { + options.home.plasma = { + enable = mkEnableOption "plasma desktop and configuration"; + extraConfig = mkOption { + type = with types; anything; + default = { }; + description = "extra plasma-manager configuration"; + }; + }; + + config = { + users.homeModules = [ + # this module passes plasma configuration to home-manager + { passthrough.plasma = cfg; } + ]; + + services.desktopManager.plasma6 = mkIf cfg.enable { + enable = true; + }; + home-manager.sharedModules = mkIf cfg.enable [ + plasma-manager.homeManagerModules.plasma-manager + ]; + + services.blueman = mkIf cfg.enable { + enable = mkForce false; + }; + + home = mkIf cfg.enable { + catppuccin.enable = mkForce false; + }; + }; +} From 5aa32dd8727c29c79680b6cd9831f054d2b31a41 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 13 May 2024 08:56:11 +0800 Subject: [PATCH 151/274] flake: bump inputs --- flake.lock | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/flake.lock b/flake.lock index b935cb00..a14427c4 100644 --- a/flake.lock +++ b/flake.lock @@ -300,6 +300,29 @@ "type": "github" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714856962, + "narHash": "sha256-2te5GG8TVNBF44uMF4G0XFGW+Jt02i/ZkspSNFzjgT0=", + "owner": "pjones", + "repo": "plasma-manager", + "rev": "1554e19ede17de46106dd95820eeea05086a5720", + "type": "github" + }, + "original": { + "owner": "pjones", + "repo": "plasma-manager", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": [ @@ -339,7 +362,8 @@ "impermanence": "impermanence", "jovian": "jovian", "lanzaboote": "lanzaboote", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_2", + "plasma-manager": "plasma-manager" } }, "rust-overlay": { From ab187ece00eaa05ac877add51dd99ca4514f9107 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 13 May 2024 09:15:41 +0800 Subject: [PATCH 152/274] home(gui): set catppuccin iconTheme name --- home/gui/catppuccin/home.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix index 5d6a587a..7853f5ea 100644 --- a/home/gui/catppuccin/home.nix +++ b/home/gui/catppuccin/home.nix @@ -11,9 +11,12 @@ in mkIf cfg.enable { # gtk theme gtk.theme = { inherit (cfg.gtk) package name; }; - gtk.iconTheme.package = pkgs.catppuccin-papirus-folders.override { - flavor = cfg.palette; - accent = "pink"; + gtk.iconTheme = { + package = pkgs.catppuccin-papirus-folders.override { + flavor = cfg.palette; + accent = "pink"; + }; + name = "Papirus-Dark"; }; # sway colour palette override From e2bc23bb798a02041fd52ffc38e13b16e379fb2e Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 13 May 2024 09:16:06 +0800 Subject: [PATCH 153/274] home(plasma): enable home-manager auto replace --- home/plasma/nixos.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/plasma/nixos.nix b/home/plasma/nixos.nix index 87b551cd..8eba21f7 100644 --- a/home/plasma/nixos.nix +++ b/home/plasma/nixos.nix @@ -23,7 +23,9 @@ in { services.desktopManager.plasma6 = mkIf cfg.enable { enable = true; }; - home-manager.sharedModules = mkIf cfg.enable [ + + home-manager.backupFileExtension = mkIf cfg.enable "old"; + home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ]; From 3bfa43f31bcc8cd620862496ca95d713600a1d1a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 13 May 2024 09:23:43 +0800 Subject: [PATCH 154/274] spec(reimaden): add plasma specialisation --- spec/reimaden/default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index d5d80bda..c8ad6b7e 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -20,6 +20,17 @@ steam.enable = true; }; + specialisation.plasma = { + configuration = { + home.plasma.enable = true; + home.plasma.extraConfig = { + configFile = { + kcminputrc."Libinput/2362/597/UNIW0001:00 093A:0255 Touchpad".NaturalScroll = true; + }; + }; + }; + }; + powerManagement.enable = true; powerManagement.cpuFreqGovernor = "powersave"; boot.kernelParams = [ "zfs.zfs_arc_max=34359738368" ]; From 57db46b51fd8649c69a01a29b0067f5d7f98e5ff Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 13 May 2024 09:43:33 +0800 Subject: [PATCH 155/274] spec(koumakyou): add plasma session --- spec/koumakyou/default.nix | 8 ++++++++ spec/koumakyou/jovian.nix | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index f9177341..68dc3c30 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -38,12 +38,20 @@ specialisation.desktop.configuration = { programs.regreet.enable = lib.mkForce true; jovian.steam.autoStart = lib.mkForce false; + jovian.steam.desktopSession = lib.mkForce "sway"; + home.plasma.enable = lib.mkForce false; services.greetd.settings.default_session.command = let cfg = config.programs.regreet; in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' ${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2 ${lib.getExe cfg.package} ''}"; + environment.systemPackages = with pkgs; [ + (writeShellScriptBin "sway-logout" '' + ${systemd}/bin/systemctl --user unset-environment WAYLAND_DISPLAY SWAYSOCK + ${sway}/bin/swaymsg exit + '') + ]; }; hardware.enableRedistributableFirmware = true; diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index 1906e734..a4b705e0 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -11,7 +11,7 @@ steam = { enable = true; autoStart = true; - desktopSession = "sway"; + desktopSession = "plasma"; user = "app"; }; }; @@ -21,6 +21,7 @@ ]; programs.regreet.enable = false; + home.plasma.enable = true; } // { #users.users.decky.uid = 514; #users.groups.decky.gid = 514; From 1574d0ec2ee8c60d9ccd99474cc8e9517df12ba6 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 13 May 2024 11:39:48 +0800 Subject: [PATCH 156/274] home(plasma): set wallpaper --- home/plasma/home.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/home/plasma/home.nix b/home/plasma/home.nix index f5aba0a0..ce5fdef6 100644 --- a/home/plasma/home.nix +++ b/home/plasma/home.nix @@ -11,6 +11,15 @@ in mkIf cfg.enable { workspace = { lookAndFeel = "org.kde.breezedark.desktop"; + wallpaper = ../../share/54345906_p0.jpg; + }; + + hotkeys.commands = { + launch-konsole = { + name = "Launch Konsole"; + key = "Meta+Enter"; + command = "konsole"; + }; }; configFile = { From 5cc668f93c55df16cc92c26472dfcaa2a04a12d3 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 10:20:46 +0800 Subject: [PATCH 157/274] home(plasma): add specialise option --- home/plasma/nixos.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home/plasma/nixos.nix b/home/plasma/nixos.nix index 8eba21f7..7616fd7c 100644 --- a/home/plasma/nixos.nix +++ b/home/plasma/nixos.nix @@ -7,6 +7,7 @@ in { options.home.plasma = { enable = mkEnableOption "plasma desktop and configuration"; + specialise = mkEnableOption "enable plasma in a specialisation"; extraConfig = mkOption { type = with types; anything; default = { }; @@ -36,5 +37,9 @@ in { home = mkIf cfg.enable { catppuccin.enable = mkForce false; }; + + specialisation.plasma = mkIf cfg.specialise { + configuration.home.plasma.enable = true; + }; }; } From 0dfd3bb736371e0d2cda89cd322c6305214b50e0 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 10:20:58 +0800 Subject: [PATCH 158/274] spec(reimaden): enable plasma specialisation --- spec/reimaden/default.nix | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index c8ad6b7e..447d1f8a 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -11,6 +11,7 @@ }; home = { + plasma.specialise = true; #headless.enable = "eDP-1"; gyroflow.enable = true; jetbrains.enable = true; @@ -20,14 +21,9 @@ steam.enable = true; }; - specialisation.plasma = { - configuration = { - home.plasma.enable = true; - home.plasma.extraConfig = { - configFile = { - kcminputrc."Libinput/2362/597/UNIW0001:00 093A:0255 Touchpad".NaturalScroll = true; - }; - }; + home.plasma.extraConfig = { + configFile = { + kcminputrc."Libinput/2362/597/UNIW0001:00 093A:0255 Touchpad".NaturalScroll = true; }; }; From b5616da21cc045f383ef91aad94697c7e3b800e9 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 10:21:10 +0800 Subject: [PATCH 159/274] spec(shinkirou): enable plasma specialisation --- spec/shinkirou/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/shinkirou/default.nix b/spec/shinkirou/default.nix index d93f5920..c2c87fd6 100644 --- a/spec/shinkirou/default.nix +++ b/spec/shinkirou/default.nix @@ -14,6 +14,7 @@ }; home = { + plasma.specialise = true; gyroflow.enable = true; vscode.enable = true; libreoffice.enable = true; @@ -33,6 +34,12 @@ }; } ]; + home.plasma.extraConfig = { + configFile = { + kcminputrc."Libinput/2362/597/UNIW0001:00 093A:0255 Touchpad".NaturalScroll = true; + }; + }; + powerManagement.enable = true; powerManagement.cpuFreqGovernor = "performance"; boot.kernelParams = [ "zfs.zfs_arc_max=34359738368" ]; From 8d01e58cd50dcff645b8d2d95de14eb44802a31f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 10:48:16 +0800 Subject: [PATCH 160/274] global(io): reduce firewall spam --- global/io/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/global/io/default.nix b/global/io/default.nix index 25c4f647..7d70afe7 100644 --- a/global/io/default.nix +++ b/global/io/default.nix @@ -27,6 +27,7 @@ in { "192.168.123.1" = [ "netvm" ]; }; + networking.firewall.logRefusedConnections = true; hardware.bluetooth.enable = mkDefault cfg.bluetooth; hardware.pulseaudio = mkIf cfg.audio { From b0f6e568350bced892df6173e5f8ef790fd1f447 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 11:20:51 +0800 Subject: [PATCH 161/274] home(plasma): disable home-manager cursor and unify image --- home/plasma/home.nix | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/home/plasma/home.nix b/home/plasma/home.nix index ce5fdef6..09920f4d 100644 --- a/home/plasma/home.nix +++ b/home/plasma/home.nix @@ -3,15 +3,16 @@ , config , ... }: with lib; let cfg = config.passthrough.plasma; + image = ../../share/54345906_p0.jpg; in mkIf cfg.enable { programs.plasma = { # https://github.com/pjones/plasma-manager enable = true; - overrideConfig = true; + #overrideConfig = true; workspace = { lookAndFeel = "org.kde.breezedark.desktop"; - wallpaper = ../../share/54345906_p0.jpg; + wallpaper = image; }; hotkeys.commands = { @@ -24,19 +25,15 @@ in mkIf cfg.enable { configFile = { baloofilerc."Basic Settings"."Indexing-Enabled" = false; + kwalletrc.Wallet.Enabled = false; + kscreenlockerrc.Greeter.Wallpaper."org.kde.image".General.Image = image; + kscreenlockerrc.Greeter.Wallpaper."org.kde.image".General.PreviewImage = image; }; } // cfg.extraConfig; qt.enable = false; qt.platformTheme.name = null; - # cursor theme - home.pointerCursor = { - package = pkgs.kdePackages.breeze; - name = "breeze_cursors"; - size = 24; - }; - # gtk theme gtk.theme = { package = pkgs.kdePackages.breeze-gtk; From 61a88dff790febc8adb72dcd487a14a595ce3081 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 11:21:11 +0800 Subject: [PATCH 162/274] spec(shinkirou): configure plasma inputs --- spec/shinkirou/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/shinkirou/default.nix b/spec/shinkirou/default.nix index c2c87fd6..95864bc6 100644 --- a/spec/shinkirou/default.nix +++ b/spec/shinkirou/default.nix @@ -36,7 +36,8 @@ home.plasma.extraConfig = { configFile = { - kcminputrc."Libinput/2362/597/UNIW0001:00 093A:0255 Touchpad".NaturalScroll = true; + kcminputrc."Libinput/1267/16857/ELAN9009:00 04F3:41D9".OutputName = "DP-3"; + kcminputrc."Libinput/1267/12962/ASUE140F:00 04F3:32A2 Touchpad".NaturalScroll = true; }; }; From 543e37ca95e6f7b923b18934223f7d14aa23e732 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 11:26:39 +0800 Subject: [PATCH 163/274] home(plasma): persist display output config --- home/plasma/nixos.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/plasma/nixos.nix b/home/plasma/nixos.nix index 7616fd7c..f3f8a2ba 100644 --- a/home/plasma/nixos.nix +++ b/home/plasma/nixos.nix @@ -21,6 +21,10 @@ in { { passthrough.plasma = cfg; } ]; + users.home.persist.files = mkIf cfg.enable [ + ".config/kwinoutputconfig.json" + ]; + services.desktopManager.plasma6 = mkIf cfg.enable { enable = true; }; From 5528b19d444b51a0cf7892ef246289d253176863 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 11:40:32 +0800 Subject: [PATCH 164/274] home(plasma): do not back up gtkrc-2.0 --- home/plasma/home.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/plasma/home.nix b/home/plasma/home.nix index 09920f4d..9426be7b 100644 --- a/home/plasma/home.nix +++ b/home/plasma/home.nix @@ -31,6 +31,10 @@ in mkIf cfg.enable { }; } // cfg.extraConfig; + home.activation.gtkCleanup = hm.dag.entryAfter [ "writeBoundary" ] '' + $DRY_RUN_CMD rm -f $HOME/.gtkrc-2.0.old + ''; + qt.enable = false; qt.platformTheme.name = null; From bdd4df968e9de44aaaff1f77a2700653af4f66c7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 11:40:47 +0800 Subject: [PATCH 165/274] spec(shinkirou): add Xwayland scale --- spec/shinkirou/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/shinkirou/default.nix b/spec/shinkirou/default.nix index 95864bc6..4eee2b0c 100644 --- a/spec/shinkirou/default.nix +++ b/spec/shinkirou/default.nix @@ -36,6 +36,7 @@ home.plasma.extraConfig = { configFile = { + kwinrc.Xwayland.Scale = 2.25; kcminputrc."Libinput/1267/16857/ELAN9009:00 04F3:41D9".OutputName = "DP-3"; kcminputrc."Libinput/1267/12962/ASUE140F:00 04F3:32A2 Touchpad".NaturalScroll = true; }; From 82ef5d1848f3ce41709fb6c7f525f7d1603834d8 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 12:14:12 +0800 Subject: [PATCH 166/274] home(plasma): persist wallet --- home/plasma/home.nix | 1 - home/plasma/nixos.nix | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/home/plasma/home.nix b/home/plasma/home.nix index 9426be7b..7c329a8b 100644 --- a/home/plasma/home.nix +++ b/home/plasma/home.nix @@ -25,7 +25,6 @@ in mkIf cfg.enable { configFile = { baloofilerc."Basic Settings"."Indexing-Enabled" = false; - kwalletrc.Wallet.Enabled = false; kscreenlockerrc.Greeter.Wallpaper."org.kde.image".General.Image = image; kscreenlockerrc.Greeter.Wallpaper."org.kde.image".General.PreviewImage = image; }; diff --git a/home/plasma/nixos.nix b/home/plasma/nixos.nix index f3f8a2ba..5920abe5 100644 --- a/home/plasma/nixos.nix +++ b/home/plasma/nixos.nix @@ -23,6 +23,7 @@ in { users.home.persist.files = mkIf cfg.enable [ ".config/kwinoutputconfig.json" + ".local/share/kwalletd" ]; services.desktopManager.plasma6 = mkIf cfg.enable { From f69ede8bc4981f203b8370a50a23e81110342c54 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 12:14:35 +0800 Subject: [PATCH 167/274] spec(koumakyou): allow network management and xwayland scale --- spec/koumakyou/jovian.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index a4b705e0..efc34d27 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -20,8 +20,14 @@ ".steam" ".local/share/Steam" ".config/gamescope" ]; + users.users.app.extraGroups = [ "networkmanager" ]; programs.regreet.enable = false; home.plasma.enable = true; + home.plasma.extraConfig = { + configFile = { + kwinrc.Xwayland.Scale = 1.75; + }; + }; } // { #users.users.decky.uid = 514; #users.groups.decky.gid = 514; From 72fe2723e5171c28f805e34c9a09ded15f4bb73f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 17:29:54 +0800 Subject: [PATCH 168/274] home(plasma): fix wallet persist --- home/plasma/nixos.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/plasma/nixos.nix b/home/plasma/nixos.nix index 5920abe5..b1a642cc 100644 --- a/home/plasma/nixos.nix +++ b/home/plasma/nixos.nix @@ -23,6 +23,8 @@ in { users.home.persist.files = mkIf cfg.enable [ ".config/kwinoutputconfig.json" + ]; + users.home.persist.directories = mkIf cfg.enable [ ".local/share/kwalletd" ]; From 58aa58a078631426d5d3e760bcfe8c70ec1a30f8 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 17:31:05 +0800 Subject: [PATCH 169/274] spec(yume): enable plasma --- spec/yume/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/yume/default.nix b/spec/yume/default.nix index 82cb255b..da31ff9e 100644 --- a/spec/yume/default.nix +++ b/spec/yume/default.nix @@ -13,6 +13,7 @@ }; home = { + plasma.enable = true; gyroflow.enable = true; jetbrains.enable = true; vscode.enable = true; @@ -21,6 +22,12 @@ steam.enable = true; }; + home.plasma.extraConfig = { + configFile = { + kcminputrc."Libinput/16700/9486/Dell Computer Corp Dell Laser Mouse MS3220".NaturalScroll = true; + }; + }; + imports = lib.pipe ./. [ builtins.readDir (lib.filterAttrs (n: ty: ty == "regular" && n != "default.nix")) From 33b0f3301a66135ed5cdd8c338296812d677dc10 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 19:59:29 +0800 Subject: [PATCH 170/274] home: fix profile icon installation --- home/picture/app.png | Bin 33957 -> 117007 bytes home/profile.nix | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/home/picture/app.png b/home/picture/app.png index 6cbfd8a25af580442438dd3135c94b6b98317975..bd1b86c3048ae6f5767cc29316bf1a74678cc5d1 100644 GIT binary patch literal 117007 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⪼JcGtEy?1oldmvsI%{brIhO9< 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%0AZJB>=-rUKn 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 literal 33957 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%0Aw7U5lX8$22pt?9Tdx$MIhvrFG> z_0*SL*1Q+7YuQ2#t{^F~2}!)QZ#;J%+|eiU<$gS9QpqqmJloT7qLWIioRfLanYHRd zFOv`7`!?s@GhVyzo9&N_|NCj5zI(u-oqPwH87UAJYL zUD_nmFP4G%xsO+MbsWt`TnB z{PTa)_q2`EV!zM4pYL1!-uTYXYcXrI#MA?qXxyA;8ofHYvxn!Nv%M^LE$Y9` zn%Z-FLzPTj#JpeKlXtum{e52I`{MI<|KHo!#!Homw4`vQFszj}5uIYa=il7?kJt0# zp8xFsuO|QN!t;);e%;Nh7+-h3*fy!4r$%=f3%BpI)GxoScoW;61l(|O>^ZvHq-4fR znIne$#Zvs6)fTxPFj*m>(ZR#OIkEEQ10Q*1Mp0SAiW=n~YNbt9OgA3dcbvcYPW8oy z(`^EKHk%b*4`K9Zvb?CVM>LClD__pMTaQ-9|K+;>=hpQTH7UDae7^C_%r?2=qyD~A z+WNJ#Bf{5w;VN3pd2sPmC6AQ2s}+J>54mpLN`1Efg8U1n1~;Y-j+VBF-bTx90zJ&L zgrtL4-g7b7v_YNA(=hPr+Rq8h*5;KT@BiPw=jXHRn4Q1$Zbi)6mCCnJRs6`4&?{-W zv&y=I#NKz7JyUj@bN0paS}FOu_6#J$)r_NSJZ)#L9&` zjb%UHx~hHV)TFIbL!CHo+?lYJZ%5s4Hg@ap3$-@xQ#5Y#kydf3xvNrcVd9$Kur1G$ zVcUdHfBR=MEICv+?R(Jtc-Af530fV(9iLS$h#wYY?BI3t;xXQG=EBC9WtYC+t6>fe zpJP+YRml8pdBUfomv1~hwbb=t#&%Y*Q^(mj8ncWRuVNB(4f}GUnz?6Vi$L)Hdoxv} zp4z$`JnFG?fAcK43;m|rVH;l+Rp}j%>b^Ej;=oLupL!;YvZgNHJ*<`YV%ue{m@X_l z%-*;A{k}5A76*Y#_x5jG;B)HS9`$Y3-?!%fII`USXt4ZGgZ7Py>*o~~mmJvpk@2}+ z?1P!=a_O6|ANODWV%4!02V4EjS!pYEAI$OI_f1Cg{kCnU|1ZYd7&?SbTPc~Z%)Wj7 zr&IBNC9m)ME@Wanfh)=3IG1uUk1$Vg&y<(t`x;Mup8LM0ea(r&?AbDIXU*expUYS% zv&3X$Xhg^ouR~564!4vTZ!Pf^Sbfp8?Nreoj&sjUN*8d-ejf z#JcLG;^(ZkGRfYJZ_X_@aoHfa*j6hn!fBI{Soi6!cTR6Uc=xZHaP{GIzJA-!+4dDb zwd=pkTqSsIyPt8s%`&bv-@|X(&nVou-Sh63j^5{==l|E8x3^$k{eSoW=H}~Sl>57m z`_FrFdH#PH`Cl*GXI>Yz6iJJ(BvchlcD(tnQZ zDASpJS8z>e%8USq?G^Is8ni zme6gHFz`*7AgVFl&^^F#LG@mf`U@3dVQe9nou_0hn*VskOUrH}sra)euN(EeE-v8M z+H@=8(J2AlLn(C!s?G=8;L4S*64T3q`j{#;qUP+-QL=Uc<~o!ct^hxhZ!r&oSu#{D>Z|KY2()^}_ymi)hA zxk)%ZlWld+ssrclMt?b@44yV6gzrE_?;Tda`wv0JcaSw?yw+mOU>v#Qu&GNO4%T~_l*UsGC@{3aoz^Ix;`g;pDyt=q6~82>=%>IH;GyRo$B(56wtXN{Yz(g%lTyS=SlJiQrQ@=pvA~;Y?%JTOY ztF<_AG)`WA?t%&L%#%CnAM?fkFOOfgXRmkO_8G^W|2?(;fB#2y^Z!}t_P-6?b}R4u zoF4ylcKs*yH5!Nio~)gvw0wKvtmX6T+E&dg{(mm^+xKq=*sqzHS#GS=%9Uv0IHnr- zU*Phr+vg4Ix=);+ukeRwa!;2>hi40Ca)fnx*Yo+cv)=FD;%sY~P`km^a{i}h+4rAp zxTh#BQIZ!KExEy}W)io!{^1-Jv!I;3gkP)ItjjgJ)OO5Y^4qnQY4cWJzo%+0dOp5F zhV_byt=dyD6BSJ+*Y}Rj98Nq7Ton%*%Y5m0+VMhtPUOqt-_`3s{LQany}7@6SM~I0 z^Yum+^^>aK?>Q&@TUFftqiaorfG$_FXnRZ8_duO%UoUJsV#P00BAyJXMI4~p^yn_WA1|jA7&zLC6?i>ftg!Y^ypYtiZ|{>&Y?f2h`q0$(V9sJ5)t#I?HLiQg z4@lR4T)yY`t9YX|%jaA>q$z2b!DCg&U%=l;BU{&91ghNM!Yc3H>+*Tp@) zN`V`rS>Ap)-Ji$3;IO{zIh%iXZXc8IX_>pb{KOVV&4X+CZtN)O+MaH`=f}D4J9brb z`#-qJ-T(2>PVY6>Cf0;qHh%f-Y08-w3H{dF^FADtUVmBs3&RUuc8S@B66+RKxoR0n zU$46G+NAPdu^Q9Pm&@qFx#6T#}|H#Qxf_-00b zx_(rU!Z*VQF@47-u=@5Ll|23MA!F;+9Fexw`g>2DoxcC%t}~IPqJHK%c{~9RC%j#_ zXwQGW_`i$m&;I$B8)n=sG>N@ILaMRSbn&O)Sp^;`_hLI_cX5FV785hSxx1GI&Of;& z@%^>fC95thJKw1;|2X{LKk=J|`o-U$wVW28_elQV^8M#0FZcg=*Z!Z;zjt=?D;`Pi z`x<`#fW+A)GRd3gY)(JFXiAdN%m=DLrlu^4uSGqX!X|x=ce&uDx^(yc-XqaZrfWR- zUvSmo^|j|Wt~)F_p|f!1%F~iwCaVvd^1bF=+S zVv&y@%bxW!uT)=2^<8Z|1tM|A%$_58HWvZ=^eDn*HYEnmy0>ihzv;y9LKdmJ`RrQZ>wcmbHh3y6$Jc z6{!?3O?9@kbjx4cS83-;tWphL2&PrDymrj?Nj&*#&f#WF9{&fQOb=TU)!tR+2enYMdkXP^~~b-|1Isleyi;+!0o38I~0~Mx*fDEKjZYigF}alnd{#2 zs~ zd(WS*>p%V#kAL*$<>n{X3}YM{JBaBGkB(4v9Lcr)$|ODwr!2g6XX4VfB$C!HIl*UaY4sD>n%=_EB?$`mU$s+ z@sy>X8h3HBEWfdLzjtgH&!?tCoQkiFFBLc}k>tC%QYwuj*yi=64MMEXncWmj<|%Xu zi0^&I;icRyxJX;A8e4j7$REyzVh#S_d69Y*WbLYxzqe} z&$D)$uPgf(z15QHKHdHF+gvlQTpgCPHFn1(TDP&;Y8dR5d0n*Zv*heZd4Y5G{{!#+ z`ggyeK5X;d=w`J=Thpud8;0i>6)LAN6|4we~IFwr;%3@&9Dgr{;~(>gIb^1bFGse_ZR?@a%b> zMZulR4$OkRX^OjVOMUEMw0XbhH{armdWRbqhr7IccQ;ifNR#|;zy4j+k9Ml z|6$3-bKCFlIeMFY;=g41q^~XtpLyAh9^bkfdrma?-My;mYo{unx2x;BzHaZVrZsGL zeO8=0uweVawz#Kfz9oOTqSYuT9RDz9UYLRD5e_!yxQ*L4`}ZtZ@fEg4KJOk zXD$9-X}?+b$ue*Mzv~ri8|8ME{ZLAmGk#|_v3vSFrTEy#33l$8y&f*B54`!%&^*^V z<70|g)!(VJ?@qn(aJuYWF^BeeD<1Q0dCdt^RNF-6@Ny|998p-LA$>miyv^a_`F~Bm z-fAdc-hPMEG_AUK?eTMu*Rp0C99z(HFshq>)0B#VPJzTygt8YDz zOeRNGZosOq5)~=T4HI1|<<_tqam`y$e4^@s^81+T=?6C)PnfYd=78nVmBHx|vA5MG z6#x5}{^N#v{p5SMD&P6qT<7hE?JITqRG$M1C#Rf;omV`qH& zJ7rn_F#**EF~4~>r`P{Gr5;$-aA@I@wF_3TO-Q+MMef7FgNlY3E(dnW@OLS+jqEZm;Dufb8&I~Go|@|F5Pckp)J? zfhPt0Yo#{j{af!G&iLZO!;1;O&m`aPHC#0HphjyLm+pe*Lz&GNr)55V`IJ@u_apHM z5ryAxnYPVVkF+eGw%qQ!=925`KXwF6Rn@YX<9EaM#_``BL6WOiXFoaD7!;Wa@==GH#DTzf6-+{V#%t#77vhEc8i%$W z_OQT4t?Pl&@n5f`Uhudq76@p%v|xgn!@m~_byIG>PId7=cz=s;U7eBAhvH@#W#(V) zFBlnnu1yfF`DVWF!2Z48%@X4#M{2Bb{Mj@$>A>E-ZJX34vOc)-jf=hR%$tAFb7XlU z-=^QWy}R|K&Equjx$OJC#Q$TIew}_}|4#1vcN5poxfCpF=F|Dr&R5gs|3!Z1dJkdS zseL9{hjNNeWbHe4VeQgPF8zc_92XYprt~PTD&d>FDQU+$bnMcgO7bp)z~=yaYeDGcBUeXP5?y2rd`hxbDQaQMIMYWzyTuc?o}Z(6-ln|C>;A)D z^ZjnqMDKj=x@G>tSiSOV+Jf!RBI0A!0|Mq(b-nfHlX&m{BDMI~_j^a)?>T(zrQQC2 z(eW(0SE4jDD?dMbeW&KT*7NInA6K8RW$I`#Q`Y}wX{cAz#Jq8(;N=CpCU!zomR_{{ zJvF^_$I)j?MX!abm{0rkspae0$ud>v=l*p*lfZFnu?i>uONo`~!9ADGNT2_ehm)-4n~D6r9M zF$>cso^N@I-;|u986wiY1|IZ(&c38CluhB73Hyi1FIfN7H0`e|IPpP(`NHvz2BB6y zt}TyWKChdbU;A2B<(kHH!7#HOv5x;wazB|q|H0aqwfFY@WBdMY@7bI^$D{TyoYOPG zYxCCHNt>iTpM8JV@mH5x#Qd`73`Q{9p%N9!mOBc*LH&LKdaNm#kKbPyj z?*H?!{(5W+w61LQtNs!?l_kz#Rz%etGmBh_>!!BCjSE&m z(^Z?NGEUxfM01AU@+XykGgvq6age?)_1{9JYD%DnNN>J@*?&&s|KERX-!p&4g~KTi zp2x~wIQ`gBHF@rb3!i^UobX{wdXaB`?)~3?^{2b*e?Gr6bIO_RdVzDS&wu+ld5_K9 z;@@}Q7gZGW#`s2@Y&rDw%UuCw=RHL%%1>sdJ$lCSdPlLvqq@qe_l|L|nPYc$>hJIf z*N-2c+xg_`)_+rvfA;L2-rn8$1ut8>*UY{D=*qp!W7pO0?5J-3yj)Kp^T7EXh0oQt zu0O%ivh0|7@uquPo3q@Oi9TYEicGrlByzr5OUbQu=lA$oPmkQ+|9#>LrJbiazVck0 z7jVr(*wSXsf~|?Uzpre4#{_8u%L&G$2?{zro_YScfbA)rs#k)GP1qkB9=^(W$~kl@ z&z8joZ3c4%Y81k|Zl2@Qx_(AIna%YR(+rzWCwBS+}mI=y|s&uw9T`KJS;r{>@({b_@Q?+W(|1xH#8pd8e}4cnU=SgvtR6cmaysk-oL+R95Py~Uh~-c zeoIYX@P=KcDl=xy>bjHF!Sz_@me#Cgif-p$B^
EST*vRbeD(Mx+Kx7)TW&J&c| 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 diff --git a/home/profile.nix b/home/profile.nix index d14f39c4..4a00bf32 100644 --- a/home/profile.nix +++ b/home/profile.nix @@ -144,6 +144,26 @@ in { home.stateVersion = "23.11"; }) cfg.profiles; + system.activationScripts = mapAttrs' + (name: opts: nameValuePair + "${name}-profile-icon" + { + deps = [ "users" ]; + text = let + iconDest = "/var/lib/AccountsService/icons/${name}"; + userConf = pkgs.writeText "${name}-config" '' + [User] + Session= + Icon=${iconDest} + SystemAccount=false + ''; + in '' + install -Dm 0444 ${opts.picture} ${iconDest} + install -Dm 0400 ${userConf} /var/lib/AccountsService/users/${name} + ''; + }) + (filterAttrs (n: _: n != "root") config.users.profiles); + # set up standard persistence for users # this is registered internally for each software's configuration environment.persistence."/nix/persist" = { From 111e14cd2b62a9b9835b7506fb626dd209fdc4f2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 20:02:58 +0800 Subject: [PATCH 171/274] spec(koumakyou): disable autolock --- spec/koumakyou/jovian.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index efc34d27..500f11ab 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -26,6 +26,7 @@ home.plasma.extraConfig = { configFile = { kwinrc.Xwayland.Scale = 1.75; + kscreenlockerrc.Daemon.Autolock = false; }; }; } // { From 9725a37086c01438b3d0f0167c5d84882e7ea95b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 20:03:10 +0800 Subject: [PATCH 172/274] spec(yume): disable autolock --- spec/yume/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/yume/default.nix b/spec/yume/default.nix index da31ff9e..9d0dec00 100644 --- a/spec/yume/default.nix +++ b/spec/yume/default.nix @@ -24,6 +24,7 @@ home.plasma.extraConfig = { configFile = { + kscreenlockerrc.Daemon.Autolock = false; kcminputrc."Libinput/16700/9486/Dell Computer Corp Dell Laser Mouse MS3220".NaturalScroll = true; }; }; From 703454fdca29e7824a3f82d115c6d7c40d14f2b7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 14 May 2024 20:10:30 +0800 Subject: [PATCH 173/274] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index a14427c4..32408568 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1715380449, - "narHash": "sha256-716+f9Rj3wjSyD1xitCv2FcYbgPz1WIVDj+ZBclH99Y=", + "lastModified": 1715486357, + "narHash": "sha256-4pRuzsHZOW5W4CsXI9uhKtiJeQSUoe1d2M9mWU98HC4=", "owner": "nix-community", "repo": "home-manager", - "rev": "d7682620185f213df384c363288093b486b2883f", + "rev": "44677a1c96810a8e8c4ffaeaad10c842402647c1", "type": "github" }, "original": { @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1715329503, - "narHash": "sha256-0JbGas4wnC4KEVclsC7QGUMhLAujCpPRwqMcLQekLuM=", + "lastModified": 1715417624, + "narHash": "sha256-Wp3vGZRQYVrEveB9UXXZRDvRFrkw6rXXXLxj/6sbg7M=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "653ade87d2918df1fff927ed6666e72d26ffcdff", + "rev": "8fef078acb3206be58ae5892a32d6ed75b695647", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1715266358, - "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=", + "lastModified": 1715534503, + "narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f1010e0469db743d14519a1efd37e23f8513d714", + "rev": "2057814051972fa1453ddfb0d98badbea9b83c06", "type": "github" }, "original": { From 0941d18dc69e8dcd14df37343551a6ff02165636 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 18 May 2024 21:57:57 +0800 Subject: [PATCH 174/274] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 32408568..65c58a95 100644 --- a/flake.lock +++ b/flake.lock @@ -56,11 +56,11 @@ ] }, "locked": { - "lastModified": 1714641030, - "narHash": "sha256-yzcRNDoyVP7+SCNX0wmuDju1NUCt8Dz9+lyUXEI0dbI=", + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", "type": "github" }, "original": { @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1715486357, - "narHash": "sha256-4pRuzsHZOW5W4CsXI9uhKtiJeQSUoe1d2M9mWU98HC4=", + "lastModified": 1715930644, + "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", "owner": "nix-community", "repo": "home-manager", - "rev": "44677a1c96810a8e8c4ffaeaad10c842402647c1", + "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", "type": "github" }, "original": { @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1715417624, - "narHash": "sha256-Wp3vGZRQYVrEveB9UXXZRDvRFrkw6rXXXLxj/6sbg7M=", + "lastModified": 1715922002, + "narHash": "sha256-FSUrne82MXFzZ7R88ZnJz21kv06GS2TS/Ctsd+RXbP4=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "8fef078acb3206be58ae5892a32d6ed75b695647", + "rev": "23a55d6bb80f6340d0acdb9feef754646b68f895", "type": "github" }, "original": { @@ -254,11 +254,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1714076141, - "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", + "lastModified": 1715787315, + "narHash": "sha256-cYApT0NXJfqBkKcci7D9Kr4CBYZKOQKDYA23q8XNuWg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", + "rev": "33d1e753c82ffc557b4a585c77de43d4c922ebb5", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1715534503, - "narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=", + "lastModified": 1715787315, + "narHash": "sha256-cYApT0NXJfqBkKcci7D9Kr4CBYZKOQKDYA23q8XNuWg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2057814051972fa1453ddfb0d98badbea9b83c06", + "rev": "33d1e753c82ffc557b4a585c77de43d4c922ebb5", "type": "github" }, "original": { From f2b4a662c7e6b59f066187b32b88543462411b4f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 20 May 2024 08:34:37 +0800 Subject: [PATCH 175/274] spec(eientei): nextcloud 28 -> 29 --- spec/eientei/nextcloud.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/eientei/nextcloud.nix b/spec/eientei/nextcloud.nix index d0a7b6a1..dd1c00a6 100644 --- a/spec/eientei/nextcloud.nix +++ b/spec/eientei/nextcloud.nix @@ -4,9 +4,9 @@ in { services.nextcloud = { enable = true; - package = pkgs.nextcloud28; + package = pkgs.nextcloud29; extraApps = { - inherit (pkgs.nextcloud28Packages.apps) + inherit (pkgs.nextcloud29Packages.apps) notify_push impersonate spreed contacts bookmarks deck polls notes forms twofactor_webauthn; From da2fb2a9c95a62dd8ceaa397b781f41616da7434 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 20 May 2024 08:59:26 +0800 Subject: [PATCH 176/274] spec(eientei): add nextcloud maintenance window --- spec/eientei/nextcloud.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/eientei/nextcloud.nix b/spec/eientei/nextcloud.nix index dd1c00a6..51af4cf0 100644 --- a/spec/eientei/nextcloud.nix +++ b/spec/eientei/nextcloud.nix @@ -23,6 +23,7 @@ in { config.adminpassFile = builtins.toString (pkgs.writeText "password" "initial_password"); settings.overwriteprotocol = "https"; settings.default_phone_region = "US"; + settings.maintenance_window_start = 17; caching.redis = true; phpOptions.upload_max_filesize = "128G"; phpOptions.post_max_size = "128G"; From 893340ae2b9628ae3c3981bd16102e333c0b696b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 20 May 2024 09:00:57 +0800 Subject: [PATCH 177/274] spec(focus): add nextcloud maintenance window --- spec/focus/nextcloud.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/focus/nextcloud.nix b/spec/focus/nextcloud.nix index 01067df3..7b9c3b82 100644 --- a/spec/focus/nextcloud.nix +++ b/spec/focus/nextcloud.nix @@ -23,6 +23,7 @@ in { config.adminuser = "koishi"; config.adminpassFile = builtins.toString (pkgs.writeText "password" "initial_password"); settings.overwriteprotocol = "https"; + settings.maintenance_window_start = 17; settings.default_phone_region = "US"; settings.default_language = "zh"; settings.default_locale = "zh_Hans_CN"; From 2924558db707b19da2bc2ed819608d39f5967b6d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 20 May 2024 09:01:46 +0800 Subject: [PATCH 178/274] spec(focus): nextcloud 28 -> 29 --- spec/focus/nextcloud.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/focus/nextcloud.nix b/spec/focus/nextcloud.nix index 7b9c3b82..6c9debc0 100644 --- a/spec/focus/nextcloud.nix +++ b/spec/focus/nextcloud.nix @@ -4,9 +4,9 @@ in { services.nextcloud = { enable = true; - package = pkgs.nextcloud28; + package = pkgs.nextcloud29; extraApps = { - inherit (pkgs.nextcloud28Packages.apps) + inherit (pkgs.nextcloud29Packages.apps) notify_push impersonate spreed contacts bookmarks deck polls notes forms twofactor_webauthn; From 60084cfedfbfe4e21c51807ee92cd308e5f049b7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 20 May 2024 09:18:26 +0800 Subject: [PATCH 179/274] home(jetbrains): add go compiler --- home/jetbrains/home.nix | 2 +- home/jetbrains/nixos.nix | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/home/jetbrains/home.nix b/home/jetbrains/home.nix index 90f931d2..637dc689 100644 --- a/home/jetbrains/home.nix +++ b/home/jetbrains/home.nix @@ -4,7 +4,7 @@ , ... }: with lib; let cfg = config.passthrough.jetbrains; in mkIf cfg.enable { - home.packages = with pkgs.jetbrains; [ ] ++ + home.packages = with pkgs.jetbrains; [ pkgs.go ] ++ optional cfg.idea idea-community ++ optional cfg.clion clion ++ optional cfg.goland goland; diff --git a/home/jetbrains/nixos.nix b/home/jetbrains/nixos.nix index e0a69550..e2d01f60 100644 --- a/home/jetbrains/nixos.nix +++ b/home/jetbrains/nixos.nix @@ -18,6 +18,7 @@ in { ]; users.home.persist.directories = mkIf cfg.enable [ + "go" ".java/.userPrefs" ".config/JetBrains" ".local/share/JetBrains" From 7a637dc987e0ff85ee12a7c52d782dc76ef84f62 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 22 May 2024 21:11:06 +0800 Subject: [PATCH 180/274] spec(koumakyou): set console font --- spec/koumakyou/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index 68dc3c30..186d5e10 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -34,6 +34,9 @@ ${pkgs.kmod}/bin/modprobe bmi260_i2c ${pkgs.kmod}/bin/modprobe bmi260_core ''; + console.packages = [ pkgs.terminus_font ]; + console.font = "ter-v32n"; + console.earlySetup = true; specialisation.desktop.configuration = { programs.regreet.enable = lib.mkForce true; From 0420878a328ab07084a00b1779608216fefae9aa Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 22 May 2024 22:10:06 +0800 Subject: [PATCH 181/274] spec(koumakyou): add kodi --- spec/koumakyou/jovian.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index 500f11ab..2a20be30 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -1,4 +1,4 @@ -{ jovian, ... }: { +{ pkgs, jovian, ... }: { imports = [ jovian.nixosModules.jovian ]; @@ -18,6 +18,7 @@ users.home.persistApp.directories = [ ".steam" ".local/share/Steam" ".config/gamescope" + ".kodi" ]; users.users.app.extraGroups = [ "networkmanager" ]; @@ -29,6 +30,17 @@ kscreenlockerrc.Daemon.Autolock = false; }; }; + + home-manager.users.app.home.packages = with pkgs; [ + (pkgs.kodi-wayland.passthru.withPackages (kodiPkgs: with kodiPkgs; [ + joystick # keymap steam-controller + #controller-topology-project + libretro libretro-2048 + libretro-fuse libretro-genplus libretro-mgba + libretro-nestopia libretro-snes9x + jellycon + ])) + ]; } // { #users.users.decky.uid = 514; #users.groups.decky.gid = 514; From d6811693bd5d51ac5aa3091f3827e2063f0be2e1 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 22 May 2024 22:10:13 +0800 Subject: [PATCH 182/274] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 65c58a95..73294af6 100644 --- a/flake.lock +++ b/flake.lock @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1715922002, - "narHash": "sha256-FSUrne82MXFzZ7R88ZnJz21kv06GS2TS/Ctsd+RXbP4=", + "lastModified": 1716274466, + "narHash": "sha256-upoklExLKqq6LiZTLkaVK5LcBdl/VIiW7kZ8g2vdqhw=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "23a55d6bb80f6340d0acdb9feef754646b68f895", + "rev": "3516515f04e8ab8339a5d1eefd8f051b00d7c362", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1715787315, - "narHash": "sha256-cYApT0NXJfqBkKcci7D9Kr4CBYZKOQKDYA23q8XNuWg=", + "lastModified": 1716293225, + "narHash": "sha256-pU9ViBVE3XYb70xZx+jK6SEVphvt7xMTbm6yDIF4xPs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "33d1e753c82ffc557b4a585c77de43d4c922ebb5", + "rev": "3eaeaeb6b1e08a016380c279f8846e0bd8808916", "type": "github" }, "original": { @@ -310,11 +310,11 @@ ] }, "locked": { - "lastModified": 1714856962, - "narHash": "sha256-2te5GG8TVNBF44uMF4G0XFGW+Jt02i/ZkspSNFzjgT0=", + "lastModified": 1716145823, + "narHash": "sha256-S2cfXdWCRf6Z+Gas6GN1kMSYqG01583uuJKITDVQp0o=", "owner": "pjones", "repo": "plasma-manager", - "rev": "1554e19ede17de46106dd95820eeea05086a5720", + "rev": "5db76cbb4d66231769cd8939472ae00c55c24a44", "type": "github" }, "original": { From 94ae33a7a0a2939357c79fae821c7cd7b840017f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 25 May 2024 16:03:26 +0800 Subject: [PATCH 183/274] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 73294af6..c200f9f5 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1715930644, - "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", + "lastModified": 1716457508, + "narHash": "sha256-ZxzffLuWRyuMrkVVq7wastNUqeO0HJL9xqfY1QsYaqo=", "owner": "nix-community", "repo": "home-manager", - "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", + "rev": "850cb322046ef1a268449cf1ceda5fd24d930b05", "type": "github" }, "original": { @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1716274466, - "narHash": "sha256-upoklExLKqq6LiZTLkaVK5LcBdl/VIiW7kZ8g2vdqhw=", + "lastModified": 1716618639, + "narHash": "sha256-H3kcJDVqDmXZ9IfVtqObL3JUx/a0ERn6gWBTn+7vwN4=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "3516515f04e8ab8339a5d1eefd8f051b00d7c362", + "rev": "a358c56a163b3b7d149571e853a8f75b2c1ceb38", "type": "github" }, "original": { @@ -254,11 +254,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1715787315, - "narHash": "sha256-cYApT0NXJfqBkKcci7D9Kr4CBYZKOQKDYA23q8XNuWg=", + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "33d1e753c82ffc557b4a585c77de43d4c922ebb5", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1716293225, - "narHash": "sha256-pU9ViBVE3XYb70xZx+jK6SEVphvt7xMTbm6yDIF4xPs=", + "lastModified": 1716330097, + "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eaeaeb6b1e08a016380c279f8846e0bd8808916", + "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", "type": "github" }, "original": { @@ -310,11 +310,11 @@ ] }, "locked": { - "lastModified": 1716145823, - "narHash": "sha256-S2cfXdWCRf6Z+Gas6GN1kMSYqG01583uuJKITDVQp0o=", + "lastModified": 1716497069, + "narHash": "sha256-R8tGjY7wUKWY5O3iZiy1gyg0+8pdXcOeP3RppdKgLLM=", "owner": "pjones", "repo": "plasma-manager", - "rev": "5db76cbb4d66231769cd8939472ae00c55c24a44", + "rev": "6d697a8dd6d0699bce69424dbed55184212ff21a", "type": "github" }, "original": { From 573ce0d8e6e3af96787957ef8c03ea8802fb3d67 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 29 May 2024 16:10:21 +0800 Subject: [PATCH 184/274] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index c200f9f5..00f39f08 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1716457508, - "narHash": "sha256-ZxzffLuWRyuMrkVVq7wastNUqeO0HJL9xqfY1QsYaqo=", + "lastModified": 1716930911, + "narHash": "sha256-t4HT5j3Jy7skRB5PINnxcEBCkgE89rGBpwTI7YS4Ffo=", "owner": "nix-community", "repo": "home-manager", - "rev": "850cb322046ef1a268449cf1ceda5fd24d930b05", + "rev": "a9b36cbe9292a649222b89fdb9ae9907e9c74086", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "lastModified": 1716509168, + "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "rev": "bfb7a882678e518398ce9a31a881538679f6f092", "type": "github" }, "original": { @@ -310,11 +310,11 @@ ] }, "locked": { - "lastModified": 1716497069, - "narHash": "sha256-R8tGjY7wUKWY5O3iZiy1gyg0+8pdXcOeP3RppdKgLLM=", + "lastModified": 1716902607, + "narHash": "sha256-jShqpVupP/7ksp6gCBVG9/05zYSX8Q+z6eGe9HLYtUs=", "owner": "pjones", "repo": "plasma-manager", - "rev": "6d697a8dd6d0699bce69424dbed55184212ff21a", + "rev": "4a255e5ea6bf2c7815d893a693c5c801d835ba6b", "type": "github" }, "original": { From 11fb5b49212ff793d880bda8edaf15565487f53a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 30 May 2024 17:18:26 +0800 Subject: [PATCH 185/274] spec(shinkirou): use plasma by default --- spec/shinkirou/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shinkirou/default.nix b/spec/shinkirou/default.nix index 4eee2b0c..9f4ff76f 100644 --- a/spec/shinkirou/default.nix +++ b/spec/shinkirou/default.nix @@ -14,7 +14,7 @@ }; home = { - plasma.specialise = true; + plasma.enable = true; gyroflow.enable = true; vscode.enable = true; libreoffice.enable = true; From 242a87bedb4523c374e6d725f5d5505911cf7e7f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 30 May 2024 17:19:18 +0800 Subject: [PATCH 186/274] spec(shinkirou): add mouse natural scrolling --- spec/shinkirou/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/shinkirou/default.nix b/spec/shinkirou/default.nix index 9f4ff76f..a0464ab6 100644 --- a/spec/shinkirou/default.nix +++ b/spec/shinkirou/default.nix @@ -39,6 +39,7 @@ kwinrc.Xwayland.Scale = 2.25; kcminputrc."Libinput/1267/16857/ELAN9009:00 04F3:41D9".OutputName = "DP-3"; kcminputrc."Libinput/1267/12962/ASUE140F:00 04F3:32A2 Touchpad".NaturalScroll = true; + kcminputrc."Libinput/2821/6523/ASUSTeK ROG GLADIUS III".NaturalScroll = true; }; }; From bb17130b0922acc175605a4ddbb24bb767d36abf Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 30 May 2024 17:21:41 +0800 Subject: [PATCH 187/274] package(tubesync): temporarily allow obsolete dependency --- package/tubesync/nixos.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package/tubesync/nixos.nix b/package/tubesync/nixos.nix index 53628cf2..8681edb9 100644 --- a/package/tubesync/nixos.nix +++ b/package/tubesync/nixos.nix @@ -179,5 +179,10 @@ in { ids.uids.tubesync = 101; ids.gids.tubesync = 101; + + # package is local-only, will allow this for now + nixpkgs.config.permittedInsecurePackages = [ + "python3.11-django-3.2.25" + ]; }; } From 228113a72ccac3d64fb60e5abf5499cdff18091f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 31 May 2024 11:08:29 +0800 Subject: [PATCH 188/274] home: improve profile pictures --- home/picture/aux.png | Bin 0 -> 116701 bytes home/picture/koishi.png | Bin 241517 -> 97456 bytes home/picture/staging.png | Bin 21235 -> 100938 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 home/picture/aux.png diff --git a/home/picture/aux.png b/home/picture/aux.png new file mode 100644 index 0000000000000000000000000000000000000000..8262154f8a11815913f5a529364457256e2deb40 GIT binary patch literal 116701 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
  • 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 diff --git a/home/picture/staging.png b/home/picture/staging.png index 4de219ed6ff4ee4ebf1fb60feaf864d99290f232..1702e24e66b82e2b673746c810ad27d443746e0d 100644 GIT binary patch literal 100938 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 literal 21235 zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelajGTu6=ZO!M^AV&Gt4VBlh4 zU}RxnWB{vTU_@dwF)}kSGcYi;F)%O)F*1YIfYeDbvVz$?3=9m?Q1%oC1_lkN8jyvC zj7$u?3=9l&7#J9g7?~JE7#J8wnOaN2eOZWfq?@Ibr>1ICclIl$A|S)rgP zKP@vSm4TsRPVGcnkHY~Xt^Sw2T(!8$1YS;9Xm!)oRVG`sD?srI*IKI?d%p0`l9(hS z?tXCVg9qo6t{yxZ8O|Q=DDa1|u&f}cWTMb}Z!X=WJs&FMpWiL6cyH&BacxFg>!gNd zx6{n#3Vm)BHT=`XkR;*4kvKE**cz482hs80ulSZue-Qbvwmxis)D{T=fzHWi400cp zK6>eU`@tT6nN-n8RXcS#^OsFW`eVXv>K@0GMLw7rXgqzca-UH5Q@yZVGeUiOE4nP! zWm!GtuIvvz7d>Zd)ZDG_PsU4VzB=t4vs~0!iaVl(MUd;&ibZVFoVQAYbW&d0Jbf%* z_*ZDBNKxp)6Nde~853gdf5`utw>EUvoDY+fG#5NST4?9i_(AVNmc_a68y|1+Yj|K> zu(bS-v~R+*$zR;uyX6^~Zyz{X>K^>9;k0bRkCPL8Z%%F6(h|g3VZS(Ei@|xj!~Ip} z+rL@*$v4QH)hcF|kzq+t zIX_n~F(p4KRj(qq02E;iHue<-iOJciB??KY>6v-9O7C~?S5nAKu~iB;^)>JvhzmDRN z%7Rq=pw#00(xT*4*Rs^S5@lo~Qj+2N3rdS}z}`to)=$kz%}vcKDb_dCGeofxl;hw! zKtYh6nOgwXRgqhOqOv424G~x?&Dvm`TvBm<*l-82(R3tbb#L}OjcB+E2iW6KniRP5GCF`0PryA)dnIxI(S|%qa8C#kp8dxSL zBN^del$oBHmzaa>Dv(hrnJHH0rk3W0iH6C#X~srLx+X@Z2D*u9CI-4`My6(#Ddxs0 zh6WI$Qj)FQ@{4j4OKg=ga}(23^$YUS!FGTG+{!V)(^kny&j2A3kds)FmS2=>tK^fJ zS6YFP2+7P%4K7Ipg{Gmoff>jz#>QsmmPUr=2t{G3Ma7xpaO5?vBYQf-wGkdR0FdlQ&iK7^V3So6N^$E(^KrJwSm@zcK^dVlf(Fc_oFdy6KV}uDr0a77j$E5%f3vzL@~ z4`Lvw)S)GY#sw{{P*51Pgrx8t4X)APA}It&QaqZvMuUr_5FknMXzHR`aB(5JQ>l3= zwo2tn_I8K;bLKNJFt8?NMQ zuIw)uWdzuHZFcRx#K54y;OXKRQgQ3e-O4HV!fT)Z{JwYp*PE{@v%*(;{Z2alDNj2t z;?jde(*)+m5~Gxvo=%rle4UCW&0F$YpuEb%%0Q8`WdqBsglRq;$IKF%KQg&Z60e-B zd;8X!t5K^%maeLrS2gW^+4KG&kMnalO>VH=u8DhoW#Ze#!K#1P&42&>_wMi2?^y*$ z!DtAKq!5@m-)){;W5)^p=k|NQmv7(uYwCKReS0fEFRqeOQc}_ndjEUwean)s-f^$a z$w?Njmge1lgg?f9$JDD`yHl=meLuecceJ0sXIw@P$dLW-R&ncU+MYh8nmna;{+`PV1J@;W&uM*TlO4A9$*I%p6DlfZ*p%xmvGx02 z_2=vTda3l} zB~9M?dm1(_UA$y(Pf&1J*Zx?)a(%?H?d9(SdqhPUl$6ewuiyQ~X#4+@ zbA5Pt1GN?iwzZsl__eAcvupbEoS5xx)AM%qSa5k-<+ic6y*#U%@My*|LzSm9g0B_c zb^ph8`F_IZbFp2U7cn`wJo)+R)Ya8@zkGb$!_OaVG|eqW=@j=NrR7f)Vj~hB?=p?q zm?_LWRchUd4{P18d26(*K8xmN`D(Y!O17)2SD9Pa?$gfmldfmq`TNB0XjJ9Bja4j4 zpDw@guY1qGuOe^jyFWk0UbDMPY_Q`^?!45Z;QR5CTx5Bp@AQ}hqTw-)Th||Rns%YM zPp?nqL&OK!D@vb~5*7F~bhku2tp4+Ab)2t(<rO{87K)v<9g!yLm0)n{}}PS$oC@=gEN zak*!g;hK1(W72W|xcp?TPOOhDUfab0j@!uvhk4ES{ht5-XKDDpGk5Dg`(D}8a4?Hk zp8Z^4mlD(YcAe!H!=L}@eO~l$=ktvzB`pW40xWEjKlU87U~g6aQd5(DVzLPHk-(Pr zg>mbO{v9jcnREI4hYQWOf7svuzHfSl$djK=uY;661wWOy|10_ZA%ES3pDTl>{GHHf zk)-g!&{O=pV}@>HV`J9T;%n<4&-wa##Wb%SI>(& z%z8LS`9sZ`X212_oHaK0FU*?#ytCH-V))9UPfwPxInFcR!lIyLFZ%C`{ojSZFTY-= ze5Q(LT2h;r>MxxTo|bhBtnK?fg~Ie=Pq|8)Z_2vKvNfplK*Mt`CLKApPfXLF&N!5~ zR`pBGCY{3)%^U41rfKwbo>E=rcfR2K-|rs}F!L8=Wpy2FWPG>d>uk~9HXHd2Eiae2 zFLm!@_rKfsr&T|I-${*)O`=DOC9`e%l9ac6Q#FpHY9=c$jww3$b4`p{<8v7i)}`vR|H^d(6uDBtM63^Ze&);&x8j zeBP>i<3&NIY(u@{sjP3)x(z-QTyxqO!4i?ZVP1Q2pUP=Xo91+#mBk`YY-&GAl;_+$ zbTIhx6t?yg*`|Lqj%a@E29*iV@2&rHC;E=Ad3~#>@?oBCVI_td$Q97W#)-%-J|2 z=tT4F?Vk^PYtQ^@w5Upcok&pb6;IhYwdZ!`+}-HRtgOZ0;xbP=|7ZNVqUiT~<{tE# zxwM)2#uD!d;!`$!i7GC+Eqkp;|M{fPdI={_aBPk0z3~0yLh=iRVpO|vGd1N^L-a{_q{cH6?kCP*Vmr2d~2pZ7H8ddg5zU^nccBe z@whXeJ{C@D<&$i?Gvj@3_a__vY~9xAJJ0jiEWMc(^j==!bg@`f?5VAGlWZPeS(&-- z_XFoQmOJM2xGxPn-X^%TiZ^gD5p1(g_2sGhh5Y&VPHj5I zu;uoQpR7`G4lh_umM`x-JfU=Tc+s^}S9!kkKN3xNn{;dYwYv8c>#(F~TBS#tNKp|Sb-?fX8<^39*4vSM0ilZ3Qe2>UP18t={5m5&?T&nh}= zn*S_!{~zx47c@?OZmkM(ed7A?)oH!*{=55od9}lW4BNUkUa|4M_%?8f?4tweXFolS zDY#eJ!^fALxbfoo&l=}M7{oNXn5L)S*XHU;KiPHkaP6z+W}owCg{PdFGsEWO^nWke zsv2~sDt_o#Eh=^R|D->+S$)oLwpA&XdU3FEe zonJoj?yb!x9*ZOy1Sh6no+=*uMyyX};loN3uT-sT%09+k5_{tMqeKd?&APfKdiSh{ z4<8<_{geLg>FLikg?sNCFRAP+e0S!TefqZ_;!oBoXiR-kB7A5cm;akvXXlpJPv6;U z_S9?YiuL_F*7Hldm2B2C<2hmLyj&yWYY?BD^}%g_e~V5{{8oscC*jwx4)$N3%<{pVCl59B8KxA@ zR9^nv!lrmuczpF+x87+PYz{6@A`3o?@B45>{_k^ptMt0Mc~5)UgnzKi<=ZI!fZ6p@ z@{0WjE2Yn+o$Y#h#YTm=aq zHn5#r!*bze$%^Z*RXm-x-&XBV`e197=`~O7PSNe{H@4Q>&ot!e?RAuBd@p?DV$!Gg zrG|+P4|&x6d?$)-`1$ep)IZR`xBut=zy0@>cKb8OIzvOcnl?-q7H2i{=2&}Flr{OV zb4=Ai)-{nEW%%7EE@e5EB$Iyc_rv;_zki;8{(0F(y-R76lDe<)s$Q$f#+PfJ&#SKZ z(y7j=CA#Xc^ORq|PV8;qaeuX7a=Ob^qq`=LPulM0^h(|K?%v`XTHvCT_x;ba<-5+; zyqO%ct4_D~%;GsuzdV&&61(R>a^k|1yS8TUe00fMGV996f*;o=eXnY%YbZVX|9tsY z5w@b_0ye9?a>q7@Xqo!?%}+YL?RQ1W@yB0yc>`Bn=gbP_y031^_J={3<%!s`XVEtM zvemuSkL`T?@NL&>aD(V(!Q1Tkr|<>ysYg1MKiSOT*S@~y$)92~ zBQv8O&7w_9+%s$!9a!!m-v7Ncukg}-i_fbKPbBLE}jl%0ME5f{% zWOfx>o|BwYyu;X=;hdBVTeMbTQd(Qo+GA(_$ZW5BJzK`EY|g@^-Wv;j?t~w8RXnSr z$oMF0s^6rd7cT_;{LU9#6b=8hQ#wDyW~#VIF0;tQ=S%bNe(Zg?l)1FL;JKV$#LlkL z!;3>M^*s6_lbW3|*Y50r1o`K4w>O6WdvkiFi{ji?vA_qy62;F<_BZ)0Z~iI2?7wWl zjHCML3fm2C=UtYNdUA64w+~14>t{M2_rG9n)D*6jcv|(AtKYNAFLMsN37+Gxc(l@X zj*acv(Dl{5llJdX$P{nruz6qeN4WlR-P2rq{~0NBc9-!oSFmvBX4Q3wyX$OuCLt^P z?2+&EO?hXtsu{$KQ6&u_Hlo*O_!3oxA6y^Yf)8|j_04=*)UPXEiJ9kzbS_6y5e zw%>S}&vUF%^V3n=f5#Gg6wh+yJeZtf8PUHYXxZ!~XU?9V9CbQ2dfSHL`*x3tI)6P- zs9V{iJN3m*nf)=#CZ~UyvzUYF-Om4Ze=HuIRJOVu4^9=@an)DP?{eR_yLIA*Bd;a~ zx}6U7xulw1uF=kzx%}*;i-~b%PepZNjofa%7GhUa)BbQS=d*EZbj&dUYHpSjn_$fW745lEM;%x=sQNsM)zxIE|1jz(|2eKUe261d%O z@}IcebD^r6aqWr5`j_9zuQixHIrqR-aPAiOJhA0}BA254xBOm-ueFz32XoQ9kcT4 z!#5WVU$MGmdc{~w>+cCtk##y>bgpgljwg@0C12$yT$*#DBIM7E3z0q#&+Yj+`>1~Q zfz1iFTsmuUjsA_H4)Bce{6fU)b)^tGFt3B|m@C;~7^Z#HwOGA->o5pgN6 zyRk}M`r7=Xsk7_aE^I$@{)|yX{sU|0?OPqzhAqDQy5{}a`;nU~X3uZDBN@bH^n63& zk;m2F3hp=a8{W-%sv2 z$N$;)@zd(iO=w)AxN*)r;NTHnElOpi_6=rNx)RQ}5G z%i8&DzO34K)cpTH$3F%Orl+T``>Q)S^7I*}ZrSQ@0Y4P;YhFj+|Gr%Q--r6Yb@kKr z@0S$6e7Co{V?`7Y-=UL+Fr|$n!O!EGo*Lr@Yv**M`9O(8o zVPoTXERn8b_CZn0@P6C@7RKVaeEfFbB$|_x@9YmhTleYF)0cuBC;Bhz@B0<{Ze_dt zvrVSiFJ&#=78lG|^xT)cUUt#=^TN`C%}<`?{@J=>vj_y^mc3fnOmP}UYa5*{CH0FwMZRVNwrTlPOm4XbLyQw*zi^7Skx!ux&N+7iCNiZO_i#g z7Wm*pQ-^GI+2+dIX3r+e*(OJ51hq}mS$J)QvH5)^4yIRMtkev|6IA? z|3%j)mS4l`f7O*=e*V9)tFh=E2Uojqb;@47g{^Qv8_m5sqo_yuk@0V$kPxndH zGB=;mGts>M%cD1S-}PhNN@cPZ2VRCv@7CKt=ltD@=A=b`u3Qjm=&(tz`)yK^j`&#g6k9ll_?7QYkRZ|gTl<%-b?%kGz3RMK*>$pbk-~vT8kcyApZV@D=#y#RYIiNZrv4Yi_+>l2P%S{mYQILGtfzO4~5*BbxUul+gu=!R4s*0#7=hTAVZdhl^^PTd1Wxx0J2 zM%g>RPjuh#bcXrfzi*d*um8||_x<Y(Q5KU4V~ z?`q#!-~S`_d2(>YTRqeB%LS)%eiGTQ@xhld(rc+m@ws1{cYL_hdqvyy)>^fN@&R2+ zn{<@DgBEEVFrTL4$>70V{wzrTz;}ar=RXQhw)yj-Y+l7H&0CBvTcwzL>$Ik7owJ;D zDDa13<%7$|46ncbbf8bx<*Sr6zs#@3jqhLI|Ks+ScYSSau(CGTIimajzANA5zU|)O zkITOq3%KZLUe9zB4ZDQ^10Mz-hqHtkG!lbMmg&KP4>&mnSo;Ue8`v_FKMwPEK9lj)u;t=8HSprmODA z;}1{y@-gke3=gYx4_qR_!c0{88 zO+}EQ{}UciyHx(9eeJu=d1XbPb}jz>{o>3yDO)ZbkBFaZXRqK9{NhW;n$(H~^EY2x z|Fo&td{fp@E}wTVwnhDjaC$sZg|kj#-pzaA3AOz89}Y$p$z(o!k;eJ=u<{$bf`;gQ zrPjxnEnms^C3xNUKxwH(*$4Ee7Fw1}W=Yq*yC~uPMrE6CSK`#JtxvrDP1ft5(kw=S ziRq7m<$q21{pjm;y}jMo()w_v{pQZ~_kQLcwGtF%Q2OMv=Y4tI@!FT4;};m4 zyJy&5)00iU(ytNeu}k)ZQJYk$+O(ccMM-m>dQT7POS)7h-qmEl!`akebAJE!bMw<# zkLkp{n*8`gmyABgfzL0WX;$;gJo&c!ecG;@DH%yJ!mcb!jS9EAWiRZNZ+#*$CqJ{S zTE?bu%Fevm#rpeZ=+`|>J8B7W#-Duq|M_=w&F}hLd~Fo7&d|!@z^Q|ZpH2q1xc2et zFgyQU6S1-B<5F*lOp_P-;V;gaz3f)1$uB%*e_B@U%gNrzJ?sqpuMf*|!|eYDTcs?sm$Nyuu`UB$Usf0=!@KHvHM;#-sMmg_N}+3fy) zj}Pb(28|J&KVljl`}E!J*VZ96{TKIHB`Y6p;qzI3+9539TkS7*wupU2lHTgaUcO!} z6w&QloRrK_RB-cA^!~3*IU*CJooA&_`7>k5ZRMp4Hn8b`i1Y}OyZw_TdRy+|*-x*u zv#*}L}vi**#k6vxxyY%P7{eNBNyZO4XHgwo9=hvJR zefMwe_aJ7yn9XdPn9f`LT4j1EZL*^DhP))n)z{W6iCZsxl+p1)^4g=RnoAXy+|3cJ zW?UN7X`_20w(S> z8*|lOy~t_7-AQ_pyZbsHCc3$~bu40dEy?scu}ArQaY5e+egnQqDhE^ZK32t_KmOUK z%Cqsa&Ni9Cnr9->a+Mu-+4&L{brdb`UlDRllK*veMV&|A;@jRCrMJ$Av+~Q_IDg=X zMR;uKRcX5~3;8vFcCTO%m?(c$H-7KKUH5-|z5nC!n=hHuu4I9F6AF5PTXrv*tGCaz zr(gf^o6yw~@8uV)4_YSEo__94yv+ml;0K$I{{6F5BQECud80==d;&#EtZnxkQ2*}y zN8`!L<@2B2YnOX);)#kGkH+_}f}vh5g)>{@nm#hmd4BO^a8UNlIhIG0tG^lSdnog+ z_J!h6i~Elrb+Fv{{DpDbopO72 ze)*(=63)Me4?kJAz(6kY-G`^i?zZqA? z_x$36u(beHdGlnezZd-%w$4bi)!M4%?5u2&?0H!xxwa?vj@}Jju4T8m-&oajuulKD z>H5B|*Y>|%j~YyrpLkVSVB-4wC5KB-v;EpP{ZF`A+X`#%9Tyf)5pBuzJ8C>$YjpJ-O5L$%!HMEeCXI^@FdeI~NcY$@=aBJ^1CL*<47U06 zAFqpxhNsA=<4fpCsxUQj&$05Vn&wf&3)P8ahlI^|G(DX_nckz ze{|l?R0m~k&>-l~@IMdV|8M;L<$hg@fp?_6*|~_F{N+{C+$1J$i@u_jYIA=>=H;V4 zK0X3b&bnF;pYvTly&^>GOlqu5_wheftT&X7TYOl1^t0IZcT0~=2zbCWUwHH8oZI{6 z+W!9jux9?psjFwaFXQk^<*4=3*LmP-xHM~O*z(gGPipeXS)Q8I$r)F6HPrk6>-azM z$4!gCm2vwQ@&8Z%@+I$hyv}-O`seZpbHj5UTb(T17u;Q(ryKfub6Qf<#*K*|5=vfb zJk1jA>Nzm;=<1ryOy@smEY*DKmHP4Q{@DV*#JU%rkg1cH@U-uU#h;?i!@-m9)ZVX^ zv8tPswb*a#y#)o+7KmK-66#2f(px$?U7+oa{U4L#YRfIE4_n^Z7J0S~;*?Lf_y5X% zCmsLW>T8tz^5upQB~`B#Qnoh zCGFVc+o#Xnc}AVX;8?&CNs+z-#@)9Wxtl*SS5>z4D)Y^^IJoV&+~b!kJ$?54XnW7f zSi98f_;SBMxr_}DjG~SOw#fO*-8lc`Oy;_plioiko%qDB`}xCGbv#TK96drnGNtJ>i-=cC3Nc1MTvPg%BdS@X+1c=ucW!G)8a zkM^w`!ai>TNEh2 z7ag;Y{lD`hf9(h6!xN3yNJM*?YE3M)_L*yS^3qc8gUxZPdwqkv;tqV-IGN|_>NE3f zPA=otdveNmdQghyJnaQ1KCEp|7r*~yE$e-@C$77G9R9>~Ki(!v<)m?w!Lc85XUk>_ zFZVBgK229)JV8ZsnE}gEqqmC^cHMq-P`&(ux!Iv)>+c$Foi^?^ zwoDVn*9&}ZJXbUM>0<88U>I5c9x~FlS`l|JHA>+G$@5(d3T$PlR zStR5#9)N_GMZ7^|;^1j@$j^|G&XyvHGVwmjVwc=_l!(|G1XD(oKTp z!S9N73tp&|SaFA(7R`Ff6&LX6${QWcpGk+~Rgy?pLXJItj2;%xnM1GdJ$kL1FisoBuPYr}-J~s$r5ouHx#KXuBw=^H4<8 zT)nmDWQ;xCu5Zt=-*P?Y|BpD{IUQ*XE>GOQPPG4@|L$VD+@m?A*_<(b;TE6b#9u4) zIq5uTXS}PT=-GXA_P3^n9U+T$ZgAKcvM5IH;iWmt`DN2mGGGmmvbXJ)u`Hbw`}s}xU=bb<&;Mf`y0N! zu{nIzDss8|JnKbn^1A%{YOZg$xG-y3G^fSf^1_Kr*T*fr{Cd*^qgx9TS8YCE+i!nJ zcD8x(gBO8^vgEHeItnFkES%{VcHwi)A2)mVXU{7N?&oPKAFlbmZ!N4Z^6St2+Ecmp zUj&ye^9vN|zWZ}$aZ90OP5;enOf$FM*m3B}9UJbwdS}xn8}Mkls#eWyxzMjM{q&bl zO}8#6L~1@-U4HlA%Q*2vB|vUy6Y$x=h3rq4FB_R2ktntFL{<-8j|Rq|^t zZ>@Q{I{x>*lmB1G@87!WqDW=liceyd6Mr3;AM-r#*CqSFZ?$1PJ%SO=+wU&B{Vt)l zKW^3~->Qmv#~tE(EqXX?=jSbVmT3zRDcPNS>gf!n^O~)UXKzOK$yyv)9rv$D&-T4j zmrCmGZMmS-9P_}?Xxo&=gN{X;D?BEAX11#Id&q8KpYZ$KTp#o2m9MT$N$T(5Vi2rc zx98KR(|68vPR_A;onsSjP@FZZY_n_ag82(%imS?|{oHA3_4#v-O}4FbbMun7dTQr6 z|28Ojf2j2i6zM*wbUtE6eo@sYk@fXovrp`b-S=gwzTvKto_~#uT3@Z+nk=2279#!k z$5NroYsEg_)!WT4bD&#ko4n0}9m=0<7Q`|r=_mbvH~0U$U1y`sHWyvh>XWhc(myK^ zZFX={XR3)?+e%)Zptr9V7f8Ns6+64Ll8v41fT&2MpTv)pNWVafKL^y$a(hkXdRx}7 z{{2nbwwp@F4UD#x6hB6)TjO zn99kJD8qOmYiq}2qubkZ7e}qzP6+)Xv)~N=Y(zP3kH8#n*Q%>|xpT^)4x5VyOXTSC1o3AISq+VTRY9hsZX^n!` z^aGzW%B)xlTeh}!iC@UpFZgmHF{`k1l6*o@yXL2(r|XT}1zMi897yjmZqyE9k>3sTv{q-NU;?FCe44R|av0Ah$^3y&*X=@{oeq5<3SMewC z+S>T@hpS5_&j+R7pBpPb->y3s`8v6_KWeGh6ZRd87TkUtv^MPJ*QzIa%B8IC{xU~T z8&#<Jq4?9-V+5opPjqYZ!?Evn{Hxi(l{dJJuQ`Gpa0%C_4CD> zbQXqaUd}$dvHpKu-@E(g&&L&THa9nKiPDV`xDdX6a;epnLjnz3P8dqeF}2`|2@AM! zR7~mo=NWHJUY0$pJn0>GEH~O*`)Btah83IvPh20Yy&m)W-JZ{WJFdM)}m|27<` z`mxVHP{icm z(KV$>CRyygFoS_>-|65_N=rl5U6hddIp6DF{QjrXs=YHnL0HLV_wS?sE^Yn&hvr(9 zb``}W{k^r-;yK5f<12%gpV-v1|T5HbaRjL@kY}K?s@qeuO%6ZxH?AYecWZf_aXbg%KSYq zS6`G~R~PH9to~{8@|9K-#aDda_x<~wwcGEVdNox$Vsnz}-@m2HmZfW~Q9R4V#>O^d z{_MpeT8Z6rE?+jDV^cYanf=>EU#mS|(&LYb@B87;_CPkjYVq#J*Yb_7tk|4*R_dBg zv|DxEw6Nm7i3=H{){4!0KGC{)tKE}?wM(zR{P^P^^OoPMY_?P{f7A)Cp?7}q-v34W z-M8EM>0e)6T@$gfYoFWPR=?Q_T?OX?^`_34IrE^U`}VsFZ{}>OelN!-Yjxno3yu8x z-?#67KYvpG!RPqDvnt<8uTx_*v;V>1|E9X@WtsH;pyXw@mHCx|^c4@}cJZXq zt;}Oiw~|X<&R}x|H7GyD?0mUw{l0&T<^R6WW#^Ym`TOf@Pk+C$jm;US;(1}KT?JZG zBHd;!Yf1E&_xwraxp#ASzbLVaDZ80k^XR?Z&-Hch>c8K8Z&maD+S=27GBz#gI^NTJ zHssVW-T&P2c*eb%NlM<_ReR+a3gde}z0io?^-{Y_9o+K2`R#jseeLUH`QH(#iHVIL zKNh;VyGL%%lU?pNchTiY1s>-f!!5USA6XpxUdtzIb>zwwk-c&K?DBseZhN-(V`%u! z!#D;rF}U?-S7LU;D1u{@eKPyG^U?6neF@R`E&97x5eGhe}Au%oura@yiYbI@|du{%}3#%Irpnxn>SzIA1D61 zV~;?F^nw$gFZ{m$KmFb3`TuQJhpl~dh+9A9=clJFi6=fjK0b5KoF#YjCO`lA-Rke| zyL!>vauRcL-njeyGp~Dl?co2L_kUlF&d+A3`MGTU)Vw_}Uq94M_xm3FNgOmQ`lsXG z&vWHFqx1JpJ*~fgPG={lo4dPaSJTXylDFQPWzI_KQRH!c_Uze=Idf9(@7oJbaUZ+m zP0a7te73wEQ+#%^{h9NBe(7#!&EN6M)axENQK>&PU0*qO_y2#tE5ELe|GPKyf86@x z4-dDC_kZ;jTBM=WrL=6>GK-oY24~YIYp>g}=I6BSd!9ZF-~a3Ce>eX?mk@@IJq;KF4-MB>#SO@TXWua?@1~pyJO4V-RXQ@nRB~rzTI)9 zPtL*o4JSSycsf1)<+EqcEdKxb9J#m3R9RX1Nu}TBn<}0{T2r}#gM(8d-Bw?H^srrC zjpwku<e8ot|GzIx}!W3wO2KYboo`}L}E)h{LcyEV2<6X*B%*L@0p zx4r)NcE*a^x9=UhaYLd|#@OEee5bJbi?3A?*`13z(l(#$6jrw=dcq-Xp7$g>e)r8g z6_3w;oPEE>H{3tSrA{QuTI46^kHz-C&cE9{|F2H=wKWg-d_I?ab5m+dqQ~Z&Pi|~X z7IAgl8nyKH+oD%jH2LK1&fK{pqhI^d`{$MAb}P@X?O4GeP`U7D{jJ^KZ|pc_-2ZsL zWpSE~aaj+inWDwUV1+V|17#h_9G!)83$mT2i0a7>a_LgnoiTooA3vToYgUkf z#FW>&w8Xl-RD`4?Bqk(ESe3p~`ODS7z%XU;`I@xVj`c(M^W`iD{;!=k?_U4y zvZRcR43F|Vh3(hYL@qvc$}81K^62A2Q7+b{L7Jl7t~=MQK6ubE)ksn|dYjMQy|y|3 z7-ldqJbjjK|NH0V^ERK)9G;d6a5y`2v$qX0vL(dOLShvRJI!cC+? z!^5Xf(~sAie}4Jr=jXL2pFFWGm$lhZRfu!%*K5&6zQNJk^Zq`2+;9JFeF#4TBZG$X z{QrN%_fA&#*P7^&aeA6=)P{t{rh^OI+}%?nr`enj))2XL<;s+MHJ^RY&Nla-|MyM$ z&nx^7{>%C^GSsu`@4pkC8Cmx5%gf6~zQNz`Rj;2ldv>UXh>4-0;_Yprfq@H4tk%w) zDJg4H5irrig_&8shMn)r+{I0xuugr(ZvSK9_Wb*HN0SU$n;mQ470(Y|84{!+5>#Km zUrS5tiACR^y8Y+o*{*(ky#MvJ==`e>53j#m4+>|?U)Q$J`_LzAz3kvY$JqM6Uw6IV z_gjRkb;|kYrlzJ#ebkf>8%*(0Gqtc-A*}9~@$}SGtCANAd)XU6Y4W)I{dcmqRUyjC z%2B&YR$f~lzrMi2ru@M9Cr_5Vdi`3o*Ui+%X3fNjf~Do<+2`lYzg!Nn@>KZ0i@y)c z|65RDv+nBZ@a(s@wto8kS4v*~`kOavWR3@>rY?1Ja}()xo9dx*<>t+mvAg3IJ!cSL zXej!!(*N&Ta|43~DMl;by~`^tDLGLZJJ-70?`Trs$`G%K9xmc~F&AE5ULL9;vZd^8 z)ZQPD>M!Lp=tE#wN{kSzCr=Ogp zdMa(Rl#EQs%8*Hk5?Uf$QnIpFA3Rv#v~Yr$Zq$-}`=-A%W?*4ha0iz09TXNw=kE!W zm6ct!diCWuZ`PcfYrQDc!U$3v;y*t{})O6LVRhM48Sh4BmnxdU^ zd@hGE?e`ADCr;F3kq(Hm*{zsDn`yQ{@zCHY4LV)))or}wSXG__gdbYp*zjmS) zUjrvY!Nl5^-tnLKWGohZ`&M?h>~<~}TXUC-5-7UVCQp1`X~g5a?sZm8O^kb=Okj5Q zYEVg1{yy#(2Pi|E^V@#OeE;NR-QBw1Z(qH7H7WPD*U}&_6`@)4=7oiZPW|+AkInhZ zyWj6yZJd5?#m=3P=66db&#V0wS;gTH`ACRiT}Jk`HD7=I{=K#GbK2Uty-}SmN$*na zjE#-C+7F*f+pHzl{p$Vu>kl3*n5GxIYTdeZ{ab$i|1@1cJTRBRhoPbS&C=;*f6IP< zdn-TRzJ8xv%?HQO@bHtRvA%wOr#9)N8cEJvwlY9t$;+3Sb1jSAR)%h-fGZgtq&OWpeWJoYo}$SL4wSSKNEZuelWO=Zw* z^ZaYGOtV8GBQyQnDW`<>$Rk>IrkqXt`uqO>I8jm2 zF1N*BIKb83wRLa5G#y+3>MX{V-!1i88q{_CvDfm;Tx`u+B3xW7f3(E9rKF@l#bZ=- z^w-(<|Fr#MD7g7Zh(Ryf{_o5BxA~cwpP!wdzy91gKT{Kv6WelodwW+#=&TCS(wyt3 zEyK4uKqI53Cgx&B2*|-giY zqe-8B|1F9QUmE0jFd<-Nh}ZkQ;-NZXm-l|Z_xsmnfBV0MS{$J4HZ%A3wn}xsITzY^ zrAyv!y{;v}b83^$(ImsCMV6KG)UTI{a6eH*&t_4+lK9{c?YUQ4KHtlKUJS{D)DSpeJ?pn8M)v76e%SC(L zO21wWe|=+PvV7I&_iyjo_h&KhkomBZJ@x%b_5E*UZL1>Iu3fw9-LBUmfq{zWKR>Cw zcPI8=a&q#i=b)0RNX9*X&&M_?DXA^#=jEyx4v2PoGiZ2&3ud8}HdR+cP5mRLEj@OO zO*e9r%fo_*r9qx`|9^X1&-KgB%JQ0)swvlh`uXRVPfkwG%FTV6Vh_qGMH`ck`@O%g z(0SI}xuFXK0xV?0l9Lzj+GX{$a$e5uFbkP!i4szhk`q%Sx!9VEWZZ>?g{7pVF8%uY zdTa4>ziW03Obi7pe}9_3{}Ct=PYMYSUtVCbCiV2Rm&x+KXQZX2iE#XQS~*YV_{AST zcBrYVr_NgTr*41I&N(3V?QQRNJm!0QV`FnEe*=R9XMtw*my7iu`(!MY_TOKB?3mlt zt5;vn%3c?ko4Z!#c%a_&;Ly;ilRTqu=7c3DCmZ<&+s*g?Srgaj;2l{EOrJa20hpPKaT2~y}PwF`~QUt6L=0^Xkz8Qa^b>)UAwHVUb%9@fM@4AZO>Cr zi@cU!-c|6hsb=5*$a8i3>))NYf9qD%y6>RV!ltiUKCkN3?ak@^I;Vpa1TL%!U47-^ z#f1SHOPm%i=<4E_k&JuY{`j`U69zo4N`g;|EJH&= zP87<_T&4*wN%&+eHoV{W``vHpRXhy!U6UCKFP4^-mCatZ(rMv>01cJng;UO^g@%Tj zntz% znGhX)dt-{x%7qIT?&NGx5#?&#sqb0b|IKsO?LYPvJNsYn;$mx_HD}J1CRT2{EBD{M ze7W+OJwpQnLySuF_Pn1U0W zSof#je@{LC+;#l%uAk3lSKGz>xG`zLF9r^V1Fm0gB=`TEHEWiMo!z>J4-=OLY0g}x zdDtLCYwDBFKc9U6Ey}?n!o&7_9#?^k`@@2Wy8ZFfQZ*-^ToIs=vv3i^hy9QFGGmJ5 z>VB-g_u|D0Ep6?q7cVLvHZU`ngh7 zh||=}?BCJ*=e27Y8yFhAuiP!azt%@>@nZM>R}T(0&zd*yT9>HymW+#wcFtyqy&jsH z`t;7z#t^NgNgG$p&fjPGb9&wPXJ=h)_iAD0ya15*X)T!5?Ve??qoIKaX%-JRjbwEV+uysOr&yS94$ zzEzi(`)A+VQ_0nS*vL0{X^`j3lBlz1&;I}Tysqy5zwkpLf($bl7WCBqecfMSYikR# z=hoJ2Q)A=BFJETz^76j?dcFR16&u5YqOIlc_w9fG?%spDmCvp6pP#G$Z1?kIyUi*l zh6AFH)a@&;{XQiA@8Itv>Slj$G8}jz4?b6Jlo*~Nuw&03^Lb}I1YiB%)d=#Tr>mdK II;Vst0Gi@98~^|S From 6ba8f3d21bc881b0de27def128b293301a92aaec Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 31 May 2024 11:09:20 +0800 Subject: [PATCH 189/274] home(minecraft): run minecraft under dedicated user --- home/minecraft/home.nix | 2 +- home/minecraft/nixos.nix | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/home/minecraft/home.nix b/home/minecraft/home.nix index 4db63464..5dedf251 100644 --- a/home/minecraft/home.nix +++ b/home/minecraft/home.nix @@ -3,7 +3,7 @@ , config , ... }: with lib; let cfg = config.passthrough.minecraft; - enable = cfg.enable && (cfg.allUsers || (config.home.username == "app")); + enable = cfg.enable && config.home.username == "minecraft"; in mkIf enable { home.packages = with pkgs; [ prismlauncher diff --git a/home/minecraft/nixos.nix b/home/minecraft/nixos.nix index a412f200..a570db79 100644 --- a/home/minecraft/nixos.nix +++ b/home/minecraft/nixos.nix @@ -3,11 +3,10 @@ , config , ... }: with lib; let cfg = config.home.minecraft; - persist = [ ".local/share/PrismLauncher" ]; + gui = with config.global.gpu; enable && session; in { options.home.minecraft = { enable = mkEnableOption "minecraft game launcher and jvm"; - allUsers = mkEnableOption "set up for all users"; }; config = { @@ -16,7 +15,14 @@ in { { passthrough.minecraft = cfg; } ]; - users.home.persist.directories = with cfg; mkIf (enable && allUsers) persist; - users.home.persistApp.directories = with cfg; mkIf (enable && !allUsers) persist; + users.profiles.minecraft = mkIf cfg.enable { + uid = 5801; + description = "Minecraft"; + picture = ../picture/aux.png; + }; + + environment.persistence."/nix/persist".users.minecraft.directories = mkIf (cfg.enable && gui) [ + ".local/share/PrismLauncher" + ]; }; } From 9c7ac68ae4bfcf4d83d282ee0919985d4f9d592d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 31 May 2024 11:12:26 +0800 Subject: [PATCH 190/274] home: crop koishi profile pictures --- home/picture/koishi.png | Bin 97456 -> 90931 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/home/picture/koishi.png b/home/picture/koishi.png index 0c78cf6e950b9233d961f379e8dfb1ac0df8dfcd..8f44f8e0accb59cafaa53ef149d514d0b4007e96 100644 GIT binary patch literal 90931 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 fo86saf9qK<8tFf3ILpJpz`)??>gTe~DWM4fL} Date: Fri, 31 May 2024 11:20:56 +0800 Subject: [PATCH 191/274] home(minecraft): check gui condition in home --- home/minecraft/home.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home/minecraft/home.nix b/home/minecraft/home.nix index 5dedf251..f67be4ff 100644 --- a/home/minecraft/home.nix +++ b/home/minecraft/home.nix @@ -2,15 +2,15 @@ , lib , config , ... }: with lib; let + inherit (config.passthrough) gui; cfg = config.passthrough.minecraft; enable = cfg.enable && config.home.username == "minecraft"; in mkIf enable { home.packages = with pkgs; [ - prismlauncher jdk8 - ]; + ] ++ optional gui prismlauncher; - wayland.windowManager.sway.config.window.commands = [ + wayland.windowManager.sway.config.window.commands = mkIf gui [ { criteria.app_id = "org.prismlauncher.PrismLauncher"; command = "floating enable"; } ]; } From 70a10ed5655c20baa5a845d80a749cd64ea8c2c3 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 31 May 2024 14:00:52 +0800 Subject: [PATCH 192/274] home(minecraft): make username configurable --- home/minecraft/home.nix | 2 +- home/minecraft/nixos.nix | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/home/minecraft/home.nix b/home/minecraft/home.nix index f67be4ff..410eef4c 100644 --- a/home/minecraft/home.nix +++ b/home/minecraft/home.nix @@ -4,7 +4,7 @@ , ... }: with lib; let inherit (config.passthrough) gui; cfg = config.passthrough.minecraft; - enable = cfg.enable && config.home.username == "minecraft"; + enable = cfg.enable && config.home.username == cfg.user; in mkIf enable { home.packages = with pkgs; [ jdk8 diff --git a/home/minecraft/nixos.nix b/home/minecraft/nixos.nix index a570db79..ebbdab5d 100644 --- a/home/minecraft/nixos.nix +++ b/home/minecraft/nixos.nix @@ -7,6 +7,11 @@ in { options.home.minecraft = { enable = mkEnableOption "minecraft game launcher and jvm"; + user = mkOption { + type = with types; str; + default = "minecraft"; + description = "username which minecraft game client runs under"; + }; }; config = { @@ -15,14 +20,14 @@ in { { passthrough.minecraft = cfg; } ]; - users.profiles.minecraft = mkIf cfg.enable { + users.profiles.minecraft = mkIf (cfg.enable && cfg.user == "minecraft") { uid = 5801; description = "Minecraft"; picture = ../picture/aux.png; }; - environment.persistence."/nix/persist".users.minecraft.directories = mkIf (cfg.enable && gui) [ - ".local/share/PrismLauncher" - ]; + environment.persistence."/nix/persist".users.${cfg.user} = mkIf (cfg.enable && gui) { + directories = [ ".local/share/PrismLauncher" ]; + }; }; } From 4d276825dd9f22c04d425fa8d5d16e0ea8b2f70a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 31 May 2024 14:01:32 +0800 Subject: [PATCH 193/274] spec(koumakyou): minecraft retain app user --- spec/koumakyou/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index 186d5e10..0bba4365 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -14,6 +14,7 @@ home = { vscode.enable = true; minecraft.enable = true; + minecraft.user = "app"; }; users.homeModules = [ { From 541cb406fcb2a809d84791d8dd04ccddaf0eec1b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 2 Jun 2024 22:19:21 +0800 Subject: [PATCH 194/274] global(fs): make syncoid delete target snapshots --- global/fs/zfs/replication.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/global/fs/zfs/replication.nix b/global/fs/zfs/replication.nix index f2edba41..1650c118 100644 --- a/global/fs/zfs/replication.nix +++ b/global/fs/zfs/replication.nix @@ -11,6 +11,7 @@ in mkIf cfg.enable { commonArgs = [ "--recursive" "--mbuffer-size=128M" + "--delete-target-snapshots" "--sshport=${toString cfg.port}" ]; localSourceAllow = mkOptionDefault [ "mount" ]; From 276635951a79c7ec661dd55fe1c8c849e746452c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 2 Jun 2024 23:01:58 +0800 Subject: [PATCH 195/274] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 00f39f08..62889ce4 100644 --- a/flake.lock +++ b/flake.lock @@ -56,11 +56,11 @@ ] }, "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "lastModified": 1717285511, + "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", "type": "github" }, "original": { @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1716930911, - "narHash": "sha256-t4HT5j3Jy7skRB5PINnxcEBCkgE89rGBpwTI7YS4Ffo=", + "lastModified": 1717316182, + "narHash": "sha256-Xi0EpZcu39N0eW7apLjFfUOR9y80toyjYizez7J1wMI=", "owner": "nix-community", "repo": "home-manager", - "rev": "a9b36cbe9292a649222b89fdb9ae9907e9c74086", + "rev": "9b53a10f4c91892f5af87cf55d08fba59ca086af", "type": "github" }, "original": { @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1716618639, - "narHash": "sha256-H3kcJDVqDmXZ9IfVtqObL3JUx/a0ERn6gWBTn+7vwN4=", + "lastModified": 1717012808, + "narHash": "sha256-Wn0fbjqmpIiuPUWnvxu85a9sPYtSd/2tcPDhAYW54RM=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "a358c56a163b3b7d149571e853a8f75b2c1ceb38", + "rev": "a8e6557f29fa0cbcc2c54d15f9664c14ae2a3e98", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1716509168, - "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", + "lastModified": 1716948383, + "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bfb7a882678e518398ce9a31a881538679f6f092", + "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", "type": "github" }, "original": { @@ -310,11 +310,11 @@ ] }, "locked": { - "lastModified": 1716902607, - "narHash": "sha256-jShqpVupP/7ksp6gCBVG9/05zYSX8Q+z6eGe9HLYtUs=", + "lastModified": 1717265895, + "narHash": "sha256-SsNTqFnefBO5wV5qD7nzd5wwrf2eOA/yahnP0lnQXhk=", "owner": "pjones", "repo": "plasma-manager", - "rev": "4a255e5ea6bf2c7815d893a693c5c801d835ba6b", + "rev": "6e6d6a457355c7675484c0197bab06c2a4840b7d", "type": "github" }, "original": { From 9e97ffb3ac8d24d007397f805bdfdf7cb7a98899 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 3 Jun 2024 11:05:58 +0800 Subject: [PATCH 196/274] spec(eientei): add minecraft services --- spec/eientei/default.nix | 1 - spec/eientei/minecraft.nix | 95 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 spec/eientei/minecraft.nix diff --git a/spec/eientei/default.nix b/spec/eientei/default.nix index 4da7d086..b5a098e7 100644 --- a/spec/eientei/default.nix +++ b/spec/eientei/default.nix @@ -42,6 +42,5 @@ boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - networking.firewall.allowedTCPPorts = [ 25565 ]; environment.systemPackages = with pkgs; [ python3 ]; } diff --git a/spec/eientei/minecraft.nix b/spec/eientei/minecraft.nix new file mode 100644 index 00000000..fc485da1 --- /dev/null +++ b/spec/eientei/minecraft.nix @@ -0,0 +1,95 @@ +{ pkgs, lib, config, ... }: let + inherit (lib) mapAttrs' nameValuePair; + + servers = { + bungeecord = { + cmdline = "${pkgs.graalvmCEPackages.graalvm-ce}/bin/java -Xms2G -Xmx4G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -jar BungeeCord.jar"; + stop = "end"; + }; + + nfwc = { + cmdline = "${pkgs.jdk}/bin/java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.19.2-43.3.8/unix_args.txt"; + stop = "stop"; + }; + }; + + prefix = "minecraft-server-"; + data = "/nix/persist/service/minecraft"; +in { + # https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/services/games/minecraft-server.nix + users.users.minecraft = { + description = "Minecraft server service user"; + home = data; + createHome = true; + isSystemUser = true; + uid = 1021; + group = "minecraft"; + }; + users.groups.minecraft.gid = 1021; + + systemd.sockets = mapAttrs' (name: value: with value; (nameValuePair "${prefix}${name}" { + bindsTo = [ "${prefix}${name}.service" ]; + socketConfig = { + ListenFIFO = "/run/minecraft-server/${name}.stdin"; + SocketMode = "0660"; + SocketUser = "minecraft"; + SocketGroup = "minecraft"; + RemoveOnStop = true; + FlushPending = true; + }; + })) servers; + + systemd.services = let + stopScript = { name, stop }: pkgs.writeShellScript "minecraft-server-stop" '' + echo ${stop} > ${config.systemd.sockets."${prefix}${name}".socketConfig.ListenFIFO} + + # Wait for the PID of the minecraft server to disappear before + # returning, so systemd doesn't attempt to SIGKILL it. + while kill -0 "$1" 2> /dev/null; do + sleep 1s + done + ''; + in mapAttrs' (name: value: with value; (nameValuePair "${prefix}${name}" { + description = "Minecraft Server Service for ${name}"; + wantedBy = [ "multi-user.target" ]; + requires = [ "${prefix}${name}.socket" ]; + after = [ "network.target" "${prefix}${name}.socket" ]; + + serviceConfig = { + ExecStart = cmdline; + ExecStop = "${stopScript { inherit name stop; }} $MAINPID"; + Restart = "always"; + User = "minecraft"; + WorkingDirectory = "${data}/${name}"; + + StandardInput = "socket"; + StandardOutput = "journal"; + StandardError = "journal"; + + # Hardening + CapabilityBoundingSet = [ "" ]; + DeviceAllow = [ "" ]; + LockPersonality = true; + PrivateDevices = true; + PrivateTmp = true; + PrivateUsers = true; + ProtectClock = true; + ProtectControlGroups = true; + ProtectHome = true; + ProtectHostname = true; + ProtectKernelLogs = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + ProtectProc = "invisible"; + RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ]; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + SystemCallArchitectures = "native"; + UMask = "0077"; + }; + })) servers; + + global.fs.zfs.mountpoints.${data} = "service/minecraft"; + networking.firewall.allowedTCPPorts = [ 25565 ]; +} From d298d246c84334b15936fbe6656f2781ff89c863 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 3 Jun 2024 16:03:15 +0800 Subject: [PATCH 197/274] spec(eientei): remove minecraft reverse proxy --- spec/eientei/minecraft.nix | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/spec/eientei/minecraft.nix b/spec/eientei/minecraft.nix index fc485da1..a9b88b9f 100644 --- a/spec/eientei/minecraft.nix +++ b/spec/eientei/minecraft.nix @@ -2,10 +2,15 @@ inherit (lib) mapAttrs' nameValuePair; servers = { - bungeecord = { - cmdline = "${pkgs.graalvmCEPackages.graalvm-ce}/bin/java -Xms2G -Xmx4G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -jar BungeeCord.jar"; - stop = "end"; - }; + #bungeecord = { + # cmdline = "${pkgs.graalvmCEPackages.graalvm-ce}/bin/java -Xms2G -Xmx4G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -jar waterfall-1.20-578.jar"; + # stop = "end"; + #}; + + #limbo = { + # cmdline = "${pkgs.graalvmCEPackages.graalvm-ce}/bin/java -Xms1G -Xmx1G -jar NanoLimbo-1.8-all.jar"; + # stop = "stop"; + #}; nfwc = { cmdline = "${pkgs.jdk}/bin/java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.19.2-43.3.8/unix_args.txt"; @@ -54,6 +59,7 @@ in { wantedBy = [ "multi-user.target" ]; requires = [ "${prefix}${name}.socket" ]; after = [ "network.target" "${prefix}${name}.socket" ]; + path = [ pkgs.bash ]; serviceConfig = { ExecStart = cmdline; From 28f65fde23977b88cbb4e85edc22ab1ccd5f51ce Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 10 Jun 2024 10:11:39 +0800 Subject: [PATCH 198/274] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 62889ce4..d84596e7 100644 --- a/flake.lock +++ b/flake.lock @@ -155,11 +155,11 @@ ] }, "locked": { - "lastModified": 1717316182, - "narHash": "sha256-Xi0EpZcu39N0eW7apLjFfUOR9y80toyjYizez7J1wMI=", + "lastModified": 1717931644, + "narHash": "sha256-Sz8Wh9cAiD5FhL8UWvZxBfnvxETSCVZlqWSYWaCPyu0=", "owner": "nix-community", "repo": "home-manager", - "rev": "9b53a10f4c91892f5af87cf55d08fba59ca086af", + "rev": "3d65009effd77cb0d6e7520b68b039836a7606cf", "type": "github" }, "original": { @@ -170,11 +170,11 @@ }, "impermanence": { "locked": { - "lastModified": 1708968331, - "narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=", + "lastModified": 1717932370, + "narHash": "sha256-7C5lCpiWiyPoIACOcu2mukn/1JRtz6HC/1aEMhUdcw0=", "owner": "nix-community", "repo": "impermanence", - "rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30", + "rev": "27979f1c3a0d3b9617a3563e2839114ba7d48d3f", "type": "github" }, "original": { @@ -190,11 +190,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1717012808, - "narHash": "sha256-Wn0fbjqmpIiuPUWnvxu85a9sPYtSd/2tcPDhAYW54RM=", + "lastModified": 1717685136, + "narHash": "sha256-S+C/DX5HOhlhJAmcGxbB+Tv6oqZOkr3z/WzPuydXI14=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "a8e6557f29fa0cbcc2c54d15f9664c14ae2a3e98", + "rev": "fd13986ede9b94c50e84aecb2c88863e297bbb52", "type": "github" }, "original": { @@ -286,11 +286,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1716948383, - "narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=", + "lastModified": 1717786204, + "narHash": "sha256-4q0s6m0GUcN7q+Y2DqD27iLvbcd1G50T2lv08kKxkSI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad57eef4ef0659193044870c731987a6df5cf56b", + "rev": "051f920625ab5aabe37c920346e3e69d7d34400e", "type": "github" }, "original": { @@ -310,11 +310,11 @@ ] }, "locked": { - "lastModified": 1717265895, - "narHash": "sha256-SsNTqFnefBO5wV5qD7nzd5wwrf2eOA/yahnP0lnQXhk=", + "lastModified": 1717666468, + "narHash": "sha256-SKPMh/Apjk3DhY0B/SqTvmt1/UFf2AHwoVPTGA6Md9c=", "owner": "pjones", "repo": "plasma-manager", - "rev": "6e6d6a457355c7675484c0197bab06c2a4840b7d", + "rev": "d982fe0063be13bbe57a0c4ace8b406236812b94", "type": "github" }, "original": { From a94ffa8e0862dd73ecdb6d76ea2384d5bf6531d1 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 10 Jun 2024 17:08:44 +0800 Subject: [PATCH 199/274] spec(koumakyou): add gamemode and enable decky --- spec/koumakyou/default.nix | 1 + spec/koumakyou/jovian.nix | 59 +++++++++++++++++++++++++++++++------- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index 0bba4365..51163f68 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -43,6 +43,7 @@ programs.regreet.enable = lib.mkForce true; jovian.steam.autoStart = lib.mkForce false; jovian.steam.desktopSession = lib.mkForce "sway"; + jovian.decky-loader.enable = lib.mkForce false; home.plasma.enable = lib.mkForce false; services.greetd.settings.default_session.command = let cfg = config.programs.regreet; diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index 2a20be30..23c95207 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -1,4 +1,4 @@ -{ pkgs, jovian, ... }: { +{ pkgs, lib, config, jovian, ... }: { imports = [ jovian.nixosModules.jovian ]; @@ -17,11 +17,13 @@ }; users.home.persistApp.directories = [ - ".steam" ".local/share/Steam" ".config/gamescope" + ".steam" ".local/share/Steam" + ".config/gamescope" ".config/hhd" ".kodi" ]; - users.users.app.extraGroups = [ "networkmanager" ]; + users.users.app.extraGroups = [ "networkmanager" "gamemode" ]; + programs.gamemode.enable = true; programs.regreet.enable = false; home.plasma.enable = true; home.plasma.extraConfig = { @@ -41,11 +43,48 @@ jellycon ])) ]; -} // { - #users.users.decky.uid = 514; - #users.groups.decky.gid = 514; - #jovian.decky-loader = { - # enable = true; - # stateDir = "/nix/persist/decky"; - #}; + + services.handheld-daemon = { + enable = true; + user = "app"; + }; + + jovian.decky-loader = let + adjustor = pkgs.python3.pkgs.buildPythonApplication rec { + pname = "adjustor"; + version = "2.1.5"; + pyproject = true; + + src = pkgs.fetchFromGitHub { + owner = "hhd-dev"; + repo = pname; + rev = "v${version}"; + hash = "sha256-KgeK2lC3b9VbjYmy7rD/ImODWDDx3pWIzWgNnSLJeDs="; + }; + + propagatedBuildInputs = with pkgs.python3.pkgs; [ + setuptools + pyroute2 + rich + ]; + + # This package doesn't have upstream tests. + doCheck = false; + }; + in { + # ~/.steam/steam/.cef-enable-remote-debugging + enable = true; + user = "app"; + extraPackages = with pkgs; [ + curl unzip util-linux gnugrep procps pciutils kmod + ryzenadj # adjustor + ]; + extraPythonPackages = pythonPackages: with pythonPackages; [ + hid pyyaml + # adjustor + ]; + stateDir = "/nix/persist/decky"; + }; + + boot.kernelParams = lib.mkIf config.jovian.decky-loader.enable [ "iomem=relaxed" "amd_pstate=passive" ]; } From 69fd18508b6564a38364de12349beb698efef0b2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 11 Jun 2024 08:24:40 +0800 Subject: [PATCH 200/274] spec(koumakyou): enable jetbrains defaults --- spec/koumakyou/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index 51163f68..152489a5 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -12,6 +12,7 @@ }; home = { + jetbrains.enable = true; vscode.enable = true; minecraft.enable = true; minecraft.user = "app"; From 8248693082bc5be916e8ac6ae92dac8d94281202 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 11 Jun 2024 11:53:49 +0800 Subject: [PATCH 201/274] spec(koumakyou): clean up jovian config --- spec/koumakyou/default.nix | 14 ++-- spec/koumakyou/jovian.nix | 136 +++++++++++++++---------------------- 2 files changed, 63 insertions(+), 87 deletions(-) diff --git a/spec/koumakyou/default.nix b/spec/koumakyou/default.nix index 152489a5..b1c239d3 100644 --- a/spec/koumakyou/default.nix +++ b/spec/koumakyou/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, config, ... }: { +{ pkgs, lib, config, jovian, ... }: { global = { id = "0a920a834b5f480bab258040096d4c6e"; fs.esp.uuid = "ACB3-4AFF"; @@ -41,11 +41,8 @@ console.earlySetup = true; specialisation.desktop.configuration = { - programs.regreet.enable = lib.mkForce true; - jovian.steam.autoStart = lib.mkForce false; - jovian.steam.desktopSession = lib.mkForce "sway"; - jovian.decky-loader.enable = lib.mkForce false; - home.plasma.enable = lib.mkForce false; + global.jovian = false; + jovian.steamos.useSteamOSConfig = false; services.greetd.settings.default_session.command = let cfg = config.programs.regreet; in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' @@ -67,5 +64,8 @@ boot.extraModulePackages = [ ]; hardware.cpu.intel.updateMicrocode = true; - imports = [ ./jovian.nix ]; + imports = [ + jovian.nixosModules.jovian + ./jovian.nix + ]; } diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index 23c95207..d08aa145 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -1,90 +1,66 @@ -{ pkgs, lib, config, jovian, ... }: { - imports = [ - jovian.nixosModules.jovian - ]; +{ pkgs, lib, config, ... }: with lib; { + options.global.jovian = mkEnableOption "set up Jovian NixOS" // { default = true; }; - jovian = { - hardware.has.amd.gpu = true; - steamos.useSteamOSConfig = true; - steamos.enableDefaultCmdlineConfig = false; + config = mkIf config.global.jovian { + jovian = { + hardware.has.amd.gpu = true; + steamos.useSteamOSConfig = true; + #steamos.enableDefaultCmdlineConfig = false; - steam = { + steam = { + enable = true; + autoStart = true; + desktopSession = "plasma"; + user = "app"; + }; + }; + + users.home.persistApp.directories = [ + ".steam" ".local/share/Steam" + ".config/gamescope" ".config/hhd" + ".kodi" + ]; + + users.users.app.extraGroups = [ "networkmanager" "gamemode" ]; + programs.gamemode.enable = true; + programs.regreet.enable = false; + home.plasma.enable = true; + home.plasma.extraConfig = { + configFile = { + kwinrc.Xwayland.Scale = 1.75; + kscreenlockerrc.Daemon.Autolock = false; + }; + }; + + home-manager.users.app.home.packages = with pkgs; [ + (pkgs.kodi-wayland.passthru.withPackages (kodiPkgs: with kodiPkgs; [ + joystick # keymap steam-controller + #controller-topology-project + libretro libretro-2048 + libretro-fuse libretro-genplus libretro-mgba + libretro-nestopia libretro-snes9x + jellycon + ])) + ]; + + services.handheld-daemon = { enable = true; - autoStart = true; - desktopSession = "plasma"; user = "app"; }; - }; - users.home.persistApp.directories = [ - ".steam" ".local/share/Steam" - ".config/gamescope" ".config/hhd" - ".kodi" - ]; - - users.users.app.extraGroups = [ "networkmanager" "gamemode" ]; - programs.gamemode.enable = true; - programs.regreet.enable = false; - home.plasma.enable = true; - home.plasma.extraConfig = { - configFile = { - kwinrc.Xwayland.Scale = 1.75; - kscreenlockerrc.Daemon.Autolock = false; - }; - }; - - home-manager.users.app.home.packages = with pkgs; [ - (pkgs.kodi-wayland.passthru.withPackages (kodiPkgs: with kodiPkgs; [ - joystick # keymap steam-controller - #controller-topology-project - libretro libretro-2048 - libretro-fuse libretro-genplus libretro-mgba - libretro-nestopia libretro-snes9x - jellycon - ])) - ]; - - services.handheld-daemon = { - enable = true; - user = "app"; - }; - - jovian.decky-loader = let - adjustor = pkgs.python3.pkgs.buildPythonApplication rec { - pname = "adjustor"; - version = "2.1.5"; - pyproject = true; - - src = pkgs.fetchFromGitHub { - owner = "hhd-dev"; - repo = pname; - rev = "v${version}"; - hash = "sha256-KgeK2lC3b9VbjYmy7rD/ImODWDDx3pWIzWgNnSLJeDs="; - }; - - propagatedBuildInputs = with pkgs.python3.pkgs; [ - setuptools - pyroute2 - rich + jovian.decky-loader = { + # ~/.steam/steam/.cef-enable-remote-debugging + enable = true; + user = "app"; + extraPackages = with pkgs; [ + curl unzip util-linux gnugrep procps pciutils kmod ryzenadj ]; - - # This package doesn't have upstream tests. - doCheck = false; + extraPythonPackages = pythonPackages: with pythonPackages; [ + hid pyyaml + ]; + stateDir = "/nix/persist/decky"; }; - in { - # ~/.steam/steam/.cef-enable-remote-debugging - enable = true; - user = "app"; - extraPackages = with pkgs; [ - curl unzip util-linux gnugrep procps pciutils kmod - ryzenadj # adjustor - ]; - extraPythonPackages = pythonPackages: with pythonPackages; [ - hid pyyaml - # adjustor - ]; - stateDir = "/nix/persist/decky"; - }; - boot.kernelParams = lib.mkIf config.jovian.decky-loader.enable [ "iomem=relaxed" "amd_pstate=passive" ]; + boot.kernelParams = [ "iomem=relaxed" "amd_pstate=passive" ]; + }; } From aa1a9244db09e63ea124274b1b853b1d6f43808c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 13 Jun 2024 08:56:50 +0800 Subject: [PATCH 202/274] spec(koumakyou): set max-performance on power disconnect --- spec/koumakyou/jovian.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index d08aa145..a5754ee1 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -5,7 +5,7 @@ jovian = { hardware.has.amd.gpu = true; steamos.useSteamOSConfig = true; - #steamos.enableDefaultCmdlineConfig = false; + steamos.enableDefaultCmdlineConfig = false; steam = { enable = true; @@ -61,6 +61,13 @@ stateDir = "/nix/persist/decky"; }; - boot.kernelParams = [ "iomem=relaxed" "amd_pstate=passive" ]; + boot.kernelParams = [ + "iomem=relaxed" + "amd_pstate=passive" + ]; + + services.udev.extraRules = '' + SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="${pkgs.ryzenadj}/bin/ryzenadj --max-performance" + ''; }; } From b9dda18e09ea885453945f8fdb02ef432aca97de Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 24 Jun 2024 09:56:31 +0800 Subject: [PATCH 203/274] home(gui): switch to catppuccin module --- flake.nix | 1 + home/btop/home.nix | 88 ------------------ home/catppuccin/flake.png | Bin 0 -> 47817 bytes home/catppuccin/home.nix | 59 ++++++++++++ home/{gui => }/catppuccin/nixos.nix | 30 ++++--- home/{gui => }/catppuccin/solid.png | Bin 29882 -> 33649 bytes home/gui/catppuccin/flake.png | Bin 50243 -> 0 bytes home/gui/catppuccin/home.nix | 135 ---------------------------- home/gui/catppuccin/palette.nix | 117 ------------------------ home/gui/home.nix | 14 +-- home/gui/nixos.nix | 2 - home/profile.nix | 5 +- spec/default.nix | 1 + 13 files changed, 91 insertions(+), 361 deletions(-) create mode 100644 home/catppuccin/flake.png create mode 100644 home/catppuccin/home.nix rename home/{gui => }/catppuccin/nixos.nix (68%) rename home/{gui => }/catppuccin/solid.png (68%) delete mode 100644 home/gui/catppuccin/flake.png delete mode 100644 home/gui/catppuccin/home.nix delete mode 100644 home/gui/catppuccin/palette.nix diff --git a/flake.nix b/flake.nix index 50b13ca2..df435879 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,7 @@ plasma-manager.url = "github:pjones/plasma-manager"; plasma-manager.inputs.nixpkgs.follows = "nixpkgs"; plasma-manager.inputs.home-manager.follows = "home-manager"; + catppuccin.url = "github:catppuccin/nix"; lanzaboote.url = "github:nix-community/lanzaboote/v0.3.0"; lanzaboote.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/home/btop/home.nix b/home/btop/home.nix index ade22460..f435fee1 100644 --- a/home/btop/home.nix +++ b/home/btop/home.nix @@ -7,95 +7,7 @@ in mkIf cfg.enable { programs.btop = { enable = true; settings = { - color_theme = "catppuccin"; theme_background = false; }; }; - - home.file."${config.xdg.configHome}/btop/themes/catppuccin.theme".text = with (import ../gui/catppuccin/palette.nix) - .${config.passthrough.catppuccin.palette}; '' - # Main background, empty for terminal default, need to be empty if you want transparent background - theme[main_bg]="${base}" - - # Main text color - theme[main_fg]="${text}" - - # Title color for boxes - theme[title]="${text}" - - # Highlight color for keyboard shortcuts - theme[hi_fg]="${blue}" - - # Background color of selected item in processes box - theme[selected_bg]="${surface1}" - - # Foreground color of selected item in processes box - theme[selected_fg]="${blue}" - - # Color of inactive/disabled text - theme[inactive_fg]="${overlay1}" - - # Color of text appearing on top of graphs, i.e uptime and current network graph scaling - theme[graph_text]="${rosewater}" - - # Background color of the percentage meters - theme[meter_bg]="${surface1}" - - # Misc colors for processes box including mini cpu graphs, details memory graph and details status text - theme[proc_misc]="${rosewater}" - - # CPU, Memory, Network, Proc box outline colors - theme[cpu_box]="${mauve}" #Mauve - theme[mem_box]="${green}" #Green - theme[net_box]="${maroon}" #Maroon - theme[proc_box]="${blue}" #Blue - - # Box divider line and small boxes line color - theme[div_line]="${overlay0}" - - # Temperature graph color (Green -> Yellow -> Red) - theme[temp_start]="${green}" - theme[temp_mid]="${yellow}" - theme[temp_end]="${red}" - - # CPU graph colors (Teal -> Lavender) - theme[cpu_start]="${teal}" - theme[cpu_mid]="${sapphire}" - theme[cpu_end]="${lavender}" - - # Mem/Disk free meter (Mauve -> Lavender -> Blue) - theme[free_start]="${mauve}" - theme[free_mid]="${lavender}" - theme[free_end]="${blue}" - - # Mem/Disk cached meter (Sapphire -> Lavender) - theme[cached_start]="${sapphire}" - theme[cached_mid]="${blue}" - theme[cached_end]="${lavender}" - - # Mem/Disk available meter (Peach -> Red) - theme[available_start]="${peach}" - theme[available_mid]="${maroon}" - theme[available_end]="${red}" - - # Mem/Disk used meter (Green -> Sky) - theme[used_start]="${green}" - theme[used_mid]="${teal}" - theme[used_end]="${sky}" - - # Download graph colors (Peach -> Red) - theme[download_start]="${peach}" - theme[download_mid]="${maroon}" - theme[download_end]="${red}" - - # Upload graph colors (Green -> Sky) - theme[upload_start]="${green}" - theme[upload_mid]="${teal}" - theme[upload_end]="${sky}" - - # Process box color gradient for threads, mem and cpu usage (Sapphire -> Mauve) - theme[process_start]="${sapphire}" - theme[process_mid]="${lavender}" - theme[process_end]="${mauve}" - ''; } diff --git a/home/catppuccin/flake.png b/home/catppuccin/flake.png new file mode 100644 index 0000000000000000000000000000000000000000..ea098e877f2b249cca7f90a70e342ef21948cbad GIT binary patch literal 47817 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 UD#@7T;G<1EUHx3vIVCg!0M3Ac#sB~S literal 0 HcmV?d00001 diff --git a/home/catppuccin/home.nix b/home/catppuccin/home.nix new file mode 100644 index 00000000..b72fbd75 --- /dev/null +++ b/home/catppuccin/home.nix @@ -0,0 +1,59 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.catppuccin; + palette = (import ./palette.nix).${cfg.palette}; +in mkIf cfg.enable { + catppuccin = { + enable = true; + accent = "pink"; + flavor = "mocha"; + }; + + gtk.theme = { inherit (cfg.gtk) package name; }; + home.pointerCursor = { inherit (cfg.cursor) package name; }; + + # sway colour palette override + wayland.windowManager.sway.config = { + colors = { + focused = { border = "$lavender"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$lavender"; }; + focusedInactive = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$overlay0"; }; + unfocused = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$overlay0"; }; + urgent = { border = "$peach"; background = "$base"; text = "$peach"; indicator = "$overlay0"; childBorder = "$peach"; }; + placeholder = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$overlay0"; childBorder = "$overlay0"; }; + background = "$base"; + }; + + bars = mkForce [ { + colors = { + background = "$base"; + statusline = "$text"; + focusedStatusline = "$text"; + focusedSeparator = "$base"; + focusedWorkspace = { border = "$base"; background = "$base"; text = "$green"; }; + activeWorkspace = { border = "$base"; background = "$base"; text = "$blue"; }; + inactiveWorkspace = { border = "$base"; background = "$base"; text = "$surface1"; }; + urgentWorkspace = { border = "$base"; background = "$base"; text = "$surface1"; }; + bindingMode = { border = "$base"; background = "$base"; text = "$surface1"; }; + }; + + mode = "dock"; + position = "bottom"; + workspaceButtons = true; + workspaceNumbers = true; + statusCommand = "${pkgs.i3status}/bin/i3status"; + fonts = { + names = [ "monospace" ]; + size = 8.0; + }; + trayOutput = "primary"; + } ]; + + output."*".bg = mkForce "${./flake.png} fill"; + gaps.inner = 12; + gaps.outer = 5; + # dodge the status bar + gaps.bottom = 0; + }; +} diff --git a/home/gui/catppuccin/nixos.nix b/home/catppuccin/nixos.nix similarity index 68% rename from home/gui/catppuccin/nixos.nix rename to home/catppuccin/nixos.nix index 4d360baa..cf470aa4 100644 --- a/home/gui/catppuccin/nixos.nix +++ b/home/catppuccin/nixos.nix @@ -8,26 +8,30 @@ in { options.home.catppuccin = { enable = mkEnableOption "catppuccin colour scheme" // { default = gui; }; - palette = mkOption { - type = with types; str; - default = "frappe"; - description = "colour palette in use"; - }; - gtk = { package = mkOption { type = with types; package; - default = pkgs.catppuccin-gtk.override { + default = (pkgs.catppuccin-gtk.overrideAttrs { + src = pkgs.fetchFromGitHub { + owner = "catppuccin"; + repo = "gtk"; + rev = "v1.0.3"; + fetchSubmodules = true; + hash = "sha256-q5/VcFsm3vNEw55zq/vcM11eo456SYE5TQA3g2VQjGc="; + }; + + postUnpack = ""; + }).override { accents = [ "pink" ]; size = "compact"; #tweaks = [ "rimless" "black" ]; - variant = "frappe"; + variant = "mocha"; }; description = "catppuccin gtk theme package"; }; name = mkOption { type = with types; str; - default = "Catppuccin-Frappe-Compact-Pink-Dark"; + default = "catppuccin-mocha-pink-compact+default"; description = "name of catppuccin gtk theme"; }; }; @@ -35,12 +39,12 @@ in { cursor = { package = mkOption { type = with types; package; - default = pkgs.catppuccin-cursors.frappeDark; + default = pkgs.catppuccin-cursors.mochaDark; description = "catppuccin cursor theme package"; }; name = mkOption { type = with types; str; - default = "Catppuccin-Frappe-Dark-Cursors"; + default = "catppuccin-mocha-dark-cursors"; description = "name of catppuccin cursor theme"; }; }; @@ -52,8 +56,10 @@ in { { passthrough.catppuccin = cfg; } ]; + catppuccin.enable = cfg.enable; + # gtk and cursor themes - environment.systemPackages = with cfg; mkIf cfg.enable [ + environment.systemPackages = with cfg; mkIf enable [ gtk.package cursor.package ]; diff --git a/home/gui/catppuccin/solid.png b/home/catppuccin/solid.png similarity index 68% rename from home/gui/catppuccin/solid.png rename to home/catppuccin/solid.png index 2c512dd6394541a9e2c3c5b5b44eeb870f5b098f..81bd01e2b7637f8ad16b5b80b0638bce52352982 100644 GIT binary patch literal 33649 zcmeAS@N?(olHy`uVBq!ia0y~y;Adc9;3(i=Vqjp9zZ0X%z`!Vy8sVAd>8ZuQ!N9=4 z&A`CO!obMD09MHeWfyQTFfcJPGcYqSFic`#VBlk9Vi00rV3@(cz#zoP3|0@)BgM!H zX0KvkV33BgH!(0UXh79~^cylVG4L`lFzjMrU@&52Vh~|qU^v0Rz>wJvvG)$hZjd7x zI2bq>oQqNuOHxx5$}>wc6x=<10~r2jGB89lFu-Y$pn{Q}p@E*U1p|YTfsu)ofti(& ziGqQpm7#@|fiVLUL)#>F21y16hF=T}42%m9?uA+frZ8=aYh|`$U|?*`baoE#baqxK zD9TUE%t>WnsF+hb(bnT|fJm!<^j0NNL2Hr1j)1vu7Af^@<#JsikkuL{>l62j-B)Uo zh`9T~tq&fYPr7>WXk<8hxTC-y#=^3KppuC~@4dNnllFY5kbi!+xZ=Itf%_{AuD>KGR5h{v#{0&+EoIL{LKw1-fz41=U;{lxuQk<*3)+~Fz{AnhD4M^ z`1)8S=jZArrsOB3>Q&?xfFseyzM>#8IXksPAt^OIGtXA({qFrr3YjUkO5vuy2EGN( zsTr9bRYj@6RemAKRoTgwDN6QsTs9R}6}bhusU?XD6}dTi#a0!zN?>!X@`|lM!um=I zU?nBlwn`Dc0SeCfMX3rVdM0`Xx~>(OWkyPNTnaWtDQQ+gE^bgGic->Sl`=|73as?? z%gf94%8m8%i_-NCEiEne4UF`SjC6}q(sYX}^GXscbn}XpK}JB#a7isrF3Kz@$;{7F z0GXMXlwVq6tE9xGpr8OXydt;2*B5SlUNJNjlJj%*D-sLz4fPE4b942PbrhGlmX+Yw zQ5;fPkg6Y)TAW{6l$`2XmYP?hjBG?oGF*Q_X;BW?J1NQfsX3{+sd**E`i6RjC{}_p zCR_(72+}ii3&6T6atlyYmSm}AAQ`ZCkR4KyTL3o~MK#RtV8!4tvU15!E(JNy z)5TT^WWQBPesX4t6_{ycoMx14nQE?Um};7&Ym#VSq??#zlBSzvVwsw3ZfTmDn3{-W zlxJRXNn&1dD#)mc+ycGK%oHojv{aK+!&FOMOJh?*U6Vu;16>P~6hmDzQ`00914AS8 z#KaUNBm9dp(=+oDbC6vHGAboA#md+$)xtc{(nvSO$kiLFv*Zen_>enDP3SOOH_R*nIlwn|2N1_+UWoWzo}{Gwc2 zC7;Z^(h7t`NM>$oa7iL4G!4xSEe$OVEi8=9jZDqWjSz~$Qj3Z+^YcJvf{R$N3@BQx z{EISE^GXsy>C{%q5G-DiTVMq)NArt9^7C_Sl|W7c7tU~L-_(-Cl*E!mm&B4(TO~ws z9Re$^wGAw+3?R-28Rwgyl9^UXNVOd(bJ#$l+#|ENB)_N!KsB19)z2d2~w?~ zpa9MkR*A_FFBB)1r9vVLE|r{-n3tZKVygsAt}rc`SdxNSlBtD>L2{z5fkBdqu8B!n zs;)(vX^O6eX`+Q$T57Ucim^F36yT;8=ckpFCl;kTrl;nW*ebba<`#g%NTzEgG)M4 zsRuC-RO-+YL*s&$RwyWpT0&Czjt19gaFG-OBq<(EU8BK8QV5WwcrNS3%plsM<-f?DO6-TUxHK5+&H1qM$S$B>F!Z*DmXGAQsI zFmO1ba%R6x$rrte7s}tCkpuVjz(hlnI%wbl%w}K+NNiw(GC`vYJQolghc-qj1n-1_ z186J)Dj><00c9~TFen@b4^Kb^QY022%x~afHi3#WFfdFQwQMvP8AcNbgVAU{8!bUb z%SMLLDrU6u9BmeWrgKJHSEJ2>(PjYy!)UW$v{^9PEEw%mkB%0AhD}CC3x>jIK~34) z1{MYe28Rp(ufOFeY2ToTJX9vlgfs#+Dm5A!NW-Y3X=5~}fXaCY9xWV33y0Cd0g@LO z7#K#g!)SIG%?_j40Tu$IjU|GOrRSRxrD1CUAi*{oXaoaoG@w8sFk0J=*0!UyEhr~| z@o07!uuhtcdXnjJtn0gOkp!)SIG%?{wK03t@S!)SIG%?_ZP0LG))VKh68W(ROq z01-nlJ0xA_^8h)W= z5il{DHb!#_(m9Kxg~Mp!04^86#Ax9#S~!dr4&bZ+B1W^rXm%LQ4xpR>#-rI`G&_uD z2XIyZ5u@2*G&_uD2T)D`W8$*IU!Btj7#M^aKz9T%Ffa^k_j5(8wE}2$p}?2_rPfS$ z6~X=(J@18qVf3tq(X$$0nPK$!qtWazdW_`g$(e}qV6=7^tsM}lVf1{G0Xv^$v{)W3 xmJu0ov{)W3mJz98v{)W3mPb!fgXagd?7$dVE9kZHq}~sZ0#8>zmvv4FO#or2+^4YxWQNyy^X;w1@Ht!5I{KCbU_$9En{?r+xXDXVk_rI3* zGu(flWOMrez4@!-&qnibbQ~#6n_>2m?c?9XYe)d8hJ`q>ar}`O;K_mFKDTt(xWc)9G6B)X!q+YlD*4+Wq7{Tv?ks^L2=_ zN0OlT1O+EY-qer;Ww+gaU9I&dbJc7999|c%G~H>Pk%XmKKr7qLug(7tzP}mOy3$i$ za}L9oD2*M4GaFSzb*KJFL85WTm=u$MXj4T z3=9eko-U3dn;qkJu?Z-by=`D&U|?{#@c;T-j*|AxiABE!HYccBG6@`6Cp!UTI>)d7 zyJQ>R32bJx{KU%h;q%4s2qP>Vcm+CQtrZv<7#IY;{4cd;x~sUEF-VwaQ{Y@So+Ft{ zjTsn(8bQ`gKIq*f5U{(<0pwzZ7yn! diff --git a/home/gui/catppuccin/flake.png b/home/gui/catppuccin/flake.png deleted file mode 100644 index 97fb644a2a2db6ff6e867e552d8cb809a9ba98f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50243 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 diff --git a/home/gui/catppuccin/home.nix b/home/gui/catppuccin/home.nix deleted file mode 100644 index 7853f5ea..00000000 --- a/home/gui/catppuccin/home.nix +++ /dev/null @@ -1,135 +0,0 @@ -{ pkgs -, lib -, config -, ... }: with lib; let - cfg = config.passthrough.catppuccin; - palette = (import ./palette.nix).${cfg.palette}; -in mkIf cfg.enable { - # cursor theme - home.pointerCursor = { inherit (cfg.cursor) package name; }; - gtk.cursorTheme = { inherit (cfg.cursor) package name; }; - - # gtk theme - gtk.theme = { inherit (cfg.gtk) package name; }; - gtk.iconTheme = { - package = pkgs.catppuccin-papirus-folders.override { - flavor = cfg.palette; - accent = "pink"; - }; - name = "Papirus-Dark"; - }; - - # sway colour palette override - wayland.windowManager.sway.config = { - colors = with palette; { - focused = { border = lavender; background = base; text = text; indicator = rosewater; childBorder = lavender; }; - focusedInactive = { border = overlay0; background = base; text = text; indicator = rosewater; childBorder = overlay0; }; - unfocused = { border = overlay0; background = base; text = text; indicator = rosewater; childBorder = overlay0; }; - urgent = { border = peach; background = base; text = peach; indicator = overlay0; childBorder = peach; }; - placeholder = { border = overlay0; background = base; text = text; indicator = overlay0; childBorder = overlay0; }; - background = base; - }; - - bars = mkForce [ { - colors = let - p = palette; - in { - background = p.base; - statusline = p.text; - focusedStatusline = p.text; - focusedSeparator = p.base; - focusedWorkspace = { border = p.base; background = p.base; text = p.green; }; - activeWorkspace = { border = p.base; background = p.base; text = p.blue; }; - inactiveWorkspace = { border = p.base; background = p.base; text = p.surface1; }; - urgentWorkspace = { border = p.base; background = p.base; text = p.surface1; }; - bindingMode = { border = p.base; background = p.base; text = p.surface1; }; - }; - - mode = "dock"; - position = "bottom"; - workspaceButtons = true; - workspaceNumbers = true; - statusCommand = "${pkgs.i3status}/bin/i3status"; - fonts = { - names = [ "monospace" ]; - size = 8.0; - }; - trayOutput = "primary"; - } ]; - - output."*".bg = mkForce "${./flake.png} fill"; - gaps.inner = 12; - gaps.outer = 5; - # dodge the status bar - gaps.bottom = 0; - }; - - # swaylock colour palette override - programs.swaylock.settings = with palette; let - transparent = "00000000"; - in { - color = base; - bs-hl-color = rosewater; - caps-lock-bs-hl-color = rosewater; - caps-lock-key-hl-color = green; - inside-color = transparent; - inside-clear-color = transparent; - inside-caps-lock-color = transparent; - inside-ver-color = transparent; - inside-wrong-color = transparent; - key-hl-color = green; - layout-bg-color = transparent; - layout-border-color = transparent; - layout-text-color = text; - line-color = transparent; - line-clear-color = transparent; - line-caps-lock-color = transparent; - line-ver-color = transparent; - line-wrong-color = transparent; - ring-color = lavender; - ring-clear-color = rosewater; - ring-caps-lock-color = peach; - ring-ver-color = blue; - ring-wrong-color = maroon; - separator-color = transparent; - text-color = text; - text-clear-color = rosewater; - text-caps-lock-color = peach; - text-ver-color = blue; - text-wrong-color = maroon; - }; - - # i3status colour palette override - programs.i3status.general = with palette; { - color_good = lavender; - color_degraded = yellow; - color_bad = red; - }; - - # mako colour palette override - services.mako = with palette; { - backgroundColor = base; - textColor = text; - borderColor = blue; - progressColor = "over ${surface0}"; - extraConfig = '' - [urgency=high] - border-color=${peach} - ''; - }; - - # foot colour palette override - programs.foot.settings.colors = with palette; let - c = substring 1 7; - in { - foreground = c text; background = c base; - regular0 = c overlay2; regular1 = c red; - regular2 = c green; regular3 = c yellow; - regular4 = c blue; regular5 = c pink; - regular6 = c teal; regular7 = c surface2; - bright0 = c subtext0; bright1 = c red; - bright2 = c green; bright3 = c yellow; - bright4 = c blue; bright5 = c pink; - bright6 = c teal; bright7 = c surface1; - }; -} diff --git a/home/gui/catppuccin/palette.nix b/home/gui/catppuccin/palette.nix deleted file mode 100644 index 1e330574..00000000 --- a/home/gui/catppuccin/palette.nix +++ /dev/null @@ -1,117 +0,0 @@ -{ - latte = { - rosewater = "#dc8a78"; - flamingo = "#dd7878"; - pink = "#ea76cb"; - mauve = "#8839ef"; - red = "#d20f39"; - maroon = "#e64553"; - peach = "#fe640b"; - yellow = "#df8e1d"; - green = "#40a02b"; - teal = "#179299"; - sky = "#04a5e5"; - sapphire = "#209fb5"; - blue = "#1e66f5"; - lavender = "#7287fd"; - text = "#4c4f69"; - subtext1 = "#5c5f77"; - subtext0 = "#6c6f85"; - overlay2 = "#7c7f93"; - overlay1 = "#8c8fa1"; - overlay0 = "#9ca0b0"; - surface2 = "#acb0be"; - surface1 = "#bcc0cc"; - surface0 = "#ccd0da"; - base = "#eff1f5"; - mantle = "#e6e9ef"; - crust = "#dce0e8"; - }; - - frappe = { - rosewater = "#f2d5cf"; - flamingo = "#eebebe"; - pink = "#f4b8e4"; - mauve = "#ca9ee6"; - red = "#e78284"; - maroon = "#ea999c"; - peach = "#ef9f76"; - yellow = "#e5c890"; - green = "#a6d189"; - teal = "#81c8be"; - sky = "#99d1db"; - sapphire = "#85c1dc"; - blue = "#8caaee"; - lavender = "#babbf1"; - text = "#c6d0f5"; - subtext1 = "#b5bfe2"; - subtext0 = "#a5adce"; - overlay2 = "#949cbb"; - overlay1 = "#838ba7"; - overlay0 = "#737994"; - surface2 = "#626880"; - surface1 = "#51576d"; - surface0 = "#414559"; - base = "#303446"; - mantle = "#292c3c"; - crust = "#232634"; - }; - - macchiato = { - rosewater = "#f4dbd6"; - flamingo = "#f0c6c6"; - pink = "#f5bde6"; - mauve = "#c6a0f6"; - red = "#ed8796"; - maroon = "#ee99a0"; - peach = "#f5a97f"; - yellow = "#eed49f"; - green = "#a6da95"; - teal = "#8bd5ca"; - sky = "#91d7e3"; - sapphire = "#7dc4e4"; - blue = "#8aadf4"; - lavender = "#b7bdf8"; - text = "#cad3f5"; - subtext1 = "#b8c0e0"; - subtext0 = "#a5adcb"; - overlay2 = "#939ab7"; - overlay1 = "#8087a2"; - overlay0 = "#6e738d"; - surface2 = "#5b6078"; - surface1 = "#494d64"; - surface0 = "#363a4f"; - base = "#24273a"; - mantle = "#1e2030"; - crust = "#181926"; - }; - - mocha = { - rosewater = "#f5e0dc"; - flamingo = "#f2cdcd"; - pink = "#f5c2e7"; - mauve = "#cba6f7"; - red = "#f38ba8"; - maroon = "#eba0ac"; - peach = "#fab387"; - yellow = "#f9e2af"; - green = "#a6e3a1"; - teal = "#94e2d5"; - sky = "#89dceb"; - sapphire = "#74c7ec"; - blue = "#89b4fa"; - lavender = "#b4befe"; - text = "#cdd6f4"; - subtext1 = "#bac2de"; - subtext0 = "#a6adc8"; - overlay2 = "#9399b2"; - overlay1 = "#7f849c"; - overlay0 = "#6c7086"; - surface2 = "#585b70"; - surface1 = "#45475a"; - surface0 = "#313244"; - base = "#1e1e2e"; - mantle = "#181825"; - crust = "#11111b"; - }; -} diff --git a/home/gui/home.nix b/home/gui/home.nix index 52eac590..f8423161 100644 --- a/home/gui/home.nix +++ b/home/gui/home.nix @@ -1,15 +1,17 @@ { pkgs , lib , config -, ... }: with lib; { - imports = [ ./catppuccin/home.nix ]; - +, ... }: with lib; let + catppuccin = config.passthrough.catppuccin.enable; +in { config = mkIf config.passthrough.gui { # cursor theme - home.pointerCursor = mkDefault { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; + home.pointerCursor = { + package = mkDefault pkgs.bibata-cursors; + name = mkDefault "Bibata-Modern-Classic"; size = 24; + x11.enable = true; + gtk.enable = true; }; # gtk theme diff --git a/home/gui/nixos.nix b/home/gui/nixos.nix index 82012777..6b1fccd3 100644 --- a/home/gui/nixos.nix +++ b/home/gui/nixos.nix @@ -5,8 +5,6 @@ gui = with config.global.gpu; enable && session; catppuccin = config.home.catppuccin; in { - imports = [ ./catppuccin/nixos.nix ]; - config = { users.homeModules = [ # this module passes gui configuration to home-manager diff --git a/home/profile.nix b/home/profile.nix index 4a00bf32..6cf374df 100644 --- a/home/profile.nix +++ b/home/profile.nix @@ -1,6 +1,7 @@ { pkgs , lib , config +, inputs , ... }: with lib; let cfg = config.users; in { @@ -137,7 +138,9 @@ in { (filterAttrs (n: _: n != "root") config.users.profiles); home-manager.users = mapAttrs (name: opts: { - imports = cfg.homeModules; + imports = with inputs; cfg.homeModules ++ [ + catppuccin.homeManagerModules.catppuccin + ]; home.file.".face" = mkIf (opts.picture != null) { source = opts.picture; }; diff --git a/spec/default.nix b/spec/default.nix index fe88c033..021aa4c1 100644 --- a/spec/default.nix +++ b/spec/default.nix @@ -12,6 +12,7 @@ ./channel.nix impermanence.nixosModules.impermanence home-manager.nixosModules.home-manager + catppuccin.nixosModules.catppuccin { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; From 7f63055615a59bc055e82a59042918bc32759de0 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 24 Jun 2024 09:56:37 +0800 Subject: [PATCH 204/274] flake: bump inputs --- flake.lock | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index d84596e7..c2d8e039 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,20 @@ { "nodes": { + "catppuccin": { + "locked": { + "lastModified": 1719104749, + "narHash": "sha256-ZYRhOs5Qm3KzTl0sZg3XVD9zAQf2yDM9E2NHyFMPv8I=", + "owner": "catppuccin", + "repo": "nix", + "rev": "2fb16f2d6ffb2759f14fbcbd1f1e242f5fb662c7", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "type": "github" + } + }, "crane": { "inputs": { "flake-compat": [ @@ -155,11 +170,11 @@ ] }, "locked": { - "lastModified": 1717931644, - "narHash": "sha256-Sz8Wh9cAiD5FhL8UWvZxBfnvxETSCVZlqWSYWaCPyu0=", + "lastModified": 1718788307, + "narHash": "sha256-SqiOz0sljM0GjyQEVinPXQxaGcbOXw5OgpCWGPgh/vo=", "owner": "nix-community", "repo": "home-manager", - "rev": "3d65009effd77cb0d6e7520b68b039836a7606cf", + "rev": "d7830d05421d0ced83a0f007900898bdcaf2a2ca", "type": "github" }, "original": { @@ -190,11 +205,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1717685136, - "narHash": "sha256-S+C/DX5HOhlhJAmcGxbB+Tv6oqZOkr3z/WzPuydXI14=", + "lastModified": 1718916561, + "narHash": "sha256-BOZ06KJ2l7E9z0y2pjrd1dyoV5ERJRHeD6K1lkapw4w=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "fd13986ede9b94c50e84aecb2c88863e297bbb52", + "rev": "e7740b673956283e30529dbaff3aa99ff98f4062", "type": "github" }, "original": { @@ -254,11 +269,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1716330097, - "narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=", + "lastModified": 1718714799, + "narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2", + "rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e", "type": "github" }, "original": { @@ -286,11 +301,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1717786204, - "narHash": "sha256-4q0s6m0GUcN7q+Y2DqD27iLvbcd1G50T2lv08kKxkSI=", + "lastModified": 1718714799, + "narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "051f920625ab5aabe37c920346e3e69d7d34400e", + "rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e", "type": "github" }, "original": { @@ -310,11 +325,11 @@ ] }, "locked": { - "lastModified": 1717666468, - "narHash": "sha256-SKPMh/Apjk3DhY0B/SqTvmt1/UFf2AHwoVPTGA6Md9c=", + "lastModified": 1718956312, + "narHash": "sha256-iH+ilQbskYuwoOgN1w3sTgkEcVuuFPIJZ1HCGdgeh70=", "owner": "pjones", "repo": "plasma-manager", - "rev": "d982fe0063be13bbe57a0c4ace8b406236812b94", + "rev": "6f182700ad78f13f367fdfff2b0a4062e70eeea8", "type": "github" }, "original": { @@ -356,6 +371,7 @@ }, "root": { "inputs": { + "catppuccin": "catppuccin", "flake-parts": "flake-parts", "flake-utils": "flake-utils", "home-manager": "home-manager", From 1c1ac1ae34c449bd6d37ec44057711cd4ef83471 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 24 Jun 2024 10:04:43 +0800 Subject: [PATCH 205/274] home(vscode): update vscode color theme --- home/vscode/home.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/vscode/home.nix b/home/vscode/home.nix index 6fb4b99b..b6ab9c29 100644 --- a/home/vscode/home.nix +++ b/home/vscode/home.nix @@ -16,8 +16,8 @@ in mkIf cfg.enable { bbenoist.nix golang.go rust-lang.rust-analyzer ]; userSettings = { - "workbench.colorTheme" = mkIf theme "Catppuccin Frappé"; - "workbench.iconTheme" = mkIf theme "catppuccin-frappe"; + "workbench.colorTheme" = mkIf theme "Catppuccin Mocha"; + "workbench.iconTheme" = mkIf theme "catppuccin-mocha"; "[nix]"."editor.tabSize" = 2; }; }; From d6096e7a88611b482a2f1812f595e16d00edb572 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 24 Jun 2024 16:32:20 +0800 Subject: [PATCH 206/274] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ global/gpu/default.nix | 4 +--- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index c2d8e039..a489bad8 100644 --- a/flake.lock +++ b/flake.lock @@ -170,11 +170,11 @@ ] }, "locked": { - "lastModified": 1718788307, - "narHash": "sha256-SqiOz0sljM0GjyQEVinPXQxaGcbOXw5OgpCWGPgh/vo=", + "lastModified": 1719180626, + "narHash": "sha256-vZAzm5KQpR6RGple1dzmSJw5kPivES2heCFM+ZWkt0I=", "owner": "nix-community", "repo": "home-manager", - "rev": "d7830d05421d0ced83a0f007900898bdcaf2a2ca", + "rev": "6b1f90a8ff92e81638ae6eb48cd62349c3e387bb", "type": "github" }, "original": { @@ -185,11 +185,11 @@ }, "impermanence": { "locked": { - "lastModified": 1717932370, - "narHash": "sha256-7C5lCpiWiyPoIACOcu2mukn/1JRtz6HC/1aEMhUdcw0=", + "lastModified": 1719091691, + "narHash": "sha256-AxaLX5cBEcGtE02PeGsfscSb/fWMnyS7zMWBXQWDKbE=", "owner": "nix-community", "repo": "impermanence", - "rev": "27979f1c3a0d3b9617a3563e2839114ba7d48d3f", + "rev": "23c1f06316b67cb5dabdfe2973da3785cfe9c34a", "type": "github" }, "original": { @@ -205,11 +205,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1718916561, - "narHash": "sha256-BOZ06KJ2l7E9z0y2pjrd1dyoV5ERJRHeD6K1lkapw4w=", + "lastModified": 1719032789, + "narHash": "sha256-MIPobSKR53T0Yrb8wu2fbjSVokhJeJy5AF6B1Hzckso=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "e7740b673956283e30529dbaff3aa99ff98f4062", + "rev": "495a672a2024bdc0e86af95f4e338827f9bfb865", "type": "github" }, "original": { @@ -269,11 +269,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718714799, - "narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=", + "lastModified": 1718895438, + "narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e", + "rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3", "type": "github" }, "original": { @@ -301,11 +301,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1718714799, - "narHash": "sha256-FUZpz9rg3gL8NVPKbqU8ei1VkPLsTIfAJ2fdAf5qjak=", + "lastModified": 1719075281, + "narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c00d587b1a1afbf200b1d8f0b0e4ba9deb1c7f0e", + "rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af", "type": "github" }, "original": { @@ -325,11 +325,11 @@ ] }, "locked": { - "lastModified": 1718956312, - "narHash": "sha256-iH+ilQbskYuwoOgN1w3sTgkEcVuuFPIJZ1HCGdgeh70=", + "lastModified": 1719145147, + "narHash": "sha256-Es/sgvSvVzv3DfWcl3OMABIuBUWiYXx2uwT94hQO4Io=", "owner": "pjones", "repo": "plasma-manager", - "rev": "6f182700ad78f13f367fdfff2b0a4062e70eeea8", + "rev": "5db39ce2fa95f4dfe1bdfe371fd9a90c65b3a9a0", "type": "github" }, "original": { diff --git a/global/gpu/default.nix b/global/gpu/default.nix index 768ed74e..a51e8ddf 100644 --- a/global/gpu/default.nix +++ b/global/gpu/default.nix @@ -29,10 +29,8 @@ in { }; config = mkIf cfg.enable { - hardware.opengl = { + hardware.graphics = { enable = true; - driSupport = true; - driSupport32Bit = true; # https://nixos.wiki/wiki/Accelerated_Video_Playback extraPackages = with pkgs; optionals intel [ From ff4c1c33bf5ed6dbe988226e0b36715f8748d6ee Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 24 Jun 2024 18:22:30 +0800 Subject: [PATCH 207/274] global(io): switch audio system to pipewire --- global/io/default.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/global/io/default.nix b/global/io/default.nix index 7d70afe7..9763ec11 100644 --- a/global/io/default.nix +++ b/global/io/default.nix @@ -30,11 +30,15 @@ in { networking.firewall.logRefusedConnections = true; hardware.bluetooth.enable = mkDefault cfg.bluetooth; - hardware.pulseaudio = mkIf cfg.audio { + # rtkit is optional but recommended + security.rtkit.enable = cfg.audio; + services.pipewire = mkIf cfg.audio { enable = true; - support32Bit = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; }; - #nixpkgs.config.pulseaudio = mkIf cfg.audio; security.pam.loginLimits = mkIf (!cfg.coredump) (singleton { domain = "*"; item = "core"; type = "hard"; value = "0"; }); systemd.coredump.extraConfig = mkIf (!cfg.coredump) "Storage=none"; @@ -47,5 +51,8 @@ in { optional cfg.bluetooth "/var/lib/bluetooth" ++ optional cfg.coredump "/var/lib/systemd/coredump"; environment.persistence."/nix/persist/fhs".hideMounts = true; + + users.home.persist.directories = [ ] ++ + optional cfg.audio ".local/state/wireplumber"; }; } From ff0045605c022acf8da960533541b5597061129b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 24 Jun 2024 20:28:49 +0800 Subject: [PATCH 208/274] global(gui): add nvidia options --- global/gpu/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/global/gpu/default.nix b/global/gpu/default.nix index a51e8ddf..dd3a92ca 100644 --- a/global/gpu/default.nix +++ b/global/gpu/default.nix @@ -73,7 +73,7 @@ in { # work around broken nvidia hw cursor on wayland WLR_NO_HARDWARE_CURSORS = mkIf (cfg.type == "nvidia") "1"; # work around wlroots flickering on pure nvidia - WLR_RENDERER = mkIf (cfg.type == "nvidia") "vulkan"; + #WLR_RENDERER = mkIf (cfg.type == "nvidia") "vulkan"; }; specialisation.integratedGraphics = mkIf (cfg.type == "prime") { @@ -103,6 +103,8 @@ in { options vfio-pci ids=${cfg.arc} ''; - boot.kernelParams = optional intel "i915.fastboot=1"; + boot.kernelParams = + optional intel "i915.fastboot=1" ++ + optionals nvidia [ "nvidia_drm.modeset=1" "nvidia_drm.fbdev=1" ]; }; } From ba5b6bb55448e9529bd36a285d1edf68c67d33d1 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 12 Jul 2024 17:10:40 +0800 Subject: [PATCH 209/274] spec(yume): enable lanzaboote --- flake.nix | 2 +- spec/yume/default.nix | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index df435879..d50b4480 100644 --- a/flake.nix +++ b/flake.nix @@ -13,7 +13,7 @@ plasma-manager.inputs.nixpkgs.follows = "nixpkgs"; plasma-manager.inputs.home-manager.follows = "home-manager"; catppuccin.url = "github:catppuccin/nix"; - lanzaboote.url = "github:nix-community/lanzaboote/v0.3.0"; + lanzaboote.url = "github:nix-community/lanzaboote/v0.4.1"; lanzaboote.inputs.nixpkgs.follows = "nixpkgs"; # steamdeck diff --git a/spec/yume/default.nix b/spec/yume/default.nix index 9d0dec00..3352e4e4 100644 --- a/spec/yume/default.nix +++ b/spec/yume/default.nix @@ -8,6 +8,7 @@ fs.esp.uuid = "6CEB-765A"; fs.type = "xfs"; fs.store = "b80e8bbe-d1ff-4d2e-ae25-9e9048d67355"; + boot.lanzaboote = true; gpu.enable = true; gpu.type = "nvidia"; }; From f6d15928f567d16f7ad1af2d27d069ed0acbcdb0 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 12 Jul 2024 17:10:48 +0800 Subject: [PATCH 210/274] flake: bump inputs --- flake.lock | 116 +++++++++++++++++++++++------------------------------ 1 file changed, 50 insertions(+), 66 deletions(-) diff --git a/flake.lock b/flake.lock index a489bad8..4ae8ef03 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1719104749, - "narHash": "sha256-ZYRhOs5Qm3KzTl0sZg3XVD9zAQf2yDM9E2NHyFMPv8I=", + "lastModified": 1720472194, + "narHash": "sha256-CYscFEts6tyvosc1T29nxhzIYJAj/1CCEkV3ZMzSN/c=", "owner": "catppuccin", "repo": "nix", - "rev": "2fb16f2d6ffb2759f14fbcbd1f1e242f5fb662c7", + "rev": "d75d5803852fb0833767dc969a4581ac13204e22", "type": "github" }, "original": { @@ -17,29 +17,17 @@ }, "crane": { "inputs": { - "flake-compat": [ - "lanzaboote", - "flake-compat" - ], - "flake-utils": [ - "lanzaboote", - "flake-utils" - ], "nixpkgs": [ "lanzaboote", "nixpkgs" - ], - "rust-overlay": [ - "lanzaboote", - "rust-overlay" ] }, "locked": { - "lastModified": 1681177078, - "narHash": "sha256-ZNIjBDou2GOabcpctiQykEQVkI8BDwk7TyvlWlI4myE=", + "lastModified": 1717535930, + "narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=", "owner": "ipetkov", "repo": "crane", - "rev": "0c9f468ff00576577d83f5019a66c557ede5acf6", + "rev": "55e7754ec31dac78980c8be45f8a28e80e370946", "type": "github" }, "original": { @@ -51,11 +39,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -71,11 +59,11 @@ ] }, "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "lastModified": 1719994518, + "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", "type": "github" }, "original": { @@ -92,11 +80,11 @@ ] }, "locked": { - "lastModified": 1680392223, - "narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=", + "lastModified": 1717285511, + "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5", + "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", "type": "github" }, "original": { @@ -128,11 +116,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -150,11 +138,11 @@ ] }, "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { @@ -170,11 +158,11 @@ ] }, "locked": { - "lastModified": 1719180626, - "narHash": "sha256-vZAzm5KQpR6RGple1dzmSJw5kPivES2heCFM+ZWkt0I=", + "lastModified": 1720734513, + "narHash": "sha256-neWQ8eNtLTd+YMesb7WjKl1SVCbDyCm46LUgP/g/hdo=", "owner": "nix-community", "repo": "home-manager", - "rev": "6b1f90a8ff92e81638ae6eb48cd62349c3e387bb", + "rev": "90ae324e2c56af10f20549ab72014804a3064c7f", "type": "github" }, "original": { @@ -205,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1719032789, - "narHash": "sha256-MIPobSKR53T0Yrb8wu2fbjSVokhJeJy5AF6B1Hzckso=", + "lastModified": 1720697445, + "narHash": "sha256-IvFFc57vljkR1eP4VeNMuXJTS/POClq+ytFAadigSY0=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "495a672a2024bdc0e86af95f4e338827f9bfb865", + "rev": "bba994424596df09228f5437bcf8ef7fde1fe56e", "type": "github" }, "original": { @@ -231,16 +219,16 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1682802423, - "narHash": "sha256-Fb5TeRTdvUlo/5Yi2d+FC8a6KoRLk2h1VE0/peMhWPs=", + "lastModified": 1718178907, + "narHash": "sha256-eSZyrQ9uoPB9iPQ8Y5H7gAmAgAvCw3InStmU3oEjqsE=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "64b903ca87d18cef2752c19c098af275c6e51d63", + "rev": "b627ccd97d0159214cee5c7db1412b75e4be6086", "type": "github" }, "original": { "owner": "nix-community", - "ref": "v0.3.0", + "ref": "v0.4.1", "repo": "lanzaboote", "type": "github" } @@ -269,11 +257,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718895438, - "narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=", + "lastModified": 1720418205, + "narHash": "sha256-cPJoFPXU44GlhWg4pUk9oUPqurPlCFZ11ZQPk21GTPU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3", + "rev": "655a58a72a6601292512670343087c2d75d859c1", "type": "github" }, "original": { @@ -285,27 +273,27 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1678872516, - "narHash": "sha256-/E1YwtMtFAu2KUQKV/1+KFuReYPANM2Rzehk84VxVoc=", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9b8e5abb18324c7fe9f07cb100c3cd4a29cda8b8", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.11", + "ref": "nixos-23.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_2": { "locked": { - "lastModified": 1719075281, - "narHash": "sha256-CyyxvOwFf12I91PBWz43iGT1kjsf5oi6ax7CrvaMyAo=", + "lastModified": 1720542800, + "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a71e967ef3694799d0c418c98332f7ff4cc5f6af", + "rev": "feb2849fdeb70028c70d73b848214b00d324a497", "type": "github" }, "original": { @@ -325,11 +313,11 @@ ] }, "locked": { - "lastModified": 1719145147, - "narHash": "sha256-Es/sgvSvVzv3DfWcl3OMABIuBUWiYXx2uwT94hQO4Io=", + "lastModified": 1720603727, + "narHash": "sha256-A5qYbCT3rHvVi95u8Zy12cRmW5OPT7yFl1LrTDSejyE=", "owner": "pjones", "repo": "plasma-manager", - "rev": "5db39ce2fa95f4dfe1bdfe371fd9a90c65b3a9a0", + "rev": "f0691e1a9fff4684ce399c345c3a941d2ef0fe78", "type": "github" }, "original": { @@ -344,10 +332,6 @@ "lanzaboote", "flake-compat" ], - "flake-utils": [ - "lanzaboote", - "flake-utils" - ], "gitignore": "gitignore", "nixpkgs": [ "lanzaboote", @@ -356,11 +340,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1681413034, - "narHash": "sha256-/t7OjNQcNkeWeSq/CFLYVBfm+IEnkjoSm9iKvArnUUI=", + "lastModified": 1717664902, + "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "d3de8f69ca88fb6f8b09e5b598be5ac98d28ede5", + "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", "type": "github" }, "original": { @@ -394,11 +378,11 @@ ] }, "locked": { - "lastModified": 1682129965, - "narHash": "sha256-1KRPIorEL6pLpJR04FwAqqnt4Tzcm4MqD84yhlD+XSk=", + "lastModified": 1717813066, + "narHash": "sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "2c417c0460b788328220120c698630947547ee83", + "rev": "6dc3e45fe4aee36efeed24d64fc68b1f989d5465", "type": "github" }, "original": { From b8085b2f007be3e6530cd442b8c36357278271e3 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 12 Jul 2024 19:41:43 +0800 Subject: [PATCH 211/274] home(catppuccin): set qt style --- home/catppuccin/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/catppuccin/home.nix b/home/catppuccin/home.nix index b72fbd75..cfb64092 100644 --- a/home/catppuccin/home.nix +++ b/home/catppuccin/home.nix @@ -12,6 +12,8 @@ in mkIf cfg.enable { }; gtk.theme = { inherit (cfg.gtk) package name; }; + qt.style.name = "kvantum"; + qt.platformTheme.name = "kvantum"; home.pointerCursor = { inherit (cfg.cursor) package name; }; # sway colour palette override From 85d651de77c01aca5bbe7d0f783d71f3b4c89ab1 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 12 Jul 2024 23:42:33 +0800 Subject: [PATCH 212/274] package(tubesync): temporarily allow obsolete dependency --- package/tubesync/nixos.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/tubesync/nixos.nix b/package/tubesync/nixos.nix index 8681edb9..383503a9 100644 --- a/package/tubesync/nixos.nix +++ b/package/tubesync/nixos.nix @@ -182,7 +182,7 @@ in { # package is local-only, will allow this for now nixpkgs.config.permittedInsecurePackages = [ - "python3.11-django-3.2.25" + "python3.12-django-3.2.25" ]; }; } From 04dcc1b594aead7e9895a81f54c709431768ceb2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 13 Jul 2024 21:05:28 +0800 Subject: [PATCH 213/274] home(catppuccin): fix gtk theme name again --- home/catppuccin/nixos.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/catppuccin/nixos.nix b/home/catppuccin/nixos.nix index cf470aa4..c68d41ff 100644 --- a/home/catppuccin/nixos.nix +++ b/home/catppuccin/nixos.nix @@ -31,7 +31,7 @@ in { }; name = mkOption { type = with types; str; - default = "catppuccin-mocha-pink-compact+default"; + default = "catppuccin-mocha-pink-compact"; description = "name of catppuccin gtk theme"; }; }; From ac6e778fe79d044c2287a1c4de3bbe3e7bd57308 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 13 Jul 2024 21:34:25 +0800 Subject: [PATCH 214/274] global(gpu): enable 32-bit drivers --- global/gpu/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/global/gpu/default.nix b/global/gpu/default.nix index dd3a92ca..3b950361 100644 --- a/global/gpu/default.nix +++ b/global/gpu/default.nix @@ -31,6 +31,7 @@ in { config = mkIf cfg.enable { hardware.graphics = { enable = true; + enable32Bit = true; # https://nixos.wiki/wiki/Accelerated_Video_Playback extraPackages = with pkgs; optionals intel [ From e2e2d2327cf0d0a9bf4e59fc6cb392686259611f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 18 Jul 2024 11:01:19 +0800 Subject: [PATCH 215/274] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 4ae8ef03..7d6a0490 100644 --- a/flake.lock +++ b/flake.lock @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1720734513, - "narHash": "sha256-neWQ8eNtLTd+YMesb7WjKl1SVCbDyCm46LUgP/g/hdo=", + "lastModified": 1721135958, + "narHash": "sha256-H548rpPMsn25LDKn1PCFmPxmWlClJJGnvdzImHkqjuY=", "owner": "nix-community", "repo": "home-manager", - "rev": "90ae324e2c56af10f20549ab72014804a3064c7f", + "rev": "afd2021bedff2de92dfce0e257a3d03ae65c603d", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1720697445, - "narHash": "sha256-IvFFc57vljkR1eP4VeNMuXJTS/POClq+ytFAadigSY0=", + "lastModified": 1721226562, + "narHash": "sha256-KfdwusX12hhkzXKBmu2HhaU9EhaxVeWLDQw1Ll2A03o=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "bba994424596df09228f5437bcf8ef7fde1fe56e", + "rev": "927eea31915468e06b94bedf678261dc7cf048c8", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1720542800, - "narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=", + "lastModified": 1720957393, + "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "feb2849fdeb70028c70d73b848214b00d324a497", + "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1720603727, - "narHash": "sha256-A5qYbCT3rHvVi95u8Zy12cRmW5OPT7yFl1LrTDSejyE=", + "lastModified": 1720992717, + "narHash": "sha256-8j1bZVfKT1vJ0e+U7NYRNBG+DdBj5C/tpwe5krxT4/4=", "owner": "pjones", "repo": "plasma-manager", - "rev": "f0691e1a9fff4684ce399c345c3a941d2ef0fe78", + "rev": "460b48dc3dcd05df568e27cbb90581d23baec8dc", "type": "github" }, "original": { From 7a632f88bc11807ea4412a05fe5ddf1daf0f0efb Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 18 Jul 2024 17:06:03 +0800 Subject: [PATCH 216/274] spec(shinkirou): specialise plasma --- spec/shinkirou/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/shinkirou/default.nix b/spec/shinkirou/default.nix index a0464ab6..d2594a80 100644 --- a/spec/shinkirou/default.nix +++ b/spec/shinkirou/default.nix @@ -14,7 +14,7 @@ }; home = { - plasma.enable = true; + plasma.specialise = true; gyroflow.enable = true; vscode.enable = true; libreoffice.enable = true; From d62dbe2f810546e871d3d38747d599f36ac53582 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 18 Jul 2024 17:36:24 +0800 Subject: [PATCH 217/274] home(catppuccin): add i3status colours --- home/catppuccin/home.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/home/catppuccin/home.nix b/home/catppuccin/home.nix index cfb64092..56b4ad0a 100644 --- a/home/catppuccin/home.nix +++ b/home/catppuccin/home.nix @@ -3,7 +3,7 @@ , config , ... }: with lib; let cfg = config.passthrough.catppuccin; - palette = (import ./palette.nix).${cfg.palette}; + palette = (lib.importJSON "${config.catppuccin.sources.palette}/palette.json").${config.catppuccin.flavor}.colors; in mkIf cfg.enable { catppuccin = { enable = true; @@ -58,4 +58,11 @@ in mkIf cfg.enable { # dodge the status bar gaps.bottom = 0; }; + + # i3status colour palette override + programs.i3status.general = with palette; { + color_good = lavender.hex; + color_degraded = yellow.hex; + color_bad = red.hex; + }; } From e8711b9ad6a8e508e5a3a8e4db6d31576f9f183a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 18 Jul 2024 17:36:44 +0800 Subject: [PATCH 218/274] spec(chireiden): disable catppuccin for plymouth --- spec/chireiden/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/chireiden/default.nix b/spec/chireiden/default.nix index bfc15ee2..4dd70842 100644 --- a/spec/chireiden/default.nix +++ b/spec/chireiden/default.nix @@ -37,6 +37,7 @@ nvidiaBusId = "PCI:5:0:0"; }; + boot.plymouth.catppuccin.enable = false; hardware.enableRedistributableFirmware = true; boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; From 3c08169968abbb5652c51076e099fb44a4a0f579 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 21 Jul 2024 10:54:14 +0800 Subject: [PATCH 219/274] package(photoview): bump photoview 2.3.13 to 2.4.0 --- package/photoview/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package/photoview/default.nix b/package/photoview/default.nix index 40194a29..be549841 100644 --- a/package/photoview/default.nix +++ b/package/photoview/default.nix @@ -14,18 +14,18 @@ , runCommandLocal , makeWrapper }: buildGoModule rec { pname = "photoview"; - version = "2.3.13"; + version = "2.4.0"; source = fetchFromGitHub { name = "${pname}-src"; owner = pname; repo = pname; rev = "refs/tags/v${version}"; - hash = "sha256-O6k5nbiWTsuOi8YLX0rsZJ9dOIo5d6pdwjhFZrdwI0E="; + hash = "sha256-ZfvBdQlyqONsrviZGL22Kt+AiPaVWwdoREDUrHDYyIs="; }; src = source + "/api"; - vendorHash = "sha256-0SWywy9YdPtgvxRhwKhKvspPmhbnibSuhvzhsjIQvZk="; + vendorHash = "sha256-Tn4OxSV41s/4n2Q3teJRJNc39s6eKW4xE9wW/CIR5Fg="; nativeBuildInputs = [ pkg-config makeWrapper @@ -48,7 +48,7 @@ REACT_APP_BUILD_DATE = builtins.readFile (runCommandLocal "date" { } "date -uI > $out" ); REACT_APP_BUILD_COMMIT_SHA = "nix"; - npmDepsHash = "sha256-31CyjyNd85hNg4MXIWctoQ3YgorGqCMz+wDAu/K1lWo="; + npmDepsHash = "sha256-wUbfq+7SuJUBxfy9TxHVda8A0g4mmYCbzJT64XBN2mI="; }; postInstall = '' From 42e61c859be25d634f6929e977f450e648c7b5fd Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 21 Jul 2024 10:59:09 +0800 Subject: [PATCH 220/274] package(expresslrs-configurator): bump expresslrs-configurator 1.6.1 to 1.7.2 --- package/expresslrs-configurator/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/expresslrs-configurator/default.nix b/package/expresslrs-configurator/default.nix index e68f639a..affbbe58 100644 --- a/package/expresslrs-configurator/default.nix +++ b/package/expresslrs-configurator/default.nix @@ -5,13 +5,13 @@ , buildFHSUserEnv }: let name = "ExpressLRS-Configurator"; pname = "expresslrs-configurator"; - version = "1.6.1"; + version = "1.7.2"; dist = fetchzip { name = "${pname}-dist"; url = "https://github.com/ExpressLRS/ExpressLRS-Configurator/releases/download/v${version}/${pname}-${version}.zip"; stripRoot = false; - hash = "sha256-m/e8dsOadjk63cwfnnCBbjXzI/ooWZUGRM5n267JmhQ="; + hash = "sha256-pXmJ420HeJaMjAZCzlIriuFrTK5xabxTrSy3PDVisgU="; }; desktopItem = makeDesktopItem { From 53ae20ad1225d81c73afd9d63027869a05aca50f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 21 Jul 2024 16:37:39 +0800 Subject: [PATCH 221/274] home(catppuccin): enable catppuccin module even without gui --- home/catppuccin/gui.nix | 62 +++++++++++++++++++++++++++++++++++++++ home/catppuccin/home.nix | 63 ++-------------------------------------- 2 files changed, 64 insertions(+), 61 deletions(-) create mode 100644 home/catppuccin/gui.nix diff --git a/home/catppuccin/gui.nix b/home/catppuccin/gui.nix new file mode 100644 index 00000000..c52a3b96 --- /dev/null +++ b/home/catppuccin/gui.nix @@ -0,0 +1,62 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.passthrough.catppuccin; + palette = (lib.importJSON "${config.catppuccin.sources.palette}/palette.json").${config.catppuccin.flavor}.colors; +in mkIf cfg.enable { + gtk.theme = { inherit (cfg.gtk) package name; }; + qt.style.name = "kvantum"; + qt.platformTheme.name = "kvantum"; + home.pointerCursor = { inherit (cfg.cursor) package name; }; + + # sway colour palette override + wayland.windowManager.sway.config = { + colors = { + focused = { border = "$lavender"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$lavender"; }; + focusedInactive = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$overlay0"; }; + unfocused = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$overlay0"; }; + urgent = { border = "$peach"; background = "$base"; text = "$peach"; indicator = "$overlay0"; childBorder = "$peach"; }; + placeholder = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$overlay0"; childBorder = "$overlay0"; }; + background = "$base"; + }; + + bars = mkForce [ { + colors = { + background = "$base"; + statusline = "$text"; + focusedStatusline = "$text"; + focusedSeparator = "$base"; + focusedWorkspace = { border = "$base"; background = "$base"; text = "$green"; }; + activeWorkspace = { border = "$base"; background = "$base"; text = "$blue"; }; + inactiveWorkspace = { border = "$base"; background = "$base"; text = "$surface1"; }; + urgentWorkspace = { border = "$base"; background = "$base"; text = "$surface1"; }; + bindingMode = { border = "$base"; background = "$base"; text = "$surface1"; }; + }; + + mode = "dock"; + position = "bottom"; + workspaceButtons = true; + workspaceNumbers = true; + statusCommand = "${pkgs.i3status}/bin/i3status"; + fonts = { + names = [ "monospace" ]; + size = 8.0; + }; + trayOutput = "primary"; + } ]; + + output."*".bg = mkForce "${./flake.png} fill"; + gaps.inner = 12; + gaps.outer = 5; + # dodge the status bar + gaps.bottom = 0; + }; + + # i3status colour palette override + programs.i3status.general = with palette; { + color_good = lavender.hex; + color_degraded = yellow.hex; + color_bad = red.hex; + }; +} diff --git a/home/catppuccin/home.nix b/home/catppuccin/home.nix index 56b4ad0a..01950f15 100644 --- a/home/catppuccin/home.nix +++ b/home/catppuccin/home.nix @@ -1,68 +1,9 @@ -{ pkgs -, lib -, config -, ... }: with lib; let - cfg = config.passthrough.catppuccin; - palette = (lib.importJSON "${config.catppuccin.sources.palette}/palette.json").${config.catppuccin.flavor}.colors; -in mkIf cfg.enable { +{ catppuccin = { enable = true; accent = "pink"; flavor = "mocha"; }; - gtk.theme = { inherit (cfg.gtk) package name; }; - qt.style.name = "kvantum"; - qt.platformTheme.name = "kvantum"; - home.pointerCursor = { inherit (cfg.cursor) package name; }; - - # sway colour palette override - wayland.windowManager.sway.config = { - colors = { - focused = { border = "$lavender"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$lavender"; }; - focusedInactive = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$overlay0"; }; - unfocused = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$overlay0"; }; - urgent = { border = "$peach"; background = "$base"; text = "$peach"; indicator = "$overlay0"; childBorder = "$peach"; }; - placeholder = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$overlay0"; childBorder = "$overlay0"; }; - background = "$base"; - }; - - bars = mkForce [ { - colors = { - background = "$base"; - statusline = "$text"; - focusedStatusline = "$text"; - focusedSeparator = "$base"; - focusedWorkspace = { border = "$base"; background = "$base"; text = "$green"; }; - activeWorkspace = { border = "$base"; background = "$base"; text = "$blue"; }; - inactiveWorkspace = { border = "$base"; background = "$base"; text = "$surface1"; }; - urgentWorkspace = { border = "$base"; background = "$base"; text = "$surface1"; }; - bindingMode = { border = "$base"; background = "$base"; text = "$surface1"; }; - }; - - mode = "dock"; - position = "bottom"; - workspaceButtons = true; - workspaceNumbers = true; - statusCommand = "${pkgs.i3status}/bin/i3status"; - fonts = { - names = [ "monospace" ]; - size = 8.0; - }; - trayOutput = "primary"; - } ]; - - output."*".bg = mkForce "${./flake.png} fill"; - gaps.inner = 12; - gaps.outer = 5; - # dodge the status bar - gaps.bottom = 0; - }; - - # i3status colour palette override - programs.i3status.general = with palette; { - color_good = lavender.hex; - color_degraded = yellow.hex; - color_bad = red.hex; - }; + imports = [ ./gui.nix ]; } From 7e4528b539d0295b3841f6434ba31b87158ce37c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 26 Jul 2024 15:46:49 +0800 Subject: [PATCH 222/274] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 7d6a0490..9f33d7a4 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1720472194, - "narHash": "sha256-CYscFEts6tyvosc1T29nxhzIYJAj/1CCEkV3ZMzSN/c=", + "lastModified": 1721784420, + "narHash": "sha256-bgF6fN4Qgk7NErFKGuuqWXcLORsiykTYyqMUFRiAUBY=", "owner": "catppuccin", "repo": "nix", - "rev": "d75d5803852fb0833767dc969a4581ac13204e22", + "rev": "8bdb55cc1c13f572b6e4307a3c0d64f1ae286a4f", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1721135958, - "narHash": "sha256-H548rpPMsn25LDKn1PCFmPxmWlClJJGnvdzImHkqjuY=", + "lastModified": 1721852138, + "narHash": "sha256-JH8N5uoqoVA6erV4O40VtKKHsnfmhvMGbxMNDLtim5o=", "owner": "nix-community", "repo": "home-manager", - "rev": "afd2021bedff2de92dfce0e257a3d03ae65c603d", + "rev": "304a011325b7ac7b8c9950333cd215a7aa146b0e", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "lastModified": 1721743106, + "narHash": "sha256-adRZhFpBTnHiK3XIELA3IBaApz70HwCYfv7xNrHjebA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "dc14ed91132ee3a26255d01d8fd0c1f5bff27b2f", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1720992717, - "narHash": "sha256-8j1bZVfKT1vJ0e+U7NYRNBG+DdBj5C/tpwe5krxT4/4=", + "lastModified": 1721724566, + "narHash": "sha256-6H+OTxXkOrh3P+15bhkQJY7OaBrQVzx4Pz+pCn6rtIg=", "owner": "pjones", "repo": "plasma-manager", - "rev": "460b48dc3dcd05df568e27cbb90581d23baec8dc", + "rev": "b967e042896de0f64513d4596e3d1f3eae445d1c", "type": "github" }, "original": { From 8270fb3dfe07f3fa560c57e66e03e2d0355ae79a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 27 Jul 2024 18:18:35 +0800 Subject: [PATCH 223/274] spec(hakugyokurou): initial configuration --- global/auth/pub/hakugyokurou.pub | 1 + spec/hakugyokurou/default.nix | 65 ++++++++++++++++++++++ spec/hakugyokurou/jovian.nix | 93 ++++++++++++++++++++++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 global/auth/pub/hakugyokurou.pub create mode 100644 spec/hakugyokurou/default.nix create mode 100644 spec/hakugyokurou/jovian.nix diff --git a/global/auth/pub/hakugyokurou.pub b/global/auth/pub/hakugyokurou.pub new file mode 100644 index 00000000..4fa391d2 --- /dev/null +++ b/global/auth/pub/hakugyokurou.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHKCA0/6dsdVyLEgzWt8+u5lWVc0o6A3MY4M2Hf2BT8h koishi@hakugyokurou diff --git a/spec/hakugyokurou/default.nix b/spec/hakugyokurou/default.nix new file mode 100644 index 00000000..8d49af87 --- /dev/null +++ b/spec/hakugyokurou/default.nix @@ -0,0 +1,65 @@ +{ pkgs, lib, config, ... }: { + global = { + id = "09a2900f15b74f36b023a9ebcd539f6a"; + fs.esp.uuid = "AE73-B83E"; + fs.type = "xfs"; + fs.store = "e4c673cb-03c5-44ac-b2f1-1085a7f7a553"; + fs.cryptsetup.enable = true; + fs.cryptsetup.uuids.persist = "122001b1-7a43-4bab-ae7c-ba8eeb1cc864"; + boot.lanzaboote = true; + gpu.enable = true; + gpu.type = "amdgpu"; + }; + + home = { + jetbrains.enable = true; + vscode.enable = true; + minecraft.enable = true; + minecraft.user = "app"; + }; + + users.homeModules = [ { + wayland.windowManager.sway.config = { + input = { + "9610:30:HID_258a:001e_Mouse".natural_scroll = "disabled"; + "1539:61441:NVTK0603:00_0603:F001_UNKNOWN".map_to_output = "eDP-1"; + "1539:61441:NVTK0603:00_0603:F001".map_to_output = "eDP-1"; + }; + output = { + eDP-1.scale = "2"; + eDP-1.transform = "270"; + }; + }; + } ]; + + powerManagement.enable = true; + powerManagement.cpuFreqGovernor = "performance"; + boot.kernelParams = [ + "video=eDP-1:panel_orientation=left_side_up" + ]; + + jovian.steamos.useSteamOSConfig = lib.mkDefault false; + services.greetd.settings.default_session.command = let + cfg = config.programs.regreet; + in lib.mkOverride 999 "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' + ${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2 --transform 90 + ${lib.getExe cfg.package} + ''}"; + environment.systemPackages = with pkgs; [ + (writeShellScriptBin "sway-logout" '' + ${systemd}/bin/systemctl --user unset-environment WAYLAND_DISPLAY SWAYSOCK + ${sway}/bin/swaymsg exit + '') + ]; + + hardware.enableRedistributableFirmware = true; + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + hardware.cpu.intel.updateMicrocode = true; + + imports = [ + ./jovian.nix + ]; +} diff --git a/spec/hakugyokurou/jovian.nix b/spec/hakugyokurou/jovian.nix new file mode 100644 index 00000000..a50e3a40 --- /dev/null +++ b/spec/hakugyokurou/jovian.nix @@ -0,0 +1,93 @@ +{ pkgs, lib, config, jovian, ... }: with lib; { + specialisation.steamos.configuration = { + jovian = { + hardware.has.amd.gpu = true; + steamos.useSteamOSConfig = true; + steamos.enableDefaultCmdlineConfig = false; + + steam = { + enable = true; + autoStart = true; + desktopSession = "plasma"; + user = "app"; + }; + }; + + users.home.persistApp.directories = [ + ".steam" ".local/share/Steam" + ".config/gamescope" ".config/hhd" + ".kodi" + ]; + + users.users.app.extraGroups = [ "networkmanager" "gamemode" ]; + programs.gamemode.enable = true; + programs.regreet.enable = false; + home.plasma.enable = true; + home.plasma.extraConfig = { + configFile = { + kwinrc.Xwayland.Scale = 1.75; + kscreenlockerrc.Daemon.Autolock = false; + }; + }; + + home-manager.users.app = { + home.packages = with pkgs; [ + (pkgs.kodi-wayland.passthru.withPackages (kodiPkgs: with kodiPkgs; [ + joystick # keymap steam-controller + #controller-topology-project + libretro libretro-2048 + libretro-fuse libretro-genplus libretro-mgba + libretro-nestopia libretro-snes9x + jellycon + ])) + ]; + + home.pointerCursor = { + package = pkgs.steamdeck-hw-theme; + name = "steam"; + }; + }; + + services.handheld-daemon = { + enable = true; + user = "app"; + }; + + jovian.decky-loader = { + # ~/.steam/steam/.cef-enable-remote-debugging + enable = true; + user = "app"; + extraPackages = with pkgs; [ + curl unzip util-linux gnugrep procps pciutils kmod ryzenadj + ]; + extraPythonPackages = pythonPackages: with pythonPackages; [ + hid pyyaml + ]; + stateDir = "/nix/persist/decky"; + }; + + boot.kernelParams = [ + "iomem=relaxed" + "amd_pstate=passive" + ]; + boot.plymouth.themePackages = [ pkgs.steamdeck-hw-theme ]; + boot.plymouth.theme = "steamos"; + + services.udev.extraRules = '' + SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="${pkgs.ryzenadj}/bin/ryzenadj --max-performance" + ''; + + nixpkgs.overlays = [ (final: prev: { + gamescope = prev.gamescope.overrideAttrs (finalAttrs: previousAttrs: { + postInstall = previousAttrs.postInstall + "\n" + '' + wrapProgram "$out/bin/gamescope" \ + --append-flags "--force-orientation left" + ''; + }); + }) ]; + }; + + imports = [ + jovian.nixosModules.jovian + ]; +} From 728d390197e18cd1d2ce88bec1a5f80bc425d48f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 27 Jul 2024 23:03:53 +0800 Subject: [PATCH 224/274] spec(hakugyokurou): correct Xwayland scale value --- spec/hakugyokurou/jovian.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/hakugyokurou/jovian.nix b/spec/hakugyokurou/jovian.nix index a50e3a40..d486d6e5 100644 --- a/spec/hakugyokurou/jovian.nix +++ b/spec/hakugyokurou/jovian.nix @@ -25,7 +25,7 @@ home.plasma.enable = true; home.plasma.extraConfig = { configFile = { - kwinrc.Xwayland.Scale = 1.75; + kwinrc.Xwayland.Scale = 2; kscreenlockerrc.Daemon.Autolock = false; }; }; From c1a216090b2be2e34dd2e883128cdb11b7c912c2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 27 Jul 2024 23:05:13 +0800 Subject: [PATCH 225/274] spec(koumakyou): set cursor theme --- spec/koumakyou/jovian.nix | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/spec/koumakyou/jovian.nix b/spec/koumakyou/jovian.nix index a5754ee1..f06d43f7 100644 --- a/spec/koumakyou/jovian.nix +++ b/spec/koumakyou/jovian.nix @@ -32,16 +32,23 @@ }; }; - home-manager.users.app.home.packages = with pkgs; [ - (pkgs.kodi-wayland.passthru.withPackages (kodiPkgs: with kodiPkgs; [ - joystick # keymap steam-controller - #controller-topology-project - libretro libretro-2048 - libretro-fuse libretro-genplus libretro-mgba - libretro-nestopia libretro-snes9x - jellycon - ])) - ]; + home-manager.users.app = { + home.packages = with pkgs; [ + (pkgs.kodi-wayland.passthru.withPackages (kodiPkgs: with kodiPkgs; [ + joystick # keymap steam-controller + #controller-topology-project + libretro libretro-2048 + libretro-fuse libretro-genplus libretro-mgba + libretro-nestopia libretro-snes9x + jellycon + ])) + ]; + + home.pointerCursor = { + package = pkgs.steamdeck-hw-theme; + name = "steam"; + }; + }; services.handheld-daemon = { enable = true; From 0ecd208b50193018cd286f78e15da46e3a4707c6 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 28 Jul 2024 16:06:12 +0800 Subject: [PATCH 226/274] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 9f33d7a4..4f2efc23 100644 --- a/flake.lock +++ b/flake.lock @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1721852138, - "narHash": "sha256-JH8N5uoqoVA6erV4O40VtKKHsnfmhvMGbxMNDLtim5o=", + "lastModified": 1722119539, + "narHash": "sha256-2kU90liMle0vKR8exJx1XM4hZh9CdNgZGHCTbeA9yzY=", "owner": "nix-community", "repo": "home-manager", - "rev": "304a011325b7ac7b8c9950333cd215a7aa146b0e", + "rev": "d0240a064db3987eb4d5204cf2400bc4452d9922", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1721226562, - "narHash": "sha256-KfdwusX12hhkzXKBmu2HhaU9EhaxVeWLDQw1Ll2A03o=", + "lastModified": 1721993749, + "narHash": "sha256-dGqEQ68GNGmA8+HHzHEqAcW2uGu/AX+sRWcMO99UM8s=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "927eea31915468e06b94bedf678261dc7cf048c8", + "rev": "3bd059992912139d6a12e86ba418f933ec368ef2", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1721743106, - "narHash": "sha256-adRZhFpBTnHiK3XIELA3IBaApz70HwCYfv7xNrHjebA=", + "lastModified": 1722062969, + "narHash": "sha256-QOS0ykELUmPbrrUGmegAUlpmUFznDQeR4q7rFhl8eQg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dc14ed91132ee3a26255d01d8fd0c1f5bff27b2f", + "rev": "b73c2221a46c13557b1b3be9c2070cc42cf01eb3", "type": "github" }, "original": { From 3b334b3fe726aa75f845248f2804c2a28b59b7de Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 29 Jul 2024 14:19:20 +0800 Subject: [PATCH 227/274] home(gnome): update gtk theme names --- home/gnome/impl/dconf.nix | 16 +++++++++------- home/gnome/impl/nixos.nix | 5 ++++- home/gnome/nixos.nix | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index f8426c5d..b729c39c 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -3,6 +3,7 @@ , config , ... }: with lib; let cfg = config.passthrough.gnome; + bg = ../../catppuccin/flake.png; in mkIf cfg.enable { dconf.settings = let p = "org/gnome"; @@ -26,18 +27,18 @@ in mkIf cfg.enable { "${pd}/background" = { color-shading-type = "solid"; picture-options = "zoom"; - picture-uri = "file://${../../../share/catppuccin-nix.png}"; - picture-uri-dark = "file://${../../../share/catppuccin-nix.png}"; + picture-uri = "file://${bg}"; + picture-uri-dark = "file://${bg}"; primary-color = "#000000000000"; secondary-color = "#000000000000"; }; "${pd}/interface" = { color-scheme = "prefer-dark"; - cursor-theme = "Catppuccin-Frappe-Dark-Cursors"; + cursor-theme = "catppuccin-mocha-dark-cursors"; font-antialiasing = "grayscale"; font-hinting = "slight"; - gtk-theme = "Catppuccin-Frappe-Compact-Pink-Dark"; + gtk-theme = "catppuccin-mocha-pink-compact"; icon-theme = "Papirus-Dark"; }; @@ -45,7 +46,7 @@ in mkIf cfg.enable { color-shading-type = "solid"; lock-enabled = false; picture-options = "zoom"; - picture-uri = "file://${../../../share/catppuccin-nix.png}"; + picture-uri = "file://${bg}"; primary-color = "#000000000000"; secondary-color = "#000000000000"; }; @@ -54,10 +55,11 @@ in mkIf cfg.enable { action-double-click-titlebar = "toggle-maximize"; action-middle-click-titlebar = "minimize"; button-layout = "close,minimize,maximize:appmenu"; + resize-with-right-button = true; }; "${ptlp}" = { - default = "71a9971e-e829-43a9-9b2f-4565c855d664"; + default = "95894cfd-82f7-430d-af6e-84d168bc34f5"; list = [ "de8a9081-8352-4ce4-9519-5de655ad9361" "71a9971e-e829-43a9-9b2f-4565c855d664" @@ -162,7 +164,7 @@ in mkIf cfg.enable { welcome-dialog-last-shown-version = "45.3"; }; - "${pse}/user-theme".name = "Catppuccin-Frappe-Compact-Pink-Dark"; + "${pse}/user-theme".name = "catppuccin-mocha-pink-compact"; "${pse}/dash-to-dock" = { background-opacity = 0.80000000000000004; diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index e7ebd0a8..57716860 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -10,7 +10,10 @@ in mkIf cfg.enable { services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; + hardware.pulseaudio.enable = false; - users.home.persist.directories = [ ]; + users.home.persist.directories = [ + ".config/dconf" + ]; environment.persistence."/nix/persist/fhs".directories = [ ]; } diff --git a/home/gnome/nixos.nix b/home/gnome/nixos.nix index ee00b3ef..c7a3bd26 100644 --- a/home/gnome/nixos.nix +++ b/home/gnome/nixos.nix @@ -13,7 +13,7 @@ in { config = { users.homeModules = [ # this module passes gnome configuration to home-manager - { passthrough.gnome= cfg; } + { passthrough.gnome = cfg; } ]; specialisation.nognome = with cfg; mkIf enable { From 65f6c69ec31af40a320ce2dc1f596eadfa5085cc Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 29 Jul 2024 14:43:01 +0800 Subject: [PATCH 228/274] spec(hakugyokurou): enable gnome --- spec/hakugyokurou/default.nix | 3 +++ spec/hakugyokurou/jovian.nix | 2 ++ 2 files changed, 5 insertions(+) diff --git a/spec/hakugyokurou/default.nix b/spec/hakugyokurou/default.nix index 8d49af87..f2f4f0f8 100644 --- a/spec/hakugyokurou/default.nix +++ b/spec/hakugyokurou/default.nix @@ -12,8 +12,10 @@ }; home = { + gnome.enable = true; jetbrains.enable = true; vscode.enable = true; + steam.enable = true; minecraft.enable = true; minecraft.user = "app"; }; @@ -52,6 +54,7 @@ '') ]; + hardware.sensor.iio.enable = true; hardware.enableRedistributableFirmware = true; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usbhid" "rtsx_pci_sdmmc" ]; boot.initrd.kernelModules = [ ]; diff --git a/spec/hakugyokurou/jovian.nix b/spec/hakugyokurou/jovian.nix index d486d6e5..68759ab7 100644 --- a/spec/hakugyokurou/jovian.nix +++ b/spec/hakugyokurou/jovian.nix @@ -22,6 +22,8 @@ users.users.app.extraGroups = [ "networkmanager" "gamemode" ]; programs.gamemode.enable = true; programs.regreet.enable = false; + home.gnome.enable = mkForce false; + home.steam.enable = mkForce false; home.plasma.enable = true; home.plasma.extraConfig = { configFile = { From 4e4238fbeff7f891e7b420bd801c69a4e8c62243 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 29 Jul 2024 15:40:41 +0800 Subject: [PATCH 229/274] global(flatpak): add portals and persist --- global/flatpak/default.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 global/flatpak/default.nix diff --git a/global/flatpak/default.nix b/global/flatpak/default.nix new file mode 100644 index 00000000..48bafda6 --- /dev/null +++ b/global/flatpak/default.nix @@ -0,0 +1,17 @@ +{ pkgs +, lib +, config +, ... }: with lib; let + cfg = config.global.flatpak; +in { + options.global.flatpak = { + enable = mkEnableOption "flatpak sandbox"; + }; + + config = mkIf cfg.enable { + services.flatpak.enable = true; + xdg.portal.enable = true; + users.home.persist.directories = [ ".local/share/flatpak" ]; + environment.persistence."/nix/persist/fhs".directories = [ "/var/lib/flatpak" ]; + }; +} From 3dd4201a3e9b6f2cbb77f39aabd83a20163f4477 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 29 Jul 2024 15:40:59 +0800 Subject: [PATCH 230/274] home(gnome): enable flatpak by default --- home/gnome/impl/home.nix | 7 +++---- home/gnome/impl/nixos.nix | 2 ++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/home/gnome/impl/home.nix b/home/gnome/impl/home.nix index 24d15901..d10861b1 100644 --- a/home/gnome/impl/home.nix +++ b/home/gnome/impl/home.nix @@ -5,11 +5,10 @@ cfg = config.passthrough.gnome; in mkIf cfg.enable { home.packages = - with pkgs; - with gnome; - with gnomeExtensions; [ + with pkgs.gnome; + with pkgs.gnomeExtensions; [ # gnome - gnome-terminal + pkgs.gnome-terminal # gnomeExtensions dash-to-panel diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index 57716860..c05b24e4 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -4,12 +4,14 @@ , ... }: with lib; let cfg = config.home.gnome; in mkIf cfg.enable { + global.flatpak.enable = mkDefault true; programs.regreet.enable = false; services.xserver.enable = true; services.xserver.displayManager.startx.enable = false; services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; + xdg.portal.configPackages = with pkgs; [ gnome.gnome-session ]; hardware.pulseaudio.enable = false; users.home.persist.directories = [ From 1f92eab5e2e9a86aee7f0ebd51abc7bc599340da Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 29 Jul 2024 19:56:16 +0800 Subject: [PATCH 231/274] home(gnome): disable theme --- home/gnome/impl/dconf.nix | 53 ++++++++++++++++++++++++++++++--------- home/gnome/impl/home.nix | 7 +++--- home/gnome/impl/nixos.nix | 13 +++++++--- 3 files changed, 55 insertions(+), 18 deletions(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index b729c39c..4edf9c72 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -3,7 +3,7 @@ , config , ... }: with lib; let cfg = config.passthrough.gnome; - bg = ../../catppuccin/flake.png; + bg = ../../../share/54345906_p0.jpg; in mkIf cfg.enable { dconf.settings = let p = "org/gnome"; @@ -35,11 +35,11 @@ in mkIf cfg.enable { "${pd}/interface" = { color-scheme = "prefer-dark"; - cursor-theme = "catppuccin-mocha-dark-cursors"; + #cursor-theme = "catppuccin-mocha-dark-cursors"; font-antialiasing = "grayscale"; font-hinting = "slight"; - gtk-theme = "catppuccin-mocha-pink-compact"; - icon-theme = "Papirus-Dark"; + #gtk-theme = "catppuccin-mocha-pink-compact"; + #icon-theme = "Papirus-Dark"; }; "${pd}/screensaver" = { @@ -54,12 +54,12 @@ in mkIf cfg.enable { "${pd}/wm/preferences" = { action-double-click-titlebar = "toggle-maximize"; action-middle-click-titlebar = "minimize"; - button-layout = "close,minimize,maximize:appmenu"; + button-layout = "close:appmenu"; resize-with-right-button = true; }; "${ptlp}" = { - default = "95894cfd-82f7-430d-af6e-84d168bc34f5"; + #default = "95894cfd-82f7-430d-af6e-84d168bc34f5"; list = [ "de8a9081-8352-4ce4-9519-5de655ad9361" "71a9971e-e829-43a9-9b2f-4565c855d664" @@ -153,18 +153,19 @@ in mkIf cfg.enable { "windowsNavigator@gnome-shell-extensions.gcampax.github.com" "window-list@gnome-shell-extensions.gcampax.github.com" "workspace-indicator@gnome-shell-extensions.gcampax.github.com" - "dash-to-panel@jderose9.github.com" + "dash-to-dock@micxgx.gmail.com" ]; enabled-extensions = [ "user-theme@gnome-shell-extensions.gcampax.github.com" "apps-menu@gnome-shell-extensions.gcampax.github.com" "drive-menu@gnome-shell-extensions.gcampax.github.com" - "dash-to-dock@micxgx.gmail.com" + "appindicatorsupport@rgcjonas.gmail.com" + "dash-to-panel@jderose9.github.com" ]; welcome-dialog-last-shown-version = "45.3"; }; - "${pse}/user-theme".name = "catppuccin-mocha-pink-compact"; + #"${pse}/user-theme".name = "catppuccin-mocha-pink-compact"; "${pse}/dash-to-dock" = { background-opacity = 0.80000000000000004; @@ -172,22 +173,50 @@ in mkIf cfg.enable { dock-position = "BOTTOM"; height-fraction = 0.90000000000000002; multi-monitor = true; + running-indicator-style = "DOTS"; + custom-theme-shrink = true; }; "${pse}/dash-to-panel" = { - animate-appicon-hover-animation-extent = ''{'RIPPLE': 4, 'PLANK': 4, 'SIMPLE': 1}''; + animate-appicon-hover = false; + animate-appicon-hover-animation-type = "SIMPLE"; appicon-margin = 0; appicon-padding = 4; + appicon-style= "NORMAL"; available-monitors = [ 0 ]; dot-position = "BOTTOM"; + dot-style-focused = "METRO"; + dot-style-unfocused = "DOTS"; + group-apps = true; + hide-overview-on-startup = true; hotkeys-overlay-combo = "TEMPORARILY"; + isolate-workspaces = false; leftbox-padding = -1; + overview-click-to-exit = true; panel-anchors = ''{"0":"MIDDLE"}''; - panel-lengths=''{"0":100}''; - panel-sizes=''{"0":42}''; + panel-element-positions = ''{"0":[{"element":"showAppsButton","visible":true,"position":"stackedTL"},{"element":"activitiesButton","visible":true,"position":"stackedTL"},{"element":"leftBox","visible":false,"position":"stackedTL"},{"element":"taskbar","visible":true,"position":"centerMonitor"},{"element":"centerBox","visible":true,"position":"stackedBR"},{"element":"rightBox","visible":true,"position":"stackedBR"},{"element":"dateMenu","visible":true,"position":"stackedBR"},{"element":"systemMenu","visible":true,"position":"stackedBR"},{"element":"desktopButton","visible":false,"position":"stackedBR"}]}''; + panel-lengths = ''{"0":100}''; + panel-positions = ''{"0":"BOTTOM"}''; + panel-sizes = ''{"0":42}''; primary-monitor = 0; + secondarymenu-contains-showdetails = true; + show-showdesktop-hover = true; status-icon-padding = -1; + stockgs-force-hotcorner = false; + stockgs-keep-dash = false; + stockgs-keep-top-panel = false; + stockgs-panelbtn-click-only = false; + trans-bg-color = "#82a5c1"; + trans-dynamic-anim-target = 0.80000000000000002; + trans-dynamic-behavior = "MAXIMIZED_WINDOWS"; + trans-gradient-bottom-color = "#000000"; + trans-gradient-bottom-opacity = 0.5; + trans-gradient-top-opacity = 0.0; + trans-panel-opacity = 0.0; trans-use-custom-bg = false; + trans-use-custom-gradient = true; + trans-use-custom-opacity = true; + trans-use-dynamic-opacity = true; tray-padding = -1; window-preview-title-position = "TOP"; }; diff --git a/home/gnome/impl/home.nix b/home/gnome/impl/home.nix index d10861b1..8abf18ef 100644 --- a/home/gnome/impl/home.nix +++ b/home/gnome/impl/home.nix @@ -7,12 +7,13 @@ in mkIf cfg.enable { home.packages = with pkgs.gnome; with pkgs.gnomeExtensions; [ - # gnome - pkgs.gnome-terminal - # gnomeExtensions dash-to-panel dash-to-dock appindicator ]; + + catppuccin.enable = mkForce false; + home.pointerCursor = mkForce null; + gtk.enable = false; } diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index c05b24e4..bd5d6ff1 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -5,6 +5,8 @@ cfg = config.home.gnome; in mkIf cfg.enable { global.flatpak.enable = mkDefault true; + home.catppuccin.enable = mkDefault false; + catppuccin.enable = false; programs.regreet.enable = false; services.xserver.enable = true; services.xserver.displayManager.startx.enable = false; @@ -14,8 +16,13 @@ in mkIf cfg.enable { xdg.portal.configPackages = with pkgs; [ gnome.gnome-session ]; hardware.pulseaudio.enable = false; - users.home.persist.directories = [ - ".config/dconf" - ]; + environment.gnome.excludePackages = (with pkgs; [ + gnome-tour + ] ++ optionals config.global.flatpak.enable [ + gnome-calculator + ]) ++ (with pkgs.gnome; [ ] ++ optionals config.global.flatpak.enable [ + ]); + + users.home.persist.directories = [ ".config/dconf" ]; environment.persistence."/nix/persist/fhs".directories = [ ]; } From 803d5dfef7dcd50a0c4c2c1d5f6fed9d2b23ec10 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 29 Jul 2024 20:01:06 +0800 Subject: [PATCH 232/274] spec(hakugyokurou): set plymouth scale --- spec/hakugyokurou/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/hakugyokurou/default.nix b/spec/hakugyokurou/default.nix index f2f4f0f8..fcf7536d 100644 --- a/spec/hakugyokurou/default.nix +++ b/spec/hakugyokurou/default.nix @@ -39,6 +39,9 @@ boot.kernelParams = [ "video=eDP-1:panel_orientation=left_side_up" ]; + boot.plymouth.extraConfig = '' + DeviceScale=2 + ''; jovian.steamos.useSteamOSConfig = lib.mkDefault false; services.greetd.settings.default_session.command = let From c453fafc38b2bacd95e6984ab6cd6b9732880a5f Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 29 Jul 2024 23:44:44 +0800 Subject: [PATCH 233/274] home(gnome): move applications to flatpak --- home/gnome/impl/dconf.nix | 35 +++++++++++++++++++++++++++++++++++ home/gnome/impl/nixos.nix | 21 +++++++++++++++++++++ home/gui/nixos.nix | 2 +- home/util/home.nix | 7 ++++--- home/util/nixos.nix | 2 ++ 5 files changed, 63 insertions(+), 4 deletions(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index 4edf9c72..88a265af 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -58,6 +58,41 @@ in mkIf cfg.enable { resize-with-right-button = true; }; + "${pd}/wm/keybindings" = { + move-to-workspace-1 = [ "1" ]; + move-to-workspace-2 = [ "2" ]; + move-to-workspace-3 = [ "3" ]; + move-to-workspace-4 = [ "4" ]; + switch-to-workspace-1 = [ "1" ]; + switch-to-workspace-2 = [ "2" ]; + switch-to-workspace-3 = [ "3" ]; + switch-to-workspace-4 = [ "4" ]; + }; + + "${ps}/keybindings" = { + switch-to-application-1 = [ ]; + switch-to-application-2 = [ ]; + switch-to-application-3 = [ ]; + switch-to-application-4 = [ ]; + switch-to-application-5 = [ ]; + switch-to-application-6 = [ ]; + switch-to-application-7 = [ ]; + switch-to-application-8 = [ ]; + switch-to-application-9 = [ ]; + }; + + "${p}/settings-daemon/plugins/media-keys" = { + custom-keybindings = [ + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" + ]; + }; + + "${p}/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { + binding = "Return"; + command = "kgx"; + name = "Launch console"; + }; + "${ptlp}" = { #default = "95894cfd-82f7-430d-af6e-84d168bc34f5"; list = [ diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index bd5d6ff1..41a5a517 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -17,10 +17,31 @@ in mkIf cfg.enable { hardware.pulseaudio.enable = false; environment.gnome.excludePackages = (with pkgs; [ + snapshot gnome-tour ] ++ optionals config.global.flatpak.enable [ + baobab + simple-scan + evince + file-roller + geary + loupe + seahorse + totem + epiphany gnome-calculator + gnome-calendar + gnome-connections + gnome-font-viewer + gnome-text-editor ]) ++ (with pkgs.gnome; [ ] ++ optionals config.global.flatpak.enable [ + gnome-characters + gnome-clocks + gnome-contacts + gnome-logs + gnome-maps + gnome-music + gnome-weather ]); users.home.persist.directories = [ ".config/dconf" ]; diff --git a/home/gui/nixos.nix b/home/gui/nixos.nix index 6b1fccd3..0e655654 100644 --- a/home/gui/nixos.nix +++ b/home/gui/nixos.nix @@ -30,7 +30,7 @@ in { dconf.enable = true; }; services = mkIf gui { - blueman.enable = true; + blueman.enable = !config.global.flatpak.enable; }; }; } diff --git a/home/util/home.nix b/home/util/home.nix index 19d6eb0d..2c377008 100644 --- a/home/util/home.nix +++ b/home/util/home.nix @@ -14,14 +14,15 @@ in { ] ++ optionals config.passthrough.gui [ gtk-engine-murrine gnome-themes-extra - xfce.thunar gimp - jellyfin-media-player mission-planner - betaflight-configurator inav-configurator inav-blackbox-tools (blhelisuite32.override { workdir = "${config.home.homeDirectory}/.blhelisuite32"; }) + ] ++ optionals (config.passthrough.gui && !config.passthrough.flatpak.enable) [ + xfce.thunar gimp + jellyfin-media-player + betaflight-configurator expresslrs-configurator ]; diff --git a/home/util/nixos.nix b/home/util/nixos.nix index 4e55af9a..e69f027d 100644 --- a/home/util/nixos.nix +++ b/home/util/nixos.nix @@ -13,6 +13,8 @@ in { users.homeModules = [ # this module passes util configuration to home-manager { passthrough.util = cfg; } + # this module passes flatpak configuration to home-manager + { passthrough.flatpak = config.global.flatpak; } ]; programs.zsh.enable = true; From e8317fa4081b906c93072d6b583f231049b56ac3 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 30 Jul 2024 18:45:20 +0800 Subject: [PATCH 234/274] home(gnome): add some gnome-specific theming --- home/gnome/impl/dconf.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index 88a265af..fb1a3d8c 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -35,11 +35,11 @@ in mkIf cfg.enable { "${pd}/interface" = { color-scheme = "prefer-dark"; - #cursor-theme = "catppuccin-mocha-dark-cursors"; + cursor-theme = "Bibata-Modern-Classic"; font-antialiasing = "grayscale"; font-hinting = "slight"; - #gtk-theme = "catppuccin-mocha-pink-compact"; - #icon-theme = "Papirus-Dark"; + gtk-theme = "Adwaita-dark"; + icon-theme = "Papirus"; }; "${pd}/screensaver" = { From 956e5d605d854bfe0d54d0a1196c2cbbf45a1451 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 30 Jul 2024 18:51:45 +0800 Subject: [PATCH 235/274] home(gnome): improve gtk3 theme consistency --- home/gnome/impl/dconf.nix | 4 ++-- home/gnome/impl/home.nix | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index fb1a3d8c..21b45593 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -38,8 +38,8 @@ in mkIf cfg.enable { cursor-theme = "Bibata-Modern-Classic"; font-antialiasing = "grayscale"; font-hinting = "slight"; - gtk-theme = "Adwaita-dark"; - icon-theme = "Papirus"; + gtk-theme = "adw-gtk3-dark"; + icon-theme = "Papirus-Dark"; }; "${pd}/screensaver" = { diff --git a/home/gnome/impl/home.nix b/home/gnome/impl/home.nix index 8abf18ef..f01abc33 100644 --- a/home/gnome/impl/home.nix +++ b/home/gnome/impl/home.nix @@ -5,8 +5,12 @@ cfg = config.passthrough.gnome; in mkIf cfg.enable { home.packages = - with pkgs.gnome; - with pkgs.gnomeExtensions; [ + with pkgs; + with gnome; + with gnomeExtensions; [ + # gtk3 theme + adw-gtk3 + # gnomeExtensions dash-to-panel dash-to-dock From 7ef869da34c899bda5e53f22813918bd0b85df4a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 3 Aug 2024 18:02:17 +0800 Subject: [PATCH 236/274] home(gnome): add more shortcuts --- home/gnome/impl/dconf.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index 21b45593..6cb920b8 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -59,10 +59,16 @@ in mkIf cfg.enable { }; "${pd}/wm/keybindings" = { + panel-run-dialog = [ ]; + begin-resize = [ "r" ]; + close = [ "q" ]; + minimize = [ "BackSpace" ]; move-to-workspace-1 = [ "1" ]; move-to-workspace-2 = [ "2" ]; move-to-workspace-3 = [ "3" ]; move-to-workspace-4 = [ "4" ]; + move-to-workspace-left = [ "h" ]; + move-to-workspace-right = [ "l" ]; switch-to-workspace-1 = [ "1" ]; switch-to-workspace-2 = [ "2" ]; switch-to-workspace-3 = [ "3" ]; @@ -79,12 +85,16 @@ in mkIf cfg.enable { switch-to-application-7 = [ ]; switch-to-application-8 = [ ]; switch-to-application-9 = [ ]; + toggle-application-view = [ "d" ]; }; "${p}/settings-daemon/plugins/media-keys" = { custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" ]; + logout = [ ]; + screensaver = [ "l" ]; }; "${p}/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { @@ -93,6 +103,12 @@ in mkIf cfg.enable { name = "Launch console"; }; + "${p}/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { + binding = "q"; + command = "google-chrome-stable"; + name = "Launch Google Chrome"; + }; + "${ptlp}" = { #default = "95894cfd-82f7-430d-af6e-84d168bc34f5"; list = [ From 5b485226f2411d7d28557551e8a685d06d60fcc5 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 4 Aug 2024 12:27:11 +0800 Subject: [PATCH 237/274] spec(hakugyokurou): enable android --- spec/hakugyokurou/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/hakugyokurou/default.nix b/spec/hakugyokurou/default.nix index fcf7536d..a2032d45 100644 --- a/spec/hakugyokurou/default.nix +++ b/spec/hakugyokurou/default.nix @@ -9,6 +9,7 @@ boot.lanzaboote = true; gpu.enable = true; gpu.type = "amdgpu"; + android.enable = true; }; home = { From fff02fed26f68e75e20731e2b64b167c0e60c4db Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 4 Aug 2024 12:28:13 +0800 Subject: [PATCH 238/274] flake: bump inputs --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 4f2efc23..83f01ba3 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1721784420, - "narHash": "sha256-bgF6fN4Qgk7NErFKGuuqWXcLORsiykTYyqMUFRiAUBY=", + "lastModified": 1722661201, + "narHash": "sha256-2JX3S1hmmUhHuyGyGWnaM4xT0SiaDdVkNzmBrEowwK0=", "owner": "catppuccin", "repo": "nix", - "rev": "8bdb55cc1c13f572b6e4307a3c0d64f1ae286a4f", + "rev": "19a0f144f0204a12a89243363efb6a493b8cfc83", "type": "github" }, "original": { @@ -59,11 +59,11 @@ ] }, "locked": { - "lastModified": 1719994518, - "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", + "lastModified": 1722555600, + "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", + "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1722119539, - "narHash": "sha256-2kU90liMle0vKR8exJx1XM4hZh9CdNgZGHCTbeA9yzY=", + "lastModified": 1722630065, + "narHash": "sha256-QfM/9BMRkCmgWzrPDK+KbgJOUlSJnfX4OvsUupEUZvA=", "owner": "nix-community", "repo": "home-manager", - "rev": "d0240a064db3987eb4d5204cf2400bc4452d9922", + "rev": "afc892db74d65042031a093adb6010c4c3378422", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1721993749, - "narHash": "sha256-dGqEQ68GNGmA8+HHzHEqAcW2uGu/AX+sRWcMO99UM8s=", + "lastModified": 1722666143, + "narHash": "sha256-uTr3LiytFHFUYmIrhs5NoGlm5DCJxQlfyaZEKCU/DS8=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "3bd059992912139d6a12e86ba418f933ec368ef2", + "rev": "bcfe9dc708c92590fec676692b3ed79443eda819", "type": "github" }, "original": { @@ -257,11 +257,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1720418205, - "narHash": "sha256-cPJoFPXU44GlhWg4pUk9oUPqurPlCFZ11ZQPk21GTPU=", + "lastModified": 1722185531, + "narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "655a58a72a6601292512670343087c2d75d859c1", + "rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1722062969, - "narHash": "sha256-QOS0ykELUmPbrrUGmegAUlpmUFznDQeR4q7rFhl8eQg=", + "lastModified": 1722421184, + "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b73c2221a46c13557b1b3be9c2070cc42cf01eb3", + "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1721724566, - "narHash": "sha256-6H+OTxXkOrh3P+15bhkQJY7OaBrQVzx4Pz+pCn6rtIg=", + "lastModified": 1722693897, + "narHash": "sha256-Gpa3Gf60AqshNJKUP5mAmVImFFQ6BsWG+zbqx0JGFD4=", "owner": "pjones", "repo": "plasma-manager", - "rev": "b967e042896de0f64513d4596e3d1f3eae445d1c", + "rev": "b17a2666bcf400cf245528d143597d1480e298f8", "type": "github" }, "original": { From 4efcd64030831267ab1704f863ecfb2bcf022533 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 4 Aug 2024 13:05:00 +0800 Subject: [PATCH 239/274] home(gnome): add more shortcuts --- home/gnome/impl/dconf.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index 6cb920b8..ba4a1569 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -73,6 +73,7 @@ in mkIf cfg.enable { switch-to-workspace-2 = [ "2" ]; switch-to-workspace-3 = [ "3" ]; switch-to-workspace-4 = [ "4" ]; + toggle-maximized = [ "f" ]; }; "${ps}/keybindings" = { From ca2e1a47d909679f7dd9c45175687f8f7d67cd0b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 4 Aug 2024 17:20:50 +0800 Subject: [PATCH 240/274] home(gnome): set power profile toggle --- home/gnome/impl/dconf.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index ba4a1569..59484807 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -214,6 +214,7 @@ in mkIf cfg.enable { "appindicatorsupport@rgcjonas.gmail.com" "dash-to-panel@jderose9.github.com" ]; + last-selected-power-profile = "performance"; welcome-dialog-last-shown-version = "45.3"; }; From b3e13afbb98a22fc26a54b7802ee4e3ac278a15c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 7 Aug 2024 22:49:43 +0800 Subject: [PATCH 241/274] global(flatpak): add var persist --- global/flatpak/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global/flatpak/default.nix b/global/flatpak/default.nix index 48bafda6..a3b77f76 100644 --- a/global/flatpak/default.nix +++ b/global/flatpak/default.nix @@ -11,7 +11,7 @@ in { config = mkIf cfg.enable { services.flatpak.enable = true; xdg.portal.enable = true; - users.home.persist.directories = [ ".local/share/flatpak" ]; + users.home.persist.directories = [ ".local/share/flatpak" ".var" ]; environment.persistence."/nix/persist/fhs".directories = [ "/var/lib/flatpak" ]; }; } From 40f8cb5d0352d30a83b19e2266408f0d533df338 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 7 Aug 2024 23:01:06 +0800 Subject: [PATCH 242/274] home(util): remove persist unnecessary for flatpak --- home/util/nixos.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/home/util/nixos.nix b/home/util/nixos.nix index e69f027d..990d9e61 100644 --- a/home/util/nixos.nix +++ b/home/util/nixos.nix @@ -25,18 +25,20 @@ in { ".cache/nix-index" ] ++ optionals gui [ + # mission-planner + ".local/share/Mission Planner" + # inav-configurator + ".config/inav-configurator" + ] ++ + optionals (gui && !config.global.flatpak.enable) [ # jellyfin-media-player ".config/jellyfin.org" ".local/share/jellyfinmediaplayer" ".local/share/Jellyfin Media Player" - # mission-planner - ".local/share/Mission Planner" # expresslrs-configurator ".config/ExpressLRS Configurator" # betaflight-configurator ".config/betaflight-configurator" - # inav-configurator - ".config/inav-configurator" ]; }; } From f629a5f45e1354b7e99b57dbffa7f8c2ab500db6 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 13 Aug 2024 10:10:58 +0800 Subject: [PATCH 243/274] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 83f01ba3..4e6263a1 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1722661201, - "narHash": "sha256-2JX3S1hmmUhHuyGyGWnaM4xT0SiaDdVkNzmBrEowwK0=", + "lastModified": 1722997334, + "narHash": "sha256-vE5FcKVQ3E0txJKt5w3vOlfcN1XoTAlxK9PnQ/CJavA=", "owner": "catppuccin", "repo": "nix", - "rev": "19a0f144f0204a12a89243363efb6a493b8cfc83", + "rev": "66f4ea170093b62f319f41cebd2337a51b225c5a", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1722630065, - "narHash": "sha256-QfM/9BMRkCmgWzrPDK+KbgJOUlSJnfX4OvsUupEUZvA=", + "lastModified": 1723399884, + "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=", "owner": "nix-community", "repo": "home-manager", - "rev": "afc892db74d65042031a093adb6010c4c3378422", + "rev": "086f619dd991a4d355c07837448244029fc2d9ab", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1722666143, - "narHash": "sha256-uTr3LiytFHFUYmIrhs5NoGlm5DCJxQlfyaZEKCU/DS8=", + "lastModified": 1723367191, + "narHash": "sha256-noi5tre7BLtxImN38jEHeVOtOG1Xu37sJFwHKSAPHjo=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "bcfe9dc708c92590fec676692b3ed79443eda819", + "rev": "91178062f365b64eece94c5dff93e09b07e87d9d", "type": "github" }, "original": { @@ -257,11 +257,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1722185531, - "narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=", + "lastModified": 1722813957, + "narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d", + "rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1722421184, - "narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=", + "lastModified": 1723175592, + "narHash": "sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58", + "rev": "5e0ca22929f3342b19569b21b2f3462f053e497b", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1722693897, - "narHash": "sha256-Gpa3Gf60AqshNJKUP5mAmVImFFQ6BsWG+zbqx0JGFD4=", + "lastModified": 1723483411, + "narHash": "sha256-h6F9JK9PrrTmt5WgsZChLCn7ECk+G/cYJL2CuQVY/Cc=", "owner": "pjones", "repo": "plasma-manager", - "rev": "b17a2666bcf400cf245528d143597d1480e298f8", + "rev": "b3b9d4ce20d75319c20a7faada08ad9135a1f008", "type": "github" }, "original": { From 92496ee96cbfa4c1d65442289592931cd0aa25b8 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 15 Aug 2024 18:26:59 +0800 Subject: [PATCH 244/274] home(gnome): disable d2p multi-monitor --- home/gnome/impl/dconf.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index 59484807..f1cb59d6 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -225,7 +225,7 @@ in mkIf cfg.enable { dash-max-icon-size = 48; dock-position = "BOTTOM"; height-fraction = 0.90000000000000002; - multi-monitor = true; + multi-monitor = false; running-indicator-style = "DOTS"; custom-theme-shrink = true; }; From 3cfad7689b472209b13f51b35268bba3b135dd67 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 15 Aug 2024 20:50:14 +0800 Subject: [PATCH 245/274] home(gnome): add extensions --- home/gnome/impl/dconf.nix | 8 +++++++- home/gnome/impl/home.nix | 2 ++ home/gnome/impl/nixos.nix | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index f1cb59d6..2f1b1a55 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -213,6 +213,8 @@ in mkIf cfg.enable { "drive-menu@gnome-shell-extensions.gcampax.github.com" "appindicatorsupport@rgcjonas.gmail.com" "dash-to-panel@jderose9.github.com" + "caffeine@patapon.info" + "PrivacyMenu@stuarthayhurst" ]; last-selected-power-profile = "performance"; welcome-dialog-last-shown-version = "45.3"; @@ -220,6 +222,10 @@ in mkIf cfg.enable { #"${pse}/user-theme".name = "catppuccin-mocha-pink-compact"; + "${pse}/caffeine" = { + screen-blank = "always"; + }; + "${pse}/dash-to-dock" = { background-opacity = 0.80000000000000004; dash-max-icon-size = 48; @@ -260,7 +266,7 @@ in mkIf cfg.enable { stockgs-keep-top-panel = false; stockgs-panelbtn-click-only = false; trans-bg-color = "#82a5c1"; - trans-dynamic-anim-target = 0.80000000000000002; + trans-dynamic-anim-target = 1.0; trans-dynamic-behavior = "MAXIMIZED_WINDOWS"; trans-gradient-bottom-color = "#000000"; trans-gradient-bottom-opacity = 0.5; diff --git a/home/gnome/impl/home.nix b/home/gnome/impl/home.nix index f01abc33..8e034b20 100644 --- a/home/gnome/impl/home.nix +++ b/home/gnome/impl/home.nix @@ -12,9 +12,11 @@ in mkIf cfg.enable { adw-gtk3 # gnomeExtensions + caffeine dash-to-panel dash-to-dock appindicator + privacy-settings-menu ]; catppuccin.enable = mkForce false; diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index 41a5a517..28b2236f 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -13,6 +13,7 @@ in mkIf cfg.enable { services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; + services.hardware.bolt.enable = true; xdg.portal.configPackages = with pkgs; [ gnome.gnome-session ]; hardware.pulseaudio.enable = false; From 9a1badafdf8a1f8ec73894b950b0e84c3ab3f59d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 17 Aug 2024 20:07:47 +0800 Subject: [PATCH 246/274] spec(reimaden): enable gnome --- spec/reimaden/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index 447d1f8a..cef0b1ff 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -11,7 +11,8 @@ }; home = { - plasma.specialise = true; + gnome.enable = true; + #plasma.specialise = true; #headless.enable = "eDP-1"; gyroflow.enable = true; jetbrains.enable = true; From 075a0c1c18544251619491f461d59661b3f01f42 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 17 Aug 2024 20:08:02 +0800 Subject: [PATCH 247/274] global(fs): add zfs option --- global/fs/zfs/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/global/fs/zfs/default.nix b/global/fs/zfs/default.nix index 10c88a85..61976560 100644 --- a/global/fs/zfs/default.nix +++ b/global/fs/zfs/default.nix @@ -83,6 +83,7 @@ in { fileSystems = (mapAttrs (path: dataset: { device = "${cfg.zfs.persist}/${dataset}"; fsType = "zfs"; + options = [ "zfsutil" ]; # required by impermanence neededForBoot = true; }) cfg.zfs.mountpoints) // { From d62aa6471df980fb44e8ae52fddbf82773da60b7 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 17 Aug 2024 20:08:25 +0800 Subject: [PATCH 248/274] global(io): udisks ignore zvols --- global/io/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/global/io/default.nix b/global/io/default.nix index 9763ec11..cc0b1331 100644 --- a/global/io/default.nix +++ b/global/io/default.nix @@ -13,7 +13,10 @@ in { }; config = { - services.udev.extraRules = "" + (if cfg.betaflight then '' + services.udev.extraRules = '' + # ignore zvols + KERNEL=="zd*", ENV{UDISKS_IGNORE}="1" + '' + (if cfg.betaflight then '' # DFU (Internal bootloader for STM32 and AT32 MCUs) SUBSYSTEM=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout" SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout" From fd32ee5f983ee1fa7e5c8599baef45d5851f091c Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sun, 18 Aug 2024 13:33:29 +0800 Subject: [PATCH 249/274] spec(reimaden): disable unsandboxed minecraft --- spec/reimaden/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/spec/reimaden/default.nix b/spec/reimaden/default.nix index cef0b1ff..10962ef7 100644 --- a/spec/reimaden/default.nix +++ b/spec/reimaden/default.nix @@ -12,13 +12,11 @@ home = { gnome.enable = true; - #plasma.specialise = true; #headless.enable = "eDP-1"; gyroflow.enable = true; jetbrains.enable = true; vscode.enable = true; libreoffice.enable = true; - minecraft.enable = true; steam.enable = true; }; From 726fd59717091596c29d018ad8b691aaeb77744a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 28 Aug 2024 22:15:58 +0800 Subject: [PATCH 250/274] flake: bump inputs --- flake.lock | 42 +++++++++++++++++++-------------------- global/io/default.nix | 1 + home/catppuccin/nixos.nix | 10 ++++++---- home/gnome/impl/nixos.nix | 2 +- home/gyroflow/home.nix | 3 ++- 5 files changed, 31 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 4e6263a1..af7876d4 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1722997334, - "narHash": "sha256-vE5FcKVQ3E0txJKt5w3vOlfcN1XoTAlxK9PnQ/CJavA=", + "lastModified": 1724469296, + "narHash": "sha256-p3R4LUNk6gC+fTKRUm9ByXaoRIocnQMwVuJSIxECQ8o=", "owner": "catppuccin", "repo": "nix", - "rev": "66f4ea170093b62f319f41cebd2337a51b225c5a", + "rev": "874e668ddaf3687e8d38ccd0188a641ffefe1cfb", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1723399884, - "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=", + "lastModified": 1724435763, + "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", "owner": "nix-community", "repo": "home-manager", - "rev": "086f619dd991a4d355c07837448244029fc2d9ab", + "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", "type": "github" }, "original": { @@ -173,11 +173,11 @@ }, "impermanence": { "locked": { - "lastModified": 1719091691, - "narHash": "sha256-AxaLX5cBEcGtE02PeGsfscSb/fWMnyS7zMWBXQWDKbE=", + "lastModified": 1724489415, + "narHash": "sha256-ey8vhwY/6XCKoh7fyTn3aIQs7WeYSYtLbYEG87VCzX4=", "owner": "nix-community", "repo": "impermanence", - "rev": "23c1f06316b67cb5dabdfe2973da3785cfe9c34a", + "rev": "c7f5b394397398c023000cf843986ee2571a1fd7", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1723367191, - "narHash": "sha256-noi5tre7BLtxImN38jEHeVOtOG1Xu37sJFwHKSAPHjo=", + "lastModified": 1724837759, + "narHash": "sha256-gt1mCTlqnirTHAG8Q90IWEs91fRsTSjBqXhb6bQboe8=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "91178062f365b64eece94c5dff93e09b07e87d9d", + "rev": "a679e3a0ef9d3d43639f7ba894069c43e2d39c2c", "type": "github" }, "original": { @@ -257,11 +257,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1722813957, - "narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", + "lastModified": 1723991338, + "narHash": "sha256-Grh5PF0+gootJfOJFenTTxDTYPidA3V28dqJ/WV7iis=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", + "rev": "8a3354191c0d7144db9756a74755672387b702ba", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1723175592, - "narHash": "sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI=", + "lastModified": 1724479785, + "narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5e0ca22929f3342b19569b21b2f3462f053e497b", + "rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1723483411, - "narHash": "sha256-h6F9JK9PrrTmt5WgsZChLCn7ECk+G/cYJL2CuQVY/Cc=", + "lastModified": 1724556439, + "narHash": "sha256-gPR3sxkKxISUvydnqoj54znpUkK8av/HVFuFJuYUw3w=", "owner": "pjones", "repo": "plasma-manager", - "rev": "b3b9d4ce20d75319c20a7faada08ad9135a1f008", + "rev": "5c97fe8af2a2e561f14195ed357d8c451fdbff4c", "type": "github" }, "original": { diff --git a/global/io/default.nix b/global/io/default.nix index cc0b1331..407a3de2 100644 --- a/global/io/default.nix +++ b/global/io/default.nix @@ -48,6 +48,7 @@ in { environment.persistence."/nix/persist/fhs".directories = [ "/var/log" + "/var/lib/nixos" "/var/lib/systemd/backlight" ] ++ optional config.networking.networkmanager.enable "/etc/NetworkManager/system-connections" ++ diff --git a/home/catppuccin/nixos.nix b/home/catppuccin/nixos.nix index c68d41ff..dbdf05cc 100644 --- a/home/catppuccin/nixos.nix +++ b/home/catppuccin/nixos.nix @@ -65,12 +65,14 @@ in { # override greetd theme programs.regreet = mkIf cfg.enable { + theme = { + inherit (cfg.gtk) name package; + }; + cursorTheme = { + inherit (cfg.cursor) name package; + }; settings = { background.path = ./solid.png; - GTK = { - theme_name = cfg.gtk.name; - cursor_theme_name = cfg.cursor.name; - }; }; }; }; diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index 28b2236f..f870a99c 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -35,7 +35,6 @@ in mkIf cfg.enable { gnome-connections gnome-font-viewer gnome-text-editor - ]) ++ (with pkgs.gnome; [ ] ++ optionals config.global.flatpak.enable [ gnome-characters gnome-clocks gnome-contacts @@ -43,6 +42,7 @@ in mkIf cfg.enable { gnome-maps gnome-music gnome-weather + ]) ++ (with pkgs.gnome; [ ] ++ optionals config.global.flatpak.enable [ ]); users.home.persist.directories = [ ".config/dconf" ]; diff --git a/home/gyroflow/home.nix b/home/gyroflow/home.nix index 5ec39359..abff2f37 100644 --- a/home/gyroflow/home.nix +++ b/home/gyroflow/home.nix @@ -4,7 +4,8 @@ , ... }: with lib; let cfg = config.passthrough.gyroflow; in mkIf cfg.enable { - home.packages = [ cfg.package ]; + # temporarily gone until regression is fixed + #home.packages = [ cfg.package ]; wayland.windowManager.sway.config.window.commands = [ { criteria.app_id = "xyz.gyroflow.gyroflow"; command = "floating enable"; } From 8e60859b12a7bd44a23b8d2e2b417860a7d25e40 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 31 Aug 2024 21:25:47 +0800 Subject: [PATCH 251/274] home(gnome): add some gnome-specific theming --- home/gnome/impl/dconf.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index 2f1b1a55..da11cf46 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -249,6 +249,9 @@ in mkIf cfg.enable { group-apps = true; hide-overview-on-startup = true; hotkeys-overlay-combo = "TEMPORARILY"; + intellihide = true; + intellihide-behaviour = "MAXIMIZED_WINDOWS"; + intellihide-hide-from-windows = true; isolate-workspaces = false; leftbox-padding = -1; overview-click-to-exit = true; @@ -265,14 +268,14 @@ in mkIf cfg.enable { stockgs-keep-dash = false; stockgs-keep-top-panel = false; stockgs-panelbtn-click-only = false; - trans-bg-color = "#82a5c1"; + trans-bg-color = "#2a2a2a"; trans-dynamic-anim-target = 1.0; trans-dynamic-behavior = "MAXIMIZED_WINDOWS"; trans-gradient-bottom-color = "#000000"; trans-gradient-bottom-opacity = 0.5; trans-gradient-top-opacity = 0.0; trans-panel-opacity = 0.0; - trans-use-custom-bg = false; + trans-use-custom-bg = true; trans-use-custom-gradient = true; trans-use-custom-opacity = true; trans-use-dynamic-opacity = true; From 7b775f79dd5b69ca45ce4a0111611acaa4658fdf Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 2 Sep 2024 22:14:26 +0800 Subject: [PATCH 252/274] home(gnome): add monitors persist --- home/gnome/impl/dconf.nix | 2 +- home/gnome/impl/nixos.nix | 1 + spec/yume/default.nix | 17 +---------------- 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index da11cf46..42c82ff2 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -223,7 +223,7 @@ in mkIf cfg.enable { #"${pse}/user-theme".name = "catppuccin-mocha-pink-compact"; "${pse}/caffeine" = { - screen-blank = "always"; + screen-blank = "never"; }; "${pse}/dash-to-dock" = { diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index f870a99c..e95def1e 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -46,5 +46,6 @@ in mkIf cfg.enable { ]); users.home.persist.directories = [ ".config/dconf" ]; + users.home.persist.files = [ ".config/monitors.xml" ]; environment.persistence."/nix/persist/fhs".directories = [ ]; } diff --git a/spec/yume/default.nix b/spec/yume/default.nix index 3352e4e4..c3847fe8 100644 --- a/spec/yume/default.nix +++ b/spec/yume/default.nix @@ -14,7 +14,7 @@ }; home = { - plasma.enable = true; + gnome.enable = true; gyroflow.enable = true; jetbrains.enable = true; vscode.enable = true; @@ -23,27 +23,12 @@ steam.enable = true; }; - home.plasma.extraConfig = { - configFile = { - kscreenlockerrc.Daemon.Autolock = false; - kcminputrc."Libinput/16700/9486/Dell Computer Corp Dell Laser Mouse MS3220".NaturalScroll = true; - }; - }; - imports = lib.pipe ./. [ builtins.readDir (lib.filterAttrs (n: ty: ty == "regular" && n != "default.nix")) (lib.mapAttrsToList (n: _: ./${n})) ] ++ [ (modulesPath + "/profiles/qemu-guest.nix") ]; - # work around low cage resolution on pure nvidia - services.greetd.settings.default_session.command = let - cfg = config.programs.regreet; - in "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' - ${lib.getExe pkgs.wlr-randr} --output DP-2 --mode 1920x1080@60.000000Hz - ${lib.getExe cfg.package} - ''}"; - boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "usbhid" "sr_mod" "virtio_blk" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-amd" ]; From 66f6d92a40f2b82afe218a1279cc514097827798 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 10 Sep 2024 22:53:05 +0800 Subject: [PATCH 253/274] flake: bump inputs --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index af7876d4..44e292ea 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1724469296, - "narHash": "sha256-p3R4LUNk6gC+fTKRUm9ByXaoRIocnQMwVuJSIxECQ8o=", + "lastModified": 1725509983, + "narHash": "sha256-NHCgHVqumPraFJnLrkanoLDuhOoUHUvRhvp/RIHJR+A=", "owner": "catppuccin", "repo": "nix", - "rev": "874e668ddaf3687e8d38ccd0188a641ffefe1cfb", + "rev": "45745fe5960acaefef2b60f3455bcac6a0ca6bc9", "type": "github" }, "original": { @@ -59,11 +59,11 @@ ] }, "locked": { - "lastModified": 1722555600, - "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", + "lastModified": 1725234343, + "narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", + "rev": "567b938d64d4b4112ee253b9274472dc3a346eb6", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1724435763, - "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", + "lastModified": 1725948275, + "narHash": "sha256-4QOPemDQ9VRLQaAdWuvdDBhh+lEUOAnSMHhdr4nS1mk=", "owner": "nix-community", "repo": "home-manager", - "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", + "rev": "e5fa72bad0c6f533e8d558182529ee2acc9454fe", "type": "github" }, "original": { @@ -173,11 +173,11 @@ }, "impermanence": { "locked": { - "lastModified": 1724489415, - "narHash": "sha256-ey8vhwY/6XCKoh7fyTn3aIQs7WeYSYtLbYEG87VCzX4=", + "lastModified": 1725690722, + "narHash": "sha256-4qWg9sNh5g1qPGO6d/GV2ktY+eDikkBTbWSg5/iD2nY=", "owner": "nix-community", "repo": "impermanence", - "rev": "c7f5b394397398c023000cf843986ee2571a1fd7", + "rev": "63f4d0443e32b0dd7189001ee1894066765d18a5", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1724837759, - "narHash": "sha256-gt1mCTlqnirTHAG8Q90IWEs91fRsTSjBqXhb6bQboe8=", + "lastModified": 1725944773, + "narHash": "sha256-MG/rHAx1soZTnuSrFsYLuSRzuQCUOXP8o7k8M0FzEd8=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "a679e3a0ef9d3d43639f7ba894069c43e2d39c2c", + "rev": "b9af8b3887f231334c1fae0efcb7be45096559e4", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1724479785, - "narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=", + "lastModified": 1725634671, + "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be", + "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1724556439, - "narHash": "sha256-gPR3sxkKxISUvydnqoj54znpUkK8av/HVFuFJuYUw3w=", + "lastModified": 1725914634, + "narHash": "sha256-U74hu15xSb6JNySMOwyJrsh4uk1DVa182bdHLeHdYMc=", "owner": "pjones", "repo": "plasma-manager", - "rev": "5c97fe8af2a2e561f14195ed357d8c451fdbff4c", + "rev": "60becd0e994e25b372c8d0500fc944396f6c1085", "type": "github" }, "original": { From 67d18985f6b3eb6d3012d65a35b448ee08aa01aa Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 13 Sep 2024 12:14:49 +0800 Subject: [PATCH 254/274] home(gnome): update package --- home/gnome/impl/nixos.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index e95def1e..56835110 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -12,9 +12,9 @@ in mkIf cfg.enable { services.xserver.displayManager.startx.enable = false; services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; - services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; + services.udev.packages = with pkgs; [ gnome-settings-daemon ]; services.hardware.bolt.enable = true; - xdg.portal.configPackages = with pkgs; [ gnome.gnome-session ]; + xdg.portal.configPackages = with pkgs; [ gnome-session ]; hardware.pulseaudio.enable = false; environment.gnome.excludePackages = (with pkgs; [ From 37b218faf3fc7162cdb644f8ee6f52f86492af78 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 13 Sep 2024 12:28:17 +0800 Subject: [PATCH 255/274] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 44e292ea..d9f08260 100644 --- a/flake.lock +++ b/flake.lock @@ -59,11 +59,11 @@ ] }, "locked": { - "lastModified": 1725234343, - "narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=", + "lastModified": 1726153070, + "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "567b938d64d4b4112ee253b9274472dc3a346eb6", + "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1725948275, - "narHash": "sha256-4QOPemDQ9VRLQaAdWuvdDBhh+lEUOAnSMHhdr4nS1mk=", + "lastModified": 1726142087, + "narHash": "sha256-uT4TRd3PgreUD5sJaNioVfMemdyWFLoPHqN4AFszGmw=", "owner": "nix-community", "repo": "home-manager", - "rev": "e5fa72bad0c6f533e8d558182529ee2acc9454fe", + "rev": "da8406a6ff556b86dc368e96ca8bd81b2704a91a", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1725944773, - "narHash": "sha256-MG/rHAx1soZTnuSrFsYLuSRzuQCUOXP8o7k8M0FzEd8=", + "lastModified": 1726115155, + "narHash": "sha256-VDylz5VX4JD4/TZv6xUJDwuvNdgLRGoOpue1dlZGdIQ=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "b9af8b3887f231334c1fae0efcb7be45096559e4", + "rev": "02cf60ce20b6034fc0459e5116cec7016aaff6e4", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1725634671, - "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", + "lastModified": 1725983898, + "narHash": "sha256-4b3A9zPpxAxLnkF9MawJNHDtOOl6ruL0r6Og1TEDGCE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", + "rev": "1355a0cbfeac61d785b7183c0caaec1f97361b43", "type": "github" }, "original": { From 858caf82b8760d962a30c930e0ad2f216e45a516 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 13 Sep 2024 12:32:12 +0800 Subject: [PATCH 256/274] spec(hakugyokurou): remove jovian mode --- spec/hakugyokurou/default.nix | 11 ---- spec/hakugyokurou/jovian.nix | 95 ----------------------------------- 2 files changed, 106 deletions(-) delete mode 100644 spec/hakugyokurou/jovian.nix diff --git a/spec/hakugyokurou/default.nix b/spec/hakugyokurou/default.nix index a2032d45..f1f9f285 100644 --- a/spec/hakugyokurou/default.nix +++ b/spec/hakugyokurou/default.nix @@ -44,19 +44,12 @@ DeviceScale=2 ''; - jovian.steamos.useSteamOSConfig = lib.mkDefault false; services.greetd.settings.default_session.command = let cfg = config.programs.regreet; in lib.mkOverride 999 "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe pkgs.cage} ${lib.escapeShellArgs cfg.cageArgs} -- ${pkgs.writeShellScript "cageResolution" '' ${lib.getExe pkgs.wlr-randr} --output eDP-1 --scale 2 --transform 90 ${lib.getExe cfg.package} ''}"; - environment.systemPackages = with pkgs; [ - (writeShellScriptBin "sway-logout" '' - ${systemd}/bin/systemctl --user unset-environment WAYLAND_DISPLAY SWAYSOCK - ${sway}/bin/swaymsg exit - '') - ]; hardware.sensor.iio.enable = true; hardware.enableRedistributableFirmware = true; @@ -65,8 +58,4 @@ boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; hardware.cpu.intel.updateMicrocode = true; - - imports = [ - ./jovian.nix - ]; } diff --git a/spec/hakugyokurou/jovian.nix b/spec/hakugyokurou/jovian.nix deleted file mode 100644 index 68759ab7..00000000 --- a/spec/hakugyokurou/jovian.nix +++ /dev/null @@ -1,95 +0,0 @@ -{ pkgs, lib, config, jovian, ... }: with lib; { - specialisation.steamos.configuration = { - jovian = { - hardware.has.amd.gpu = true; - steamos.useSteamOSConfig = true; - steamos.enableDefaultCmdlineConfig = false; - - steam = { - enable = true; - autoStart = true; - desktopSession = "plasma"; - user = "app"; - }; - }; - - users.home.persistApp.directories = [ - ".steam" ".local/share/Steam" - ".config/gamescope" ".config/hhd" - ".kodi" - ]; - - users.users.app.extraGroups = [ "networkmanager" "gamemode" ]; - programs.gamemode.enable = true; - programs.regreet.enable = false; - home.gnome.enable = mkForce false; - home.steam.enable = mkForce false; - home.plasma.enable = true; - home.plasma.extraConfig = { - configFile = { - kwinrc.Xwayland.Scale = 2; - kscreenlockerrc.Daemon.Autolock = false; - }; - }; - - home-manager.users.app = { - home.packages = with pkgs; [ - (pkgs.kodi-wayland.passthru.withPackages (kodiPkgs: with kodiPkgs; [ - joystick # keymap steam-controller - #controller-topology-project - libretro libretro-2048 - libretro-fuse libretro-genplus libretro-mgba - libretro-nestopia libretro-snes9x - jellycon - ])) - ]; - - home.pointerCursor = { - package = pkgs.steamdeck-hw-theme; - name = "steam"; - }; - }; - - services.handheld-daemon = { - enable = true; - user = "app"; - }; - - jovian.decky-loader = { - # ~/.steam/steam/.cef-enable-remote-debugging - enable = true; - user = "app"; - extraPackages = with pkgs; [ - curl unzip util-linux gnugrep procps pciutils kmod ryzenadj - ]; - extraPythonPackages = pythonPackages: with pythonPackages; [ - hid pyyaml - ]; - stateDir = "/nix/persist/decky"; - }; - - boot.kernelParams = [ - "iomem=relaxed" - "amd_pstate=passive" - ]; - boot.plymouth.themePackages = [ pkgs.steamdeck-hw-theme ]; - boot.plymouth.theme = "steamos"; - - services.udev.extraRules = '' - SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="${pkgs.ryzenadj}/bin/ryzenadj --max-performance" - ''; - - nixpkgs.overlays = [ (final: prev: { - gamescope = prev.gamescope.overrideAttrs (finalAttrs: previousAttrs: { - postInstall = previousAttrs.postInstall + "\n" + '' - wrapProgram "$out/bin/gamescope" \ - --append-flags "--force-orientation left" - ''; - }); - }) ]; - }; - - imports = [ - jovian.nixosModules.jovian - ]; -} From bc3aa28ff330d102ca4b878d5ea6f40c9a20d618 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Wed, 18 Sep 2024 19:23:46 +0800 Subject: [PATCH 257/274] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index d9f08260..dd7d688d 100644 --- a/flake.lock +++ b/flake.lock @@ -98,11 +98,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1726142087, - "narHash": "sha256-uT4TRd3PgreUD5sJaNioVfMemdyWFLoPHqN4AFszGmw=", + "lastModified": 1726611255, + "narHash": "sha256-/bxaYvIK6/d3zqpW26QFS0rqfd0cO4qreSNWvYLTl/w=", "owner": "nix-community", "repo": "home-manager", - "rev": "da8406a6ff556b86dc368e96ca8bd81b2704a91a", + "rev": "d2493de5cd1da06b6a4c3e97f4e7d5dd791df457", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1726115155, - "narHash": "sha256-VDylz5VX4JD4/TZv6xUJDwuvNdgLRGoOpue1dlZGdIQ=", + "lastModified": 1726630303, + "narHash": "sha256-6xF6AqSGl/fNXeliuXAIOnEb4tMTUXOl1Yr1v4hURxg=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "02cf60ce20b6034fc0459e5116cec7016aaff6e4", + "rev": "f7a1bb0db21db79dfbee6950220e2816330a08b1", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1725983898, - "narHash": "sha256-4b3A9zPpxAxLnkF9MawJNHDtOOl6ruL0r6Og1TEDGCE=", + "lastModified": 1726463316, + "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1355a0cbfeac61d785b7183c0caaec1f97361b43", + "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1725914634, - "narHash": "sha256-U74hu15xSb6JNySMOwyJrsh4uk1DVa182bdHLeHdYMc=", + "lastModified": 1726509788, + "narHash": "sha256-PmCmO8NDKzwHrTp9Ox/rcLiCYivqIpZlnLk8wZRjv2I=", "owner": "pjones", "repo": "plasma-manager", - "rev": "60becd0e994e25b372c8d0500fc944396f6c1085", + "rev": "5a0c70a007837e2db01e0bb68971792e8653d32c", "type": "github" }, "original": { From 8d9c48d2b149bc3724a0b6195563386be3d5b580 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 19 Sep 2024 09:25:48 +0800 Subject: [PATCH 258/274] home(gnome): intellihide from focused windows --- home/gnome/impl/dconf.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/gnome/impl/dconf.nix b/home/gnome/impl/dconf.nix index 42c82ff2..b9d88c18 100644 --- a/home/gnome/impl/dconf.nix +++ b/home/gnome/impl/dconf.nix @@ -250,7 +250,7 @@ in mkIf cfg.enable { hide-overview-on-startup = true; hotkeys-overlay-combo = "TEMPORARILY"; intellihide = true; - intellihide-behaviour = "MAXIMIZED_WINDOWS"; + intellihide-behaviour = "FOCUSED_WINDOWS"; intellihide-hide-from-windows = true; isolate-workspaces = false; leftbox-padding = -1; From 68c7c97fb7a4750b1f1132abf717ce042bb8036b Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 28 Sep 2024 16:52:28 +0800 Subject: [PATCH 259/274] flake: bump inputs --- flake.lock | 42 +++++++++++++++++++-------------------- spec/eientei/tubesync.nix | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/flake.lock b/flake.lock index dd7d688d..031b8512 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1725509983, - "narHash": "sha256-NHCgHVqumPraFJnLrkanoLDuhOoUHUvRhvp/RIHJR+A=", + "lastModified": 1726952185, + "narHash": "sha256-l/HbsQjJMT6tlf8KCooFYi3J6wjIips3n6/aWAoLY4g=", "owner": "catppuccin", "repo": "nix", - "rev": "45745fe5960acaefef2b60f3455bcac6a0ca6bc9", + "rev": "630b559cc1cb4c0bdd525af506935323e4ccd5d1", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1726611255, - "narHash": "sha256-/bxaYvIK6/d3zqpW26QFS0rqfd0cO4qreSNWvYLTl/w=", + "lastModified": 1727383923, + "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=", "owner": "nix-community", "repo": "home-manager", - "rev": "d2493de5cd1da06b6a4c3e97f4e7d5dd791df457", + "rev": "ffe2d07e771580a005e675108212597e5b367d2d", "type": "github" }, "original": { @@ -173,11 +173,11 @@ }, "impermanence": { "locked": { - "lastModified": 1725690722, - "narHash": "sha256-4qWg9sNh5g1qPGO6d/GV2ktY+eDikkBTbWSg5/iD2nY=", + "lastModified": 1727198257, + "narHash": "sha256-/qMVI+SG9zvhLbQFOnqb4y4BH6DdK3DQHZU5qGptehc=", "owner": "nix-community", "repo": "impermanence", - "rev": "63f4d0443e32b0dd7189001ee1894066765d18a5", + "rev": "8514fff0f048557723021ffeb31ca55f69b67de3", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1726630303, - "narHash": "sha256-6xF6AqSGl/fNXeliuXAIOnEb4tMTUXOl1Yr1v4hURxg=", + "lastModified": 1727453186, + "narHash": "sha256-nZRCfVEZ9osWXsCD0xCpU66M8JkabMTukBzPRrD/CTA=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "f7a1bb0db21db79dfbee6950220e2816330a08b1", + "rev": "3390ff2632d0d8a14c92473db60fa52bf881f979", "type": "github" }, "original": { @@ -257,11 +257,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1723991338, - "narHash": "sha256-Grh5PF0+gootJfOJFenTTxDTYPidA3V28dqJ/WV7iis=", + "lastModified": 1726755586, + "narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a3354191c0d7144db9756a74755672387b702ba", + "rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1726463316, - "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=", + "lastModified": 1727348695, + "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172", + "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1726509788, - "narHash": "sha256-PmCmO8NDKzwHrTp9Ox/rcLiCYivqIpZlnLk8wZRjv2I=", + "lastModified": 1727463368, + "narHash": "sha256-5glMknkwQejUrKy28iy/kCFlSMwHcVyf/whmxqD0ggk=", "owner": "pjones", "repo": "plasma-manager", - "rev": "5a0c70a007837e2db01e0bb68971792e8653d32c", + "rev": "29ad64f0ac4ae84710dfeb1d37572d95c94cbfd8", "type": "github" }, "original": { diff --git a/spec/eientei/tubesync.nix b/spec/eientei/tubesync.nix index f67b7e49..202dae12 100644 --- a/spec/eientei/tubesync.nix +++ b/spec/eientei/tubesync.nix @@ -1,6 +1,6 @@ { services.tubesync = { - enable = true; + enable = false; stateDir = "/nix/persist/service/tubesync"; }; From 723a2bfeafc710c4e0fa4eab431b166ba8216d30 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 21 Oct 2024 20:48:04 +0800 Subject: [PATCH 260/274] spec(yume): enable android --- spec/yume/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/yume/default.nix b/spec/yume/default.nix index c3847fe8..1550ec16 100644 --- a/spec/yume/default.nix +++ b/spec/yume/default.nix @@ -11,6 +11,7 @@ boot.lanzaboote = true; gpu.enable = true; gpu.type = "nvidia"; + android.enable = true; }; home = { From 9cc49198d86ea4f9a47b94af86d5a4e2c2623303 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 21 Oct 2024 20:48:13 +0800 Subject: [PATCH 261/274] flake: bump inputs --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 031b8512..78b7ee52 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1726952185, - "narHash": "sha256-l/HbsQjJMT6tlf8KCooFYi3J6wjIips3n6/aWAoLY4g=", + "lastModified": 1728407414, + "narHash": "sha256-B8LaxUP93eh+it8RW1pGq4SsU2kj7f0ipzFuhBvpON8=", "owner": "catppuccin", "repo": "nix", - "rev": "630b559cc1cb4c0bdd525af506935323e4ccd5d1", + "rev": "96cf8b4a05fb23a53c027621b1147b5cf9e5439f", "type": "github" }, "original": { @@ -59,11 +59,11 @@ ] }, "locked": { - "lastModified": 1726153070, - "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1727383923, - "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=", + "lastModified": 1729459288, + "narHash": "sha256-gBOVJv+q6Mx8jGvwX7cE6J8+sZmi1uxpRVsO7WxvVuQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "ffe2d07e771580a005e675108212597e5b367d2d", + "rev": "1e27f213d77fc842603628bcf2df6681d7d08f7e", "type": "github" }, "original": { @@ -173,11 +173,11 @@ }, "impermanence": { "locked": { - "lastModified": 1727198257, - "narHash": "sha256-/qMVI+SG9zvhLbQFOnqb4y4BH6DdK3DQHZU5qGptehc=", + "lastModified": 1729068498, + "narHash": "sha256-C2sGRJl1EmBq0nO98TNd4cbUy20ABSgnHWXLIJQWRFA=", "owner": "nix-community", "repo": "impermanence", - "rev": "8514fff0f048557723021ffeb31ca55f69b67de3", + "rev": "e337457502571b23e449bf42153d7faa10c0a562", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1727453186, - "narHash": "sha256-nZRCfVEZ9osWXsCD0xCpU66M8JkabMTukBzPRrD/CTA=", + "lastModified": 1729492135, + "narHash": "sha256-yXmCZaw0Pe4H9Xv3BDSoQdSulevJMH34XrtQD3v7aoY=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "3390ff2632d0d8a14c92473db60fa52bf881f979", + "rev": "82bdda12079fbbe40cd1e26d3cbbf5093ea052c0", "type": "github" }, "original": { @@ -257,11 +257,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1726755586, - "narHash": "sha256-PmUr/2GQGvFTIJ6/Tvsins7Q43KTMvMFhvG6oaYK+Wk=", + "lastModified": 1728888510, + "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c04d5652cfa9742b1d519688f65d1bbccea9eb7e", + "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1727348695, - "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", + "lastModified": 1729256560, + "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", + "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1727463368, - "narHash": "sha256-5glMknkwQejUrKy28iy/kCFlSMwHcVyf/whmxqD0ggk=", + "lastModified": 1729372184, + "narHash": "sha256-Tb2/jJ74pt0nmfprkOW1g5zZphJTNbzLnyDENM+c5+I=", "owner": "pjones", "repo": "plasma-manager", - "rev": "29ad64f0ac4ae84710dfeb1d37572d95c94cbfd8", + "rev": "9390dadadc58ffda8e494b31ef66a4ae041f6dd1", "type": "github" }, "original": { From fd8767339dc59eef2e47a6610debd15bd785e17d Mon Sep 17 00:00:00 2001 From: 514fpv Date: Mon, 21 Oct 2024 22:11:31 +0800 Subject: [PATCH 262/274] spec(eientei): nextcloud 29 -> 30 --- spec/eientei/nextcloud.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/eientei/nextcloud.nix b/spec/eientei/nextcloud.nix index 51af4cf0..23d1e678 100644 --- a/spec/eientei/nextcloud.nix +++ b/spec/eientei/nextcloud.nix @@ -4,9 +4,9 @@ in { services.nextcloud = { enable = true; - package = pkgs.nextcloud29; + package = pkgs.nextcloud30; extraApps = { - inherit (pkgs.nextcloud29Packages.apps) + inherit (pkgs.nextcloud30Packages.apps) notify_push impersonate spreed contacts bookmarks deck polls notes forms twofactor_webauthn; From a003b2c485b7988c14220d6d99b977e00777cbd0 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 24 Oct 2024 15:08:00 +0800 Subject: [PATCH 263/274] spec(focus): nextcloud 29 -> 30 --- spec/focus/nextcloud.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/focus/nextcloud.nix b/spec/focus/nextcloud.nix index 6c9debc0..eabee803 100644 --- a/spec/focus/nextcloud.nix +++ b/spec/focus/nextcloud.nix @@ -4,9 +4,9 @@ in { services.nextcloud = { enable = true; - package = pkgs.nextcloud29; + package = pkgs.nextcloud30; extraApps = { - inherit (pkgs.nextcloud29Packages.apps) + inherit (pkgs.nextcloud30Packages.apps) notify_push impersonate spreed contacts bookmarks deck polls notes forms twofactor_webauthn; From 5501cb2013df12e9abefa401c48d5da421ad4c4a Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 26 Oct 2024 01:01:06 +0800 Subject: [PATCH 264/274] spec(chireiden): enable gnome --- spec/chireiden/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/chireiden/default.nix b/spec/chireiden/default.nix index 4dd70842..f59fbf08 100644 --- a/spec/chireiden/default.nix +++ b/spec/chireiden/default.nix @@ -18,6 +18,7 @@ }; home = { + gnome.enable = true; vscode.enable = true; libreoffice.enable = true; minecraft.enable = true; From b120cf124f72a52bffae5897ab5f0eaf7295fded Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 26 Oct 2024 01:02:09 +0800 Subject: [PATCH 265/274] global(zfs): split setup depend on secret mountpoint --- global/fs/zfs/split.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global/fs/zfs/split.nix b/global/fs/zfs/split.nix index f49c2c09..22f9231f 100644 --- a/global/fs/zfs/split.nix +++ b/global/fs/zfs/split.nix @@ -31,5 +31,5 @@ in mkIf cfg.enable { }; # import system state pool after encrypted filesystems become available for key loading - boot.initrd.systemd.services."zfs-import-${config.global.fs.store}".after = [ "cryptsetup.target" ]; + boot.initrd.systemd.services."zfs-import-${config.global.fs.store}".after = [ "sysroot-nix-var-secret.mount" "cryptsetup.target" ]; } From 8bc4b1b212942f11a0869328dce1add2ec9e9933 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 26 Oct 2024 01:14:54 +0800 Subject: [PATCH 266/274] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 78b7ee52..4831dd0e 100644 --- a/flake.lock +++ b/flake.lock @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1729459288, - "narHash": "sha256-gBOVJv+q6Mx8jGvwX7cE6J8+sZmi1uxpRVsO7WxvVuQ=", + "lastModified": 1729864948, + "narHash": "sha256-CeGSqbN6S8JmzYJX/HqZjr7dMGlvHLLnJJarwB45lPs=", "owner": "nix-community", "repo": "home-manager", - "rev": "1e27f213d77fc842603628bcf2df6681d7d08f7e", + "rev": "0c0268a3c80d30b989d0aadbd65f38d4fa27a9a0", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1729492135, - "narHash": "sha256-yXmCZaw0Pe4H9Xv3BDSoQdSulevJMH34XrtQD3v7aoY=", + "lastModified": 1729751760, + "narHash": "sha256-sJIYCzp0AyWeIFDUvrX8DpakEFIAnYgMQbIupqT0Um4=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "82bdda12079fbbe40cd1e26d3cbbf5093ea052c0", + "rev": "899f84dd062dffc5dd912ba235e86be4855e5ffb", "type": "github" }, "original": { @@ -241,11 +241,11 @@ ] }, "locked": { - "lastModified": 1690328911, - "narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=", + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", "owner": "zhaofengli", "repo": "nix-github-actions", - "rev": "96df4a39c52f53cb7098b923224d8ce941b64747", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", "type": "github" }, "original": { @@ -257,11 +257,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728888510, - "narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=", + "lastModified": 1729665710, + "narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", + "rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1729256560, - "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=", + "lastModified": 1729665710, + "narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0", + "rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1729372184, - "narHash": "sha256-Tb2/jJ74pt0nmfprkOW1g5zZphJTNbzLnyDENM+c5+I=", + "lastModified": 1729710171, + "narHash": "sha256-2sVt2hbL+G0FzEESm/EZBewPOmNtZ6MTnYhsvHJW6Rs=", "owner": "pjones", "repo": "plasma-manager", - "rev": "9390dadadc58ffda8e494b31ef66a4ae041f6dd1", + "rev": "247a8e677b51f053ca89dcf67059e24f85e47391", "type": "github" }, "original": { From 911791ed82c50faaf4b75e4cdfced4b07c4b4951 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 26 Oct 2024 01:33:16 +0800 Subject: [PATCH 267/274] flake: bump inputs --- flake.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flake.lock b/flake.lock index 4831dd0e..1fdde768 100644 --- a/flake.lock +++ b/flake.lock @@ -3,10 +3,10 @@ "catppuccin": { "locked": { "lastModified": 1728407414, - "narHash": "sha256-B8LaxUP93eh+it8RW1pGq4SsU2kj7f0ipzFuhBvpON8=", + "narHash": "sha256-iPrs6bLWdp7qdFRba2AfiHj604SpxC6AGASx7I692Lo=", "owner": "catppuccin", "repo": "nix", - "rev": "96cf8b4a05fb23a53c027621b1147b5cf9e5439f", + "rev": "037e2f091a2144433566c5122f385a388cb5d5d3", "type": "github" }, "original": { From 4b866be8d0c2e9cfadb5280f8ce764b782a203e2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 8 Nov 2024 14:54:30 +0800 Subject: [PATCH 268/274] flake: bump inputs --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 1fdde768..5c681067 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1728407414, - "narHash": "sha256-iPrs6bLWdp7qdFRba2AfiHj604SpxC6AGASx7I692Lo=", + "lastModified": 1730458408, + "narHash": "sha256-JQ+SphQn13bdibKUrBBBznYehXX4xJrxD1ifBp6vSWw=", "owner": "catppuccin", "repo": "nix", - "rev": "037e2f091a2144433566c5122f385a388cb5d5d3", + "rev": "191fbf2d81a63fad8f62f1233c0051f09b75d0ad", "type": "github" }, "original": { @@ -59,11 +59,11 @@ ] }, "locked": { - "lastModified": 1727826117, - "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "lastModified": 1730504689, + "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "rev": "506278e768c2a08bec68eb62932193e341f55c90", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1729864948, - "narHash": "sha256-CeGSqbN6S8JmzYJX/HqZjr7dMGlvHLLnJJarwB45lPs=", + "lastModified": 1730837930, + "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=", "owner": "nix-community", "repo": "home-manager", - "rev": "0c0268a3c80d30b989d0aadbd65f38d4fa27a9a0", + "rev": "2f607e07f3ac7e53541120536708e824acccfaa8", "type": "github" }, "original": { @@ -173,11 +173,11 @@ }, "impermanence": { "locked": { - "lastModified": 1729068498, - "narHash": "sha256-C2sGRJl1EmBq0nO98TNd4cbUy20ABSgnHWXLIJQWRFA=", + "lastModified": 1730403150, + "narHash": "sha256-W1FH5aJ/GpRCOA7DXT/sJHFpa5r8sq2qAUncWwRZ3Gg=", "owner": "nix-community", "repo": "impermanence", - "rev": "e337457502571b23e449bf42153d7faa10c0a562", + "rev": "0d09341beeaa2367bac5d718df1404bf2ce45e6f", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1729751760, - "narHash": "sha256-sJIYCzp0AyWeIFDUvrX8DpakEFIAnYgMQbIupqT0Um4=", + "lastModified": 1730962714, + "narHash": "sha256-Zi2NfnEqB+Xfxtnx6arIohSarXiJmwTqVa3nSpNWx30=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "899f84dd062dffc5dd912ba235e86be4855e5ffb", + "rev": "93b525229c99fec0016db72a174f43b9d6237714", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1729665710, - "narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=", + "lastModified": 1730785428, + "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d", + "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1729710171, - "narHash": "sha256-2sVt2hbL+G0FzEESm/EZBewPOmNtZ6MTnYhsvHJW6Rs=", + "lastModified": 1730635861, + "narHash": "sha256-Npp3pl9aeAiq+wZPDbw2ZxybNuZWyuN7AY6fik56DCo=", "owner": "pjones", "repo": "plasma-manager", - "rev": "247a8e677b51f053ca89dcf67059e24f85e47391", + "rev": "293668587937daae1df085ee36d2b2d0792b7a0f", "type": "github" }, "original": { From 6fb6eb40ba827fc97040d24516cf0f3041e717f1 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Thu, 14 Nov 2024 11:00:55 +0800 Subject: [PATCH 269/274] flake: bump inputs --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 5c681067..b294ddd1 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1730458408, - "narHash": "sha256-JQ+SphQn13bdibKUrBBBznYehXX4xJrxD1ifBp6vSWw=", + "lastModified": 1731232837, + "narHash": "sha256-0aIwr/RC/oe7rYkfJb47xjdEQDSNcqpFGsEa+EPlDEs=", "owner": "catppuccin", "repo": "nix", - "rev": "191fbf2d81a63fad8f62f1233c0051f09b75d0ad", + "rev": "32359bf226fe874d3b7a0a5753d291a4da9616fe", "type": "github" }, "original": { @@ -98,11 +98,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1730837930, - "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=", + "lastModified": 1731535640, + "narHash": "sha256-2EckCJn4wxran/TsRiCOFcmVpep2m9EBKl99NBh2GnM=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f607e07f3ac7e53541120536708e824acccfaa8", + "rev": "35b055009afd0107b69c286fca34d2ad98940d57", "type": "github" }, "original": { @@ -173,11 +173,11 @@ }, "impermanence": { "locked": { - "lastModified": 1730403150, - "narHash": "sha256-W1FH5aJ/GpRCOA7DXT/sJHFpa5r8sq2qAUncWwRZ3Gg=", + "lastModified": 1731242966, + "narHash": "sha256-B3C3JLbGw0FtLSWCjBxU961gLNv+BOOBC6WvstKLYMw=", "owner": "nix-community", "repo": "impermanence", - "rev": "0d09341beeaa2367bac5d718df1404bf2ce45e6f", + "rev": "3ed3f0eaae9fcc0a8331e77e9319c8a4abd8a71a", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1730962714, - "narHash": "sha256-Zi2NfnEqB+Xfxtnx6arIohSarXiJmwTqVa3nSpNWx30=", + "lastModified": 1731227601, + "narHash": "sha256-aGUQ6W/Oxd9xjH9RQbnUtC61sTK2fWlKr+J7kavT/RQ=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "93b525229c99fec0016db72a174f43b9d6237714", + "rev": "7691d0ac1deb6ac7482c5a22fe1a14a34ca608b0", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", + "lastModified": 1731139594, + "narHash": "sha256-IigrKK3vYRpUu+HEjPL/phrfh7Ox881er1UEsZvw9Q4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", + "rev": "76612b17c0ce71689921ca12d9ffdc9c23ce40b2", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1730635861, - "narHash": "sha256-Npp3pl9aeAiq+wZPDbw2ZxybNuZWyuN7AY6fik56DCo=", + "lastModified": 1731193165, + "narHash": "sha256-pGF8L5g9QpkQtJP9JmNIRNZfcyhJHf7uT+d8tqI1h6Y=", "owner": "pjones", "repo": "plasma-manager", - "rev": "293668587937daae1df085ee36d2b2d0792b7a0f", + "rev": "f33173b9d22e554a6f869626bc01808d35995257", "type": "github" }, "original": { From 9068d571b6ac114301c25374ba02609075af1ff2 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 22 Nov 2024 04:48:24 +0800 Subject: [PATCH 270/274] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index b294ddd1..2314e68a 100644 --- a/flake.lock +++ b/flake.lock @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1731535640, - "narHash": "sha256-2EckCJn4wxran/TsRiCOFcmVpep2m9EBKl99NBh2GnM=", + "lastModified": 1732025103, + "narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=", "owner": "nix-community", "repo": "home-manager", - "rev": "35b055009afd0107b69c286fca34d2ad98940d57", + "rev": "a46e702093a5c46e192243edbd977d5749e7f294", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1731227601, - "narHash": "sha256-aGUQ6W/Oxd9xjH9RQbnUtC61sTK2fWlKr+J7kavT/RQ=", + "lastModified": 1732032028, + "narHash": "sha256-NjyfJQQxs/a2a/KwTmXM44K7XjeJwGsf4YFtebueQzo=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "7691d0ac1deb6ac7482c5a22fe1a14a34ca608b0", + "rev": "65dc04371cf914c9af4f073638821e4787303005", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1731139594, - "narHash": "sha256-IigrKK3vYRpUu+HEjPL/phrfh7Ox881er1UEsZvw9Q4=", + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "76612b17c0ce71689921ca12d9ffdc9c23ce40b2", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", "type": "github" }, "original": { From 426ec123e74ec9deee79ccff4d65a6deca659633 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Fri, 22 Nov 2024 04:52:45 +0800 Subject: [PATCH 271/274] spec(shatter): initial configuration --- spec/shatter/default.nix | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 spec/shatter/default.nix diff --git a/spec/shatter/default.nix b/spec/shatter/default.nix new file mode 100644 index 00000000..9602114c --- /dev/null +++ b/spec/shatter/default.nix @@ -0,0 +1,34 @@ +{ lib +, pkgs +, ... }: { + global = { + id = "f16d3a87afdd4eb2b1fa4c098d4a9c1a"; + auth.openssh.enable = true; + fs.esp.uuid = "153D-AA49"; + fs.type = "xfs"; + fs.store = "67878f8f-3724-4551-a2e2-f43d674e1d93"; + fs.cryptsetup.enable = true; + fs.cryptsetup.uuids.persist = "3633e292-59e8-497d-9e51-0186ca73c25c"; + gpu.enable = true; + gpu.type = "intel"; + gpu.session = false; + boot.lanzaboote = true; + }; + + services.udev.extraRules = '' + SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="88:c9:b3:b5:15:0e", NAME="i225-v" + SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="8c:a6:82:70:08:ca", NAME="aqc113c" + ''; + boot.kernelParams = [ "zfs.zfs_arc_max=2147483648" ]; + networking.firewall.checkReversePath = false; + boot.swraid.enable = true; + boot.swraid.mdadmConf = '' + PROGRAM /run/current-system/sw/bin/true + ''; + + hardware.enableRedistributableFirmware = true; + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ "i915" ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; +} From 681fda20b4fd59eb68b03683761d526cf8bc0e66 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Tue, 26 Nov 2024 22:42:49 +0800 Subject: [PATCH 272/274] home(gnome): link monitors.xml --- home/gnome/impl/home.nix | 7 +++++++ home/gnome/impl/nixos.nix | 2 -- home/profile.nix | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/home/gnome/impl/home.nix b/home/gnome/impl/home.nix index 8e034b20..ff5b9eba 100644 --- a/home/gnome/impl/home.nix +++ b/home/gnome/impl/home.nix @@ -22,4 +22,11 @@ in mkIf cfg.enable { catppuccin.enable = mkForce false; home.pointerCursor = mkForce null; gtk.enable = false; + + home.persistence."/nix/persist/home/${config.home.username}" = { + removePrefixDirectory = true; + files = [ + (if config.specialisation != {} then "gnome/.config/monitors.xml" else "extern/.config/monitors.xml") + ]; + }; } diff --git a/home/gnome/impl/nixos.nix b/home/gnome/impl/nixos.nix index 56835110..e49c6ad2 100644 --- a/home/gnome/impl/nixos.nix +++ b/home/gnome/impl/nixos.nix @@ -46,6 +46,4 @@ in mkIf cfg.enable { ]); users.home.persist.directories = [ ".config/dconf" ]; - users.home.persist.files = [ ".config/monitors.xml" ]; - environment.persistence."/nix/persist/fhs".directories = [ ]; } diff --git a/home/profile.nix b/home/profile.nix index 6cf374df..ee64c439 100644 --- a/home/profile.nix +++ b/home/profile.nix @@ -139,6 +139,7 @@ in { home-manager.users = mapAttrs (name: opts: { imports = with inputs; cfg.homeModules ++ [ + impermanence.homeManagerModules.impermanence catppuccin.homeManagerModules.catppuccin ]; home.file.".face" = mkIf (opts.picture != null) { From 68fcbdb8011fb982016a80bf8c6bd384db8f1ddc Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 14 Dec 2024 17:47:10 +0800 Subject: [PATCH 273/274] spec(eientei): add minecraft greedycraft instance --- spec/eientei/minecraft.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/eientei/minecraft.nix b/spec/eientei/minecraft.nix index a9b88b9f..a18a5e6b 100644 --- a/spec/eientei/minecraft.nix +++ b/spec/eientei/minecraft.nix @@ -12,6 +12,11 @@ # stop = "stop"; #}; + greedycraft = { + cmdline = "${pkgs.jdk8}/bin/java -Xmx10G -Xms10G -Xss4M -Dfile.encoding=GBK -Dsun.rmi.dgc.server.gcInterval=1800000 -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:+AlwaysPreTouch -XX:+UseStringDeduplication -Dfml.ignorePatchDiscrepancies=true -Dfml.ignoreInvalidMinecraftCertificates=true -XX:-OmitStackTraceInFastThrow -XX:+OptimizeStringConcat -XX:+UseAdaptiveGCBoundary -XX:G1HeapRegionSize=32M -jar forge-1.12.2-14.23.5.2855.jar nogui"; + stop = "stop"; + }; + nfwc = { cmdline = "${pkgs.jdk}/bin/java @user_jvm_args.txt @libraries/net/minecraftforge/forge/1.19.2-43.3.8/unix_args.txt"; stop = "stop"; From 6a77f5dccc28d2e37de930d3ae5fbe6ee0c16f67 Mon Sep 17 00:00:00 2001 From: 514fpv Date: Sat, 14 Dec 2024 17:58:40 +0800 Subject: [PATCH 274/274] chore(flake): bump inputs --- flake.lock | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 2314e68a..a38f2578 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "catppuccin": { "locked": { - "lastModified": 1731232837, - "narHash": "sha256-0aIwr/RC/oe7rYkfJb47xjdEQDSNcqpFGsEa+EPlDEs=", + "lastModified": 1734057772, + "narHash": "sha256-waF/2Y39JXJ4kG3zawmw1J1GxPHopyoOkJKJhfJ7RBs=", "owner": "catppuccin", "repo": "nix", - "rev": "32359bf226fe874d3b7a0a5753d291a4da9616fe", + "rev": "20b6328df20ae45752c81311d225fd47cba32483", "type": "github" }, "original": { @@ -59,11 +59,11 @@ ] }, "locked": { - "lastModified": 1730504689, - "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "506278e768c2a08bec68eb62932193e341f55c90", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", "type": "github" }, "original": { @@ -158,11 +158,11 @@ ] }, "locked": { - "lastModified": 1732025103, - "narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=", + "lastModified": 1734093295, + "narHash": "sha256-hSwgGpcZtdDsk1dnzA0xj5cNaHgN9A99hRF/mxMtwS4=", "owner": "nix-community", "repo": "home-manager", - "rev": "a46e702093a5c46e192243edbd977d5749e7f294", + "rev": "66c5d8b62818ec4c1edb3e941f55ef78df8141a8", "type": "github" }, "original": { @@ -193,11 +193,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1732032028, - "narHash": "sha256-NjyfJQQxs/a2a/KwTmXM44K7XjeJwGsf4YFtebueQzo=", + "lastModified": 1734162608, + "narHash": "sha256-m2AX+3eiVqIK6uO7GbGY7SFnkkYOlR5fQiNI0eRvWOQ=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "65dc04371cf914c9af4f073638821e4787303005", + "rev": "31bdf4c7c91204d65afbde01146deee0259a8fb7", "type": "github" }, "original": { @@ -257,11 +257,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729665710, - "narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=", + "lastModified": 1733392399, + "narHash": "sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG+cBns=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d", + "rev": "d0797a04b81caeae77bcff10a9dde78bc17f5661", "type": "github" }, "original": { @@ -289,11 +289,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1732014248, - "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", + "lastModified": 1733940404, + "narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", + "rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713", "type": "github" }, "original": { @@ -313,11 +313,11 @@ ] }, "locked": { - "lastModified": 1731193165, - "narHash": "sha256-pGF8L5g9QpkQtJP9JmNIRNZfcyhJHf7uT+d8tqI1h6Y=", + "lastModified": 1733858086, + "narHash": "sha256-h2BDIDKiqgMpA6E+mu0RgMGy3FeM6k+EuJ9xgOQ1+zw=", "owner": "pjones", "repo": "plasma-manager", - "rev": "f33173b9d22e554a6f869626bc01808d35995257", + "rev": "7e2010249529931a3848054d5ff0dbf24675ab68", "type": "github" }, "original": {

    -^_kYZOkl~*c(ziliT27&NnRWDrnCK6 z(-(A7OSy@UYa*M#F@+_&#TAYy&ka$K3=V2H{e4Dt;`2u;O8nJ2pKQQ&N1_O>q^jV)?E?$$O^ z&x6D`w`w)ZOpfw)NwH1YDH3#$FKw2Pf=kKC-$feroA;b~vz}$&x2f{~pYQ*4{PW@d zg!kv^{z2R8AR1f%m@?7MB#}776xUTlTKl<-6adV1D6+avd)s zrMHQtuE`FS&Y5tq&8h!Q(V8XM@>>q5UADKdm>t6o&)ja+Cx%qQ@ zm*?O5xqD(LON7_TRMoJxR~$`Zf_Z|MPS%|J@}laV*6JrIVZKMZ_*{KrcegpoTv}eM zSsJp{@%q*kd{*11`xUY|M>`AZDhcwWmwdao$C~Bfyuffq(Q}?tg$zXnb1zIv&Cjsf zD|E~8`<+b-x$jP&G2h?7Wr~=f_v|@p<~NHx6@A! zmg=$NeuM54}%W@qn`sY+yDTiceCAbJ0u3lxDKJ{G*i;~Tr5ZzTvH5gToI-5Eq zZ`l0(oN4!t@`W4^E(-E+T`*qEHf`0pO}89Wb1Y1@3HmbhFW{S0VH4eNsc`o4j4XZ9F@SO~|bh#xU zKK+EFV;KkI#HZ%=A*L~G=`Jays#^0)#ao&pI+Pg>Pd+{UX-k0S1QWkAot|-j?ijeN z+RJsq#miK^*70G|dKbnSuIET5VOsQLC09AqVdkEn#o2ixYO59diCCCAc~LfA5!_JdH}vtPGCaNw=VU-x&t%o)-Y=9Z53a1)`WHH=IYsd zq<06*xY~2>uAsu=ulw9xRE&5VS3MDkbxPG(njw33%``1VuJVuXgl(iAWT-yhcCY!w z@5M$Ux}G%(znS>e_o<(<3E-%YnV({h*4lvRxWk8(iOm`%o6Wq$EB3d z=aSRdrsO=$i)GqPS;5W{$2U*DTv>7`bG7pHN!$_3v>d}50;^s}Tx+ytatWBetl!b= z%M~G^;C=_KKW&%1IJ?~3zZexetD3)2iMr#z57z+WZ-$DFXy$Db{U0E z&MKW?#23~0B3In+Kvc=5>?WQUDGfmk7Z*)id?@Rsz*JGb=xeL^B&G?^<9)~Et#etj zRppz$WhkSE&gmKLi#XWMc7_;T=M&}aw2-+!Vbh-;6%hqbmUhDl8Z*Ag3a~M{oGLQn z|F0v!U-XJm;ovUTGrm_;7QZiY?rboaqVB3bZF z>Dpvv?xjwulF3>@t2npL3fr8tbw=;9tr>zlTFlEgc>AO@oI3JwvT#DC>`a~H9VLxg zA_h~h==vlmosjdij8R*;Xr_XY{3I2PV-H_&doJg0PHGGJ_h-$j!U9iL_B$P%x{gzR znl9AKc*OKOab@;pu@@79i?j+lE=uk%`d4X@&&`>k==8zh*O~o`f7&-mT5vk5XtV1T zGOVp~`%$CHuDZ#^^J^pn*LlSUM!S1cW?!1DJgHT3%FDT|6>%pb?3%vBFR?mdaluA` z(P$d8kK&Yh3hzG!PFnDVrAFgt9G9RCkDz2rp=5^Mdj$o(pbCiyu3qla?k0h&CY#RX z@dq>(`g6Io@4D%lTP)7G$#DPCy9#VCf1ci1-Lk-?#YO0_jet_;$Cbe^b%j=nY<bs2jbeM5K`n!QLeoh{MVqoHTz{dkXhQ-M?Ws)&_FT{AngBBM7dr5#$(CT5t( zec^DZE(@3FRxOP*qiI`LNSc;7DrtUTt#3~gac<=4TwT2L`N0=Ax9epJTmH0ZP<3if z;JkEGSbN%$Uy{=⋙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