diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..490e97b --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake "git+https://git.lillianviolet.dev/Lillian-Violet/dev-templates.git?dir=nix" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7fe6033 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/result +.envrc \ No newline at end of file diff --git a/README.md b/README.md index 5dfb5df..31f5291 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,25 @@ The configuration of different NixOS hosts using flakes and home-manager. It is ## Building and deploying the configuration -The first step is to add your age keyfile to the /nix/var/secrets folder with the name "keys.txt" (if you don't have one, remove the imports from the configuration files; the import can be found under -``hosts//configuration.nix``). +If you do not have my private age key, the first step is to add your age keyfile to the /var/secrets folder with the name "keys.txt", in my case an age private key. If you don't have have an age private key you can generate one with the command -Then run this command within your cloned github repo (I put mine in /etc/nixos): +``age-keygen -o ~/.config/sops/age/keys.txt`` and copying this file to ``/var/secrets/`` + +**Note: make sure this key is not readable by normal users, I made it owned by root, and gave the file 400 (read only for user) permissions. eg: ``chown 400 /var/secrets/keys.txt``** + +if you don't want to use [sops](https://github.com/Mic92/sops-nix) secret management remove the import from the configuration files; the import can be found under +``hosts/shared/default.nix`` + +Upon any of the above changes; also remove/replace the secret files, they can be found under the host configuration folders in +``hosts//secrets/sops.yaml`` + +For the hosts EDI and GLaDOS, [lanzaboot](https://github.com/nix-community/lanzaboote) has to be disabled (and re-enabled if you want secure boot after install). You can first replace enabling lanzaboot with systemd-boot. You can do this by commenting out the lanzaboot configuration, and replace the line + +``boot.loader.systemd-boot.enable = lib.mkForce false;`` with ``boot.loader.systemd-boot.enable = true`` + +To turn secure boot back on again you can look at the [lanzaboot](https://github.com/nix-community/lanzaboote) repository and follow the install steps. + +Then run this command with your cloned github repo (I put mine in /etc/nixos): ``sudo nixos-rebuild --flake .# switch`` @@ -33,10 +48,10 @@ Note: this does not build the full configuration, and errors might still happen ## Technical details -### Home manager +### [Home manager](https://github.com/nix-community/home-manager) Home manager is imported as a module within the global configuration, it is therefor not needed to build home-manager packages separately in this configuration. On multi user systems it might be useful to pull the home-manager configurations from separate repos for different users, so you don't have to give your users access to the global configuration. -### Sops +### [Sops](https://github.com/Mic92/sops-nix) The secrets are managed in sops files within the hosts folders, there is only one sops file per host, but this can be changed quite easily. The command to edit the sops file is as follows: ``nix-shell -p sops --run "sops ./nixos/hosts//secrets/sops.yaml"`` diff --git a/disko/EDI/configuration.nix b/disko/EDI/default.nix similarity index 52% rename from disko/EDI/configuration.nix rename to disko/EDI/default.nix index 7af587c..6fe0e0a 100644 --- a/disko/EDI/configuration.nix +++ b/disko/EDI/default.nix @@ -1,9 +1,9 @@ { disko.devices = { disk = { - vdb = { - device = "/dev/disk/by-path/pci-0000:71:00.0-nvme-1"; + nvme0n1 = { type = "disk"; + device = "/dev/disk/by-path/pci-0000:71:00.0-nvme-1"; content = { type = "gpt"; partitions = { @@ -19,36 +19,22 @@ ]; }; }; - encryptedSwap = { - size = "20M"; - content = { - type = "swap"; - randomEncryption = true; - }; - }; - plainSwap = { - size = "4G"; - content = { - type = "swap"; - resumeDevice = true; # resume from hiberation from this device - }; - }; luks = { size = "100%"; content = { type = "luks"; name = "crypted"; - # disable settings.keyFile if you want to use interactive password entry - #passwordFile = "/tmp/secret.key"; # Interactive + extraOpenArgs = []; settings = { - allowDiscards = true; + # if you want to use the key for interactive login be sure there is no trailing newline + # for example use `echo -n "password" > /tmp/secret.key` #keyFile = "/tmp/secret.key"; + allowDiscards = true; }; #additionalKeyFiles = ["/tmp/additionalSecret.key"]; content = { - type = "filesystem"; - format = "bcachefs"; - mountpoint = "/"; + type = "lvm_pv"; + vg = "pool"; }; }; }; @@ -56,5 +42,38 @@ }; }; }; + lvm_vg = { + pool = { + type = "lvm_vg"; + lvs = { + swap = { + size = "8G"; + content = { + type = "swap"; + resumeDevice = true; # resume from hiberation from this device + }; + }; + root = { + size = "100%FREE"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ + "defaults" + ]; + }; + }; + }; + }; + }; + nodev = { + "/home/lillian/Downloads" = { + fsType = "tmpfs"; + mountOptions = [ + "size=4G" + ]; + }; + }; }; } diff --git a/disko/GLaDOS/default.nix b/disko/GLaDOS/default.nix new file mode 100644 index 0000000..c605347 --- /dev/null +++ b/disko/GLaDOS/default.nix @@ -0,0 +1,96 @@ +{ + disko.devices = { + disk = { + sda1 = { + type = "disk"; + device = "/dev/disk/by-path/pci-0000:06:00.0-ata-6"; + content = { + type = "gpt"; + partitions = { + ESP = { + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "defaults" + ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "crypted"; + extraOpenArgs = []; + settings = { + # if you want to use the key for interactive login be sure there is no trailing newline + # for example use `echo -n "password" > /tmp/secret.key` + #keyFile = "/tmp/secret.key"; + allowDiscards = true; + }; + #additionalKeyFiles = ["/tmp/additionalSecret.key"]; + content = { + type = "lvm_pv"; + vg = "pool"; + }; + }; + }; + }; + }; + }; + #sdc = { + #device = "/dev/disk/by-path/pci-0000:06:00.0-ata-2"; + #type = "disk"; + #content = { + #type = "gpt"; + #partitions = { + #root = { + #size = "100%"; + #content = { + #type = "filesystem"; + #format = "ext4"; + #mountpoint = "/media"; + #}; + #}; + #}; + #}; + #}; + }; + lvm_vg = { + pool = { + type = "lvm_vg"; + lvs = { + swap = { + size = "16G"; + content = { + type = "swap"; + resumeDevice = true; # resume from hiberation from this device + }; + }; + root = { + size = "100%FREE"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ + "defaults" + ]; + }; + }; + }; + }; + }; + nodev = { + "/home/lillian/Downloads" = { + fsType = "tmpfs"; + mountOptions = [ + "size=4G" + ]; + }; + }; + }; +} diff --git a/disko/queen/default.nix b/disko/queen/default.nix new file mode 100644 index 0000000..c382b28 --- /dev/null +++ b/disko/queen/default.nix @@ -0,0 +1,45 @@ +{ + disko.devices = { + disk = { + nvme0n1 = { + type = "disk"; + device = "/dev/disk/by-path/pci-0000:00:05.0-scsi-0:0:0:0"; + content = { + type = "gpt"; + partitions = { + ESP = { + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "defaults" + ]; + }; + }; + swap = { + size = "16G"; + content = { + type = "swap"; + resumeDevice = true; # resume from hiberation from this device + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ + "defaults" + ]; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/disko/shodan/default.nix b/disko/shodan/default.nix new file mode 100644 index 0000000..58e1e3d --- /dev/null +++ b/disko/shodan/default.nix @@ -0,0 +1,79 @@ +{ + disko.devices = { + disk = { + nvme0n1 = { + type = "disk"; + device = "/dev/disk/by-path/pci-0000:01:00.0-nvme-1"; + content = { + type = "gpt"; + partitions = { + ESP = { + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ + "defaults" + ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "crypted"; + extraOpenArgs = []; + settings = { + # if you want to use the key for interactive login be sure there is no trailing newline + # for example use `echo -n "password" > /tmp/secret.key` + #keyFile = "/tmp/secret.key"; + allowDiscards = true; + }; + #additionalKeyFiles = ["/tmp/additionalSecret.key"]; + content = { + type = "lvm_pv"; + vg = "pool"; + }; + }; + }; + }; + }; + }; + }; + lvm_vg = { + pool = { + type = "lvm_vg"; + lvs = { + swap = { + size = "16G"; + content = { + type = "swap"; + resumeDevice = true; # resume from hiberation from this device + }; + }; + root = { + size = "100%FREE"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ + "defaults" + ]; + }; + }; + }; + }; + }; + nodev = { + "/home/lillian/Downloads" = { + fsType = "tmpfs"; + mountOptions = [ + "size=4G" + ]; + }; + }; + }; +} diff --git a/disko/wheatley/default.nix b/disko/wheatley/default.nix new file mode 100644 index 0000000..0e892ff --- /dev/null +++ b/disko/wheatley/default.nix @@ -0,0 +1,47 @@ +{ + disko = { + devices = { + disk = { + disk1 = { + imageSize = "20G"; + type = "disk"; + device = "/dev/mmcblk0"; + content = { + type = "gpt"; + partitions = { + firmware = { + size = "30M"; + priority = 1; + type = "0700"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/firmware"; + }; + }; + boot = { + size = "1G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + root = { + name = "root"; + size = "100%"; + content = { + type = "filesystem"; + extraArgs = []; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/flake.lock b/flake.lock index 74009f3..7e0280a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,72 @@ { "nodes": { + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1746562888, + "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1622559957, + "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1748408240, + "narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, "blobs": { "flake": false, "locked": { @@ -16,70 +83,98 @@ "type": "gitlab" } }, + "catppuccin": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1750013871, + "narHash": "sha256-UQx3rC3QDjD/sIen51+5Juk1rqN3y/sTeMY1WinmhqQ=", + "owner": "catppuccin", + "repo": "nix", + "rev": "fe78fa558d6603481c03eb03a946eadb970d1801", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "type": "github" + } + }, "crane": { + "locked": { + "lastModified": 1748970125, + "narHash": "sha256-UDyigbDGv8fvs9aS95yzFfOKkEjx1LO3PL3DsKopohA=", + "owner": "ipetkov", + "repo": "crane", + "rev": "323b5746d89e04b22554b061522dfce9e4c49b18", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "crane_2": { + "locked": { + "lastModified": 1748970125, + "narHash": "sha256-UDyigbDGv8fvs9aS95yzFfOKkEjx1LO3PL3DsKopohA=", + "owner": "ipetkov", + "repo": "crane", + "rev": "323b5746d89e04b22554b061522dfce9e4c49b18", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "disko": { "inputs": { "nixpkgs": [ - "lanzaboote", "nixpkgs" ] }, "locked": { - "lastModified": 1707075082, - "narHash": "sha256-PUplk5F5jlIyofxqn/xEDN9pbjrd0tnkd0pDsZ52db0=", - "owner": "ipetkov", - "repo": "crane", - "rev": "7d5b46c17d857ee9ddb2e8d88185729a3e5637b6", + "lastModified": 1750040002, + "narHash": "sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84=", + "owner": "nix-community", + "repo": "disko", + "rev": "7f1857b31522062a6a00f88cbccf86b43acceed1", "type": "github" }, "original": { - "owner": "ipetkov", - "repo": "crane", + "owner": "nix-community", + "repo": "disko", "type": "github" } }, - "extest": { - "inputs": { - "extest": "extest_2", - "nixpkgs": "nixpkgs" - }, - "locked": { - "lastModified": 1706332837, - "narHash": "sha256-6jwCjD6hLVRkPHyl/2K+5ZEoQV3C5BgWlDroUx/9ru8=", - "owner": "chaorace", - "repo": "extest-nix", - "rev": "a9dbc41a7ba6723d8598cd699bbb163630b646b3", - "type": "github" - }, - "original": { - "owner": "chaorace", - "repo": "extest-nix", - "type": "github" - } - }, - "extest_2": { + "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1703711841, - "narHash": "sha256-ZCHOyAACYoV3wW7en374Kfj0STmi0+72INKGNQkO/rU=", - "owner": "Supreeeme", - "repo": "extest", - "rev": "2a0a1f27239f6307b333a68ca7023ccf90215f3e", + "lastModified": 1748383148, + "narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", "type": "github" }, "original": { - "owner": "Supreeeme", - "repo": "extest", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", "type": "github" } }, "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -91,11 +186,26 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -105,6 +215,26 @@ } }, "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "lanzaboote", @@ -112,11 +242,32 @@ ] }, "locked": { - "lastModified": 1706830856, - "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", "type": "github" }, "original": { @@ -130,11 +281,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -145,14 +296,14 @@ }, "flake-utils_2": { "inputs": { - "systems": "systems_2" + "systems": "systems_3" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -161,6 +312,74 @@ "type": "github" } }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "simple-nixos-mailserver", + "flake-compat" + ], + "gitignore": "gitignore_2", + "nixpkgs": [ + "simple-nixos-mailserver", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1749636823, + "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "623c56286de5a3193aa38891a6991b28f9bab056", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "git-hooks_2": { + "inputs": { + "flake-compat": [ + "stylix", + "flake-compat" + ], + "gitignore": "gitignore_3", + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -170,11 +389,11 @@ ] }, "locked": { - "lastModified": 1703887061, - "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { @@ -183,6 +402,67 @@ "type": "github" } }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "simple-nixos-mailserver", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_3": { + "inputs": { + "nixpkgs": [ + "stylix", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "lastModified": 1744584021, + "narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae", + "type": "github" + }, + "original": { + "owner": "GNOME", + "ref": "48.1", + "repo": "gnome-shell", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -190,11 +470,11 @@ ] }, "locked": { - "lastModified": 1707175763, - "narHash": "sha256-0MKHC6tQ4KEuM5rui6DjKZ/VNiSANB4E+DJ/+wPS1PU=", + "lastModified": 1750033262, + "narHash": "sha256-TcFN78w6kPspxpbPsxW/8vQ1GAtY8Y3mjBaC+oB8jo4=", "owner": "nix-community", "repo": "home-manager", - "rev": "f99eace7c167b8a6a0871849493b1c613d0f1b80", + "rev": "66523b0efe93ce5b0ba96dcddcda15d36673c1f0", "type": "github" }, "original": { @@ -204,17 +484,38 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1748737919, + "narHash": "sha256-5kvBbLYdp+n7Ftanjcs6Nv+UO6sBhelp6MIGJ9nWmjQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "5675a9686851d9626560052a032c4e14e533c1fa", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "jovian": { "inputs": { "nix-github-actions": "nix-github-actions", "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1707082092, - "narHash": "sha256-icyIxbBXl1iG8gvF/gjGI5N4Phpoo1vFcQxmUz2DsNA=", + "lastModified": 1749627191, + "narHash": "sha256-bUv8CDE6Uyxak4UkOvRjx5xj6+msEHSpYGeAjkuTnTs=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "3a9a168c04218418a6321e157b0f7a31a9ca342c", + "rev": "f31df4cb6b2eeef6cf0113edb687297be72a69df", "type": "github" }, "original": { @@ -227,18 +528,17 @@ "inputs": { "crane": "crane", "flake-compat": "flake-compat", - "flake-parts": "flake-parts", - "flake-utils": "flake-utils_2", + "flake-parts": "flake-parts_2", "nixpkgs": "nixpkgs_3", "pre-commit-hooks-nix": "pre-commit-hooks-nix", "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1707121196, - "narHash": "sha256-drevc7MfnMD0Ya811UPDCY5hkCOYXgDYr+oKwWLvF+E=", + "lastModified": 1749471908, + "narHash": "sha256-uGfPqd43KTomeIVWUzHu3hGLWFsqYibhWLt2OaRic28=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "f2bc0af580f0bb6e6a2d0bcf0cfb237b357ffbbf", + "rev": "00292388ad3b497763b81568d6ee5e1c4a2bcf85", "type": "github" }, "original": { @@ -247,26 +547,6 @@ "type": "github" } }, - "linger": { - "inputs": { - "flake-utils": [ - "flake-utils" - ] - }, - "locked": { - "lastModified": 1670283645, - "narHash": "sha256-SuC/SuQ8RUaM6RthNAkNTSnlpRXJxEmuym2OyPLLpWk=", - "owner": "mindsbackyard", - "repo": "linger-flake", - "rev": "9f8632c0621dc562dd42e9eacfdb6dae82aebf8b", - "type": "github" - }, - "original": { - "owner": "mindsbackyard", - "repo": "linger-flake", - "type": "github" - } - }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -275,11 +555,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": { @@ -289,91 +569,132 @@ "type": "github" } }, + "nix-index-database": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1749960154, + "narHash": "sha256-EWlr9MZDd+GoGtZB4QsDzaLyaDQPGnRY03MFp6u2wSg=", + "owner": "nix-community", + "repo": "nix-index-database", + "rev": "424a40050cdc5f494ec45e46462d288f08c64475", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-index-database", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1736643958, + "narHash": "sha256-tmpqTSWVRJVhpvfSN9KXBvKEXplrwKnSZNAoNPf/S/s=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "1418bc28a52126761c02dd3d89b2d8ca0f521181", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixos-generators": { + "inputs": { + "nixlib": "nixlib", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747663185, + "narHash": "sha256-Obh50J+O9jhUM/FgXtI3he/QRNiV9+J53+l+RlKSaAk=", + "owner": "nix-community", + "repo": "nixos-generators", + "rev": "ee07ba0d36c38e9915c55d2ac5a8fb0f05f2afcc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixos-generators", + "type": "github" + } + }, + "nixos-hardware": { + "locked": { + "lastModified": 1750083401, + "narHash": "sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4=", + "owner": "NixOS", + "repo": "nixos-hardware", + "rev": "61837d2a33ccc1582c5fabb7bf9130d39fee59ad", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1707171055, - "narHash": "sha256-7ZiKRdhrScsDfhDkGy8yJWAT6BfHqa8PYMX04roU03k=", + "lastModified": 1744463964, + "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4b1aab22192b787355733c9495d47f4c66af084c", + "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-23_05": { + "nixpkgs-25_05": { "locked": { - "lastModified": 1704290814, - "narHash": "sha256-LWvKHp7kGxk/GEtlrGYV68qIvPHkU9iToomNFGagixU=", + "lastModified": 1749727998, + "narHash": "sha256-mHv/yeUbmL91/TvV95p+mBVahm9mdQMJoqaTVTALaFw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "70bdadeb94ffc8806c0570eb5c2695ad29f0e421", + "rev": "fd487183437963a59ba763c0cc4f27e3447dd6dd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-edge": { + "locked": { + "lastModified": 1750099436, + "narHash": "sha256-vbVvGHOnhCykOdsLs+S4uJ78nERLsCdsjo4tHpqvQRE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd1fe9d0848277ed401a90bbd987fe24401aa286", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-23.05", + "ref": "master", "type": "indirect" } }, - "nixpkgs-23_11": { - "locked": { - "lastModified": 1706098335, - "narHash": "sha256-r3dWjT8P9/Ah5m5ul4WqIWD8muj5F+/gbCdjiNVBKmU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a77ab169a83a4175169d78684ddd2e54486ac651", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-23.11", - "type": "indirect" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1704874635, - "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1705957679, - "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9a333eaa80901efe01df07eade2c16d183761fa3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-unstable": { "locked": { - "lastModified": 1707092692, - "narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "faf912b086576fd1a15fca610166c98d47bc667e", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { @@ -385,11 +706,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1705133751, - "narHash": "sha256-rCIsyE80jgiOU78gCWN3A0wE0tR2GI5nH6MlS+HaaSQ=", + "lastModified": 1747744144, + "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d", + "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f", "type": "github" }, "original": { @@ -401,11 +722,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1707028810, - "narHash": "sha256-/WuTsaljhG9VpXRYnxbxkoxhXy6lotbey99CiBuP2GY=", + "lastModified": 1749411262, + "narHash": "sha256-gRBkeW9l5lb/90lv1waQFNT+18OhITs11HENarh6vNo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5d75993fa5feaa333f3eadd83e0a08fc34432acc", + "rev": "0fc422d6c394191338c9d6a05786c63fc52a0f29", "type": "github" }, "original": { @@ -417,11 +738,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1707092692, - "narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "faf912b086576fd1a15fca610166c98d47bc667e", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { @@ -433,26 +754,27 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1705856552, - "narHash": "sha256-JXfnuEf5Yd6bhMs/uvM67/joxYKoysyE3M2k6T3eWbg=", + "lastModified": 1749285348, + "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "612f97239e2cc474c13c9dafa0df378058c5ad8d", + "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", "type": "github" }, "original": { - "id": "nixpkgs", + "owner": "NixOS", "ref": "nixos-unstable", - "type": "indirect" + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_6": { "locked": { - "lastModified": 1706925685, - "narHash": "sha256-hVInjWMmgH4yZgA4ZtbgJM1qEAel72SYhP5nOWX4UIM=", + "lastModified": 1744868846, + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "79a13f1437e149dc7be2d1290c74d378dad60814", + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", "type": "github" }, "original": { @@ -462,29 +784,61 @@ "type": "github" } }, - "pihole": { - "inputs": { - "flake-utils": [ - "flake-utils" - ], - "linger": [ - "linger" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, + "nixpkgs_7": { "locked": { - "lastModified": 1670284048, - "narHash": "sha256-lNyJ7vrDAdsPVcNBXqDUXseBBL9Kf2q64/A8ntEKXWI=", - "owner": "mindsbackyard", - "repo": "pihole-flake", - "rev": "9daaf65415ad6d3f5a8daa617d8737bc405f9dd8", + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "type": "github" }, "original": { - "owner": "mindsbackyard", - "repo": "pihole-flake", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1749401433, + "narHash": "sha256-HXIQzULIG/MEUW2Q/Ss47oE3QrjxvpUX7gUl4Xp6lnc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "08fcb0dcb59df0344652b38ea6326a2d8271baff", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1748730660, + "narHash": "sha256-5LKmRYKdPuhm8j5GFe3AfrJL8dd8o57BQ34AGjJl1R0=", + "owner": "nix-community", + "repo": "NUR", + "rev": "2c0bc52fe14681e9ef60e3553888c4f086e46ecb", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", "type": "github" } }, @@ -498,11 +852,11 @@ ] }, "locked": { - "lastModified": 1707045317, - "narHash": "sha256-o2NZJcNu2/M3qycZ2Z9sgIESQEBFmihbbA7//sp7yVA=", + "lastModified": 1748196248, + "narHash": "sha256-1iHjsH6/5UOerJEoZKE+Gx1BgAoge/YcnUsOA4wQ/BU=", "owner": "pjones", "repo": "plasma-manager", - "rev": "290cd65b65e2da11ca9fda69781ea9beb8a6f6ac", + "rev": "b7697abe89967839b273a863a3805345ea54ab56", "type": "github" }, "original": { @@ -517,23 +871,18 @@ "lanzaboote", "flake-compat" ], - "flake-utils": [ - "lanzaboote", - "flake-utils" - ], "gitignore": "gitignore", "nixpkgs": [ "lanzaboote", "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable" + ] }, "locked": { - "lastModified": 1706424699, - "narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=", + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "type": "github" }, "original": { @@ -544,37 +893,60 @@ }, "root": { "inputs": { - "extest": "extest", + "catppuccin": "catppuccin", + "disko": "disko", + "flake-parts": "flake-parts", "flake-utils": "flake-utils", "home-manager": "home-manager", "jovian": "jovian", "lanzaboote": "lanzaboote", - "linger": "linger", + "nix-index-database": "nix-index-database", + "nixos-generators": "nixos-generators", + "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_4", + "nixpkgs-edge": "nixpkgs-edge", "nixpkgs-unstable": "nixpkgs-unstable", - "pihole": "pihole", "plasma-manager": "plasma-manager", "simple-nixos-mailserver": "simple-nixos-mailserver", - "sops-nix": "sops-nix" + "sops-nix": "sops-nix", + "stylix": "stylix", + "zjstatus": "zjstatus" } }, "rust-overlay": { "inputs": { - "flake-utils": [ - "lanzaboote", - "flake-utils" - ], "nixpkgs": [ "lanzaboote", "nixpkgs" ] }, "locked": { - "lastModified": 1707099356, - "narHash": "sha256-ph483MDKLi9I/gndYOieVP41es633DOOmPjEI50x5KU=", + "lastModified": 1749436897, + "narHash": "sha256-OkDtaCGQQVwVFz5HWfbmrMJR99sFIMXHCHEYXzUJEJY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "61dfa5a8129f7edbe9150253c68f673f87b16fb1", + "rev": "e7876c387e35dc834838aff254d8e74cf5bd4f19", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "nixpkgs": [ + "zjstatus", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1749436897, + "narHash": "sha256-OkDtaCGQQVwVFz5HWfbmrMJR99sFIMXHCHEYXzUJEJY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "e7876c387e35dc834838aff254d8e74cf5bd4f19", "type": "github" }, "original": { @@ -587,17 +959,16 @@ "inputs": { "blobs": "blobs", "flake-compat": "flake-compat_2", + "git-hooks": "git-hooks", "nixpkgs": "nixpkgs_5", - "nixpkgs-23_05": "nixpkgs-23_05", - "nixpkgs-23_11": "nixpkgs-23_11", - "utils": "utils" + "nixpkgs-25_05": "nixpkgs-25_05" }, "locked": { - "lastModified": 1706742486, - "narHash": "sha256-sv/MISTeD0rqeVivpZJpynboMWJp6i62OmrZX1rGl38=", + "lastModified": 1750052062, + "narHash": "sha256-sRiACsZZgKfm5zqz/2Kzd/R7MsldTI2FlxYGhBUD4pY=", "owner": "simple-nixos-mailserver", "repo": "nixos-mailserver", - "rev": "9e36323ae3dde787f761420465c3ae560f3dbf29", + "rev": "7405122ddeefa690b9fa6f25a23195ba57f5f599", "type": "gitlab" }, "original": { @@ -609,15 +980,14 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_6", - "nixpkgs-stable": "nixpkgs-stable_2" + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1707015547, - "narHash": "sha256-YZr0OrqWPdbwBhxpBu69D32ngJZw8AMgZtJeaJn0e94=", + "lastModified": 1749592509, + "narHash": "sha256-VunQzfZFA+Y6x3wYi2UE4DEQ8qKoAZZCnZPUlSoqC+A=", "owner": "Mic92", "repo": "sops-nix", - "rev": "23f61b897c00b66855074db471ba016e0cda20dd", + "rev": "50754dfaa0e24e313c626900d44ef431f3210138", "type": "github" }, "original": { @@ -626,6 +996,41 @@ "type": "github" } }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-compat": "flake-compat_3", + "flake-parts": "flake-parts_3", + "git-hooks": "git-hooks_2", + "gnome-shell": "gnome-shell", + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_7", + "nur": "nur", + "systems": "systems_2", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1750023464, + "narHash": "sha256-gBsstni5rgh1vt2SNThh51GNvxMDCjEBfpPksS0ig/c=", + "owner": "danth", + "repo": "stylix", + "rev": "a14e525723c1c837b2ceacd8a37cba1f0b5e76c2", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -656,18 +1061,142 @@ "type": "github" } }, - "utils": { + "systems_3": { "locked": { - "lastModified": 1605370193, - "narHash": "sha256-YyMTf3URDL/otKdKgtoMChu4vfVL3vCMkRqpGifhUn0=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1748180480, + "narHash": "sha256-7n0XiZiEHl2zRhDwZd/g+p38xwEoWtT0/aESwTMXWG4=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "87d652edd26f5c0c99deda5ae13dfb8ece2ffe31", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1748740859, + "narHash": "sha256-OEM12bg7F4N5WjZOcV7FHJbqRI6jtCqL6u8FtPrlZz4=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "57d5f9683ff9a3b590643beeaf0364da819aedda", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1725758778, + "narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", "owner": "numtide", - "repo": "flake-utils", - "rev": "5021eac20303a61fafe17224c087f5519baed54d", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "treefmt-nix", + "type": "github" + } + }, + "zjstatus": { + "inputs": { + "crane": "crane_2", + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_8", + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1749470933, + "narHash": "sha256-TEb495xtK9PsCATFezzg6HXThjtveMs7EkWkGJVxPXU=", + "owner": "dj95", + "repo": "zjstatus", + "rev": "25adf0c5968b4e8253e8e40e648d05cf15c9430d", + "type": "github" + }, + "original": { + "owner": "dj95", + "repo": "zjstatus", "type": "github" } } diff --git a/flake.nix b/flake.nix index ed6a712..9382a34 100644 --- a/flake.nix +++ b/flake.nix @@ -4,12 +4,55 @@ inputs = { # Nixpkgs nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + nixpkgs-edge.url = "nixpkgs/master"; # Only used for bleeding edge packages + + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + + # Disko for declaratively setting disk formatting + disko.url = "github:nix-community/disko"; + disko.inputs.nixpkgs.follows = "nixpkgs"; + + # bcachefs-tools = { + # url = "github:koverstreet/bcachefs-tools"; + # inputs.nixpkgs.follows = "nixpkgs"; + # inputs.flake-parts.follows = "flake-parts"; + # }; + + flake-parts = { + url = "github:hercules-ci/flake-parts"; # Flake parts for easy flake management + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; + + # Nixos generators for creating ISOs + nixos-generators = { + url = "github:nix-community/nixos-generators"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # catpuccin theme + catppuccin.url = "github:catppuccin/nix"; + + # Conduwuit fork after it shut down + + # Nix index database files + nix-index-database.url = "github:nix-community/nix-index-database"; + nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; + + # Secret management with sops sops-nix.url = "github:Mic92/sops-nix"; + + # Simple mail server simple-nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master"; + + # Extra utils for flakes flake-utils.url = "github:numtide/flake-utils"; + + # Manage KDE plasma desktop configuration plasma-manager.url = "github:pjones/plasma-manager"; plasma-manager.inputs.nixpkgs.follows = "nixpkgs"; plasma-manager.inputs.home-manager.follows = "home-manager"; + # You can access packages and modules from different nixpkgs revs # at the same time. Here's an working example: nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; @@ -24,53 +67,113 @@ # Home manager home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; - extest.url = "github:chaorace/extest-nix"; + + zjstatus.url = "github:dj95/zjstatus"; + + # Fix for steam cursor not being visible under wayland + # Add any other flake you might need # hardware.url = "github:nixos/nixos-hardware"; - - # Required for making sure that Pi-hole continues running if the executing user has no active session. - linger = { - url = "github:mindsbackyard/linger-flake"; - inputs.flake-utils.follows = "flake-utils"; - }; - - pihole = { - url = "github:mindsbackyard/pihole-flake"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.flake-utils.follows = "flake-utils"; - inputs.linger.follows = "linger"; - }; + # Stylix theming engine + stylix.url = "github:danth/stylix"; }; outputs = { self, nixpkgs, + flake-utils, + nixpkgs-edge, + nixos-generators, + catppuccin, + disko, home-manager, sops-nix, simple-nixos-mailserver, plasma-manager, - linger, - pihole, + zjstatus, lanzaboote, + jovian, + nixos-hardware, + nix-index-database, + stylix, ... } @ inputs: let + supportedSystems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; + forEachSupportedSystem = f: + nixpkgs.lib.genAttrs supportedSystems (system: + f { + pkgs = import nixpkgs {inherit system;}; + }); inherit (self) outputs; + inherit (inputs) nixpkgs-edge; # Supported systems for your flake packages, shell, etc. systems = [ - "armv7l-linux" "x86_64-linux" + "aarch64-linux" ]; # This is a function that generates an attribute by calling a function you # pass to it, with each system as an argument forAllSystems = nixpkgs.lib.genAttrs systems; + pkgs-edge = import nixpkgs-edge { + system = "x86_64-linux"; + config = { + allowUnfree = true; + allowUnfreePredicate = _: true; + }; + }; + + sharedModules = [ + ./nixos/shared + sops-nix.nixosModules.sops + disko.nixosModules.disko + home-manager.nixosModules.home-manager + catppuccin.nixosModules.catppuccin + stylix.nixosModules.stylix + nix-index-database.nixosModules.nix-index + {programs.nix-index-database.comma.enable = true;} + { + home-manager.sharedModules = [ + catppuccin.homeModules.catppuccin + ./home-manager/shared + sops-nix.homeManagerModules.sops + ]; + } + ]; + + desktopModules = [ + ./nixos/desktop + { + home-manager.sharedModules = [ + inputs.plasma-manager.homeManagerModules.plasma-manager + ./home-manager/desktop + ]; + } + ]; in { + devShells = forEachSupportedSystem ({pkgs}: { + default = pkgs.mkShell { + packages = with pkgs; [nom just git]; + }; + }); + # Your custom packages # Accessible through 'nix build', 'nix shell', etc - packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system}); + packages = forAllSystems (system: + import ./pkgs (import nixpkgs { + inherit system; + config.allowUnfree = true; + })); # Formatter for your nix files, available through 'nix fmt' # Other options beside 'alejandra' include 'nixpkgs-fmt' formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra); + # Reusable nixos modules you might want to export + # These are usually stuff you would upstream into nixpkgs + nixosModules = import ./modules/nixos; + # Reusable home-manager modules you might want to export + # These are usually stuff you would upstream into home-manager + # homeManagerModules = import ./modules/home-manager; + # Your custom packages and modifications, exported as overlays overlays = import ./overlays {inherit inputs;}; @@ -80,73 +183,73 @@ EDI = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs outputs;}; - modules = [ - # > Our main nixos configuration file < - ./nixos/hosts/EDI/configuration.nix - sops-nix.nixosModules.sops - lanzaboote.nixosModules.lanzaboote - home-manager.nixosModules.home-manager - { - home-manager.sharedModules = [plasma-manager.homeManagerModules.plasma-manager]; - } - ]; + modules = + sharedModules + ++ desktopModules + ++ [ + {_module.args = {inherit pkgs-edge;};} + nixos-hardware.nixosModules.dell-xps-13-7390 + lanzaboote.nixosModules.lanzaboote + # > Our main nixos configuration file < + ./nixos/hosts/EDI/configuration.nix + ]; }; - }; - nixosConfigurations = { GLaDOS = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs outputs;}; - modules = [ - # > Our main nixos configuration file < - ./nixos/hosts/GLaDOS/configuration.nix - sops-nix.nixosModules.sops - #lanzaboote.nixosModules.lanzaboote - home-manager.nixosModules.home-manager - { - home-manager.sharedModules = [plasma-manager.homeManagerModules.plasma-manager]; - } - ]; + modules = + sharedModules + ++ desktopModules + ++ [ + {_module.args = {inherit pkgs-edge;};} + jovian.nixosModules.jovian + # > Our main nixos configuration file < + ./nixos/hosts/GLaDOS/configuration.nix + lanzaboote.nixosModules.lanzaboote + ]; }; - }; - nixosConfigurations = { queen = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs outputs;}; - modules = [ - # > Our main nixos configuration file < - ./nixos/hosts/queen/configuration.nix - sops-nix.nixosModules.sops - simple-nixos-mailserver.nixosModule - ]; + modules = + sharedModules + ++ [ + {_module.args = {inherit pkgs-edge;};} + simple-nixos-mailserver.nixosModule + # > Our main nixos configuration file < + ./nixos/hosts/queen/configuration.nix + ]; }; - }; - nixosConfigurations = { shodan = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs outputs;}; - modules = [ - # > Our main nixos configuration file < - ./nixos/hosts/shodan/configuration.nix - sops-nix.nixosModules.sops - ]; + modules = + sharedModules + ++ [ + {_module.args = {inherit pkgs-edge;};} + # > Our main nixos configuration file < + ./nixos/hosts/shodan/configuration.nix + lanzaboote.nixosModules.lanzaboote + jovian.nixosModules.jovian + { + home-manager.sharedModules = [ + inputs.plasma-manager.homeManagerModules.plasma-manager + ]; + } + ]; }; - }; - nixosConfigurations = { - wheatley = nixpkgs.lib.nixosSystem { - system = "armv7l-linux"; - specialArgs = {inherit inputs outputs;}; - modules = [ - # make the module declared by the linger flake available to our config - #linger.nixosModules."armv7l-linux".default - #pihole.nixosModules."armv7l-linux".default - # > Our main nixos configuration file < - ./nixos/hosts/wheatley/configuration.nix - sops-nix.nixosModules.sops - ]; + wheatley = nixpkgs.lib.nixosSystem { + system = "aarch64-linux"; + specialArgs = {inherit inputs outputs;}; + modules = + sharedModules + ++ [ + ./nixos/hosts/wheatley/configuration.nix + ]; }; }; }; diff --git a/home-manager/desktop/configuration.nix b/home-manager/desktop/configuration.nix deleted file mode 100644 index 5f3920c..0000000 --- a/home-manager/desktop/configuration.nix +++ /dev/null @@ -1,142 +0,0 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { - # You can import other home-manager modules here - imports = [ - # If you want to use modules your own flake exports (from modules/home-manager): - # outputs.homeManagerModules.example - - # Or modules exported from other flakes (such as nix-colors): - # inputs.nix-colors.homeManagerModules.default - - # You can also split up your configuration and import pieces of it here: - # ./nvim.nix - ../package-configs/zsh.nix - ]; - nixpkgs = { - # You can add overlays here - overlays = [ - # You can also add overlays exported from other flakes: - # neovim-nightly-overlay.overlays.default - - # Or define it inline, for example: - # (final: prev: { - # hi = final.hello.overrideAttrs (oldAttrs: { - # patches = [ ./change-hello-to-hi.patch ]; - # }); - # }) - ]; - # Configure your nixpkgs instance - config = { - # Disable if you don't want unfree packages - allowUnfree = true; - }; - }; - - home = { - username = "lillian"; - homeDirectory = "/home/lillian"; - }; - - # Add stuff for your user as you see fit: - # programs.neovim.enable = true; - # home.packages = with pkgs; [ steam ]; - - home.packages = with pkgs; [ - # Coding: - direnv - git - ruff - kate - - # Chat applications: - element-desktop - signal-desktop - webcord-vencord - - # Gaming: - prismlauncher - steam - - # Multimedia: - freetube - obs-studio - vlc - - # Office applications: - onlyoffice-bin - teams-for-linux - gimp-with-plugins - thunderbird - - # System tools: - rage - discover - flameshot - fzf - nextcloud-client - nitrokey-app - protonvpn-gui - sops - virtualbox - watchmate - qbittorrent - zsh - - # Web browsing: - firefox - librewolf - ungoogled-chromium - ]; - - programs.vscode = { - enable = true; - package = pkgs.vscodium; - extensions = with pkgs.vscode-extensions; [ - arrterian.nix-env-selector - #ban.spellright - #charliermarsh.ruff - dracula-theme.theme-dracula - eamodio.gitlens - github.vscode-pull-request-github - jnoortheen.nix-ide - kamadorueda.alejandra - mkhl.direnv - ms-toolsai.jupyter - ms-pyright.pyright - ms-python.black-formatter - #ms-python.python - ms-python.vscode-pylance - #ms-vscode-remote.remote-containers - ms-vscode-remote.remote-ssh - oderwat.indent-rainbow - rust-lang.rust-analyzer - yzhang.markdown-all-in-one - ]; - }; - - # Enable home-manager and git - programs.home-manager.enable = true; - programs.git = { - enable = true; - userEmail = "git@lillianviolet.dev"; - userName = "Lillian-Violet"; - extraConfig = { - init = { - defaultBranch = "main"; - }; - }; - ignores = [ - "*.direnv" - "*.vscode" - ]; - }; - - # Nicely reload system units when changing configs - systemd.user.startServices = "sd-switch"; -} diff --git a/home-manager/desktop/default.nix b/home-manager/desktop/default.nix new file mode 100644 index 0000000..904ec83 --- /dev/null +++ b/home-manager/desktop/default.nix @@ -0,0 +1,271 @@ +{ + pkgs, + config, + ... +}: { + # You can import other home-manager modules here + imports = [ + # If you want to use modules your own flake exports (from modules/home-manager): + # outputs.homeManagerModules.example + + # Or modules exported from other flakes (such as nix-colors): + # inputs.nix-colors.homeManagerModules.default + + # You can also split up your configuration and import pieces of it here: + # ./nvim.nix + ./package-configs/plasma-desktop.nix + ./package-configs/firefox.nix + ./package-configs/konsole + ./package-configs/foot + ./package-configs/freetube + ./package-configs/vesktop + ]; + nixpkgs = { + # You can add overlays here + overlays = [ + # You can also add overlays exported from other flakes: + # neovim-nightly-overlay.overlays.default + + # Or define it inline, for example: + # (final: prev: { + # hi = final.hello.overrideAttrs (oldAttrs: { + # patches = [ ./change-hello-to-hi.patch ]; + # }); + # }) + # (final: prev: { + # catppuccin-vsc = final.catppuccin-vsc.overrideAttrs (oldAttrs: { + # accent = "mauve"; + # boldKeywords = true; + # italicComments = true; + # italicKeywords = true; + # extraBordersEnabled = false; + # workbenchMode = "default"; + # bracketMode = "rainbow"; + # colorOverrides = {}; + # customUIColors = {}; + # }); + # }) + # (final: prev: { + # catppuccin-vsc = final.catppuccin-vsc.overrideAttrs (oldAttrs: { + # accent = "mauve"; + # boldKeywords = true; + # italicComments = true; + # italicKeywords = true; + # extraBordersEnabled = false; + # workbenchMode = "default"; + # bracketMode = "rainbow"; + # colorOverrides = {}; + # customUIColors = {}; + # }); + # }) + ]; + config = { + permittedInsecurePackages = ["cinny-4.2.3" "cinny-unwrapped-4.2.3" "cinny-4.2.2" "cinny-unwrapped-4.2.2"]; + # Configure your nixpkgs instance + + # Disable if you don't want unfree packages + allowUnfree = true; + }; + }; + systemd.user = { + # services."nextcloud-autosync@" = { + # Unit = { + # Description = "Auto sync Nextcloud"; + # After = "network-online.target"; + # PartOf = ["nextcloud-autosyncs.target"]; + # }; + # Service = { + # Type = "simple"; + # ExecStart = "${pkgs.nextcloud-client}/bin/nextcloudcmd -h -n --path /%i /home/lillian/%i https://nextcloud.gladtherescake.eu"; + # TimeoutStopSec = "180"; + # KillMode = "process"; + # KillSignal = "SIGINT"; + # }; + # Install.WantedBy = ["multi-user.target"]; + # }; + # targets.nextcloud-autosyncs = { + # Unit = { + # Description = "workers"; + # Requires = ["nextcloud-autosync@Music" "nextcloud-autosync@Pictures" "nextcloud-autosync@Scripts" "nextcloud-autosync@Videos" "nextcloud-autosync@Documents"]; + # PartOf = "nextcloud-autosyncs.target"; + # }; + # Install.WantedBy = ["multi-user.target"]; + # }; + # timers.nextcloud-autosyncs = { + # Unit.Description = "Automatic sync files with Nextcloud when booted up after 5 minutes then rerun every 60 minutes"; + # Timer.OnBootSec = "5min"; + # Timer.OnUnitActiveSec = "60min"; + # Install.WantedBy = ["multi-user.target" "timers.target"]; + # }; + + # Nicely reload system units when changing configs + startServices = "sd-switch"; + }; + + home = { + username = "lillian"; + homeDirectory = "/home/lillian"; + + file = { + Music = { + source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/Nextcloud/Music"; + target = "Music"; + }; + Pictures = { + source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/Nextcloud/Pictures"; + target = "Pictures"; + }; + Screenshots = { + source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/Nextcloud/Pictures/Screenshots"; + target = "Screenshots"; + }; + Scripts = { + source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/Nextcloud/Scripts"; + target = "Scripts"; + }; + Videos = { + source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/Nextcloud/Videos"; + target = "Videos"; + }; + Documents = { + source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/Nextcloud/Documents"; + target = "Documents"; + }; + floorp = { + source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/.mozilla/firefox"; + target = ".floorp"; + }; + }; + + # Add stuff for your user as you see fit: + # programs.neovim.enable = true; + # home.packages = with pkgs; [ steam ]; + + packages = with pkgs; [ + # Coding: + direnv + git + git-credential-manager + git-credential-manager + ruff + devtoolbox + + # Chat applications: + signal-desktop + vesktop + cinny-desktop + + # Gaming: + prismlauncher + steam + gamescope + + # Multimedia: + vlc + fcast-receiver + fcast-client + + # Office applications: + onlyoffice-bin + gimp + thunderbird + + # System tools: + rage + flameshot + fzf + nextcloud-client + nitrokey-app + # protonvpn-gui + virtualbox + #watchmate + qbittorrent + + # Theming: + catppuccin-cursors + (catppuccin-kde.override { + flavour = ["macchiato"]; + accents = ["mauve"]; + }) + catppuccin-sddm-corners + + # Theming: + catppuccin-cursors + (catppuccin-kde.override { + flavour = ["macchiato"]; + accents = ["mauve"]; + }) + catppuccin-sddm-corners + + # Web browsing: + firefoxpwa + firefoxpwa + ungoogled-chromium + ]; + }; + programs = { + # vscode = { + # enable = true; + # package = pkgs.vscodium; + # extensions = with pkgs.vscode-extensions; [ + # catppuccin.catppuccin-vsc + # catppuccin.catppuccin-vsc-icons + # charliermarsh.ruff + # eamodio.gitlens + # github.vscode-pull-request-github + # jnoortheen.nix-ide + # kamadorueda.alejandra + # mkhl.direnv + # ms-toolsai.jupyter + # ms-pyright.pyright + # oderwat.indent-rainbow + # rust-lang.rust-analyzer + # yzhang.markdown-all-in-one + # ]; + # }; + + obs-studio.enable = true; + obs-studio.plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-backgroundremoval + obs-pipewire-audio-capture + ]; + + # Enable home-manager and git + home-manager.enable = true; + git = { + enable = true; + userEmail = "git@lillianviolet.dev"; + userName = "Lillian-Violet"; + extraConfig = { + init = { + defaultBranch = "main"; + }; + }; + ignores = [ + "*.direnv" + "*.vscode" + ".envrc" + "venv" + "venv" + ]; + signing.format = "ssh"; + }; + + gpg.enable = true; + gpg.settings = { + default-key = "0d43 5407 034c 2ad9 2d42 799d 280e 061d ff60 0f0d"; + default-recipient-self = true; + auto-key-locate = "local,wkd,keyserver"; + keyserver = "hkps://keys.openpgp.org"; + auto-key-retrieve = true; + auto-key-import = true; + keyserver-options = "honor-keyserver-url"; + no-autostart = true; + }; + }; + services = { + kdeconnect.package = pkgs.kdePackages.kdeconnect-kde; + kdeconnect.enable = true; + }; +} diff --git a/home-manager/desktop/package-configs/firefox.nix b/home-manager/desktop/package-configs/firefox.nix new file mode 100644 index 0000000..bff6738 --- /dev/null +++ b/home-manager/desktop/package-configs/firefox.nix @@ -0,0 +1,94 @@ +{pkgs, ...}: { + stylix.targets.firefox.profileNames = ["lillian"]; + programs.firefox = { + enable = true; + nativeMessagingHosts = [pkgs.firefoxpwa]; + package = pkgs.floorp; + profiles.lillian = { + isDefault = true; + settings = { + "browser.aboutConfig.showWarning" = false; + "browser.bookmarks.addedImportButton" = true; + "browser.bookmarks.restore_default_bookmarks" = false; + "browser.bookmarks.showMobileBookmarks" = true; + "browser.ctrlTab.sortByRecentlyUsed" = true; + "browser.discovery.enabled" = false; + "browser.download.panel.shown" = true; + "browser.firefox-view.feature-tour" = "{\"message\":\"FIREFOX_VIEW_FEATURE_TOUR\",\"screen\":\"\",\"complete\":true}"; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.pageActions.persistedActions" = ''{"ids":["bookmark","_3c078156-979c-498b-8990-85f7987dd929_","firefoxpwa_filips_si"],"idsInUrlbar":["_3c078156-979c-498b-8990-85f7987dd929_","firefoxpwa_filips_si","bookmark"],"idsInUrlbarPreProton":[],"version":1}''; + "browser.search.region" = "NL"; + "browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"unified-extensions-area":["jid1-mnnxcxisbpnsxq_jetpack-browser-action","firefoxpwa_filips_si-browser-action","ubo-scope_raymondhill_net-browser-action","treestyletab_piro_sakura_ne_jp-browser-action","wayback_machine_mozilla_org-browser-action","plasma-browser-integration_kde_org-browser-action","kde-connect_0xc0dedbad_com-browser-action","_f209234a-76f0-4735-9920-eb62507a54cd_-browser-action","bibitnow018_aqpl_mc2_chalmers_se-browser-action","_09b14d46-21c3-4a7d-b244-e756f497935b_-browser-action","_7fc8ef53-24ec-4205-87a4-1e745953bb0d_-browser-action","_74145f27-f039-47ce-a470-a662b129930a_-browser-action","_800215d6-eff0-4a62-9268-09857c048030_-browser-action","_b3e677f4-1150-4387-8629-da738260a48e_-browser-action","_d133e097-46d9-4ecc-9903-fa6a722a6e0e_-browser-action","myallychou_gmail_com-browser-action","_b7f9d2cd-d772-4302-8c3f-eb941af36f76_-browser-action","_cca112bb-1ca6-4593-a2f1-38d808a19dda_-browser-action","gdpr_cavi_au_dk-browser-action","_54da8dcf-a015-4c80-bbb4-db7f226ac7bd_-browser-action","jid1-om7ejgwa1u8akg_jetpack-browser-action","_7c1aa46e-b74f-4325-95d2-84c07d19cdce_-browser-action","_3c078156-979c-498b-8990-85f7987dd929_-browser-action","7esoorv3_alefvanoon_anonaddy_me-browser-action","_15b1b2af-e84a-4c70-ac7c-5608b0eeed5a_-browser-action","_b9db16a4-6edc-47ec-a1f4-b86292ed211d_-browser-action","dontfuckwithpaste_raim_ist-browser-action"],"nav-bar":["back-button","forward-button","stop-reload-button","urlbar-container","customizableui-special-spring2","downloads-button","_testpilot-containers-browser-action","addon_darkreader_org-browser-action","umatrix_raymondhill_net-browser-action","ublock0_raymondhill_net-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","_3579f63b-d8ee-424f-bbb6-6d0ce3285e6a_-browser-action","woop-noopscoopsnsxq_jetpack-browser-action","jid1-bofifl9vbdl2zq_jetpack-browser-action","cookieautodelete_kennydo_com-browser-action","addon_simplelogin-browser-action","jid1-aqqsmbyb0a8adg_jetpack-browser-action","unified-extensions-button","reset-pbm-toolbar-button"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button","_c607c8df-14a7-4f28-894f-29e8722976af_-browser-action"],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","treestyletab_piro_sakura_ne_jp-browser-action","addon_darkreader_org-browser-action","_testpilot-containers-browser-action","wayback_machine_mozilla_org-browser-action","plasma-browser-integration_kde_org-browser-action","_c607c8df-14a7-4f28-894f-29e8722976af_-browser-action","kde-connect_0xc0dedbad_com-browser-action","_f209234a-76f0-4735-9920-eb62507a54cd_-browser-action","ublock0_raymondhill_net-browser-action","cookieautodelete_kennydo_com-browser-action","bibitnow018_aqpl_mc2_chalmers_se-browser-action","_09b14d46-21c3-4a7d-b244-e756f497935b_-browser-action","_7fc8ef53-24ec-4205-87a4-1e745953bb0d_-browser-action","woop-noopscoopsnsxq_jetpack-browser-action","_74145f27-f039-47ce-a470-a662b129930a_-browser-action","_800215d6-eff0-4a62-9268-09857c048030_-browser-action","_3579f63b-d8ee-424f-bbb6-6d0ce3285e6a_-browser-action","_b3e677f4-1150-4387-8629-da738260a48e_-browser-action","_d133e097-46d9-4ecc-9903-fa6a722a6e0e_-browser-action","jid1-bofifl9vbdl2zq_jetpack-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","myallychou_gmail_com-browser-action","_b7f9d2cd-d772-4302-8c3f-eb941af36f76_-browser-action","umatrix_raymondhill_net-browser-action","_cca112bb-1ca6-4593-a2f1-38d808a19dda_-browser-action","gdpr_cavi_au_dk-browser-action","_54da8dcf-a015-4c80-bbb4-db7f226ac7bd_-browser-action","ubo-scope_raymondhill_net-browser-action","jid1-om7ejgwa1u8akg_jetpack-browser-action","_7c1aa46e-b74f-4325-95d2-84c07d19cdce_-browser-action","_3c078156-979c-498b-8990-85f7987dd929_-browser-action","addon_simplelogin-browser-action","7esoorv3_alefvanoon_anonaddy_me-browser-action","jid1-aqqsmbyb0a8adg_jetpack-browser-action","_15b1b2af-e84a-4c70-ac7c-5608b0eeed5a_-browser-action","firefoxpwa_filips_si-browser-action","_b9db16a4-6edc-47ec-a1f4-b86292ed211d_-browser-action","dontfuckwithpaste_raim_ist-browser-action","jid1-mnnxcxisbpnsxq_jetpack-browser-action"],"dirtyAreaCache":["nav-bar","PersonalToolbar","toolbar-menubar","TabsToolbar","unified-extensions-area","widget-overflow-fixed-list"],"currentVersion":20,"newElementCount":14}''; + "browser.urlbar.placeholderName" = "DuckDuckGo"; + "browser.urlbar.placeholderName.private" = "DuckDuckGo"; + "extensions.webextensions.uuid" = ''{"formautofill@mozilla.org":"ea6a95e0-ef85-453b-afdf-44e57e4ca32c","pictureinpicture@mozilla.org":"41fcca40-5f8a-4182-ace9-e1ff2e6fc210","screenshots@mozilla.org":"8c2c3f97-17a1-4240-b640-c9707e3b917e","webcompat-reporter@mozilla.org":"d2c1a84b-03ff-47c6-92be-a623026b79d9","webcompat@mozilla.org":"bb5b827a-1ad3-40d0-8c16-c7d6db11a62b","default-theme@mozilla.org":"83700f73-6c25-4599-9393-3e071be81fe6","wayback_machine@mozilla.org":"ef76899f-67d6-4ffb-973f-0c198a8369e4","uBlock0@raymondhill.net":"24e7b891-a28c-4555-b072-0ee184115cb4","DontFuckWithPaste@raim.ist":"6dbb9616-e8c9-40ff-a729-01dcd6fe09b4","uBO-Scope@raymondhill.net":"6afd83ed-7f93-41ad-960c-28c5ec5ac9bd","gdpr@cavi.au.dk":"4577a4f9-84e4-400c-a995-9b13640f3620","addon@simplelogin":"e492ff49-9c0e-4c42-ab28-465563e953b9","addons-search-detection@mozilla.com":"63a9d1fb-3c16-4b40-bd69-de186c138c5e","plasma-browser-integration@kde.org":"e655920d-846c-4a72-918e-86ebb25362a6","firefoxpwa@filips.si":"3ce26b62-9349-47cc-beaa-584b0c737979","addon@darkreader.org":"510c480d-7737-47ad-91a0-5b8e8f3745c3","shinigamieyes@shinigamieyes":"8f3b1099-f3b1-4468-915d-60fbfbfda8ce","7esoorv3@alefvanoon.anonaddy.me":"947c1016-2e39-48cd-ae1a-c301a6531d2a","CookieAutoDelete@kennydo.com":"28ccdbbd-d179-472a-8658-ae97d228f958","jid1-MnnxcxisBPnSXQ@jetpack":"f361e1b5-74bf-4073-ae95-245429a12cad","jid1-AQqSMBYb0a8ADg@jetpack":"8f3e6fd5-f009-4d2e-b501-0ec6b18dcf9e","wikipedia@search.mozilla.org":"c615bbc5-9fa2-48ae-a78d-7e5546c1a94e","ddg@search.mozilla.org":"4f7e3183-d053-40f6-b7b2-8f405f033281","{446900e4-71c2-419f-a6a7-df9c091e268b}":"bccbf892-7089-4d89-b886-a667e6fd9a03","{3c078156-979c-498b-8990-85f7987dd929}":"f3f046fa-c1b9-415d-b79b-236109b3926b"}''; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines" = "DuckDuckGo"; + }; + bookmarks = { + force = true; + settings = [ + { + name = "DIY HRT"; + toolbar = false; + bookmarks = [ + { + name = "estrogen production"; + tags = ["chemistry" "oestrogen" "estrogen" "diy"]; + url = "https://crimethinc.com/2022/12/15/producing-transdermal-estrogen-a-do-it-yourself-guide"; + } + { + name = "DIY HRT info"; + tags = ["guides" "wiki" "information" "DIY" "HRT" "estrogen" "testosterone"]; + url = "https://diyhrt.info/"; + } + ]; + } + { + name = "repair resources"; + toolbar = false; + bookmarks = [ + { + name = "manuals library"; + tags = ["repair" "manuals" "documentation"]; + url = "https://manualslib.com/"; + } + ]; + } + { + name = "Nix sites"; + toolbar = false; + bookmarks = [ + { + name = "packages"; + tags = ["packages" "basic" "nix"]; + url = "https://search.nixos.org/"; + } + { + name = "settings"; + tags = ["settings" "services" "packages" "nix"]; + url = "https://mynixos.com"; + } + ]; + } + { + name = "Games"; + toolbar = false; + bookmarks = [ + { + name = "PoE2 build sorceres"; + tags = ["PoE" "PoE2" "path of exile" "path of exile 2" "games" "guides" "build" "sorcerer" "sorceres"]; + url = "https://maxroll.gg/poe2/planner/caeye0hz"; + } + { + name = "PoE2 build ranger"; + tags = ["PoE" "PoE2" "path of exile" "path of exile 2" "games" "guides" "build" "bow" "ranger"]; + url = "https://maxroll.gg/poe2/build-guides/deadeye-gas-arrow-leveling-guide"; + } + ]; + } + ]; + }; + }; + }; +} diff --git a/home-manager/desktop/package-configs/foot/default.nix b/home-manager/desktop/package-configs/foot/default.nix new file mode 100644 index 0000000..aada26e --- /dev/null +++ b/home-manager/desktop/package-configs/foot/default.nix @@ -0,0 +1,14 @@ +{...}: { + programs.foot = { + enable = true; + # catppuccin.enable = true; + settings = { + main = { + }; + + mouse = { + hide-when-typing = "yes"; + }; + }; + }; +} diff --git a/home-manager/desktop/package-configs/freetube/default.nix b/home-manager/desktop/package-configs/freetube/default.nix new file mode 100644 index 0000000..34a27a0 --- /dev/null +++ b/home-manager/desktop/package-configs/freetube/default.nix @@ -0,0 +1,7 @@ +{...}: { + home.file."settings.db" = { + source = ./settings.db; + target = ".config/freetube/settings.db"; + force = true; + }; +} diff --git a/home-manager/desktop/package-configs/freetube/settings.db b/home-manager/desktop/package-configs/freetube/settings.db new file mode 100644 index 0000000..e3dcbc4 --- /dev/null +++ b/home-manager/desktop/package-configs/freetube/settings.db @@ -0,0 +1,24 @@ +{"_id":"allowDashAv1Formats","value":true} +{"_id":"barColor","value":true} +{"_id":"baseTheme","value":"catppuccinMocha"} +{"_id":"bounds","value":{"x":0,"y":66,"width":2560,"height":1374,"maximized":true,"fullScreen":false}} +{"_id":"defaultQuality","value":"1080"} +{"_id":"fetchSubscriptionsAutomatically","value":false} +{"_id":"generalAutoLoadMorePaginatedItemsEnabled","value":true} +{"_id":"hideActiveSubscriptions","value":true} +{"_id":"hidePopularVideos","value":true} +{"_id":"hideRecommendedVideos","value":true} +{"_id":"hideSubscriptionsCommunity","value":true} +{"_id":"hideSubscriptionsLive","value":true} +{"_id":"hideSubscriptionsShorts","value":true} +{"_id":"hideSubscriptionsVideos","value":true} +{"_id":"hideTrendingVideos","value":true} +{"_id":"landingPage","value":"history"} +{"_id":"mainColor","value":"CatppuccinMochaMauve"} +{"_id":"playNextVideo","value":false} +{"_id":"quickBookmarkTargetPlaylistId","value":"favorites"} +{"_id":"secColor","value":"CatppuccinMochaMauve"} +{"_id":"showDistractionFreeTitles","value":true} +{"_id":"useDeArrowThumbnails","value":true} +{"_id":"useDeArrowTitles","value":true} +{"_id":"useSponsorBlock","value":true} diff --git a/home-manager/desktop/package-configs/konsole/Catppuccin-Macchiato.colorscheme b/home-manager/desktop/package-configs/konsole/Catppuccin-Macchiato.colorscheme new file mode 100644 index 0000000..63bfb35 --- /dev/null +++ b/home-manager/desktop/package-configs/konsole/Catppuccin-Macchiato.colorscheme @@ -0,0 +1,96 @@ +[Background] +Color=36,39,58 + +[BackgroundFaint] +Color=36,39,58 + +[BackgroundIntense] +Color=36,39,58 + +[Color0] +Color=110,115,141 + +[Color0Faint] +Color=110,115,141 + +[Color0Intense] +Color=110,115,141 + +[Color1] +Color=237,135,150 + +[Color1Faint] +Color=237,135,150 + +[Color1Intense] +Color=237,135,150 + +[Color2] +Color=166,218,149 + +[Color2Faint] +Color=166,218,149 + +[Color2Intense] +Color=166,218,149 + +[Color3] +Color=238,212,159 + +[Color3Faint] +Color=238,212,159 + +[Color3Intense] +Color=238,212,159 + +[Color4] +Color=138,173,244 + +[Color4Faint] +Color=138,173,244 + +[Color4Intense] +Color=138,173,244 + +[Color5] +Color=198,160,246 + +[Color5Faint] +Color=198,160,246 + +[Color5Intense] +Color=198,160,246 + +[Color6] +Color=137,220,227 + +[Color6Faint] +Color=137,220,227 + +[Color6Intense] +Color=137,220,227 + +[Color7] +Color=202,211,245 + +[Color7Faint] +Color=202,211,245 + +[Color7Intense] +Color=202,211,245 + +[Foreground] +Color=202,211,245 + +[ForegroundFaint] +Color=202,211,245 + +[ForegroundIntense] +Color=202,211,245 + +[General] +Blur=false +ColorRandomization=false +Description=Catppuccin Macchiato +Opacity=1 +Wallpaper= diff --git a/home-manager/desktop/package-configs/konsole/Catppuccin.profile b/home-manager/desktop/package-configs/konsole/Catppuccin.profile new file mode 100644 index 0000000..4a140a8 --- /dev/null +++ b/home-manager/desktop/package-configs/konsole/Catppuccin.profile @@ -0,0 +1,8 @@ +[Appearance] +ColorScheme=Catppuccin-Macchiato + +[General] +Name=Catppuccin +Parent=FALLBACK/ +StartInCurrentSessionDir=true +TerminalRows=30 diff --git a/home-manager/desktop/package-configs/konsole/default.nix b/home-manager/desktop/package-configs/konsole/default.nix new file mode 100644 index 0000000..e8d5f29 --- /dev/null +++ b/home-manager/desktop/package-configs/konsole/default.nix @@ -0,0 +1,20 @@ +{...}: { + home.file = { + "profile" = { + source = ./Catppuccin.profile; + target = ".local/share/konsole/Catppuccin.profile"; + }; + }; + home.file = { + "colorscheme" = { + source = ./Catppuccin-Macchiato.colorscheme; + target = ".local/share/konsole/Catppuccin-Macchiato.colorscheme"; + }; + }; + home.file = { + "konsolerc" = { + source = ./konsolerc; + target = ".config/konsolerc"; + }; + }; +} diff --git a/home-manager/desktop/package-configs/konsole/konsolerc b/home-manager/desktop/package-configs/konsole/konsolerc new file mode 100644 index 0000000..15754ac --- /dev/null +++ b/home-manager/desktop/package-configs/konsole/konsolerc @@ -0,0 +1,17 @@ +[Desktop Entry] +DefaultProfile=Catppuccin.profile + +[General] +ConfigVersion=1 + +[KonsoleWindow] +RememberWindowSize=false + +[MainWindow] +1920x1080 screen: Height=512 +1920x1080 screen: Width=911 +State=AAAA/wAAAAD9AAAAAQAAAAAAAAAAAAAAAPwCAAAAAvsAAAAcAFMAUwBIAE0AYQBuAGEAZwBlAHIARABvAGMAawAAAAAA/////wAAAREA////+wAAACIAUQB1AGkAYwBrAEMAbwBtAG0AYQBuAGQAcwBEAG8AYwBrAAAAAAD/////AAABcgD///8AAAOPAAACDAAAAAQAAAAEAAAACAAAAAj8AAAAAQAAAAIAAAACAAAAFgBtAGEAaQBuAFQAbwBvAGwAQgBhAHIAAAAAAP////8AAAAAAAAAAAAAABwAcwBlAHMAcwBpAG8AbgBUAG8AbwBsAGIAYQByAAAAAAD/////AAAAAAAAAAA= +ToolBarsMovable=Disabled + +[UiSettings] +ColorScheme= diff --git a/home-manager/hosts/EDI/package-configs/plasma-desktop/configuration.nix b/home-manager/desktop/package-configs/plasma-desktop.nix similarity index 62% rename from home-manager/hosts/EDI/package-configs/plasma-desktop/configuration.nix rename to home-manager/desktop/package-configs/plasma-desktop.nix index d065b77..7331c1b 100644 --- a/home-manager/hosts/EDI/package-configs/plasma-desktop/configuration.nix +++ b/home-manager/desktop/package-configs/plasma-desktop.nix @@ -1,55 +1,183 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{osConfig, ...}: { + home.file.".config/kdeconnect/config" = { + text = '' + [General] + keyAlgorithm=EC + name=${osConfig.networking.hostName} + customDevices=10.0.0.2,10.0.0.3,10.0.0.4,10.0.0.5 + ''; + target = ".config/kdeconnect/config"; + force = true; + }; + programs.plasma = { enable = true; + desktop.mouseActions.verticalScroll = "switchVirtualDesktop"; + kscreenlocker.appearance.wallpaper = "${osConfig.stylix.image}"; + fonts = { + fixedWidth = { + pointSize = 11; + family = "${osConfig.stylix.fonts.monospace.name}"; + }; + general = { + pointSize = 11; + family = "${osConfig.stylix.fonts.serif.name}"; + }; + menu = { + pointSize = 11; + family = "${osConfig.stylix.fonts.sansSerif.name}"; + }; + small = { + pointSize = 11; + family = "${osConfig.stylix.fonts.sansSerif.name}"; + }; + toolbar = { + pointSize = 11; + family = "${osConfig.stylix.fonts.sansSerif.name}"; + }; + windowTitle = { + pointSize = 11; + family = "${osConfig.stylix.fonts.sansSerif.name}"; + }; + }; + panels = [ + { + alignment = "left"; + floating = true; + height = 38; + location = "top"; + screen = "all"; + widgets = [ + "org.kde.plasma.appmenu" + "org.kde.plasma.panelspacer" + "org.kde.milou" + "org.kde.plasma.panelspacer" + "org.kde.plasma.colorpicker" + { + systemTray.items = { + # We explicitly show bluetooth and battery + shown = [ + "org.kde.plasma.volume" + "org.kde.plasma.bluetooth" + "org.kde.plasma.brightness" + "org.kde.plasma.devicenotifier" + "org.kde.kscreen" + "org.kde.kdeconnect" + "org.kde.plasma.networkmanagement" + "org.kde.plasma.battery" + "org.kde.plasma.clipboard" + "org.kde.plasma.mediacontroller" + "org.kde.plasma.notifications" + "org.kde.plasma.weather" + ]; + # And explicitly hide networkmanagement and volume + hidden = [ + "Xwayland Video Bridge_pipewireToXProxy" + "org.kde.plasma.devicenotifier" + "org.kde.kscreen" + "org.kde.plasma.printmanager" + "chrome_status_icon_1" + "proton-vpn-app" + "Nitrokey App" + "qBittorrent" + "vlc" + "steam" + ]; + }; + } + { + digitalClock = { + calendar.firstDayOfWeek = "monday"; + time.format = "24h"; + date = { + enable = true; + format = "isoDate"; + position = "belowTime"; + }; + timeZone.selected = ["Europe/Amsterdam"]; + }; + } + "org.kde.plasma.lock_logout" + ]; + } + { + alignment = "center"; + floating = true; + height = 44; + hiding = "autohide"; + maxLength = 1920; + minLength = 1200; + location = "bottom"; + screen = "all"; + widgets = [ + "org.kde.plasma.kickoff" + "org.kde.plasma.panelspacer" + { + name = "org.kde.plasma.icontasks"; + config = { + General = { + launchers = [ + "applications:floorp.desktop" + "applications:systemsettings.desktop" + "applications:org.kde.dolphin.desktop" + "applications:signal.desktop" + "applications:vesktop.desktop" + "applications:thunderbird.desktop" + "applications:cinny.desktop" + "applications:steam.desktop" + "applications:noisetorch.desktop" + "applications:org.kde.plasma-systemmonitor.desktop" + "applications:foot.desktop" + "applications:nitrokey-app.desktop" + "applications:freetube.desktop" + ]; + }; + }; + } + "org.kde.plasma.panelspacer" + "org.kde.plasma.minimizeall" + ]; + } + ]; + shortcuts = { "ActivityManager"."switch-to-activity-a2cd7f51-1f1f-47a8-9544-a4c401f57a12" = []; + "KDE Keyboard Layout Switcher"."Switch to Last-Used Keyboard Layout" = "Meta+Alt+L"; "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+Alt+K"; "kaccess"."Toggle Screen Reader On and Off" = "Meta+Alt+S"; "kcm_touchpad"."Disable Touchpad" = "Touchpad Off"; "kcm_touchpad"."Enable Touchpad" = "Touchpad On"; - "kcm_touchpad"."Toggle Touchpad" = ["Touchpad Toggle" "Meta+Ctrl+Zenkaku Hankaku"]; - "kded5"."Show System Activity" = "Ctrl+Esc"; - "kded5"."display" = ["Display" "Meta+P"]; + "kcm_touchpad"."Toggle Touchpad" = ["Touchpad Toggle" "" "Meta+Ctrl+Zenkaku Hankaku,Touchpad Toggle" "Meta+Ctrl+Zenkaku Hankaku"]; "khotkeys"."{d03619b6-9b3c-48cc-9d9c-a2aadb485550}" = []; "kmix"."decrease_microphone_volume" = "Microphone Volume Down"; "kmix"."decrease_volume" = "Volume Down"; + "kmix"."decrease_volume_small" = "Shift+Volume Down"; "kmix"."increase_microphone_volume" = "Microphone Volume Up"; "kmix"."increase_volume" = "Volume Up"; - "kmix"."mic_mute" = ["Microphone Mute" "Meta+Volume Mute"]; + "kmix"."increase_volume_small" = "Shift+Volume Up"; + "kmix"."mic_mute" = ["Microphone Mute" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Mute Microphone"]; "kmix"."mute" = "Volume Mute"; - "ksmserver"."Halt Without Confirmation" = []; - "ksmserver"."Lock Session" = ["Meta+L" "Screensaver"]; + "ksmserver"."Halt Without Confirmation" = "none,,Shut Down Without Confirmation"; + "ksmserver"."Lock Session" = ["Meta+L" "Screensaver,Meta+L" "Screensaver,Lock Session"]; "ksmserver"."Log Out" = "Ctrl+Alt+Del"; - "ksmserver"."Log Out Without Confirmation" = []; - "ksmserver"."Reboot Without Confirmation" = []; + "ksmserver"."Log Out Without Confirmation" = "none,,Log Out Without Confirmation"; + "ksmserver"."LogOut" = "none,,Log Out"; + "ksmserver"."Reboot" = "none,,Reboot"; + "ksmserver"."Reboot Without Confirmation" = "none,,Reboot Without Confirmation"; + "ksmserver"."Shut Down" = "none,,Shut Down"; "kwin"."Activate Window Demanding Attention" = "Meta+Ctrl+A"; - "kwin"."Decrease Opacity" = []; "kwin"."Edit Tiles" = "Meta+T"; "kwin"."Expose" = "Ctrl+F9"; - "kwin"."ExposeAll" = ["Ctrl+F10" "Launch (C)"]; + "kwin"."ExposeAll" = ["Ctrl+F10" "Launch (C),Ctrl+F10" "Launch (C),Toggle Present Windows (All desktops)"]; "kwin"."ExposeClass" = "Ctrl+F7"; - "kwin"."ExposeClassCurrentDesktop" = []; - "kwin"."Increase Opacity" = []; + "kwin"."Grid View" = "Meta+G"; + "kwin"."Increase Opacity" = "none,,Increase Opacity of Active Window by 5%"; "kwin"."Kill Window" = "Meta+Ctrl+Esc"; - "kwin"."Move Tablet to Next Output" = []; "kwin"."MoveMouseToCenter" = "Meta+F6"; "kwin"."MoveMouseToFocus" = "Meta+F5"; - "kwin"."MoveZoomDown" = []; - "kwin"."MoveZoomLeft" = []; - "kwin"."MoveZoomRight" = []; - "kwin"."MoveZoomUp" = []; "kwin"."Overview" = "Meta+W"; - "kwin"."Setup Window Shortcut" = []; + "kwin"."Setup Window Shortcut" = "none,,Setup Window Shortcut"; "kwin"."Show Desktop" = "Meta+D"; - "kwin"."ShowDesktopGrid" = "Meta+F8"; - "kwin"."Suspend Compositing" = "Alt+Shift+F12"; "kwin"."Switch One Desktop Down" = "Meta+Ctrl+Down"; "kwin"."Switch One Desktop Up" = "Meta+Ctrl+Up"; "kwin"."Switch One Desktop to the Left" = "Meta+Ctrl+Left"; @@ -59,166 +187,51 @@ "kwin"."Switch Window Right" = "Meta+Alt+Right"; "kwin"."Switch Window Up" = "Meta+Alt+Up"; "kwin"."Switch to Desktop 1" = "Ctrl+F1"; - "kwin"."Switch to Desktop 10" = []; - "kwin"."Switch to Desktop 11" = []; - "kwin"."Switch to Desktop 12" = []; - "kwin"."Switch to Desktop 13" = []; - "kwin"."Switch to Desktop 14" = []; - "kwin"."Switch to Desktop 15" = []; - "kwin"."Switch to Desktop 16" = []; - "kwin"."Switch to Desktop 17" = []; - "kwin"."Switch to Desktop 18" = []; - "kwin"."Switch to Desktop 19" = []; "kwin"."Switch to Desktop 2" = "Ctrl+F2"; - "kwin"."Switch to Desktop 20" = []; "kwin"."Switch to Desktop 3" = "Ctrl+F3"; "kwin"."Switch to Desktop 4" = "Ctrl+F4"; - "kwin"."Switch to Desktop 5" = []; - "kwin"."Switch to Desktop 6" = []; - "kwin"."Switch to Desktop 7" = []; - "kwin"."Switch to Desktop 8" = []; - "kwin"."Switch to Desktop 9" = []; - "kwin"."Switch to Next Desktop" = []; - "kwin"."Switch to Next Screen" = []; - "kwin"."Switch to Previous Desktop" = []; - "kwin"."Switch to Previous Screen" = []; - "kwin"."Switch to Screen 0" = []; - "kwin"."Switch to Screen 1" = []; - "kwin"."Switch to Screen 2" = []; - "kwin"."Switch to Screen 3" = []; - "kwin"."Switch to Screen 4" = []; - "kwin"."Switch to Screen 5" = []; - "kwin"."Switch to Screen 6" = []; - "kwin"."Switch to Screen 7" = []; - "kwin"."Switch to Screen Above" = []; - "kwin"."Switch to Screen Below" = []; - "kwin"."Switch to Screen to the Left" = []; - "kwin"."Switch to Screen to the Right" = []; - "kwin"."Toggle Night Color" = []; - "kwin"."Toggle Window Raise/Lower" = []; - "kwin"."Walk Through Desktop List" = []; - "kwin"."Walk Through Desktop List (Reverse)" = []; - "kwin"."Walk Through Desktops" = []; - "kwin"."Walk Through Desktops (Reverse)" = []; "kwin"."Walk Through Windows" = "Alt+Tab"; - "kwin"."Walk Through Windows (Reverse)" = "Alt+Shift+Backtab"; - "kwin"."Walk Through Windows Alternative" = []; - "kwin"."Walk Through Windows Alternative (Reverse)" = []; + "kwin"."Walk Through Windows (Reverse)" = "Alt+Shift+Tab"; "kwin"."Walk Through Windows of Current Application" = "Alt+`"; "kwin"."Walk Through Windows of Current Application (Reverse)" = "Alt+~"; - "kwin"."Walk Through Windows of Current Application Alternative" = []; - "kwin"."Walk Through Windows of Current Application Alternative (Reverse)" = []; - "kwin"."Window Above Other Windows" = []; - "kwin"."Window Below Other Windows" = []; "kwin"."Window Close" = "Alt+F4"; - "kwin"."Window Fullscreen" = []; - "kwin"."Window Grow Horizontal" = []; - "kwin"."Window Grow Vertical" = []; - "kwin"."Window Lower" = []; "kwin"."Window Maximize" = "Meta+PgUp"; - "kwin"."Window Maximize Horizontal" = []; - "kwin"."Window Maximize Vertical" = []; "kwin"."Window Minimize" = "Meta+PgDown"; - "kwin"."Window Move" = []; - "kwin"."Window Move Center" = []; - "kwin"."Window No Border" = []; - "kwin"."Window On All Desktops" = []; "kwin"."Window One Desktop Down" = "Meta+Ctrl+Shift+Down"; "kwin"."Window One Desktop Up" = "Meta+Ctrl+Shift+Up"; "kwin"."Window One Desktop to the Left" = "Meta+Ctrl+Shift+Left"; "kwin"."Window One Desktop to the Right" = "Meta+Ctrl+Shift+Right"; - "kwin"."Window One Screen Down" = []; - "kwin"."Window One Screen Up" = []; - "kwin"."Window One Screen to the Left" = []; - "kwin"."Window One Screen to the Right" = []; "kwin"."Window Operations Menu" = "Alt+F3"; - "kwin"."Window Pack Down" = []; - "kwin"."Window Pack Left" = []; - "kwin"."Window Pack Right" = []; - "kwin"."Window Pack Up" = []; "kwin"."Window Quick Tile Bottom" = "Meta+Down"; - "kwin"."Window Quick Tile Bottom Left" = []; - "kwin"."Window Quick Tile Bottom Right" = []; "kwin"."Window Quick Tile Left" = "Meta+Left"; "kwin"."Window Quick Tile Right" = "Meta+Right"; "kwin"."Window Quick Tile Top" = "Meta+Up"; - "kwin"."Window Quick Tile Top Left" = []; - "kwin"."Window Quick Tile Top Right" = []; - "kwin"."Window Raise" = []; - "kwin"."Window Resize" = []; - "kwin"."Window Shade" = []; - "kwin"."Window Shrink Horizontal" = []; - "kwin"."Window Shrink Vertical" = []; - "kwin"."Window to Desktop 1" = []; - "kwin"."Window to Desktop 10" = []; - "kwin"."Window to Desktop 11" = []; - "kwin"."Window to Desktop 12" = []; - "kwin"."Window to Desktop 13" = []; - "kwin"."Window to Desktop 14" = []; - "kwin"."Window to Desktop 15" = []; - "kwin"."Window to Desktop 16" = []; - "kwin"."Window to Desktop 17" = []; - "kwin"."Window to Desktop 18" = []; - "kwin"."Window to Desktop 19" = []; - "kwin"."Window to Desktop 2" = []; - "kwin"."Window to Desktop 20" = []; - "kwin"."Window to Desktop 3" = []; - "kwin"."Window to Desktop 4" = []; - "kwin"."Window to Desktop 5" = []; - "kwin"."Window to Desktop 6" = []; - "kwin"."Window to Desktop 7" = []; - "kwin"."Window to Desktop 8" = []; - "kwin"."Window to Desktop 9" = []; - "kwin"."Window to Next Desktop" = []; - "kwin"."Window to Next Screen" = []; - "kwin"."Window to Previous Desktop" = []; - "kwin"."Window to Previous Screen" = []; - "kwin"."Window to Screen 0" = []; - "kwin"."Window to Screen 1" = []; - "kwin"."Window to Screen 2" = []; - "kwin"."Window to Screen 3" = []; - "kwin"."Window to Screen 4" = []; - "kwin"."Window to Screen 5" = []; - "kwin"."Window to Screen 6" = []; - "kwin"."Window to Screen 7" = []; - "kwin"."view_actual_size" = "Meta+0"; - "kwin"."view_zoom_in" = ["Meta++" "Meta+="]; + "kwin"."Window to Next Screen" = "Meta+Shift+Right"; + "kwin"."Window to Previous Desktop" = "none,,Window to Previous Desktop"; + "kwin"."Window to Previous Screen" = "Meta+Shift+Left"; + "kwin"."view_actual_size" = "\\, Meta+0\\, ,Meta+0,Zoom to Actual Size"; + "kwin"."view_zoom_in" = ["Meta++" "Meta+=,Meta++" "Meta+=,Zoom In"]; "kwin"."view_zoom_out" = "Meta+-"; - "mediacontrol"."mediavolumedown" = []; - "mediacontrol"."mediavolumeup" = []; "mediacontrol"."nextmedia" = "Media Next"; "mediacontrol"."pausemedia" = "Media Pause"; - "mediacontrol"."playmedia" = []; "mediacontrol"."playpausemedia" = "Media Play"; "mediacontrol"."previousmedia" = "Media Previous"; "mediacontrol"."stopmedia" = "Media Stop"; - "org.kde.dolphin.desktop"."_launch" = "Meta+E"; - "org.kde.kcalc.desktop"."_launch" = "Launch (1)"; - "org.kde.konsole.desktop"."NewTab" = []; - "org.kde.konsole.desktop"."NewWindow" = []; - "org.kde.konsole.desktop"."_launch" = "Ctrl+Alt+T"; - "org.kde.krunner.desktop"."RunClipboard" = "Alt+Shift+F2"; - "org.kde.krunner.desktop"."_launch" = ["Alt+Space" "Alt+F2" "Search"]; - "org.kde.plasma.emojier.desktop"."_launch" = ["Meta+." "Meta+Ctrl+Alt+Shift+Space"]; - "org.kde.spectacle.desktop"."ActiveWindowScreenShot" = ["Meta+Print" "Ctrl+!"]; - "org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = "Ctrl+#"; - "org.kde.spectacle.desktop"."FullScreenScreenShot" = ["Ctrl+$" "Shift+Print"]; - "org.kde.spectacle.desktop"."OpenWithoutScreenshot" = "Ctrl+^"; - "org.kde.spectacle.desktop"."RectangularRegionScreenShot" = ["Ctrl+@" "Meta+Shift+Print"]; - "org.kde.spectacle.desktop"."WindowUnderCursorScreenShot" = ["Meta+Ctrl+Print" "Ctrl+%"]; - "org.kde.spectacle.desktop"."_launch" = "Print"; "org_kde_powerdevil"."Decrease Keyboard Brightness" = "Keyboard Brightness Down"; - "org_kde_powerdevil"."Decrease Screen Brightness" = "Monitor Brightness Down"; + "org_kde_powerdevil"."Decrease Screen Brightness" = ["Monitor Brightness Down" "Ctrl+Volume Down"]; + "org_kde_powerdevil"."Decrease Screen Brightness Small" = ["Monitor Brightness Down" "Ctrl+Shift+Volume Down"]; "org_kde_powerdevil"."Hibernate" = "Hibernate"; "org_kde_powerdevil"."Increase Keyboard Brightness" = "Keyboard Brightness Up"; - "org_kde_powerdevil"."Increase Screen Brightness" = "Monitor Brightness Up"; + "org_kde_powerdevil"."Increase Screen Brightness" = ["Monitor Brightness Up" "Ctrl+Volume Up"]; + "org_kde_powerdevil"."Increase Screen Brightness Small" = ["Shift+Monitor Brightness Up" "Ctrl+Shift+Volume Up"]; "org_kde_powerdevil"."PowerDown" = "Power Down"; "org_kde_powerdevil"."PowerOff" = "Power Off"; "org_kde_powerdevil"."Sleep" = "Sleep"; "org_kde_powerdevil"."Toggle Keyboard Backlight" = "Keyboard Light On/Off"; - "org_kde_powerdevil"."Turn Off Screen" = []; + "org_kde_powerdevil"."powerProfile" = ["Battery" "Meta+B,Battery" "Meta+B,Switch Power Profile"]; + "plasmashell"."activate application launcher" = ["Meta" "Alt+F1,Meta" "Alt+F1,Activate Application Launcher"]; "plasmashell"."activate task manager entry 1" = "Meta+1"; - "plasmashell"."activate task manager entry 10" = []; + "plasmashell"."activate task manager entry 10" = ",Meta+0,Activate Task Manager Entry 10"; "plasmashell"."activate task manager entry 2" = "Meta+2"; "plasmashell"."activate task manager entry 3" = "Meta+3"; "plasmashell"."activate task manager entry 4" = "Meta+4"; @@ -227,29 +240,42 @@ "plasmashell"."activate task manager entry 7" = "Meta+7"; "plasmashell"."activate task manager entry 8" = "Meta+8"; "plasmashell"."activate task manager entry 9" = "Meta+9"; - "plasmashell"."clear-history" = []; + "plasmashell"."clear-history" = "none,,Clear Clipboard History"; "plasmashell"."clipboard_action" = "Meta+Ctrl+X"; "plasmashell"."cycle-panels" = "Meta+Alt+P"; - "plasmashell"."cycleNextAction" = []; - "plasmashell"."cyclePrevAction" = []; "plasmashell"."edit_clipboard" = []; "plasmashell"."manage activities" = "Meta+Q"; - "plasmashell"."next activity" = "Meta+Tab"; - "plasmashell"."previous activity" = "Meta+Shift+Tab"; "plasmashell"."repeat_action" = "Meta+Ctrl+R"; "plasmashell"."show dashboard" = "Ctrl+F12"; - "plasmashell"."show-barcode" = []; "plasmashell"."show-on-mouse-pos" = "Meta+V"; "plasmashell"."stop current activity" = "Meta+S"; - "plasmashell"."switch to next activity" = []; - "plasmashell"."switch to previous activity" = []; - "plasmashell"."toggle do not disturb" = []; - "systemsettings.desktop"."_launch" = "Tools"; - "systemsettings.desktop"."kcm-kscreen" = []; - "systemsettings.desktop"."kcm-lookandfeel" = []; - "systemsettings.desktop"."kcm-users" = []; - "systemsettings.desktop"."powerdevilprofilesconfig" = []; - "systemsettings.desktop"."screenlocker" = []; + "services/org.kde.krunner.desktop"."_launch" = ["Alt+Space" "Alt+F2" "Ctrl+Shift+Space" "Search"]; + "services/org.kde.plasma-systemmonitor.desktop"."_launch" = "Ctrl+Esc"; + "services/org.kde.spectacle.desktop"."ActiveWindowScreenShot" = ["Meta+Print" "Ctrl+!"]; + "services/org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = "Ctrl+#"; + "services/org.kde.spectacle.desktop"."FullScreenScreenShot" = ["Ctrl+$" "Shift+Print"]; + "services/org.kde.spectacle.desktop"."OpenWithoutScreenshot" = "Ctrl+^"; + "services/org.kde.spectacle.desktop"."RectangularRegionScreenShot" = ["Ctrl+@" "Meta+Shift+Print"]; + "services/org.kde.spectacle.desktop"."WindowUnderCursorScreenShot" = ["Meta+Ctrl+Print" "Ctrl+%"]; + "services/org.kde.spectacle.desktop"."_launch" = "Print"; + "services/services.org.kde.plasma-systemmonitor.desktop"."_launch" = "Ctrl+Esc"; + "services/services.org.kde.spectacle.desktop"."ActiveWindowScreenShot" = ["" "" "" "" "" "" "Meta+Print" "Ctrl+!"]; + "services/services.org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = "Ctrl+#"; + "services/services.org.kde.spectacle.desktop"."FullScreenScreenShot" = ["" "" "" "" "" "" "Ctrl+$" "Shift+Print"]; + "services/services.org.kde.spectacle.desktop"."OpenWithoutScreenshot" = "Ctrl+^"; + "services/services.org.kde.spectacle.desktop"."RecordWindow" = []; + "services/services.org.kde.spectacle.desktop"."RectangularRegionScreenShot" = ["" "" "" "" "" "" "Ctrl+@" "Meta+Shift+Print"]; + "services/services.org.kde.spectacle.desktop"."WindowUnderCursorScreenShot" = ["" "" "" "" "" "" "Meta+Ctrl+Print" "Ctrl+%"]; + "services/services.org.kde.spectacle.desktop"."_launch" = "Print"; + "services/services.services.org.kde.plasma-systemmonitor.desktop"."_launch" = "Ctrl+Esc"; + "services/services.services.org.kde.spectacle.desktop"."ActiveWindowScreenShot" = ["" "" "" "" "" "" "" "Meta+Print" "Ctrl+!"]; + "services/services.services.org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = "Ctrl+#"; + "services/services.services.org.kde.spectacle.desktop"."FullScreenScreenShot" = ["" "" "" "" "" "" "" "Ctrl+$" "Shift+Print"]; + "services/services.services.org.kde.spectacle.desktop"."OpenWithoutScreenshot" = "Ctrl+^"; + "services/services.services.org.kde.spectacle.desktop"."RecordWindow" = []; + "services/services.services.org.kde.spectacle.desktop"."RectangularRegionScreenShot" = ["" "" "" "" "" "" "" "Ctrl+@" "Meta+Shift+Print"]; + "services/services.services.org.kde.spectacle.desktop"."WindowUnderCursorScreenShot" = ["" "" "" "" "" "" "" "Meta+Ctrl+Print" "Ctrl+%"]; + "services/services.services.org.kde.spectacle.desktop"."_launch" = "Print"; }; configFile = { "baloofilerc"."General"."dbVersion" = 2; @@ -257,23 +283,164 @@ "baloofilerc"."General"."exclude filters version" = 8; "dolphinrc"."ExtractDialog"."1536x864 screen: Height" = 560; "dolphinrc"."ExtractDialog"."1536x864 screen: Width" = 1024; - "dolphinrc"."ExtractDialog"."DirHistory[$e]" = "/home/"; + "dolphinrc"."ExtractDialog"."1920x1080 screen: Height" = 540; + "dolphinrc"."ExtractDialog"."1920x1080 screen: Width" = 1260; + "dolphinrc"."ExtractDialog"."DirHistoryx5b$ex5d" = "/home/"; + "dolphinrc"."General"."RememberOpenedTabs" = false; + "dolphinrc"."General"."ViewPropsTimestamp" = "2024,8,28,22,44,37.273"; "dolphinrc"."IconsMode"."PreviewSize" = 80; "dolphinrc"."KFileDialog Settings"."Places Icons Auto-resize" = false; "dolphinrc"."KFileDialog Settings"."Places Icons Static Size" = 22; "dolphinrc"."KFileDialog Settings"."detailViewIconSize" = 16; + "dolphinrc"."PreviewSettings"."Plugins" = "mobithumbnail,fontthumbnail,ebookthumbnail,kraorathumbnail,jpegthumbnail,windowsexethumbnail,comicbookthumbnail,djvuthumbnail,opendocumentthumbnail,windowsimagethumbnail,exrthumbnail,audiothumbnail,cursorthumbnail,svgthumbnail,blenderthumbnail,gsthumbnail,rawthumbnail,ffmpegthumbs,imagethumbnail,directorythumbnail"; + "dolphinrc"."Search"."Location" = "Everywhere"; "kactivitymanagerdrc"."activities"."a2cd7f51-1f1f-47a8-9544-a4c401f57a12" = "Default"; "kactivitymanagerdrc"."main"."currentActivity" = "a2cd7f51-1f1f-47a8-9544-a4c401f57a12"; + "katerc"."General"."Days Meta Infos" = 30; + "katerc"."General"."Save Meta Infos" = true; + "katerc"."General"."Show Full Path in Title" = false; + "katerc"."General"."Show Menu Bar" = true; + "katerc"."General"."Show Status Bar" = true; + "katerc"."General"."Show Tab Bar" = true; + "katerc"."General"."Show Url Nav Bar" = true; + "katerc"."KTextEditor Document"."Allow End of Line Detection" = true; + "katerc"."KTextEditor Document"."Auto Detect Indent" = true; + "katerc"."KTextEditor Document"."Auto Reload If State Is In Version Control" = true; + "katerc"."KTextEditor Document"."Auto Save" = false; + "katerc"."KTextEditor Document"."Auto Save Interval" = 0; + "katerc"."KTextEditor Document"."Auto Save On Focus Out" = false; + "katerc"."KTextEditor Document"."BOM" = false; + "katerc"."KTextEditor Document"."Backup Local" = false; + "katerc"."KTextEditor Document"."Backup Prefix" = ""; + "katerc"."KTextEditor Document"."Backup Remote" = false; + "katerc"."KTextEditor Document"."Backup Suffix" = "~"; + "katerc"."KTextEditor Document"."Camel Cursor" = true; + "katerc"."KTextEditor Document"."Encoding" = "UTF-8"; + "katerc"."KTextEditor Document"."End of Line" = 0; + "katerc"."KTextEditor Document"."Indent On Backspace" = true; + "katerc"."KTextEditor Document"."Indent On Tab" = true; + "katerc"."KTextEditor Document"."Indent On Text Paste" = false; + "katerc"."KTextEditor Document"."Indentation Mode" = "normal"; + "katerc"."KTextEditor Document"."Indentation Width" = 4; + "katerc"."KTextEditor Document"."Keep Extra Spaces" = false; + "katerc"."KTextEditor Document"."Line Length Limit" = 10000; + "katerc"."KTextEditor Document"."Newline at End of File" = true; + "katerc"."KTextEditor Document"."On-The-Fly Spellcheck" = false; + "katerc"."KTextEditor Document"."Overwrite Mode" = false; + "katerc"."KTextEditor Document"."PageUp/PageDown Moves Cursor" = false; + "katerc"."KTextEditor Document"."Remove Spaces" = 1; + "katerc"."KTextEditor Document"."ReplaceTabsDyn" = true; + "katerc"."KTextEditor Document"."Show Spaces" = 0; + "katerc"."KTextEditor Document"."Show Tabs" = true; + "katerc"."KTextEditor Document"."Smart Home" = true; + "katerc"."KTextEditor Document"."Swap Directory" = ""; + "katerc"."KTextEditor Document"."Swap File Mode" = 1; + "katerc"."KTextEditor Document"."Swap Sync Interval" = 15; + "katerc"."KTextEditor Document"."Tab Handling" = 2; + "katerc"."KTextEditor Document"."Tab Width" = 4; + "katerc"."KTextEditor Document"."Trailing Marker Size" = 1; + "katerc"."KTextEditor Document"."Word Wrap" = false; + "katerc"."KTextEditor Document"."Word Wrap Column" = 80; + "katerc"."KTextEditor Editor"."Encoding Prober Type" = 1; + "katerc"."KTextEditor Editor"."Fallback Encoding" = "ISO 8859-15"; + "katerc"."KTextEditor Renderer"."Animate Bracket Matching" = false; + "katerc"."KTextEditor Renderer"."Auto Color Theme Selection" = true; + "katerc"."KTextEditor Renderer"."Color Theme" = "Catppuccin Macchiato"; + "katerc"."KTextEditor Renderer"."Font" = "Hack,10,-1,7,50,0,0,0,0,0"; + "katerc"."KTextEditor Renderer"."Line Height Multiplier" = 1; + "katerc"."KTextEditor Renderer"."Show Indentation Lines" = false; + "katerc"."KTextEditor Renderer"."Show Whole Bracket Expression" = false; + "katerc"."KTextEditor Renderer"."Word Wrap Marker" = false; + "katerc"."KTextEditor View"."Allow Mark Menu" = true; + "katerc"."KTextEditor View"."Auto Brackets" = true; + "katerc"."KTextEditor View"."Auto Center Lines" = 0; + "katerc"."KTextEditor View"."Auto Completion" = true; + "katerc"."KTextEditor View"."Auto Completion Preselect First Entry" = true; + "katerc"."KTextEditor View"."Backspace Remove Composed Characters" = false; + "katerc"."KTextEditor View"."Bookmark Menu Sorting" = 0; + "katerc"."KTextEditor View"."Bracket Match Preview" = false; + "katerc"."KTextEditor View"."Chars To Enclose Selection" = "<>(){}x5bx5d'\""; + "katerc"."KTextEditor View"."Default Mark Type" = 1; + "katerc"."KTextEditor View"."Dynamic Word Wrap" = true; + "katerc"."KTextEditor View"."Dynamic Word Wrap Align Indent" = 80; + "katerc"."KTextEditor View"."Dynamic Word Wrap At Static Marker" = false; + "katerc"."KTextEditor View"."Dynamic Word Wrap Indicators" = 1; + "katerc"."KTextEditor View"."Dynamic Wrap not at word boundaries" = false; + "katerc"."KTextEditor View"."Enable Tab completion" = false; + "katerc"."KTextEditor View"."Fold First Line" = false; + "katerc"."KTextEditor View"."Folding Bar" = true; + "katerc"."KTextEditor View"."Folding Preview" = true; + "katerc"."KTextEditor View"."Icon Bar" = false; + "katerc"."KTextEditor View"."Input Mode" = 0; + "katerc"."KTextEditor View"."Keyword Completion" = true; + "katerc"."KTextEditor View"."Line Modification" = true; + "katerc"."KTextEditor View"."Line Numbers" = true; + "katerc"."KTextEditor View"."Max Clipboard History Entries" = 20; + "katerc"."KTextEditor View"."Maximum Search History Size" = 100; + "katerc"."KTextEditor View"."Mouse Paste At Cursor Position" = false; + "katerc"."KTextEditor View"."Multiple Cursor Modifier" = 134217728; + "katerc"."KTextEditor View"."Persistent Selection" = false; + "katerc"."KTextEditor View"."Scroll Bar Marks" = false; + "katerc"."KTextEditor View"."Scroll Bar Mini Map All" = true; + "katerc"."KTextEditor View"."Scroll Bar Mini Map Width" = 60; + "katerc"."KTextEditor View"."Scroll Bar MiniMap" = true; + "katerc"."KTextEditor View"."Scroll Bar Preview" = true; + "katerc"."KTextEditor View"."Scroll Past End" = false; + "katerc"."KTextEditor View"."Search/Replace Flags" = 140; + "katerc"."KTextEditor View"."Shoe Line Ending Type in Statusbar" = false; + "katerc"."KTextEditor View"."Show Documentation With Completion" = true; + "katerc"."KTextEditor View"."Show File Encoding" = true; + "katerc"."KTextEditor View"."Show Focus Frame Around Editor" = true; + "katerc"."KTextEditor View"."Show Folding Icons On Hover Only" = true; + "katerc"."KTextEditor View"."Show Line Count" = false; + "katerc"."KTextEditor View"."Show Scrollbars" = 0; + "katerc"."KTextEditor View"."Show Statusbar Dictionary" = true; + "katerc"."KTextEditor View"."Show Statusbar Highlighting Mode" = true; + "katerc"."KTextEditor View"."Show Statusbar Input Mode" = true; + "katerc"."KTextEditor View"."Show Statusbar Line Column" = true; + "katerc"."KTextEditor View"."Show Statusbar Tab Settings" = true; + "katerc"."KTextEditor View"."Show Word Count" = false; + "katerc"."KTextEditor View"."Smart Copy Cut" = true; + "katerc"."KTextEditor View"."Statusbar Line Column Compact Mode" = true; + "katerc"."KTextEditor View"."Text Drag And Drop" = true; + "katerc"."KTextEditor View"."User Sets Of Chars To Enclose Selection" = ""; + "katerc"."KTextEditor View"."Vi Input Mode Steal Keys" = false; + "katerc"."KTextEditor View"."Vi Relative Line Numbers" = false; + "katerc"."KTextEditor View"."Word Completion" = true; + "katerc"."KTextEditor View"."Word Completion Minimal Word Length" = 3; + "katerc"."KTextEditor View"."Word Completion Remove Tail" = true; + "katerc"."KTextEditor::Search"."Search History" = "uuid"; + "katerc"."filetree"."editShade" = "93,62,114"; + "katerc"."filetree"."listMode" = false; + "katerc"."filetree"."shadingEnabled" = true; + "katerc"."filetree"."showCloseButton" = false; + "katerc"."filetree"."showFullPathOnRoots" = false; + "katerc"."filetree"."showToolbar" = true; + "katerc"."filetree"."sortRole" = 0; + "katerc"."filetree"."viewShade" = "101,69,143"; "kcminputrc"."Libinput.1739.30383.CUST0001:00 06CB:76AF Touchpad"."MiddleButtonEmulation" = true; "kcminputrc"."Libinput.1739.30383.CUST0001:00 06CB:76AF Touchpad"."NaturalScroll" = true; "kcminputrc"."Libinput.1739.30383.CUST0001:00 06CB:76AF Touchpad"."TapToClick" = true; + "kcminputrc"."Libinput/1739/30383/CUST0001:00 06CB:76AF Touchpad"."MiddleButtonEmulation" = true; + "kcminputrc"."Libinput/1739/30383/CUST0001:00 06CB:76AF Touchpad"."NaturalScroll" = true; + "kcminputrc"."Libinput/1739/30383/CUST0001:00 06CB:76AF Touchpad"."TapToClick" = true; + "kcminputrc"."Mouse"."cursorSize" = 32; "kcminputrc"."Tmp"."update_info" = "delete_cursor_old_default_size.upd:DeleteCursorOldDefaultSize"; "kded5rc"."Module-browserintegrationreminder"."autoload" = false; "kded5rc"."Module-device_automounter"."autoload" = false; "kded5rc"."PlasmaBrowserIntegration"."shownCount" = 1; + "kdeglobals"."DirSelect Dialog"."DirSelectDialog Size" = "960,540"; + "kdeglobals"."General"."AccentColor" = "184,117,220"; "kdeglobals"."General"."AllowKDEAppsToRememberWindowPositions" = true; "kdeglobals"."General"."BrowserApplication" = "firefox.desktop"; + "kdeglobals"."General"."LastUsedCustomAccentColor" = "184,117,220"; + "kdeglobals"."General"."TerminalApplication" = "foot"; + "kdeglobals"."General"."TerminalService" = "org.codeberg.dnkl.foot.desktop"; + "kdeglobals"."General"."XftAntialias" = true; + "kdeglobals"."General"."XftHintStyle" = "hintslight"; + "kdeglobals"."General"."XftSubPixel" = "rgb"; "kdeglobals"."KDE"."AnimationDurationFactor" = 0.7071067811865475; + "kdeglobals"."KDE"."ShowDeleteCommand" = false; "kdeglobals"."KDE"."SingleClick" = false; "kdeglobals"."KFileDialog Settings"."Allow Expansion" = false; "kdeglobals"."KFileDialog Settings"."Automatically select filename extension" = true; @@ -294,31 +461,13 @@ "kdeglobals"."KFileDialog Settings"."Speedbar Width" = 138; "kdeglobals"."KFileDialog Settings"."View Style" = "DetailTree"; "kdeglobals"."KShortcutsDialog Settings"."Dialog Size" = "600,480"; + "kdeglobals"."PreviewSettings"."MaximumRemoteSize" = 0; "kdeglobals"."WM"."activeBackground" = "49,54,59"; "kdeglobals"."WM"."activeBlend" = "252,252,252"; "kdeglobals"."WM"."activeForeground" = "252,252,252"; "kdeglobals"."WM"."inactiveBackground" = "42,46,50"; "kdeglobals"."WM"."inactiveBlend" = "161,169,177"; "kdeglobals"."WM"."inactiveForeground" = "161,169,177"; - "kglobalshortcutsrc"."ActivityManager"."_k_friendly_name" = "Activity Manager"; - "kglobalshortcutsrc"."KDE Keyboard Layout Switcher"."_k_friendly_name" = "Keyboard Layout Switcher"; - "kglobalshortcutsrc"."kaccess"."_k_friendly_name" = "Accessibility"; - "kglobalshortcutsrc"."kcm_touchpad"."_k_friendly_name" = "Touchpad"; - "kglobalshortcutsrc"."kded5"."_k_friendly_name" = "KDE Daemon"; - "kglobalshortcutsrc"."khotkeys"."_k_friendly_name" = "Custom Shortcuts Service"; - "kglobalshortcutsrc"."kmix"."_k_friendly_name" = "Audio Volume"; - "kglobalshortcutsrc"."ksmserver"."_k_friendly_name" = "Session Management"; - "kglobalshortcutsrc"."kwin"."_k_friendly_name" = "KWin"; - "kglobalshortcutsrc"."mediacontrol"."_k_friendly_name" = "Media Controller"; - "kglobalshortcutsrc"."org.kde.dolphin.desktop"."_k_friendly_name" = "Dolphin"; - "kglobalshortcutsrc"."org.kde.kcalc.desktop"."_k_friendly_name" = "KCalc"; - "kglobalshortcutsrc"."org.kde.konsole.desktop"."_k_friendly_name" = "Konsole"; - "kglobalshortcutsrc"."org.kde.krunner.desktop"."_k_friendly_name" = "KRunner"; - "kglobalshortcutsrc"."org.kde.plasma.emojier.desktop"."_k_friendly_name" = "Emoji Selector"; - "kglobalshortcutsrc"."org.kde.spectacle.desktop"."_k_friendly_name" = "Spectacle"; - "kglobalshortcutsrc"."org_kde_powerdevil"."_k_friendly_name" = "Power Management"; - "kglobalshortcutsrc"."plasmashell"."_k_friendly_name" = "Plasma"; - "kglobalshortcutsrc"."systemsettings.desktop"."_k_friendly_name" = "System Settings"; "khotkeysrc"."Data"."DataCount" = 3; "khotkeysrc"."Data_1"."Comment" = "KMenuEdit Global Shortcuts"; "khotkeysrc"."Data_1"."DataCount" = 1; @@ -801,53 +950,68 @@ "khotkeysrc"."Data_3_9Triggers"."TriggersCount" = 1; "khotkeysrc"."Data_3_9Triggers0"."GesturePointData" = "0,0.0625,-0.5,0.5,1,0.0625,0.0625,-0.5,0.5,0.875,0.125,0.0625,-0.5,0.5,0.75,0.1875,0.0625,-0.5,0.5,0.625,0.25,0.0625,-0.5,0.5,0.5,0.3125,0.0625,-0.5,0.5,0.375,0.375,0.0625,-0.5,0.5,0.25,0.4375,0.0625,-0.5,0.5,0.125,0.5,0.0625,0.5,0.5,0,0.5625,0.0625,0.5,0.5,0.125,0.625,0.0625,0.5,0.5,0.25,0.6875,0.0625,0.5,0.5,0.375,0.75,0.0625,0.5,0.5,0.5,0.8125,0.0625,0.5,0.5,0.625,0.875,0.0625,0.5,0.5,0.75,0.9375,0.0625,0.5,0.5,0.875,1,0,0,0.5,1"; "khotkeysrc"."Data_3_9Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."General"."AllowKDEAppsToRememberWindowPositions[$d]" = ""; - "khotkeysrc"."General"."BrowserApplication[$d]" = ""; - "khotkeysrc"."General"."ColorSchemeHash[$d]" = ""; - "khotkeysrc"."General"."ColorScheme[$d]" = ""; + "khotkeysrc"."General"."AllowKDEAppsToRememberWindowPositions" = ""; + "khotkeysrc"."General"."BrowserApplication" = ""; "khotkeysrc"."Gestures"."Disabled" = true; "khotkeysrc"."Gestures"."MouseButton" = 2; "khotkeysrc"."Gestures"."Timeout" = 300; "khotkeysrc"."GesturesExclude"."Comment" = ""; "khotkeysrc"."GesturesExclude"."WindowsCount" = 0; - "khotkeysrc"."Icons"."Theme[$d]" = ""; - "khotkeysrc"."KDE"."AnimationDurationFactor[$d]" = ""; - "khotkeysrc"."KDE"."LookAndFeelPackage[$d]" = ""; - "khotkeysrc"."KDE"."SingleClick[$d]" = ""; - "khotkeysrc"."KDE"."widgetStyle[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Allow Expansion[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Automatically select filename extension[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Breadcrumb Navigation[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Decoration position[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."LocationCombo Completionmode[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."PathCombo Completionmode[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Bookmarks[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Full Path[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Inline Previews[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Preview[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Speedbar[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show hidden files[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Sort by[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Sort directories first[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Sort hidden files last[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Sort reversed[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Speedbar Width[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."View Style[$d]" = ""; - "khotkeysrc"."KShortcutsDialog Settings"."Dialog Size[$d]" = ""; + "khotkeysrc"."KDE"."AnimationDurationFactor" = ""; + "khotkeysrc"."KDE"."ShowDeleteCommand" = ""; + "khotkeysrc"."KDE"."SingleClick" = ""; + "khotkeysrc"."KDE"."widgetStyle" = ""; + "khotkeysrc"."KFileDialog Settings"."Allow Expansion" = ""; + "khotkeysrc"."KFileDialog Settings"."Automatically select filename extension" = ""; + "khotkeysrc"."KFileDialog Settings"."Breadcrumb Navigation" = ""; + "khotkeysrc"."KFileDialog Settings"."Decoration position" = ""; + "khotkeysrc"."KFileDialog Settings"."LocationCombo Completionmode" = ""; + "khotkeysrc"."KFileDialog Settings"."PathCombo Completionmode" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Bookmarks" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Full Path" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Inline Previews" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Preview" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Speedbar" = ""; + "khotkeysrc"."KFileDialog Settings"."Show hidden files" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort by" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort directories first" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort hidden files last" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort reversed" = ""; + "khotkeysrc"."KFileDialog Settings"."Speedbar Width" = ""; + "khotkeysrc"."KFileDialog Settings"."View Style" = ""; + "khotkeysrc"."KShortcutsDialog Settings"."Dialog Size" = ""; "khotkeysrc"."Main"."AlreadyImported" = "defaults,kde32b1,konqueror_gestures_kde321"; "khotkeysrc"."Main"."Disabled" = false; + "khotkeysrc"."PreviewSettings"."MaximumRemoteSize" = ""; "khotkeysrc"."Voice"."Shortcut" = ""; - "khotkeysrc"."WM"."activeBackground[$d]" = ""; - "khotkeysrc"."WM"."activeBlend[$d]" = ""; - "khotkeysrc"."WM"."activeForeground[$d]" = ""; - "khotkeysrc"."WM"."inactiveBackground[$d]" = ""; - "khotkeysrc"."WM"."inactiveBlend[$d]" = ""; - "khotkeysrc"."WM"."inactiveForeground[$d]" = ""; + "khotkeysrc"."WM"."activeBackground" = ""; + "khotkeysrc"."WM"."activeBlend" = ""; + "khotkeysrc"."WM"."activeForeground" = ""; + "khotkeysrc"."WM"."inactiveBackground" = ""; + "khotkeysrc"."WM"."inactiveBlend" = ""; + "khotkeysrc"."WM"."inactiveForeground" = ""; "kiorc"."Confirmations"."ConfirmDelete" = true; + "kiorc"."Confirmations"."ConfirmEmptyTrash" = true; + "kiorc"."Confirmations"."ConfirmTrash" = false; + "kiorc"."Executable scripts"."behaviourOnLaunch" = "alwaysAsk"; "krunnerrc"."Plugins"."baloosearchEnabled" = false; "krunnerrc"."Plugins"."locationsEnabled" = true; "krunnerrc"."Plugins"."placesEnabled" = true; "krunnerrc"."Plugins"."recentdocumentsEnabled" = true; + "kservicemenurc"."Show"."compressfileitemaction" = true; + "kservicemenurc"."Show"."extractfileitemaction" = true; + "kservicemenurc"."Show"."forgetfileitemaction" = true; + "kservicemenurc"."Show"."installFont" = true; + "kservicemenurc"."Show"."kactivitymanagerd_fileitem_linking_plugin" = true; + "kservicemenurc"."Show"."kdeconnectfileitemaction" = true; + "kservicemenurc"."Show"."kio-admin" = true; + "kservicemenurc"."Show"."mountisoaction" = true; + "kservicemenurc"."Show"."nextclouddolphinactionplugin" = true; + "kservicemenurc"."Show"."runInKonsole" = true; + "kservicemenurc"."Show"."setAsWallpaper" = true; + "kservicemenurc"."Show"."slideshowfileitemaction" = true; + "kservicemenurc"."Show"."tagsfileitemaction" = true; + "ksmserverrc"."General"."loginMode" = "restoreSavedSession"; "kwalletrc"."Wallet"."First Use" = false; "kwinrc"."Desktops"."Id_1" = "d1e5e218-1fd9-4946-aa47-dab2f5aac755"; "kwinrc"."Desktops"."Id_2" = "389927fc-9c76-4f84-ae0d-011cf76868e6"; @@ -855,15 +1019,25 @@ "kwinrc"."Desktops"."Id_4" = "a0a9ef6d-975c-4379-8ca1-265e1938d8d1"; "kwinrc"."Desktops"."Number" = 4; "kwinrc"."Desktops"."Rows" = 2; + "kwinrc"."Effect-diminactive"."Strength" = 15; + "kwinrc"."Effect-magiclamp"."AnimationDuration" = 20; "kwinrc"."NightColor"."Active" = true; "kwinrc"."NightColor"."LatitudeFixed" = 52.31865273558926; "kwinrc"."NightColor"."LongitudeFixed" = 5.44; "kwinrc"."NightColor"."Mode" = "Location"; - "kwinrc"."NightColor"."NightTemperature" = 1400; + "kwinrc"."NightColor"."NightTemperature" = 2000; + "kwinrc"."Plugins"."diminactiveEnabled" = true; + "kwinrc"."Plugins"."dimscreenEnabled" = true; "kwinrc"."Plugins"."wobblywindowsEnabled" = true; - "kwinrc"."Tiling"."padding" = 4; - "kwinrc"."Tiling.5242ae1a-0a81-5d7b-ba61-2512b597a159"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; - "kwinrc"."Tiling.57cc57cb-6089-56ec-afba-00ccd06d5508"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; + "kwinrc"."Tiling"."padding" = 0; + "kwinrc"."Tiling.5242ae1a-0a81-5d7b-ba61-2512b597a159"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":x5b{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}x5d}"; + "kwinrc"."Tiling.57cc57cb-6089-56ec-afba-00ccd06d5508"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":x5b{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}x5d}"; + "kwinrc"."Tiling.5c337d24-acf0-5ac2-9082-ce9cb012bc2c"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":x5b{\"layoutDirection\":\"vertical\",\"tiles\":x5b{\"height\":0.5,\"layoutDirection\":\"horizontal\",\"tiles\":x5b{\"width\":0.5},{\"width\":0.5}x5d},{\"height\":0.5,\"layoutDirection\":\"horizontal\",\"tiles\":x5b{\"width\":0.5},{\"width\":0.5}x5d}x5d,\"width\":1}x5d}"; + "kwinrc"."Tiling/250b82cb-c8d2-50e6-91f9-1fb3d4d4d06b"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.4989583333333353},{\"width\":0.5010416666666646}]}"; + "kwinrc"."Tiling/5242ae1a-0a81-5d7b-ba61-2512b597a159"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":x5b{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}x5d}"; + "kwinrc"."Tiling/57cc57cb-6089-56ec-afba-00ccd06d5508"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; + "kwinrc"."Tiling/5c337d24-acf0-5ac2-9082-ce9cb012bc2c"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.5046875000000002},{\"width\":0.4953124999999998}]}"; + "kwinrc"."Tiling/98e47fc8-bbb3-5a3a-b6a8-d051b513a983"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.5005208333333331},{\"layoutDirection\":\"vertical\",\"tiles\":[{\"height\":0.5},{\"height\":0.5}],\"width\":0.4994791666666665}]}"; "kwinrc"."Xwayland"."Scale" = 1; "kxkbrc"."Layout"."Options" = "compose:caps"; "kxkbrc"."Layout"."ResetOldOptions" = true; @@ -876,7 +1050,135 @@ "plasma-localerc"."Formats"."LC_PAPER" = "nl_NL.UTF-8"; "plasma-localerc"."Formats"."LC_TELEPHONE" = "nl_NL.UTF-8"; "plasma-localerc"."Formats"."LC_TIME" = "en_DK.UTF-8"; + "plasmanotifyrc"."Applications/firefox"."Seen" = true; + "plasmanotifyrc"."Applications/floorp"."Seen" = true; + "plasmanotifyrc"."Applications/org.qbittorrent.qBittorrent"."Seen" = true; + "plasmanotifyrc"."Applications/vesktop"."Seen" = true; + "plasmanotifyrc"."Applications/webcord"."Seen" = true; + "plasmarc"."Wallpapers"."usersWallpapers" = ""; + "spectaclerc"."Annotations"."annotationToolType" = 9; + "spectaclerc"."ImageSave"."lastImageSaveLocation" = "file:///home/lillian/Pictures/Screenshots/Screenshot_20241017_154815.png"; + "spectaclerc"."ImageSave"."translatedScreenshotsFolder" = "Screenshots"; + "spectaclerc"."VideoSave"."translatedScreencastsFolder" = "Screencasts"; "systemsettingsrc"."KFileDialog Settings"."detailViewIconSize" = 16; }; + dataFile = { + "dolphin/view_properties/global/.directory"."Settings"."HiddenFilesShown" = true; + "kate/anonymous.katesession"."Kate Plugins"."cmaketoolsplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."compilerexplorer" = false; + "kate/anonymous.katesession"."Kate Plugins"."eslintplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."externaltoolsplugin" = true; + "kate/anonymous.katesession"."Kate Plugins"."formatplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katebacktracebrowserplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katebuildplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katecloseexceptplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katecolorpickerplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katectagsplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katefilebrowserplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katefiletreeplugin" = true; + "kate/anonymous.katesession"."Kate Plugins"."kategdbplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."kategitblameplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katekonsoleplugin" = true; + "kate/anonymous.katesession"."Kate Plugins"."kateprojectplugin" = true; + "kate/anonymous.katesession"."Kate Plugins"."katereplicodeplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katesearchplugin" = true; + "kate/anonymous.katesession"."Kate Plugins"."katesnippetsplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katesqlplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katesymbolviewerplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katexmlcheckplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."katexmltoolsplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."keyboardmacrosplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."ktexteditorpreviewplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."latexcompletionplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."lspclientplugin" = true; + "kate/anonymous.katesession"."Kate Plugins"."openlinkplugin" = false; + "kate/anonymous.katesession"."Kate Plugins"."rainbowparens" = false; + "kate/anonymous.katesession"."Kate Plugins"."tabswitcherplugin" = true; + "kate/anonymous.katesession"."Kate Plugins"."textfilterplugin" = true; + "kate/anonymous.katesession"."MainWindow0"."2 screens: Window-Maximized" = true; + "kate/anonymous.katesession"."MainWindow0"."Active ViewSpace" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-H-Splitter" = "0,2514,0"; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-0-Bar-0-TvList" = "kate_private_plugin_katefiletreeplugin,kateproject,kateprojectgit,lspclient_symbol_outline"; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-0-LastSize" = 200; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-0-SectSizes" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-0-Splitter" = 1287; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-1-Bar-0-TvList" = ""; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-1-LastSize" = 200; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-1-SectSizes" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-1-Splitter" = 1287; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-2-Bar-0-TvList" = ""; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-2-LastSize" = 200; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-2-SectSizes" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-2-Splitter" = 2514; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-3-Bar-0-TvList" = "output,diagnostics,kate_plugin_katesearch,kateprojectinfo,kate_private_plugin_katekonsoleplugin"; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-3-LastSize" = 200; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-3-SectSizes" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-3-Splitter" = 2560; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-Style" = 2; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-Sidebar-Visible" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-diagnostics-Position" = 3; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-diagnostics-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-diagnostics-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_plugin_katesearch-Position" = 3; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_plugin_katesearch-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_plugin_katesearch-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_private_plugin_katefiletreeplugin-Position" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_private_plugin_katefiletreeplugin-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_private_plugin_katefiletreeplugin-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_private_plugin_katekonsoleplugin-Position" = 3; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_private_plugin_katekonsoleplugin-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kate_private_plugin_katekonsoleplugin-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateproject-Position" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateproject-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateproject-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateprojectgit-Position" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateprojectgit-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateprojectgit-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateprojectinfo-Position" = 3; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateprojectinfo-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-kateprojectinfo-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-lspclient_symbol_outline-Position" = 0; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-lspclient_symbol_outline-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-lspclient_symbol_outline-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-output-Position" = 3; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-output-Show-Button-In-Sidebar" = true; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-ToolView-output-Visible" = false; + "kate/anonymous.katesession"."MainWindow0"."Kate-MDI-V-Splitter" = "0,1285,0"; + "kate/anonymous.katesession"."MainWindow0"."MenuBar" = "Disabled"; + "kate/anonymous.katesession"."MainWindow0"."ToolBarsMovable" = "Disabled"; + "kate/anonymous.katesession"."MainWindow0 Settings"."2 screens: Window-Maximized" = true; + "kate/anonymous.katesession"."MainWindow0 Settings"."MenuBar" = "Disabled"; + "kate/anonymous.katesession"."MainWindow0 Settings"."ToolBarsMovable" = "Disabled"; + "kate/anonymous.katesession"."MainWindow0 Settings"."WindowState" = 10; + "kate/anonymous.katesession"."MainWindow0-Splitter 0"."Children" = "MainWindow0-ViewSpace 0"; + "kate/anonymous.katesession"."MainWindow0-Splitter 0"."Orientation" = 1; + "kate/anonymous.katesession"."MainWindow0-Splitter 0"."Sizes" = 2514; + "kate/anonymous.katesession"."MainWindow0-ViewSpace 0"."Count" = 0; + "kate/anonymous.katesession"."MainWindow0-ViewSpace 0"."Documents" = ""; + "kate/anonymous.katesession"."Open Documents"."Count" = 0; + "kate/anonymous.katesession"."Open MainWindows"."Count" = 1; + "kate/anonymous.katesession"."Plugin:kateprojectplugin:"."projects" = ""; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."BinaryFiles" = false; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."CurrentExcludeFilter" = "-1"; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."CurrentFilter" = "-1"; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."ExcludeFilters" = ""; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."ExpandSearchResults" = false; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."Filters" = ""; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."FollowSymLink" = false; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."HiddenFiles" = false; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."MatchCase" = false; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."Place" = 1; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."Recursive" = true; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."Replaces" = ""; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."Search" = ""; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."SearchAsYouTypeAllProjects" = true; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."SearchAsYouTypeCurrentFile" = true; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."SearchAsYouTypeFolder" = true; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."SearchAsYouTypeOpenFiles" = true; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."SearchAsYouTypeProject" = true; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."SearchDiskFiles" = ""; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."SearchDiskFiless" = ""; + "kate/anonymous.katesession"."Plugin:katesearchplugin:MainWindow:0"."UseRegExp" = false; + }; }; } diff --git a/home-manager/desktop/package-configs/vesktop/default.nix b/home-manager/desktop/package-configs/vesktop/default.nix new file mode 100644 index 0000000..b02afec --- /dev/null +++ b/home-manager/desktop/package-configs/vesktop/default.nix @@ -0,0 +1,7 @@ +{...}: { + home.file."settings.json" = { + source = ./settings.json; + target = ".config/vesktop/settings/settings.json"; + force = true; + }; +} diff --git a/home-manager/desktop/package-configs/vesktop/settings.json b/home-manager/desktop/package-configs/vesktop/settings.json new file mode 100644 index 0000000..5531e9b --- /dev/null +++ b/home-manager/desktop/package-configs/vesktop/settings.json @@ -0,0 +1,602 @@ +{ + "autoUpdate": true, + "autoUpdateNotification": false, + "useQuickCss": true, + "themeLinks": [], + "enabledThemes": [ + "stylix.theme.css" + ], + "enableReactDevtools": false, + "frameless": false, + "transparent": false, + "winCtrlQ": false, + "disableMinSize": false, + "winNativeTitleBar": false, + "plugins": { + "ChatInputButtonAPI": { + "enabled": true + }, + "CommandsAPI": { + "enabled": true + }, + "MemberListDecoratorsAPI": { + "enabled": false + }, + "MessageAccessoriesAPI": { + "enabled": true + }, + "MessageDecorationsAPI": { + "enabled": false + }, + "MessageEventsAPI": { + "enabled": true + }, + "MessagePopoverAPI": { + "enabled": false + }, + "MessageUpdaterAPI": { + "enabled": false + }, + "ServerListAPI": { + "enabled": false + }, + "UserSettingsAPI": { + "enabled": true + }, + "AccountPanelServerProfile": { + "enabled": false + }, + "AlwaysAnimate": { + "enabled": false + }, + "AlwaysExpandRoles": { + "enabled": false + }, + "AlwaysTrust": { + "enabled": true, + "domain": true, + "file": true + }, + "AnonymiseFileNames": { + "enabled": true, + "anonymiseByDefault": true, + "method": 0, + "randomisedLength": 7 + }, + "AppleMusicRichPresence": { + "enabled": false + }, + "WebRichPresence (arRPC)": { + "enabled": false + }, + "BANger": { + "enabled": false + }, + "BetterFolders": { + "enabled": false + }, + "BetterGifAltText": { + "enabled": false + }, + "BetterGifPicker": { + "enabled": false + }, + "BetterNotesBox": { + "enabled": false + }, + "BetterRoleContext": { + "enabled": false + }, + "BetterRoleDot": { + "enabled": false + }, + "BetterSessions": { + "enabled": false + }, + "BetterSettings": { + "enabled": false + }, + "BetterUploadButton": { + "enabled": false + }, + "BiggerStreamPreview": { + "enabled": false + }, + "BlurNSFW": { + "enabled": false + }, + "CallTimer": { + "enabled": false + }, + "ClearURLs": { + "enabled": false + }, + "ClientTheme": { + "enabled": false + }, + "ColorSighted": { + "enabled": false + }, + "ConsoleJanitor": { + "enabled": false + }, + "ConsoleShortcuts": { + "enabled": false + }, + "CopyEmojiMarkdown": { + "enabled": false + }, + "CopyFileContents": { + "enabled": false + }, + "CopyUserURLs": { + "enabled": false + }, + "CrashHandler": { + "enabled": true + }, + "CtrlEnterSend": { + "enabled": false + }, + "CustomRPC": { + "enabled": false + }, + "CustomIdle": { + "enabled": false + }, + "Dearrow": { + "enabled": false + }, + "Decor": { + "enabled": false + }, + "DisableCallIdle": { + "enabled": false + }, + "DontRoundMyTimestamps": { + "enabled": false + }, + "EmoteCloner": { + "enabled": false + }, + "Experiments": { + "enabled": false + }, + "F8Break": { + "enabled": false + }, + "FakeNitro": { + "enabled": true, + "enableEmojiBypass": true, + "emojiSize": 48, + "transformEmojis": true, + "enableStickerBypass": true, + "stickerSize": 160, + "transformStickers": true, + "transformCompoundSentence": false, + "enableStreamQualityBypass": true, + "useHyperLinks": true, + "hyperLinkText": "{{NAME}}", + "disableEmbedPermissionCheck": false + }, + "FakeProfileThemes": { + "enabled": false + }, + "FavoriteEmojiFirst": { + "enabled": false + }, + "FavoriteGifSearch": { + "enabled": false + }, + "FixCodeblockGap": { + "enabled": false + }, + "FixSpotifyEmbeds": { + "enabled": false + }, + "FixYoutubeEmbeds": { + "enabled": false + }, + "ForceOwnerCrown": { + "enabled": false + }, + "FriendInvites": { + "enabled": false + }, + "FriendsSince": { + "enabled": false + }, + "FullSearchContext": { + "enabled": false + }, + "GameActivityToggle": { + "enabled": false + }, + "GifPaste": { + "enabled": false + }, + "GreetStickerPicker": { + "enabled": false + }, + "HideAttachments": { + "enabled": false + }, + "iLoveSpam": { + "enabled": false + }, + "IgnoreActivities": { + "enabled": false + }, + "ImageLink": { + "enabled": false + }, + "ImageZoom": { + "enabled": false + }, + "ImplicitRelationships": { + "enabled": false + }, + "InvisibleChat": { + "enabled": false + }, + "KeepCurrentChannel": { + "enabled": false + }, + "LastFMRichPresence": { + "enabled": false + }, + "LoadingQuotes": { + "enabled": false + }, + "MemberCount": { + "enabled": true, + "memberList": true, + "toolTip": true + }, + "MentionAvatars": { + "enabled": false + }, + "MessageClickActions": { + "enabled": false + }, + "MessageLatency": { + "enabled": false + }, + "MessageLinkEmbeds": { + "enabled": false + }, + "MessageLogger": { + "enabled": false + }, + "MessageTags": { + "enabled": false + }, + "MoreCommands": { + "enabled": false + }, + "MoreKaomoji": { + "enabled": true + }, + "MoreUserTags": { + "enabled": false + }, + "Moyai": { + "enabled": false + }, + "MutualGroupDMs": { + "enabled": false + }, + "NewGuildSettings": { + "enabled": false + }, + "NoBlockedMessages": { + "enabled": false + }, + "NoDevtoolsWarning": { + "enabled": false + }, + "NoF1": { + "enabled": false + }, + "NoMaskedUrlPaste": { + "enabled": false + }, + "NoMosaic": { + "enabled": false + }, + "NoOnboardingDelay": { + "enabled": false + }, + "NoPendingCount": { + "enabled": false + }, + "NoProfileThemes": { + "enabled": false + }, + "NoReplyMention": { + "enabled": false + }, + "NoScreensharePreview": { + "enabled": false + }, + "NoServerEmojis": { + "enabled": false + }, + "NoTypingAnimation": { + "enabled": false + }, + "NoUnblockToJump": { + "enabled": false + }, + "NormalizeMessageLinks": { + "enabled": false + }, + "NotificationVolume": { + "enabled": false + }, + "NSFWGateBypass": { + "enabled": false + }, + "OnePingPerDM": { + "enabled": false + }, + "oneko": { + "enabled": false + }, + "OpenInApp": { + "enabled": false + }, + "OverrideForumDefaults": { + "enabled": false + }, + "PartyMode": { + "enabled": false + }, + "PauseInvitesForever": { + "enabled": false + }, + "PermissionFreeWill": { + "enabled": false + }, + "PermissionsViewer": { + "enabled": false + }, + "petpet": { + "enabled": true + }, + "PictureInPicture": { + "enabled": false + }, + "PinDMs": { + "enabled": false + }, + "PlainFolderIcon": { + "enabled": false + }, + "PlatformIndicators": { + "enabled": false + }, + "PreviewMessage": { + "enabled": false + }, + "QuickMention": { + "enabled": false + }, + "QuickReply": { + "enabled": false + }, + "ReactErrorDecoder": { + "enabled": false + }, + "ReadAllNotificationsButton": { + "enabled": false + }, + "RelationshipNotifier": { + "enabled": false + }, + "ReplaceGoogleSearch": { + "enabled": false + }, + "ReplyTimestamp": { + "enabled": false + }, + "RevealAllSpoilers": { + "enabled": false + }, + "ReverseImageSearch": { + "enabled": false + }, + "ReviewDB": { + "enabled": false + }, + "RoleColorEverywhere": { + "enabled": false + }, + "SecretRingToneEnabler": { + "enabled": false + }, + "Summaries": { + "enabled": false + }, + "SendTimestamps": { + "enabled": true, + "replaceMessageContents": true + }, + "ServerInfo": { + "enabled": false + }, + "ServerListIndicators": { + "enabled": false + }, + "ShikiCodeblocks": { + "enabled": true, + "useDevIcon": "COLOR", + "theme": "https://raw.githubusercontent.com/shikijs/shiki/0b28ad8ccfbf2615f2d9d38ea8255416b8ac3043/packages/shiki/themes/dracula.json", + "tryHljs": "SECONDARY", + "bgOpacity": 100 + }, + "ShowAllMessageButtons": { + "enabled": false + }, + "ShowConnections": { + "enabled": false + }, + "ShowHiddenChannels": { + "enabled": false + }, + "ShowHiddenThings": { + "enabled": false + }, + "ShowMeYourName": { + "enabled": false + }, + "ShowTimeoutDuration": { + "enabled": false + }, + "SilentMessageToggle": { + "enabled": false + }, + "SilentTyping": { + "enabled": false + }, + "SortFriendRequests": { + "enabled": false + }, + "SpotifyControls": { + "enabled": false + }, + "SpotifyCrack": { + "enabled": false + }, + "SpotifyShareCommands": { + "enabled": false + }, + "StartupTimings": { + "enabled": false + }, + "StickerPaste": { + "enabled": false + }, + "StreamerModeOnStream": { + "enabled": false + }, + "SuperReactionTweaks": { + "enabled": false + }, + "TextReplace": { + "enabled": false + }, + "ThemeAttributes": { + "enabled": false + }, + "Translate": { + "enabled": false + }, + "TypingIndicator": { + "enabled": false + }, + "TypingTweaks": { + "enabled": false + }, + "Unindent": { + "enabled": false + }, + "UnlockedAvatarZoom": { + "enabled": false + }, + "UnsuppressEmbeds": { + "enabled": false + }, + "UserVoiceShow": { + "enabled": false + }, + "USRBG": { + "enabled": false + }, + "ValidReply": { + "enabled": false + }, + "ValidUser": { + "enabled": false + }, + "VoiceChatDoubleClick": { + "enabled": false + }, + "VcNarrator": { + "enabled": false + }, + "VencordToolbox": { + "enabled": false + }, + "ViewIcons": { + "enabled": false + }, + "ViewRaw": { + "enabled": false + }, + "VoiceDownload": { + "enabled": false + }, + "VoiceMessages": { + "enabled": false + }, + "VolumeBooster": { + "enabled": false + }, + "WebKeybinds": { + "enabled": true + }, + "WebScreenShareFixes": { + "enabled": true + }, + "WhoReacted": { + "enabled": false + }, + "XSOverlay": { + "enabled": false + }, + "YoutubeAdblock": { + "enabled": true + }, + "NoTrack": { + "enabled": true, + "disableAnalytics": true + }, + "WebContextMenus": { + "enabled": true, + "addBack": true + }, + "Settings": { + "enabled": true, + "settingsLocation": "aboveNitro" + }, + "SupportHelper": { + "enabled": true + }, + "UserMessagesPronouns": { + "enabled": true, + "showInMessages": true, + "showSelf": true, + "pronounSource": 0, + "pronounsFormat": "LOWERCASE" + }, + "DynamicImageModalAPI": { + "enabled": false + }, + "FixImagesQuality": { + "enabled": false + } + }, + "notifications": { + "timeout": 5000, + "position": "bottom-right", + "useNative": "not-focused", + "logLimit": 50 + }, + "cloud": { + "authenticated": false, + "url": "https://api.vencord.dev/", + "settingsSync": false, + "settingsSyncVersion": 1734993730812 + } +} \ No newline at end of file diff --git a/home-manager/hosts/EDI/default.nix b/home-manager/hosts/EDI/default.nix new file mode 100644 index 0000000..2600642 --- /dev/null +++ b/home-manager/hosts/EDI/default.nix @@ -0,0 +1,6 @@ +{...}: { + # You can import other home-manager modules here + imports = [ + ./lillian.nix + ]; +} diff --git a/home-manager/hosts/EDI/id_ed25519.pub b/home-manager/hosts/EDI/id_ed25519.pub new file mode 100644 index 0000000..9c0c307 --- /dev/null +++ b/home-manager/hosts/EDI/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILhwA+ZdP2tEBYQNdzLHZzFHxocyeqzhXI6tFpaZA3PZ lillian@EDI diff --git a/home-manager/hosts/EDI/EDI-Lillian.nix b/home-manager/hosts/EDI/lillian.nix similarity index 78% rename from home-manager/hosts/EDI/EDI-Lillian.nix rename to home-manager/hosts/EDI/lillian.nix index fa92fc5..1922c62 100644 --- a/home-manager/hosts/EDI/EDI-Lillian.nix +++ b/home-manager/hosts/EDI/lillian.nix @@ -1,13 +1,6 @@ # This is your home-manager configuration file # Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{pkgs, ...}: { # You can import other home-manager modules here imports = [ # If you want to use modules your own flake exports (from modules/home-manager): @@ -18,13 +11,13 @@ # You can also split up your configuration and import pieces of it here: # ./nvim.nix - ../../desktop/configuration.nix - ./package-configs/plasma-desktop/configuration.nix + ../../desktop + ../../shared ]; home.packages = with pkgs; [ ]; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "24.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/GLaDOS/default.nix b/home-manager/hosts/GLaDOS/default.nix new file mode 100644 index 0000000..2600642 --- /dev/null +++ b/home-manager/hosts/GLaDOS/default.nix @@ -0,0 +1,6 @@ +{...}: { + # You can import other home-manager modules here + imports = [ + ./lillian.nix + ]; +} diff --git a/home-manager/hosts/GLaDOS/id_ed25519.pub b/home-manager/hosts/GLaDOS/id_ed25519.pub new file mode 100644 index 0000000..6f641a9 --- /dev/null +++ b/home-manager/hosts/GLaDOS/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH30G2PJOnI6jnAtxOQV0SpLFUva0adarLZLvaoZvjGE lillian@GLaDOS diff --git a/home-manager/hosts/GLaDOS/GLaDOS-Lillian.nix b/home-manager/hosts/GLaDOS/lillian.nix similarity index 76% rename from home-manager/hosts/GLaDOS/GLaDOS-Lillian.nix rename to home-manager/hosts/GLaDOS/lillian.nix index 90e56bb..37ed67b 100644 --- a/home-manager/hosts/GLaDOS/GLaDOS-Lillian.nix +++ b/home-manager/hosts/GLaDOS/lillian.nix @@ -1,13 +1,6 @@ # This is your home-manager configuration file # Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{pkgs, ...}: { # You can import other home-manager modules here imports = [ # If you want to use modules your own flake exports (from modules/home-manager): @@ -18,15 +11,22 @@ # You can also split up your configuration and import pieces of it here: # ./nvim.nix - ../../desktop/configuration.nix - ./package-configs/plasma-desktop/configuration.nix + ../../desktop + ../../shared ]; home.packages = with pkgs; [ - heroic r2modman + ryujinx + lutris + vscodium ]; + programs.mangohud = { + enable = true; + # enableSessionWide = true; + }; + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "24.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/GLaDOS/package-configs/plasma-desktop/configuration.nix b/home-manager/hosts/GLaDOS/package-configs/plasma-desktop/configuration.nix deleted file mode 100644 index a193e98..0000000 --- a/home-manager/hosts/GLaDOS/package-configs/plasma-desktop/configuration.nix +++ /dev/null @@ -1,879 +0,0 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { - programs.plasma = { - enable = true; - shortcuts = { - "ActivityManager"."switch-to-activity-a2cd7f51-1f1f-47a8-9544-a4c401f57a12" = []; - "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+Alt+K"; - "kaccess"."Toggle Screen Reader On and Off" = "Meta+Alt+S"; - "kcm_touchpad"."Disable Touchpad" = "Touchpad Off"; - "kcm_touchpad"."Enable Touchpad" = "Touchpad On"; - "kcm_touchpad"."Toggle Touchpad" = ["Touchpad Toggle" "Meta+Ctrl+Zenkaku Hankaku"]; - "kded5"."Show System Activity" = "Ctrl+Esc"; - "kded5"."display" = ["Display" "Meta+P"]; - "khotkeys"."{d03619b6-9b3c-48cc-9d9c-a2aadb485550}" = []; - "kmix"."decrease_microphone_volume" = "Microphone Volume Down"; - "kmix"."decrease_volume" = "Volume Down"; - "kmix"."increase_microphone_volume" = "Microphone Volume Up"; - "kmix"."increase_volume" = "Volume Up"; - "kmix"."mic_mute" = ["Microphone Mute" "Meta+Volume Mute"]; - "kmix"."mute" = "Volume Mute"; - "ksmserver"."Halt Without Confirmation" = []; - "ksmserver"."Lock Session" = ["Meta+L" "Screensaver"]; - "ksmserver"."Log Out" = "Ctrl+Alt+Del"; - "ksmserver"."Log Out Without Confirmation" = []; - "ksmserver"."Reboot Without Confirmation" = []; - "kwin"."Activate Window Demanding Attention" = "Meta+Ctrl+A"; - "kwin"."Decrease Opacity" = []; - "kwin"."Edit Tiles" = "Meta+T"; - "kwin"."Expose" = "Ctrl+F9"; - "kwin"."ExposeAll" = ["Ctrl+F10" "Launch (C)"]; - "kwin"."ExposeClass" = "Ctrl+F7"; - "kwin"."ExposeClassCurrentDesktop" = []; - "kwin"."Increase Opacity" = []; - "kwin"."Kill Window" = "Meta+Ctrl+Esc"; - "kwin"."Move Tablet to Next Output" = []; - "kwin"."MoveMouseToCenter" = "Meta+F6"; - "kwin"."MoveMouseToFocus" = "Meta+F5"; - "kwin"."MoveZoomDown" = []; - "kwin"."MoveZoomLeft" = []; - "kwin"."MoveZoomRight" = []; - "kwin"."MoveZoomUp" = []; - "kwin"."Overview" = "Meta+W"; - "kwin"."Setup Window Shortcut" = []; - "kwin"."Show Desktop" = "Meta+D"; - "kwin"."ShowDesktopGrid" = "Meta+F8"; - "kwin"."Suspend Compositing" = "Alt+Shift+F12"; - "kwin"."Switch One Desktop Down" = "Meta+Ctrl+Down"; - "kwin"."Switch One Desktop Up" = "Meta+Ctrl+Up"; - "kwin"."Switch One Desktop to the Left" = "Meta+Ctrl+Left"; - "kwin"."Switch One Desktop to the Right" = "Meta+Ctrl+Right"; - "kwin"."Switch Window Down" = "Meta+Alt+Down"; - "kwin"."Switch Window Left" = "Meta+Alt+Left"; - "kwin"."Switch Window Right" = "Meta+Alt+Right"; - "kwin"."Switch Window Up" = "Meta+Alt+Up"; - "kwin"."Switch to Desktop 1" = "Ctrl+F1"; - "kwin"."Switch to Desktop 10" = []; - "kwin"."Switch to Desktop 11" = []; - "kwin"."Switch to Desktop 12" = []; - "kwin"."Switch to Desktop 13" = []; - "kwin"."Switch to Desktop 14" = []; - "kwin"."Switch to Desktop 15" = []; - "kwin"."Switch to Desktop 16" = []; - "kwin"."Switch to Desktop 17" = []; - "kwin"."Switch to Desktop 18" = []; - "kwin"."Switch to Desktop 19" = []; - "kwin"."Switch to Desktop 2" = "Ctrl+F2"; - "kwin"."Switch to Desktop 20" = []; - "kwin"."Switch to Desktop 3" = "Ctrl+F3"; - "kwin"."Switch to Desktop 4" = "Ctrl+F4"; - "kwin"."Switch to Desktop 5" = []; - "kwin"."Switch to Desktop 6" = []; - "kwin"."Switch to Desktop 7" = []; - "kwin"."Switch to Desktop 8" = []; - "kwin"."Switch to Desktop 9" = []; - "kwin"."Switch to Next Desktop" = []; - "kwin"."Switch to Next Screen" = []; - "kwin"."Switch to Previous Desktop" = []; - "kwin"."Switch to Previous Screen" = []; - "kwin"."Switch to Screen 0" = []; - "kwin"."Switch to Screen 1" = []; - "kwin"."Switch to Screen 2" = []; - "kwin"."Switch to Screen 3" = []; - "kwin"."Switch to Screen 4" = []; - "kwin"."Switch to Screen 5" = []; - "kwin"."Switch to Screen 6" = []; - "kwin"."Switch to Screen 7" = []; - "kwin"."Switch to Screen Above" = []; - "kwin"."Switch to Screen Below" = []; - "kwin"."Switch to Screen to the Left" = []; - "kwin"."Switch to Screen to the Right" = []; - "kwin"."Toggle Night Color" = []; - "kwin"."Toggle Window Raise/Lower" = []; - "kwin"."Walk Through Desktop List" = []; - "kwin"."Walk Through Desktop List (Reverse)" = []; - "kwin"."Walk Through Desktops" = []; - "kwin"."Walk Through Desktops (Reverse)" = []; - "kwin"."Walk Through Windows" = "Alt+Tab"; - "kwin"."Walk Through Windows (Reverse)" = "Alt+Shift+Backtab"; - "kwin"."Walk Through Windows Alternative" = []; - "kwin"."Walk Through Windows Alternative (Reverse)" = []; - "kwin"."Walk Through Windows of Current Application" = "Alt+`"; - "kwin"."Walk Through Windows of Current Application (Reverse)" = "Alt+~"; - "kwin"."Walk Through Windows of Current Application Alternative" = []; - "kwin"."Walk Through Windows of Current Application Alternative (Reverse)" = []; - "kwin"."Window Above Other Windows" = []; - "kwin"."Window Below Other Windows" = []; - "kwin"."Window Close" = "Alt+F4"; - "kwin"."Window Fullscreen" = []; - "kwin"."Window Grow Horizontal" = []; - "kwin"."Window Grow Vertical" = []; - "kwin"."Window Lower" = []; - "kwin"."Window Maximize" = "Meta+PgUp"; - "kwin"."Window Maximize Horizontal" = []; - "kwin"."Window Maximize Vertical" = []; - "kwin"."Window Minimize" = "Meta+PgDown"; - "kwin"."Window Move" = []; - "kwin"."Window Move Center" = []; - "kwin"."Window No Border" = []; - "kwin"."Window On All Desktops" = []; - "kwin"."Window One Desktop Down" = "Meta+Ctrl+Shift+Down"; - "kwin"."Window One Desktop Up" = "Meta+Ctrl+Shift+Up"; - "kwin"."Window One Desktop to the Left" = "Meta+Ctrl+Shift+Left"; - "kwin"."Window One Desktop to the Right" = "Meta+Ctrl+Shift+Right"; - "kwin"."Window One Screen Down" = []; - "kwin"."Window One Screen Up" = []; - "kwin"."Window One Screen to the Left" = []; - "kwin"."Window One Screen to the Right" = []; - "kwin"."Window Operations Menu" = "Alt+F3"; - "kwin"."Window Pack Down" = []; - "kwin"."Window Pack Left" = []; - "kwin"."Window Pack Right" = []; - "kwin"."Window Pack Up" = []; - "kwin"."Window Quick Tile Bottom" = "Meta+Down"; - "kwin"."Window Quick Tile Bottom Left" = []; - "kwin"."Window Quick Tile Bottom Right" = []; - "kwin"."Window Quick Tile Left" = "Meta+Left"; - "kwin"."Window Quick Tile Right" = "Meta+Right"; - "kwin"."Window Quick Tile Top" = "Meta+Up"; - "kwin"."Window Quick Tile Top Left" = []; - "kwin"."Window Quick Tile Top Right" = []; - "kwin"."Window Raise" = []; - "kwin"."Window Resize" = []; - "kwin"."Window Shade" = []; - "kwin"."Window Shrink Horizontal" = []; - "kwin"."Window Shrink Vertical" = []; - "kwin"."Window to Desktop 1" = []; - "kwin"."Window to Desktop 10" = []; - "kwin"."Window to Desktop 11" = []; - "kwin"."Window to Desktop 12" = []; - "kwin"."Window to Desktop 13" = []; - "kwin"."Window to Desktop 14" = []; - "kwin"."Window to Desktop 15" = []; - "kwin"."Window to Desktop 16" = []; - "kwin"."Window to Desktop 17" = []; - "kwin"."Window to Desktop 18" = []; - "kwin"."Window to Desktop 19" = []; - "kwin"."Window to Desktop 2" = []; - "kwin"."Window to Desktop 20" = []; - "kwin"."Window to Desktop 3" = []; - "kwin"."Window to Desktop 4" = []; - "kwin"."Window to Desktop 5" = []; - "kwin"."Window to Desktop 6" = []; - "kwin"."Window to Desktop 7" = []; - "kwin"."Window to Desktop 8" = []; - "kwin"."Window to Desktop 9" = []; - "kwin"."Window to Next Desktop" = []; - "kwin"."Window to Next Screen" = []; - "kwin"."Window to Previous Desktop" = []; - "kwin"."Window to Previous Screen" = []; - "kwin"."Window to Screen 0" = []; - "kwin"."Window to Screen 1" = []; - "kwin"."Window to Screen 2" = []; - "kwin"."Window to Screen 3" = []; - "kwin"."Window to Screen 4" = []; - "kwin"."Window to Screen 5" = []; - "kwin"."Window to Screen 6" = []; - "kwin"."Window to Screen 7" = []; - "kwin"."view_actual_size" = "Meta+0"; - "kwin"."view_zoom_in" = ["Meta++" "Meta+="]; - "kwin"."view_zoom_out" = "Meta+-"; - "mediacontrol"."mediavolumedown" = []; - "mediacontrol"."mediavolumeup" = []; - "mediacontrol"."nextmedia" = "Media Next"; - "mediacontrol"."pausemedia" = "Media Pause"; - "mediacontrol"."playmedia" = []; - "mediacontrol"."playpausemedia" = "Media Play"; - "mediacontrol"."previousmedia" = "Media Previous"; - "mediacontrol"."stopmedia" = "Media Stop"; - "org.kde.dolphin.desktop"."_launch" = "Meta+E"; - "org.kde.kcalc.desktop"."_launch" = "Launch (1)"; - "org.kde.konsole.desktop"."NewTab" = []; - "org.kde.konsole.desktop"."NewWindow" = []; - "org.kde.konsole.desktop"."_launch" = "Ctrl+Alt+T"; - "org.kde.krunner.desktop"."RunClipboard" = "Alt+Shift+F2"; - "org.kde.krunner.desktop"."_launch" = ["Alt+Space" "Alt+F2" "Search"]; - "org.kde.plasma.emojier.desktop"."_launch" = ["Meta+." "Meta+Ctrl+Alt+Shift+Space"]; - "org.kde.spectacle.desktop"."ActiveWindowScreenShot" = ["Meta+Print" "Ctrl+!"]; - "org.kde.spectacle.desktop"."CurrentMonitorScreenShot" = "Ctrl+#"; - "org.kde.spectacle.desktop"."FullScreenScreenShot" = ["Ctrl+$" "Shift+Print"]; - "org.kde.spectacle.desktop"."OpenWithoutScreenshot" = "Ctrl+^"; - "org.kde.spectacle.desktop"."RectangularRegionScreenShot" = ["Ctrl+@" "Meta+Shift+Print"]; - "org.kde.spectacle.desktop"."WindowUnderCursorScreenShot" = ["Meta+Ctrl+Print" "Ctrl+%"]; - "org.kde.spectacle.desktop"."_launch" = "Print"; - "org_kde_powerdevil"."Decrease Keyboard Brightness" = "Keyboard Brightness Down"; - "org_kde_powerdevil"."Decrease Screen Brightness" = "Monitor Brightness Down"; - "org_kde_powerdevil"."Hibernate" = "Hibernate"; - "org_kde_powerdevil"."Increase Keyboard Brightness" = "Keyboard Brightness Up"; - "org_kde_powerdevil"."Increase Screen Brightness" = "Monitor Brightness Up"; - "org_kde_powerdevil"."PowerDown" = "Power Down"; - "org_kde_powerdevil"."PowerOff" = "Power Off"; - "org_kde_powerdevil"."Sleep" = "Sleep"; - "org_kde_powerdevil"."Toggle Keyboard Backlight" = "Keyboard Light On/Off"; - "org_kde_powerdevil"."Turn Off Screen" = []; - "plasmashell"."activate task manager entry 1" = "Meta+1"; - "plasmashell"."activate task manager entry 10" = []; - "plasmashell"."activate task manager entry 2" = "Meta+2"; - "plasmashell"."activate task manager entry 3" = "Meta+3"; - "plasmashell"."activate task manager entry 4" = "Meta+4"; - "plasmashell"."activate task manager entry 5" = "Meta+5"; - "plasmashell"."activate task manager entry 6" = "Meta+6"; - "plasmashell"."activate task manager entry 7" = "Meta+7"; - "plasmashell"."activate task manager entry 8" = "Meta+8"; - "plasmashell"."activate task manager entry 9" = "Meta+9"; - "plasmashell"."clear-history" = []; - "plasmashell"."clipboard_action" = "Meta+Ctrl+X"; - "plasmashell"."cycle-panels" = "Meta+Alt+P"; - "plasmashell"."cycleNextAction" = []; - "plasmashell"."cyclePrevAction" = []; - "plasmashell"."edit_clipboard" = []; - "plasmashell"."manage activities" = "Meta+Q"; - "plasmashell"."next activity" = "Meta+Tab"; - "plasmashell"."previous activity" = "Meta+Shift+Tab"; - "plasmashell"."repeat_action" = "Meta+Ctrl+R"; - "plasmashell"."show dashboard" = "Ctrl+F12"; - "plasmashell"."show-barcode" = []; - "plasmashell"."show-on-mouse-pos" = "Meta+V"; - "plasmashell"."stop current activity" = "Meta+S"; - "plasmashell"."switch to next activity" = []; - "plasmashell"."switch to previous activity" = []; - "plasmashell"."toggle do not disturb" = []; - "systemsettings.desktop"."_launch" = "Tools"; - "systemsettings.desktop"."kcm-kscreen" = []; - "systemsettings.desktop"."kcm-lookandfeel" = []; - "systemsettings.desktop"."kcm-users" = []; - "systemsettings.desktop"."powerdevilprofilesconfig" = []; - "systemsettings.desktop"."screenlocker" = []; - }; - configFile = { - "baloofilerc"."General"."dbVersion" = 2; - "baloofilerc"."General"."exclude filters" = "*~,*.part,*.o,*.la,*.lo,*.loT,*.moc,moc_*.cpp,qrc_*.cpp,ui_*.h,cmake_install.cmake,CMakeCache.txt,CTestTestfile.cmake,libtool,config.status,confdefs.h,autom4te,conftest,confstat,Makefile.am,*.gcode,.ninja_deps,.ninja_log,build.ninja,*.csproj,*.m4,*.rej,*.gmo,*.pc,*.omf,*.aux,*.tmp,*.po,*.vm*,*.nvram,*.rcore,*.swp,*.swap,lzo,litmain.sh,*.orig,.histfile.*,.xsession-errors*,*.map,*.so,*.a,*.db,*.qrc,*.ini,*.init,*.img,*.vdi,*.vbox*,vbox.log,*.qcow2,*.vmdk,*.vhd,*.vhdx,*.sql,*.sql.gz,*.ytdl,*.class,*.pyc,*.pyo,*.elc,*.qmlc,*.jsc,*.fastq,*.fq,*.gb,*.fasta,*.fna,*.gbff,*.faa,po,CVS,.svn,.git,_darcs,.bzr,.hg,CMakeFiles,CMakeTmp,CMakeTmpQmake,.moc,.obj,.pch,.uic,.npm,.yarn,.yarn-cache,__pycache__,node_modules,node_packages,nbproject,.venv,venv,core-dumps,lost+found"; - "baloofilerc"."General"."exclude filters version" = 8; - "dolphinrc"."ExtractDialog"."1536x864 screen: Height" = 560; - "dolphinrc"."ExtractDialog"."1536x864 screen: Width" = 1024; - "dolphinrc"."ExtractDialog"."DirHistory[$e]" = "/home/"; - "dolphinrc"."KFileDialog Settings"."Places Icons Auto-resize" = false; - "dolphinrc"."KFileDialog Settings"."Places Icons Static Size" = 22; - "dolphinrc"."KFileDialog Settings"."detailViewIconSize" = 16; - "kactivitymanagerdrc"."activities"."a2cd7f51-1f1f-47a8-9544-a4c401f57a12" = "Default"; - "kactivitymanagerdrc"."main"."currentActivity" = "a2cd7f51-1f1f-47a8-9544-a4c401f57a12"; - "kcminputrc"."Libinput.1739.30383.CUST0001:00 06CB:76AF Touchpad"."MiddleButtonEmulation" = true; - "kcminputrc"."Libinput.1739.30383.CUST0001:00 06CB:76AF Touchpad"."NaturalScroll" = true; - "kcminputrc"."Libinput.1739.30383.CUST0001:00 06CB:76AF Touchpad"."TapToClick" = true; - "kcminputrc"."Tmp"."update_info" = "delete_cursor_old_default_size.upd:DeleteCursorOldDefaultSize"; - "kded5rc"."Module-browserintegrationreminder"."autoload" = false; - "kded5rc"."Module-device_automounter"."autoload" = false; - "kded5rc"."PlasmaBrowserIntegration"."shownCount" = 1; - "kdeglobals"."General"."BrowserApplication" = "firefox.desktop"; - "kdeglobals"."KDE"."AnimationDurationFactor" = 0.7071067811865475; - "kdeglobals"."KDE"."SingleClick" = false; - "kdeglobals"."KFileDialog Settings"."Allow Expansion" = false; - "kdeglobals"."KFileDialog Settings"."Automatically select filename extension" = true; - "kdeglobals"."KFileDialog Settings"."Breadcrumb Navigation" = false; - "kdeglobals"."KFileDialog Settings"."Decoration position" = 2; - "kdeglobals"."KFileDialog Settings"."LocationCombo Completionmode" = 5; - "kdeglobals"."KFileDialog Settings"."PathCombo Completionmode" = 5; - "kdeglobals"."KFileDialog Settings"."Show Bookmarks" = false; - "kdeglobals"."KFileDialog Settings"."Show Full Path" = false; - "kdeglobals"."KFileDialog Settings"."Show Inline Previews" = true; - "kdeglobals"."KFileDialog Settings"."Show Preview" = false; - "kdeglobals"."KFileDialog Settings"."Show Speedbar" = true; - "kdeglobals"."KFileDialog Settings"."Show hidden files" = false; - "kdeglobals"."KFileDialog Settings"."Sort by" = "Date"; - "kdeglobals"."KFileDialog Settings"."Sort directories first" = true; - "kdeglobals"."KFileDialog Settings"."Sort hidden files last" = false; - "kdeglobals"."KFileDialog Settings"."Sort reversed" = false; - "kdeglobals"."KFileDialog Settings"."Speedbar Width" = 138; - "kdeglobals"."KFileDialog Settings"."View Style" = "DetailTree"; - "kdeglobals"."KShortcutsDialog Settings"."Dialog Size" = "600,480"; - "kdeglobals"."WM"."activeBackground" = "49,54,59"; - "kdeglobals"."WM"."activeBlend" = "252,252,252"; - "kdeglobals"."WM"."activeForeground" = "252,252,252"; - "kdeglobals"."WM"."inactiveBackground" = "42,46,50"; - "kdeglobals"."WM"."inactiveBlend" = "161,169,177"; - "kdeglobals"."WM"."inactiveForeground" = "161,169,177"; - "kglobalshortcutsrc"."ActivityManager"."_k_friendly_name" = "Activity Manager"; - "kglobalshortcutsrc"."KDE Keyboard Layout Switcher"."_k_friendly_name" = "Keyboard Layout Switcher"; - "kglobalshortcutsrc"."kaccess"."_k_friendly_name" = "Accessibility"; - "kglobalshortcutsrc"."kcm_touchpad"."_k_friendly_name" = "Touchpad"; - "kglobalshortcutsrc"."kded5"."_k_friendly_name" = "KDE Daemon"; - "kglobalshortcutsrc"."khotkeys"."_k_friendly_name" = "Custom Shortcuts Service"; - "kglobalshortcutsrc"."kmix"."_k_friendly_name" = "Audio Volume"; - "kglobalshortcutsrc"."ksmserver"."_k_friendly_name" = "Session Management"; - "kglobalshortcutsrc"."kwin"."_k_friendly_name" = "KWin"; - "kglobalshortcutsrc"."mediacontrol"."_k_friendly_name" = "Media Controller"; - "kglobalshortcutsrc"."org.kde.dolphin.desktop"."_k_friendly_name" = "Dolphin"; - "kglobalshortcutsrc"."org.kde.kcalc.desktop"."_k_friendly_name" = "KCalc"; - "kglobalshortcutsrc"."org.kde.konsole.desktop"."_k_friendly_name" = "Konsole"; - "kglobalshortcutsrc"."org.kde.krunner.desktop"."_k_friendly_name" = "KRunner"; - "kglobalshortcutsrc"."org.kde.plasma.emojier.desktop"."_k_friendly_name" = "Emoji Selector"; - "kglobalshortcutsrc"."org.kde.spectacle.desktop"."_k_friendly_name" = "Spectacle"; - "kglobalshortcutsrc"."org_kde_powerdevil"."_k_friendly_name" = "Power Management"; - "kglobalshortcutsrc"."plasmashell"."_k_friendly_name" = "Plasma"; - "kglobalshortcutsrc"."systemsettings.desktop"."_k_friendly_name" = "System Settings"; - "khotkeysrc"."Data"."DataCount" = 3; - "khotkeysrc"."Data_1"."Comment" = "KMenuEdit Global Shortcuts"; - "khotkeysrc"."Data_1"."DataCount" = 1; - "khotkeysrc"."Data_1"."Enabled" = true; - "khotkeysrc"."Data_1"."Name" = "KMenuEdit"; - "khotkeysrc"."Data_1"."SystemGroup" = 1; - "khotkeysrc"."Data_1"."Type" = "ACTION_DATA_GROUP"; - "khotkeysrc"."Data_1Conditions"."Comment" = ""; - "khotkeysrc"."Data_1Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_1_1"."Comment" = "Comment"; - "khotkeysrc"."Data_1_1"."Enabled" = true; - "khotkeysrc"."Data_1_1"."Name" = "Search"; - "khotkeysrc"."Data_1_1"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_1_1Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_1_1Actions0"."CommandURL" = "http://google.com"; - "khotkeysrc"."Data_1_1Actions0"."Type" = "COMMAND_URL"; - "khotkeysrc"."Data_1_1Conditions"."Comment" = ""; - "khotkeysrc"."Data_1_1Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_1_1Triggers"."Comment" = "Simple_action"; - "khotkeysrc"."Data_1_1Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_1_1Triggers0"."Key" = ""; - "khotkeysrc"."Data_1_1Triggers0"."Type" = "SHORTCUT"; - "khotkeysrc"."Data_1_1Triggers0"."Uuid" = "{d03619b6-9b3c-48cc-9d9c-a2aadb485550}"; - "khotkeysrc"."Data_2"."Comment" = "This group contains various examples demonstrating most of the features of KHotkeys. (Note that this group and all its actions are disabled by default.)"; - "khotkeysrc"."Data_2"."DataCount" = 8; - "khotkeysrc"."Data_2"."Enabled" = false; - "khotkeysrc"."Data_2"."ImportId" = "kde32b1"; - "khotkeysrc"."Data_2"."Name" = "Examples"; - "khotkeysrc"."Data_2"."SystemGroup" = 0; - "khotkeysrc"."Data_2"."Type" = "ACTION_DATA_GROUP"; - "khotkeysrc"."Data_2Conditions"."Comment" = ""; - "khotkeysrc"."Data_2Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_1"."Comment" = "After pressing Ctrl+Alt+I, the KSIRC window will be activated, if it exists. Simple."; - "khotkeysrc"."Data_2_1"."Enabled" = false; - "khotkeysrc"."Data_2_1"."Name" = "Activate KSIRC Window"; - "khotkeysrc"."Data_2_1"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_1Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_1Actions0"."Type" = "ACTIVATE_WINDOW"; - "khotkeysrc"."Data_2_1Actions0Window"."Comment" = "KSIRC window"; - "khotkeysrc"."Data_2_1Actions0Window"."WindowsCount" = 1; - "khotkeysrc"."Data_2_1Actions0Window0"."Class" = "ksirc"; - "khotkeysrc"."Data_2_1Actions0Window0"."ClassType" = 1; - "khotkeysrc"."Data_2_1Actions0Window0"."Comment" = "KSIRC"; - "khotkeysrc"."Data_2_1Actions0Window0"."Role" = ""; - "khotkeysrc"."Data_2_1Actions0Window0"."RoleType" = 0; - "khotkeysrc"."Data_2_1Actions0Window0"."Title" = ""; - "khotkeysrc"."Data_2_1Actions0Window0"."TitleType" = 0; - "khotkeysrc"."Data_2_1Actions0Window0"."Type" = "SIMPLE"; - "khotkeysrc"."Data_2_1Actions0Window0"."WindowTypes" = 33; - "khotkeysrc"."Data_2_1Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_1Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_1Triggers"."Comment" = "Simple_action"; - "khotkeysrc"."Data_2_1Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_2_1Triggers0"."Key" = "Ctrl+Alt+I"; - "khotkeysrc"."Data_2_1Triggers0"."Type" = "SHORTCUT"; - "khotkeysrc"."Data_2_1Triggers0"."Uuid" = "{edd7522b-b1b3-4273-838a-358ee66356b2}"; - "khotkeysrc"."Data_2_2"."Comment" = "After pressing Alt+Ctrl+H the input of 'Hello' will be simulated, as if you typed it. This is especially useful if you have call to frequently type a word (for instance, 'unsigned'). Every keypress in the input is separated by a colon ':'. Note that the keypresses literally mean keypresses, so you have to write what you would press on the keyboard. In the table below, the left column shows the input and the right column shows what to type.\n\n\"enter\" (i.e. new line) Enter or Return\na (i.e. small a) A\nA (i.e. capital a) Shift+A\n: (colon) Shift+;\n' ' (space) Space"; - "khotkeysrc"."Data_2_2"."Enabled" = false; - "khotkeysrc"."Data_2_2"."Name" = "Type 'Hello'"; - "khotkeysrc"."Data_2_2"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_2Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_2Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_2_2Actions0"."Input" = "Shift+H:E:L:L:O\n"; - "khotkeysrc"."Data_2_2Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_2_2Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_2Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_2Triggers"."Comment" = "Simple_action"; - "khotkeysrc"."Data_2_2Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_2_2Triggers0"."Key" = "Ctrl+Alt+H"; - "khotkeysrc"."Data_2_2Triggers0"."Type" = "SHORTCUT"; - "khotkeysrc"."Data_2_2Triggers0"."Uuid" = "{fd8182a4-81c3-4540-8e28-f7e5e72585c5}"; - "khotkeysrc"."Data_2_3"."Comment" = "This action runs Konsole, after pressing Ctrl+Alt+T."; - "khotkeysrc"."Data_2_3"."Enabled" = false; - "khotkeysrc"."Data_2_3"."Name" = "Run Konsole"; - "khotkeysrc"."Data_2_3"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_3Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_3Actions0"."CommandURL" = "konsole"; - "khotkeysrc"."Data_2_3Actions0"."Type" = "COMMAND_URL"; - "khotkeysrc"."Data_2_3Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_3Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_3Triggers"."Comment" = "Simple_action"; - "khotkeysrc"."Data_2_3Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_2_3Triggers0"."Key" = "Ctrl+Alt+T"; - "khotkeysrc"."Data_2_3Triggers0"."Type" = "SHORTCUT"; - "khotkeysrc"."Data_2_3Triggers0"."Uuid" = "{cdaec3a6-214e-4cc5-a877-c1df7064993e}"; - "khotkeysrc"."Data_2_4"."Comment" = "Read the comment on the \"Type 'Hello'\" action first.\n\nQt Designer uses Ctrl+F4 for closing windows. In KDE, however, Ctrl+F4 is the shortcut for going to virtual desktop 4, so this shortcut does not work in Qt Designer. Further, Qt Designer does not use KDE's standard Ctrl+W for closing the window.\n\nThis problem can be solved by remapping Ctrl+W to Ctrl+F4 when the active window is Qt Designer. When Qt Designer is active, every time Ctrl+W is pressed, Ctrl+F4 will be sent to Qt Designer instead. In other applications, the effect of Ctrl+W is unchanged.\n\nWe now need to specify three things: A new shortcut trigger on 'Ctrl+W', a new keyboard input action sending Ctrl+F4, and a new condition that the active window is Qt Designer.\nQt Designer seems to always have title 'Qt Designer by Trolltech', so the condition will check for the active window having that title."; - "khotkeysrc"."Data_2_4"."Enabled" = false; - "khotkeysrc"."Data_2_4"."Name" = "Remap Ctrl+W to Ctrl+F4 in Qt Designer"; - "khotkeysrc"."Data_2_4"."Type" = "GENERIC_ACTION_DATA"; - "khotkeysrc"."Data_2_4Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_4Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_2_4Actions0"."Input" = "Ctrl+F4"; - "khotkeysrc"."Data_2_4Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_2_4Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_4Conditions"."ConditionsCount" = 1; - "khotkeysrc"."Data_2_4Conditions0"."Type" = "ACTIVE_WINDOW"; - "khotkeysrc"."Data_2_4Conditions0Window"."Comment" = "Qt Designer"; - "khotkeysrc"."Data_2_4Conditions0Window"."WindowsCount" = 1; - "khotkeysrc"."Data_2_4Conditions0Window0"."Class" = ""; - "khotkeysrc"."Data_2_4Conditions0Window0"."ClassType" = 0; - "khotkeysrc"."Data_2_4Conditions0Window0"."Comment" = ""; - "khotkeysrc"."Data_2_4Conditions0Window0"."Role" = ""; - "khotkeysrc"."Data_2_4Conditions0Window0"."RoleType" = 0; - "khotkeysrc"."Data_2_4Conditions0Window0"."Title" = "Qt Designer by Trolltech"; - "khotkeysrc"."Data_2_4Conditions0Window0"."TitleType" = 2; - "khotkeysrc"."Data_2_4Conditions0Window0"."Type" = "SIMPLE"; - "khotkeysrc"."Data_2_4Conditions0Window0"."WindowTypes" = 33; - "khotkeysrc"."Data_2_4Triggers"."Comment" = ""; - "khotkeysrc"."Data_2_4Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_2_4Triggers0"."Key" = "Ctrl+W"; - "khotkeysrc"."Data_2_4Triggers0"."Type" = "SHORTCUT"; - "khotkeysrc"."Data_2_4Triggers0"."Uuid" = "{be4d63e1-1548-4c32-bdae-670b212885a5}"; - "khotkeysrc"."Data_2_5"."Comment" = "By pressing Alt+Ctrl+W a D-Bus call will be performed that will show the minicli. You can use any kind of D-Bus call, just like using the command line 'qdbus' tool."; - "khotkeysrc"."Data_2_5"."Enabled" = false; - "khotkeysrc"."Data_2_5"."Name" = "Perform D-Bus call 'qdbus org.kde.krunner /App display'"; - "khotkeysrc"."Data_2_5"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_5Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_5Actions0"."Arguments" = ""; - "khotkeysrc"."Data_2_5Actions0"."Call" = "popupExecuteCommand"; - "khotkeysrc"."Data_2_5Actions0"."RemoteApp" = "org.kde.krunner"; - "khotkeysrc"."Data_2_5Actions0"."RemoteObj" = "/App"; - "khotkeysrc"."Data_2_5Actions0"."Type" = "DBUS"; - "khotkeysrc"."Data_2_5Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_5Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_5Triggers"."Comment" = "Simple_action"; - "khotkeysrc"."Data_2_5Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_2_5Triggers0"."Key" = "Ctrl+Alt+W"; - "khotkeysrc"."Data_2_5Triggers0"."Type" = "SHORTCUT"; - "khotkeysrc"."Data_2_5Triggers0"."Uuid" = "{04f1cf14-2324-43a4-854e-867e289623db}"; - "khotkeysrc"."Data_2_6"."Comment" = "Read the comment on the \"Type 'Hello'\" action first.\n\nJust like the \"Type 'Hello'\" action, this one simulates keyboard input, specifically, after pressing Ctrl+Alt+B, it sends B to XMMS (B in XMMS jumps to the next song). The 'Send to specific window' checkbox is checked and a window with its class containing 'XMMS_Player' is specified; this will make the input always be sent to this window. This way, you can control XMMS even if, for instance, it is on a different virtual desktop.\n\n(Run 'xprop' and click on the XMMS window and search for WM_CLASS to see 'XMMS_Player')."; - "khotkeysrc"."Data_2_6"."Enabled" = false; - "khotkeysrc"."Data_2_6"."Name" = "Next in XMMS"; - "khotkeysrc"."Data_2_6"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_6Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_6Actions0"."DestinationWindow" = 1; - "khotkeysrc"."Data_2_6Actions0"."Input" = "B"; - "khotkeysrc"."Data_2_6Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_2_6Actions0DestinationWindow"."Comment" = "XMMS window"; - "khotkeysrc"."Data_2_6Actions0DestinationWindow"."WindowsCount" = 1; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Class" = "XMMS_Player"; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."ClassType" = 1; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Comment" = "XMMS Player window"; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Role" = ""; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."RoleType" = 0; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Title" = ""; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."TitleType" = 0; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Type" = "SIMPLE"; - "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."WindowTypes" = 33; - "khotkeysrc"."Data_2_6Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_6Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_6Triggers"."Comment" = "Simple_action"; - "khotkeysrc"."Data_2_6Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_2_6Triggers0"."Key" = "Ctrl+Alt+B"; - "khotkeysrc"."Data_2_6Triggers0"."Type" = "SHORTCUT"; - "khotkeysrc"."Data_2_6Triggers0"."Uuid" = "{c6793be6-3845-4af5-97c0-3d09f9118e6b}"; - "khotkeysrc"."Data_2_7"."Comment" = "Konqueror in KDE3.1 has tabs, and now you can also have gestures.\n\nJust press the middle mouse button and start drawing one of the gestures, and after you are finished, release the mouse button. If you only need to paste the selection, it still works, just click the middle mouse button. (You can change the mouse button to use in the global settings).\n\nRight now, there are the following gestures available:\nmove right and back left - Forward (Alt+Right)\nmove left and back right - Back (Alt+Left)\nmove up and back down - Up (Alt+Up)\ncircle counterclockwise - Reload (F5)\n\nThe gesture shapes can be entered by performing them in the configuration dialog. You can also look at your numeric pad to help you: gestures are recognized like a 3x3 grid of fields, numbered 1 to 9.\n\nNote that you must perform exactly the gesture to trigger the action. Because of this, it is possible to enter more gestures for the action. You should try to avoid complicated gestures where you change the direction of mouse movement more than once. For instance, 45654 or 74123 are simple to perform, but 1236987 may be already quite difficult.\n\nThe conditions for all gestures are defined in this group. All these gestures are active only if the active window is Konqueror (class contains 'konqueror')."; - "khotkeysrc"."Data_2_7"."DataCount" = 4; - "khotkeysrc"."Data_2_7"."Enabled" = false; - "khotkeysrc"."Data_2_7"."Name" = "Konqi Gestures"; - "khotkeysrc"."Data_2_7"."SystemGroup" = 0; - "khotkeysrc"."Data_2_7"."Type" = "ACTION_DATA_GROUP"; - "khotkeysrc"."Data_2_7Conditions"."Comment" = "Konqueror window"; - "khotkeysrc"."Data_2_7Conditions"."ConditionsCount" = 1; - "khotkeysrc"."Data_2_7Conditions0"."Type" = "ACTIVE_WINDOW"; - "khotkeysrc"."Data_2_7Conditions0Window"."Comment" = "Konqueror"; - "khotkeysrc"."Data_2_7Conditions0Window"."WindowsCount" = 1; - "khotkeysrc"."Data_2_7Conditions0Window0"."Class" = "konqueror"; - "khotkeysrc"."Data_2_7Conditions0Window0"."ClassType" = 1; - "khotkeysrc"."Data_2_7Conditions0Window0"."Comment" = "Konqueror"; - "khotkeysrc"."Data_2_7Conditions0Window0"."Role" = ""; - "khotkeysrc"."Data_2_7Conditions0Window0"."RoleType" = 0; - "khotkeysrc"."Data_2_7Conditions0Window0"."Title" = ""; - "khotkeysrc"."Data_2_7Conditions0Window0"."TitleType" = 0; - "khotkeysrc"."Data_2_7Conditions0Window0"."Type" = "SIMPLE"; - "khotkeysrc"."Data_2_7Conditions0Window0"."WindowTypes" = 33; - "khotkeysrc"."Data_2_7_1"."Comment" = ""; - "khotkeysrc"."Data_2_7_1"."Enabled" = false; - "khotkeysrc"."Data_2_7_1"."Name" = "Back"; - "khotkeysrc"."Data_2_7_1"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_7_1Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_7_1Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_2_7_1Actions0"."Input" = "Alt+Left"; - "khotkeysrc"."Data_2_7_1Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_2_7_1Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_7_1Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_7_1Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_2_7_1Triggers"."TriggersCount" = 3; - "khotkeysrc"."Data_2_7_1Triggers0"."GesturePointData" = "0,0.0625,1,1,0.5,0.0625,0.0625,1,0.875,0.5,0.125,0.0625,1,0.75,0.5,0.1875,0.0625,1,0.625,0.5,0.25,0.0625,1,0.5,0.5,0.3125,0.0625,1,0.375,0.5,0.375,0.0625,1,0.25,0.5,0.4375,0.0625,1,0.125,0.5,0.5,0.0625,0,0,0.5,0.5625,0.0625,0,0.125,0.5,0.625,0.0625,0,0.25,0.5,0.6875,0.0625,0,0.375,0.5,0.75,0.0625,0,0.5,0.5,0.8125,0.0625,0,0.625,0.5,0.875,0.0625,0,0.75,0.5,0.9375,0.0625,0,0.875,0.5,1,0,0,1,0.5"; - "khotkeysrc"."Data_2_7_1Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_1Triggers1"."GesturePointData" = "0,0.0833333,1,0.5,0.5,0.0833333,0.0833333,1,0.375,0.5,0.166667,0.0833333,1,0.25,0.5,0.25,0.0833333,1,0.125,0.5,0.333333,0.0833333,0,0,0.5,0.416667,0.0833333,0,0.125,0.5,0.5,0.0833333,0,0.25,0.5,0.583333,0.0833333,0,0.375,0.5,0.666667,0.0833333,0,0.5,0.5,0.75,0.0833333,0,0.625,0.5,0.833333,0.0833333,0,0.75,0.5,0.916667,0.0833333,0,0.875,0.5,1,0,0,1,0.5"; - "khotkeysrc"."Data_2_7_1Triggers1"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_1Triggers2"."GesturePointData" = "0,0.0833333,1,1,0.5,0.0833333,0.0833333,1,0.875,0.5,0.166667,0.0833333,1,0.75,0.5,0.25,0.0833333,1,0.625,0.5,0.333333,0.0833333,1,0.5,0.5,0.416667,0.0833333,1,0.375,0.5,0.5,0.0833333,1,0.25,0.5,0.583333,0.0833333,1,0.125,0.5,0.666667,0.0833333,0,0,0.5,0.75,0.0833333,0,0.125,0.5,0.833333,0.0833333,0,0.25,0.5,0.916667,0.0833333,0,0.375,0.5,1,0,0,0.5,0.5"; - "khotkeysrc"."Data_2_7_1Triggers2"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_2"."Comment" = ""; - "khotkeysrc"."Data_2_7_2"."Enabled" = false; - "khotkeysrc"."Data_2_7_2"."Name" = "Forward"; - "khotkeysrc"."Data_2_7_2"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_7_2Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_7_2Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_2_7_2Actions0"."Input" = "Alt+Right"; - "khotkeysrc"."Data_2_7_2Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_2_7_2Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_7_2Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_7_2Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_2_7_2Triggers"."TriggersCount" = 3; - "khotkeysrc"."Data_2_7_2Triggers0"."GesturePointData" = "0,0.0625,0,0,0.5,0.0625,0.0625,0,0.125,0.5,0.125,0.0625,0,0.25,0.5,0.1875,0.0625,0,0.375,0.5,0.25,0.0625,0,0.5,0.5,0.3125,0.0625,0,0.625,0.5,0.375,0.0625,0,0.75,0.5,0.4375,0.0625,0,0.875,0.5,0.5,0.0625,1,1,0.5,0.5625,0.0625,1,0.875,0.5,0.625,0.0625,1,0.75,0.5,0.6875,0.0625,1,0.625,0.5,0.75,0.0625,1,0.5,0.5,0.8125,0.0625,1,0.375,0.5,0.875,0.0625,1,0.25,0.5,0.9375,0.0625,1,0.125,0.5,1,0,0,0,0.5"; - "khotkeysrc"."Data_2_7_2Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_2Triggers1"."GesturePointData" = "0,0.0833333,0,0.5,0.5,0.0833333,0.0833333,0,0.625,0.5,0.166667,0.0833333,0,0.75,0.5,0.25,0.0833333,0,0.875,0.5,0.333333,0.0833333,1,1,0.5,0.416667,0.0833333,1,0.875,0.5,0.5,0.0833333,1,0.75,0.5,0.583333,0.0833333,1,0.625,0.5,0.666667,0.0833333,1,0.5,0.5,0.75,0.0833333,1,0.375,0.5,0.833333,0.0833333,1,0.25,0.5,0.916667,0.0833333,1,0.125,0.5,1,0,0,0,0.5"; - "khotkeysrc"."Data_2_7_2Triggers1"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_2Triggers2"."GesturePointData" = "0,0.0833333,0,0,0.5,0.0833333,0.0833333,0,0.125,0.5,0.166667,0.0833333,0,0.25,0.5,0.25,0.0833333,0,0.375,0.5,0.333333,0.0833333,0,0.5,0.5,0.416667,0.0833333,0,0.625,0.5,0.5,0.0833333,0,0.75,0.5,0.583333,0.0833333,0,0.875,0.5,0.666667,0.0833333,1,1,0.5,0.75,0.0833333,1,0.875,0.5,0.833333,0.0833333,1,0.75,0.5,0.916667,0.0833333,1,0.625,0.5,1,0,0,0.5,0.5"; - "khotkeysrc"."Data_2_7_2Triggers2"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_3"."Comment" = ""; - "khotkeysrc"."Data_2_7_3"."Enabled" = false; - "khotkeysrc"."Data_2_7_3"."Name" = "Up"; - "khotkeysrc"."Data_2_7_3"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_7_3Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_7_3Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_2_7_3Actions0"."Input" = "Alt+Up"; - "khotkeysrc"."Data_2_7_3Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_2_7_3Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_7_3Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_7_3Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_2_7_3Triggers"."TriggersCount" = 3; - "khotkeysrc"."Data_2_7_3Triggers0"."GesturePointData" = "0,0.0625,-0.5,0.5,1,0.0625,0.0625,-0.5,0.5,0.875,0.125,0.0625,-0.5,0.5,0.75,0.1875,0.0625,-0.5,0.5,0.625,0.25,0.0625,-0.5,0.5,0.5,0.3125,0.0625,-0.5,0.5,0.375,0.375,0.0625,-0.5,0.5,0.25,0.4375,0.0625,-0.5,0.5,0.125,0.5,0.0625,0.5,0.5,0,0.5625,0.0625,0.5,0.5,0.125,0.625,0.0625,0.5,0.5,0.25,0.6875,0.0625,0.5,0.5,0.375,0.75,0.0625,0.5,0.5,0.5,0.8125,0.0625,0.5,0.5,0.625,0.875,0.0625,0.5,0.5,0.75,0.9375,0.0625,0.5,0.5,0.875,1,0,0,0.5,1"; - "khotkeysrc"."Data_2_7_3Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_3Triggers1"."GesturePointData" = "0,0.0833333,-0.5,0.5,1,0.0833333,0.0833333,-0.5,0.5,0.875,0.166667,0.0833333,-0.5,0.5,0.75,0.25,0.0833333,-0.5,0.5,0.625,0.333333,0.0833333,-0.5,0.5,0.5,0.416667,0.0833333,-0.5,0.5,0.375,0.5,0.0833333,-0.5,0.5,0.25,0.583333,0.0833333,-0.5,0.5,0.125,0.666667,0.0833333,0.5,0.5,0,0.75,0.0833333,0.5,0.5,0.125,0.833333,0.0833333,0.5,0.5,0.25,0.916667,0.0833333,0.5,0.5,0.375,1,0,0,0.5,0.5"; - "khotkeysrc"."Data_2_7_3Triggers1"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_3Triggers2"."GesturePointData" = "0,0.0833333,-0.5,0.5,0.5,0.0833333,0.0833333,-0.5,0.5,0.375,0.166667,0.0833333,-0.5,0.5,0.25,0.25,0.0833333,-0.5,0.5,0.125,0.333333,0.0833333,0.5,0.5,0,0.416667,0.0833333,0.5,0.5,0.125,0.5,0.0833333,0.5,0.5,0.25,0.583333,0.0833333,0.5,0.5,0.375,0.666667,0.0833333,0.5,0.5,0.5,0.75,0.0833333,0.5,0.5,0.625,0.833333,0.0833333,0.5,0.5,0.75,0.916667,0.0833333,0.5,0.5,0.875,1,0,0,0.5,1"; - "khotkeysrc"."Data_2_7_3Triggers2"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_4"."Comment" = ""; - "khotkeysrc"."Data_2_7_4"."Enabled" = false; - "khotkeysrc"."Data_2_7_4"."Name" = "Reload"; - "khotkeysrc"."Data_2_7_4"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_7_4Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_7_4Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_2_7_4Actions0"."Input" = "F5"; - "khotkeysrc"."Data_2_7_4Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_2_7_4Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_7_4Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_7_4Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_2_7_4Triggers"."TriggersCount" = 3; - "khotkeysrc"."Data_2_7_4Triggers0"."GesturePointData" = "0,0.03125,0,0,1,0.03125,0.03125,0,0.125,1,0.0625,0.03125,0,0.25,1,0.09375,0.03125,0,0.375,1,0.125,0.03125,0,0.5,1,0.15625,0.03125,0,0.625,1,0.1875,0.03125,0,0.75,1,0.21875,0.03125,0,0.875,1,0.25,0.03125,-0.5,1,1,0.28125,0.03125,-0.5,1,0.875,0.3125,0.03125,-0.5,1,0.75,0.34375,0.03125,-0.5,1,0.625,0.375,0.03125,-0.5,1,0.5,0.40625,0.03125,-0.5,1,0.375,0.4375,0.03125,-0.5,1,0.25,0.46875,0.03125,-0.5,1,0.125,0.5,0.03125,1,1,0,0.53125,0.03125,1,0.875,0,0.5625,0.03125,1,0.75,0,0.59375,0.03125,1,0.625,0,0.625,0.03125,1,0.5,0,0.65625,0.03125,1,0.375,0,0.6875,0.03125,1,0.25,0,0.71875,0.03125,1,0.125,0,0.75,0.03125,0.5,0,0,0.78125,0.03125,0.5,0,0.125,0.8125,0.03125,0.5,0,0.25,0.84375,0.03125,0.5,0,0.375,0.875,0.03125,0.5,0,0.5,0.90625,0.03125,0.5,0,0.625,0.9375,0.03125,0.5,0,0.75,0.96875,0.03125,0.5,0,0.875,1,0,0,0,1"; - "khotkeysrc"."Data_2_7_4Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_4Triggers1"."GesturePointData" = "0,0.0277778,0,0,1,0.0277778,0.0277778,0,0.125,1,0.0555556,0.0277778,0,0.25,1,0.0833333,0.0277778,0,0.375,1,0.111111,0.0277778,0,0.5,1,0.138889,0.0277778,0,0.625,1,0.166667,0.0277778,0,0.75,1,0.194444,0.0277778,0,0.875,1,0.222222,0.0277778,-0.5,1,1,0.25,0.0277778,-0.5,1,0.875,0.277778,0.0277778,-0.5,1,0.75,0.305556,0.0277778,-0.5,1,0.625,0.333333,0.0277778,-0.5,1,0.5,0.361111,0.0277778,-0.5,1,0.375,0.388889,0.0277778,-0.5,1,0.25,0.416667,0.0277778,-0.5,1,0.125,0.444444,0.0277778,1,1,0,0.472222,0.0277778,1,0.875,0,0.5,0.0277778,1,0.75,0,0.527778,0.0277778,1,0.625,0,0.555556,0.0277778,1,0.5,0,0.583333,0.0277778,1,0.375,0,0.611111,0.0277778,1,0.25,0,0.638889,0.0277778,1,0.125,0,0.666667,0.0277778,0.5,0,0,0.694444,0.0277778,0.5,0,0.125,0.722222,0.0277778,0.5,0,0.25,0.75,0.0277778,0.5,0,0.375,0.777778,0.0277778,0.5,0,0.5,0.805556,0.0277778,0.5,0,0.625,0.833333,0.0277778,0.5,0,0.75,0.861111,0.0277778,0.5,0,0.875,0.888889,0.0277778,0,0,1,0.916667,0.0277778,0,0.125,1,0.944444,0.0277778,0,0.25,1,0.972222,0.0277778,0,0.375,1,1,0,0,0.5,1"; - "khotkeysrc"."Data_2_7_4Triggers1"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_7_4Triggers2"."GesturePointData" = "0,0.0277778,0.5,0,0.5,0.0277778,0.0277778,0.5,0,0.625,0.0555556,0.0277778,0.5,0,0.75,0.0833333,0.0277778,0.5,0,0.875,0.111111,0.0277778,0,0,1,0.138889,0.0277778,0,0.125,1,0.166667,0.0277778,0,0.25,1,0.194444,0.0277778,0,0.375,1,0.222222,0.0277778,0,0.5,1,0.25,0.0277778,0,0.625,1,0.277778,0.0277778,0,0.75,1,0.305556,0.0277778,0,0.875,1,0.333333,0.0277778,-0.5,1,1,0.361111,0.0277778,-0.5,1,0.875,0.388889,0.0277778,-0.5,1,0.75,0.416667,0.0277778,-0.5,1,0.625,0.444444,0.0277778,-0.5,1,0.5,0.472222,0.0277778,-0.5,1,0.375,0.5,0.0277778,-0.5,1,0.25,0.527778,0.0277778,-0.5,1,0.125,0.555556,0.0277778,1,1,0,0.583333,0.0277778,1,0.875,0,0.611111,0.0277778,1,0.75,0,0.638889,0.0277778,1,0.625,0,0.666667,0.0277778,1,0.5,0,0.694444,0.0277778,1,0.375,0,0.722222,0.0277778,1,0.25,0,0.75,0.0277778,1,0.125,0,0.777778,0.0277778,0.5,0,0,0.805556,0.0277778,0.5,0,0.125,0.833333,0.0277778,0.5,0,0.25,0.861111,0.0277778,0.5,0,0.375,0.888889,0.0277778,0.5,0,0.5,0.916667,0.0277778,0.5,0,0.625,0.944444,0.0277778,0.5,0,0.75,0.972222,0.0277778,0.5,0,0.875,1,0,0,0,1"; - "khotkeysrc"."Data_2_7_4Triggers2"."Type" = "GESTURE"; - "khotkeysrc"."Data_2_8"."Comment" = "After pressing Win+E (Tux+E) a WWW browser will be launched, and it will open http://www.kde.org . You may run all kind of commands you can run in minicli (Alt+F2)."; - "khotkeysrc"."Data_2_8"."Enabled" = false; - "khotkeysrc"."Data_2_8"."Name" = "Go to KDE Website"; - "khotkeysrc"."Data_2_8"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_2_8Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_2_8Actions0"."CommandURL" = "http://www.kde.org"; - "khotkeysrc"."Data_2_8Actions0"."Type" = "COMMAND_URL"; - "khotkeysrc"."Data_2_8Conditions"."Comment" = ""; - "khotkeysrc"."Data_2_8Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_2_8Triggers"."Comment" = "Simple_action"; - "khotkeysrc"."Data_2_8Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_2_8Triggers0"."Key" = "Meta+E"; - "khotkeysrc"."Data_2_8Triggers0"."Type" = "SHORTCUT"; - "khotkeysrc"."Data_2_8Triggers0"."Uuid" = "{af8f36c3-5682-4153-869f-fe61c53dd3c3}"; - "khotkeysrc"."Data_3"."Comment" = "Basic Konqueror gestures."; - "khotkeysrc"."Data_3"."DataCount" = 14; - "khotkeysrc"."Data_3"."Enabled" = true; - "khotkeysrc"."Data_3"."ImportId" = "konqueror_gestures_kde321"; - "khotkeysrc"."Data_3"."Name" = "Konqueror Gestures"; - "khotkeysrc"."Data_3"."SystemGroup" = 0; - "khotkeysrc"."Data_3"."Type" = "ACTION_DATA_GROUP"; - "khotkeysrc"."Data_3Conditions"."Comment" = "Konqueror window"; - "khotkeysrc"."Data_3Conditions"."ConditionsCount" = 1; - "khotkeysrc"."Data_3Conditions0"."Type" = "ACTIVE_WINDOW"; - "khotkeysrc"."Data_3Conditions0Window"."Comment" = "Konqueror"; - "khotkeysrc"."Data_3Conditions0Window"."WindowsCount" = 1; - "khotkeysrc"."Data_3Conditions0Window0"."Class" = "^konqueror\s"; - "khotkeysrc"."Data_3Conditions0Window0"."ClassType" = 3; - "khotkeysrc"."Data_3Conditions0Window0"."Comment" = "Konqueror"; - "khotkeysrc"."Data_3Conditions0Window0"."Role" = "konqueror-mainwindow#1"; - "khotkeysrc"."Data_3Conditions0Window0"."RoleType" = 0; - "khotkeysrc"."Data_3Conditions0Window0"."Title" = "file:/ - Konqueror"; - "khotkeysrc"."Data_3Conditions0Window0"."TitleType" = 0; - "khotkeysrc"."Data_3Conditions0Window0"."Type" = "SIMPLE"; - "khotkeysrc"."Data_3Conditions0Window0"."WindowTypes" = 1; - "khotkeysrc"."Data_3_1"."Comment" = "Press, move left, release."; - "khotkeysrc"."Data_3_1"."Enabled" = true; - "khotkeysrc"."Data_3_1"."Name" = "Back"; - "khotkeysrc"."Data_3_1"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_10"."Comment" = "Opera-style: Press, move up, release.\nNOTE: Conflicts with 'New Tab', and as such is disabled by default."; - "khotkeysrc"."Data_3_10"."Enabled" = false; - "khotkeysrc"."Data_3_10"."Name" = "Stop Loading"; - "khotkeysrc"."Data_3_10"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_10Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_10Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_10Actions0"."Input" = "Escape\n"; - "khotkeysrc"."Data_3_10Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_10Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_10Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_10Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_10Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_10Triggers0"."GesturePointData" = "0,0.125,-0.5,0.5,1,0.125,0.125,-0.5,0.5,0.875,0.25,0.125,-0.5,0.5,0.75,0.375,0.125,-0.5,0.5,0.625,0.5,0.125,-0.5,0.5,0.5,0.625,0.125,-0.5,0.5,0.375,0.75,0.125,-0.5,0.5,0.25,0.875,0.125,-0.5,0.5,0.125,1,0,0,0.5,0"; - "khotkeysrc"."Data_3_10Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_11"."Comment" = "Going up in URL/directory structure.\nMozilla-style: Press, move up, move left, move up, release."; - "khotkeysrc"."Data_3_11"."Enabled" = true; - "khotkeysrc"."Data_3_11"."Name" = "Up"; - "khotkeysrc"."Data_3_11"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_11Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_11Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_11Actions0"."Input" = "Alt+Up"; - "khotkeysrc"."Data_3_11Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_11Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_11Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_11Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_11Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_11Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,1,1,0.5,0.3125,0.0625,1,0.875,0.5,0.375,0.0625,1,0.75,0.5,0.4375,0.0625,1,0.625,0.5,0.5,0.0625,1,0.5,0.5,0.5625,0.0625,1,0.375,0.5,0.625,0.0625,1,0.25,0.5,0.6875,0.0625,1,0.125,0.5,0.75,0.0625,-0.5,0,0.5,0.8125,0.0625,-0.5,0,0.375,0.875,0.0625,-0.5,0,0.25,0.9375,0.0625,-0.5,0,0.125,1,0,0,0,0"; - "khotkeysrc"."Data_3_11Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_12"."Comment" = "Going up in URL/directory structure.\nOpera-style: Press, move up, move left, move up, release.\nNOTE: Conflicts with \"Activate Previous Tab\", and as such is disabled by default."; - "khotkeysrc"."Data_3_12"."Enabled" = false; - "khotkeysrc"."Data_3_12"."Name" = "Up #2"; - "khotkeysrc"."Data_3_12"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_12Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_12Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_12Actions0"."Input" = "Alt+Up\n"; - "khotkeysrc"."Data_3_12Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_12Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_12Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_12Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_12Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_12Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,-0.5,1,0.5,0.3125,0.0625,-0.5,1,0.375,0.375,0.0625,-0.5,1,0.25,0.4375,0.0625,-0.5,1,0.125,0.5,0.0625,1,1,0,0.5625,0.0625,1,0.875,0,0.625,0.0625,1,0.75,0,0.6875,0.0625,1,0.625,0,0.75,0.0625,1,0.5,0,0.8125,0.0625,1,0.375,0,0.875,0.0625,1,0.25,0,0.9375,0.0625,1,0.125,0,1,0,0,0,0"; - "khotkeysrc"."Data_3_12Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_13"."Comment" = "Press, move up, move right, release."; - "khotkeysrc"."Data_3_13"."Enabled" = true; - "khotkeysrc"."Data_3_13"."Name" = "Activate Next Tab"; - "khotkeysrc"."Data_3_13"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_13Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_13Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_13Actions0"."Input" = "Ctrl+.\n"; - "khotkeysrc"."Data_3_13Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_13Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_13Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_13Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_13Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_13Triggers0"."GesturePointData" = "0,0.0625,-0.5,0,1,0.0625,0.0625,-0.5,0,0.875,0.125,0.0625,-0.5,0,0.75,0.1875,0.0625,-0.5,0,0.625,0.25,0.0625,-0.5,0,0.5,0.3125,0.0625,-0.5,0,0.375,0.375,0.0625,-0.5,0,0.25,0.4375,0.0625,-0.5,0,0.125,0.5,0.0625,0,0,0,0.5625,0.0625,0,0.125,0,0.625,0.0625,0,0.25,0,0.6875,0.0625,0,0.375,0,0.75,0.0625,0,0.5,0,0.8125,0.0625,0,0.625,0,0.875,0.0625,0,0.75,0,0.9375,0.0625,0,0.875,0,1,0,0,1,0"; - "khotkeysrc"."Data_3_13Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_14"."Comment" = "Press, move up, move left, release."; - "khotkeysrc"."Data_3_14"."Enabled" = true; - "khotkeysrc"."Data_3_14"."Name" = "Activate Previous Tab"; - "khotkeysrc"."Data_3_14"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_14Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_14Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_14Actions0"."Input" = "Ctrl+,"; - "khotkeysrc"."Data_3_14Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_14Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_14Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_14Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_14Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_14Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,-0.5,1,0.5,0.3125,0.0625,-0.5,1,0.375,0.375,0.0625,-0.5,1,0.25,0.4375,0.0625,-0.5,1,0.125,0.5,0.0625,1,1,0,0.5625,0.0625,1,0.875,0,0.625,0.0625,1,0.75,0,0.6875,0.0625,1,0.625,0,0.75,0.0625,1,0.5,0,0.8125,0.0625,1,0.375,0,0.875,0.0625,1,0.25,0,0.9375,0.0625,1,0.125,0,1,0,0,0,0"; - "khotkeysrc"."Data_3_14Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_1Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_1Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_1Actions0"."Input" = "Alt+Left"; - "khotkeysrc"."Data_3_1Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_1Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_1Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_1Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_1Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_1Triggers0"."GesturePointData" = "0,0.125,1,1,0.5,0.125,0.125,1,0.875,0.5,0.25,0.125,1,0.75,0.5,0.375,0.125,1,0.625,0.5,0.5,0.125,1,0.5,0.5,0.625,0.125,1,0.375,0.5,0.75,0.125,1,0.25,0.5,0.875,0.125,1,0.125,0.5,1,0,0,0,0.5"; - "khotkeysrc"."Data_3_1Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_2"."Comment" = "Press, move down, move up, move down, release."; - "khotkeysrc"."Data_3_2"."Enabled" = true; - "khotkeysrc"."Data_3_2"."Name" = "Duplicate Tab"; - "khotkeysrc"."Data_3_2"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_2Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_2Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_2Actions0"."Input" = "Ctrl+Shift+D\n"; - "khotkeysrc"."Data_3_2Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_2Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_2Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_2Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_2Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_2Triggers0"."GesturePointData" = "0,0.0416667,0.5,0.5,0,0.0416667,0.0416667,0.5,0.5,0.125,0.0833333,0.0416667,0.5,0.5,0.25,0.125,0.0416667,0.5,0.5,0.375,0.166667,0.0416667,0.5,0.5,0.5,0.208333,0.0416667,0.5,0.5,0.625,0.25,0.0416667,0.5,0.5,0.75,0.291667,0.0416667,0.5,0.5,0.875,0.333333,0.0416667,-0.5,0.5,1,0.375,0.0416667,-0.5,0.5,0.875,0.416667,0.0416667,-0.5,0.5,0.75,0.458333,0.0416667,-0.5,0.5,0.625,0.5,0.0416667,-0.5,0.5,0.5,0.541667,0.0416667,-0.5,0.5,0.375,0.583333,0.0416667,-0.5,0.5,0.25,0.625,0.0416667,-0.5,0.5,0.125,0.666667,0.0416667,0.5,0.5,0,0.708333,0.0416667,0.5,0.5,0.125,0.75,0.0416667,0.5,0.5,0.25,0.791667,0.0416667,0.5,0.5,0.375,0.833333,0.0416667,0.5,0.5,0.5,0.875,0.0416667,0.5,0.5,0.625,0.916667,0.0416667,0.5,0.5,0.75,0.958333,0.0416667,0.5,0.5,0.875,1,0,0,0.5,1"; - "khotkeysrc"."Data_3_2Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_3"."Comment" = "Press, move down, move up, release."; - "khotkeysrc"."Data_3_3"."Enabled" = true; - "khotkeysrc"."Data_3_3"."Name" = "Duplicate Window"; - "khotkeysrc"."Data_3_3"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_3Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_3Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_3Actions0"."Input" = "Ctrl+D\n"; - "khotkeysrc"."Data_3_3Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_3Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_3Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_3Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_3Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_3Triggers0"."GesturePointData" = "0,0.0625,0.5,0.5,0,0.0625,0.0625,0.5,0.5,0.125,0.125,0.0625,0.5,0.5,0.25,0.1875,0.0625,0.5,0.5,0.375,0.25,0.0625,0.5,0.5,0.5,0.3125,0.0625,0.5,0.5,0.625,0.375,0.0625,0.5,0.5,0.75,0.4375,0.0625,0.5,0.5,0.875,0.5,0.0625,-0.5,0.5,1,0.5625,0.0625,-0.5,0.5,0.875,0.625,0.0625,-0.5,0.5,0.75,0.6875,0.0625,-0.5,0.5,0.625,0.75,0.0625,-0.5,0.5,0.5,0.8125,0.0625,-0.5,0.5,0.375,0.875,0.0625,-0.5,0.5,0.25,0.9375,0.0625,-0.5,0.5,0.125,1,0,0,0.5,0"; - "khotkeysrc"."Data_3_3Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_4"."Comment" = "Press, move right, release."; - "khotkeysrc"."Data_3_4"."Enabled" = true; - "khotkeysrc"."Data_3_4"."Name" = "Forward"; - "khotkeysrc"."Data_3_4"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_4Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_4Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_4Actions0"."Input" = "Alt+Right"; - "khotkeysrc"."Data_3_4Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_4Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_4Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_4Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_4Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_4Triggers0"."GesturePointData" = "0,0.125,0,0,0.5,0.125,0.125,0,0.125,0.5,0.25,0.125,0,0.25,0.5,0.375,0.125,0,0.375,0.5,0.5,0.125,0,0.5,0.5,0.625,0.125,0,0.625,0.5,0.75,0.125,0,0.75,0.5,0.875,0.125,0,0.875,0.5,1,0,0,1,0.5"; - "khotkeysrc"."Data_3_4Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_5"."Comment" = "Press, move down, move half up, move right, move down, release.\n(Drawing a lowercase 'h'.)"; - "khotkeysrc"."Data_3_5"."Enabled" = true; - "khotkeysrc"."Data_3_5"."Name" = "Home"; - "khotkeysrc"."Data_3_5"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_5Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_5Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_5Actions0"."Input" = "Alt+Home\n"; - "khotkeysrc"."Data_3_5Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_5Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_5Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_5Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_5Triggers"."TriggersCount" = 2; - "khotkeysrc"."Data_3_5Triggers0"."GesturePointData" = "0,0.0461748,0.5,0,0,0.0461748,0.0461748,0.5,0,0.125,0.0923495,0.0461748,0.5,0,0.25,0.138524,0.0461748,0.5,0,0.375,0.184699,0.0461748,0.5,0,0.5,0.230874,0.0461748,0.5,0,0.625,0.277049,0.0461748,0.5,0,0.75,0.323223,0.0461748,0.5,0,0.875,0.369398,0.065301,-0.25,0,1,0.434699,0.065301,-0.25,0.125,0.875,0.5,0.065301,-0.25,0.25,0.75,0.565301,0.065301,-0.25,0.375,0.625,0.630602,0.0461748,0,0.5,0.5,0.676777,0.0461748,0,0.625,0.5,0.722951,0.0461748,0,0.75,0.5,0.769126,0.0461748,0,0.875,0.5,0.815301,0.0461748,0.5,1,0.5,0.861476,0.0461748,0.5,1,0.625,0.90765,0.0461748,0.5,1,0.75,0.953825,0.0461748,0.5,1,0.875,1,0,0,1,1"; - "khotkeysrc"."Data_3_5Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_5Triggers1"."GesturePointData" = "0,0.0416667,0.5,0,0,0.0416667,0.0416667,0.5,0,0.125,0.0833333,0.0416667,0.5,0,0.25,0.125,0.0416667,0.5,0,0.375,0.166667,0.0416667,0.5,0,0.5,0.208333,0.0416667,0.5,0,0.625,0.25,0.0416667,0.5,0,0.75,0.291667,0.0416667,0.5,0,0.875,0.333333,0.0416667,-0.5,0,1,0.375,0.0416667,-0.5,0,0.875,0.416667,0.0416667,-0.5,0,0.75,0.458333,0.0416667,-0.5,0,0.625,0.5,0.0416667,0,0,0.5,0.541667,0.0416667,0,0.125,0.5,0.583333,0.0416667,0,0.25,0.5,0.625,0.0416667,0,0.375,0.5,0.666667,0.0416667,0,0.5,0.5,0.708333,0.0416667,0,0.625,0.5,0.75,0.0416667,0,0.75,0.5,0.791667,0.0416667,0,0.875,0.5,0.833333,0.0416667,0.5,1,0.5,0.875,0.0416667,0.5,1,0.625,0.916667,0.0416667,0.5,1,0.75,0.958333,0.0416667,0.5,1,0.875,1,0,0,1,1"; - "khotkeysrc"."Data_3_5Triggers1"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_6"."Comment" = "Press, move right, move down, move right, release.\nMozilla-style: Press, move down, move right, release."; - "khotkeysrc"."Data_3_6"."Enabled" = true; - "khotkeysrc"."Data_3_6"."Name" = "Close Tab"; - "khotkeysrc"."Data_3_6"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_6Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_6Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_6Actions0"."Input" = "Ctrl+W\n"; - "khotkeysrc"."Data_3_6Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_6Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_6Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_6Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_6Triggers"."TriggersCount" = 2; - "khotkeysrc"."Data_3_6Triggers0"."GesturePointData" = "0,0.0625,0,0,0,0.0625,0.0625,0,0.125,0,0.125,0.0625,0,0.25,0,0.1875,0.0625,0,0.375,0,0.25,0.0625,0.5,0.5,0,0.3125,0.0625,0.5,0.5,0.125,0.375,0.0625,0.5,0.5,0.25,0.4375,0.0625,0.5,0.5,0.375,0.5,0.0625,0.5,0.5,0.5,0.5625,0.0625,0.5,0.5,0.625,0.625,0.0625,0.5,0.5,0.75,0.6875,0.0625,0.5,0.5,0.875,0.75,0.0625,0,0.5,1,0.8125,0.0625,0,0.625,1,0.875,0.0625,0,0.75,1,0.9375,0.0625,0,0.875,1,1,0,0,1,1"; - "khotkeysrc"."Data_3_6Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_6Triggers1"."GesturePointData" = "0,0.0625,0.5,0,0,0.0625,0.0625,0.5,0,0.125,0.125,0.0625,0.5,0,0.25,0.1875,0.0625,0.5,0,0.375,0.25,0.0625,0.5,0,0.5,0.3125,0.0625,0.5,0,0.625,0.375,0.0625,0.5,0,0.75,0.4375,0.0625,0.5,0,0.875,0.5,0.0625,0,0,1,0.5625,0.0625,0,0.125,1,0.625,0.0625,0,0.25,1,0.6875,0.0625,0,0.375,1,0.75,0.0625,0,0.5,1,0.8125,0.0625,0,0.625,1,0.875,0.0625,0,0.75,1,0.9375,0.0625,0,0.875,1,1,0,0,1,1"; - "khotkeysrc"."Data_3_6Triggers1"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_7"."Comment" = "Press, move up, release.\nConflicts with Opera-style 'Up #2', which is disabled by default."; - "khotkeysrc"."Data_3_7"."Enabled" = true; - "khotkeysrc"."Data_3_7"."Name" = "New Tab"; - "khotkeysrc"."Data_3_7"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_7Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_7Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_7Actions0"."Input" = "Ctrl+Shift+N"; - "khotkeysrc"."Data_3_7Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_7Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_7Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_7Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_7Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_7Triggers0"."GesturePointData" = "0,0.125,-0.5,0.5,1,0.125,0.125,-0.5,0.5,0.875,0.25,0.125,-0.5,0.5,0.75,0.375,0.125,-0.5,0.5,0.625,0.5,0.125,-0.5,0.5,0.5,0.625,0.125,-0.5,0.5,0.375,0.75,0.125,-0.5,0.5,0.25,0.875,0.125,-0.5,0.5,0.125,1,0,0,0.5,0"; - "khotkeysrc"."Data_3_7Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_8"."Comment" = "Press, move down, release."; - "khotkeysrc"."Data_3_8"."Enabled" = true; - "khotkeysrc"."Data_3_8"."Name" = "New Window"; - "khotkeysrc"."Data_3_8"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_8Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_8Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_8Actions0"."Input" = "Ctrl+N\n"; - "khotkeysrc"."Data_3_8Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_8Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_8Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_8Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_8Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_8Triggers0"."GesturePointData" = "0,0.125,0.5,0.5,0,0.125,0.125,0.5,0.5,0.125,0.25,0.125,0.5,0.5,0.25,0.375,0.125,0.5,0.5,0.375,0.5,0.125,0.5,0.5,0.5,0.625,0.125,0.5,0.5,0.625,0.75,0.125,0.5,0.5,0.75,0.875,0.125,0.5,0.5,0.875,1,0,0,0.5,1"; - "khotkeysrc"."Data_3_8Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."Data_3_9"."Comment" = "Press, move up, move down, release."; - "khotkeysrc"."Data_3_9"."Enabled" = true; - "khotkeysrc"."Data_3_9"."Name" = "Reload"; - "khotkeysrc"."Data_3_9"."Type" = "SIMPLE_ACTION_DATA"; - "khotkeysrc"."Data_3_9Actions"."ActionsCount" = 1; - "khotkeysrc"."Data_3_9Actions0"."DestinationWindow" = 2; - "khotkeysrc"."Data_3_9Actions0"."Input" = "F5"; - "khotkeysrc"."Data_3_9Actions0"."Type" = "KEYBOARD_INPUT"; - "khotkeysrc"."Data_3_9Conditions"."Comment" = ""; - "khotkeysrc"."Data_3_9Conditions"."ConditionsCount" = 0; - "khotkeysrc"."Data_3_9Triggers"."Comment" = "Gesture_triggers"; - "khotkeysrc"."Data_3_9Triggers"."TriggersCount" = 1; - "khotkeysrc"."Data_3_9Triggers0"."GesturePointData" = "0,0.0625,-0.5,0.5,1,0.0625,0.0625,-0.5,0.5,0.875,0.125,0.0625,-0.5,0.5,0.75,0.1875,0.0625,-0.5,0.5,0.625,0.25,0.0625,-0.5,0.5,0.5,0.3125,0.0625,-0.5,0.5,0.375,0.375,0.0625,-0.5,0.5,0.25,0.4375,0.0625,-0.5,0.5,0.125,0.5,0.0625,0.5,0.5,0,0.5625,0.0625,0.5,0.5,0.125,0.625,0.0625,0.5,0.5,0.25,0.6875,0.0625,0.5,0.5,0.375,0.75,0.0625,0.5,0.5,0.5,0.8125,0.0625,0.5,0.5,0.625,0.875,0.0625,0.5,0.5,0.75,0.9375,0.0625,0.5,0.5,0.875,1,0,0,0.5,1"; - "khotkeysrc"."Data_3_9Triggers0"."Type" = "GESTURE"; - "khotkeysrc"."General"."BrowserApplication[$d]" = ""; - "khotkeysrc"."General"."ColorSchemeHash[$d]" = ""; - "khotkeysrc"."General"."ColorScheme[$d]" = ""; - "khotkeysrc"."Gestures"."Disabled" = true; - "khotkeysrc"."Gestures"."MouseButton" = 2; - "khotkeysrc"."Gestures"."Timeout" = 300; - "khotkeysrc"."GesturesExclude"."Comment" = ""; - "khotkeysrc"."GesturesExclude"."WindowsCount" = 0; - "khotkeysrc"."Icons"."Theme[$d]" = ""; - "khotkeysrc"."KDE"."AnimationDurationFactor[$d]" = ""; - "khotkeysrc"."KDE"."LookAndFeelPackage[$d]" = ""; - "khotkeysrc"."KDE"."SingleClick[$d]" = ""; - "khotkeysrc"."KDE"."widgetStyle[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Allow Expansion[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Automatically select filename extension[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Breadcrumb Navigation[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Decoration position[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."LocationCombo Completionmode[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."PathCombo Completionmode[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Bookmarks[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Full Path[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Inline Previews[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Preview[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show Speedbar[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Show hidden files[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Sort by[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Sort directories first[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Sort hidden files last[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Sort reversed[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."Speedbar Width[$d]" = ""; - "khotkeysrc"."KFileDialog Settings"."View Style[$d]" = ""; - "khotkeysrc"."KShortcutsDialog Settings"."Dialog Size[$d]" = ""; - "khotkeysrc"."Main"."AlreadyImported" = "defaults,kde32b1,konqueror_gestures_kde321"; - "khotkeysrc"."Main"."Disabled" = false; - "khotkeysrc"."Voice"."Shortcut" = ""; - "khotkeysrc"."WM"."activeBackground[$d]" = ""; - "khotkeysrc"."WM"."activeBlend[$d]" = ""; - "khotkeysrc"."WM"."activeForeground[$d]" = ""; - "khotkeysrc"."WM"."inactiveBackground[$d]" = ""; - "khotkeysrc"."WM"."inactiveBlend[$d]" = ""; - "khotkeysrc"."WM"."inactiveForeground[$d]" = ""; - "kiorc"."Confirmations"."ConfirmDelete" = true; - "krunnerrc"."Plugins"."baloosearchEnabled" = false; - "krunnerrc"."Plugins"."locationsEnabled" = true; - "krunnerrc"."Plugins"."placesEnabled" = true; - "krunnerrc"."Plugins"."recentdocumentsEnabled" = true; - "kwalletrc"."Wallet"."First Use" = false; - "kwinrc"."Desktops"."Id_1" = "d1e5e218-1fd9-4946-aa47-dab2f5aac755"; - "kwinrc"."Desktops"."Id_2" = "389927fc-9c76-4f84-ae0d-011cf76868e6"; - "kwinrc"."Desktops"."Id_3" = "78f9d3d6-d0dd-4fd5-89fc-0157ada3dff5"; - "kwinrc"."Desktops"."Id_4" = "a0a9ef6d-975c-4379-8ca1-265e1938d8d1"; - "kwinrc"."Desktops"."Number" = 4; - "kwinrc"."Desktops"."Rows" = 2; - "kwinrc"."NightColor"."Active" = true; - "kwinrc"."NightColor"."LatitudeFixed" = 52.31865273558926; - "kwinrc"."NightColor"."LongitudeFixed" = 5.44; - "kwinrc"."NightColor"."Mode" = "Location"; - "kwinrc"."NightColor"."NightTemperature" = 1400; - "kwinrc"."Plugins"."wobblywindowsEnabled" = true; - "kwinrc"."Tiling"."padding" = 4; - "kwinrc"."Tiling.5242ae1a-0a81-5d7b-ba61-2512b597a159"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; - "kwinrc"."Tiling.57cc57cb-6089-56ec-afba-00ccd06d5508"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; - "kwinrc"."Xwayland"."Scale" = 1; - "kxkbrc"."Layout"."Options" = "compose:caps"; - "kxkbrc"."Layout"."ResetOldOptions" = true; - "plasma-localerc"."Formats"."LANG" = "en_US.UTF-8"; - "plasma-localerc"."Formats"."LC_ADDRESS" = "nl_NL.UTF-8"; - "plasma-localerc"."Formats"."LC_MEASUREMENT" = "nl_NL.UTF-8"; - "plasma-localerc"."Formats"."LC_MONETARY" = "nl_NL.UTF-8"; - "plasma-localerc"."Formats"."LC_NAME" = "nl_NL.UTF-8"; - "plasma-localerc"."Formats"."LC_NUMERIC" = "nl_NL.UTF-8"; - "plasma-localerc"."Formats"."LC_PAPER" = "nl_NL.UTF-8"; - "plasma-localerc"."Formats"."LC_TELEPHONE" = "nl_NL.UTF-8"; - "plasma-localerc"."Formats"."LC_TIME" = "en_DK.UTF-8"; - "systemsettingsrc"."KFileDialog Settings"."detailViewIconSize" = 16; - }; - }; -} diff --git a/home-manager/hosts/iso/default.nix b/home-manager/hosts/iso/default.nix new file mode 100644 index 0000000..2600642 --- /dev/null +++ b/home-manager/hosts/iso/default.nix @@ -0,0 +1,6 @@ +{...}: { + # You can import other home-manager modules here + imports = [ + ./lillian.nix + ]; +} diff --git a/home-manager/hosts/iso/lillian.nix b/home-manager/hosts/iso/lillian.nix new file mode 100644 index 0000000..1922c62 --- /dev/null +++ b/home-manager/hosts/iso/lillian.nix @@ -0,0 +1,23 @@ +# This is your home-manager configuration file +# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) +{pkgs, ...}: { + # You can import other home-manager modules here + imports = [ + # If you want to use modules your own flake exports (from modules/home-manager): + # outputs.homeManagerModules.example + + # Or modules exported from other flakes (such as nix-colors): + # inputs.nix-colors.homeManagerModules.default + + # You can also split up your configuration and import pieces of it here: + # ./nvim.nix + ../../desktop + ../../shared + ]; + + home.packages = with pkgs; [ + ]; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + home.stateVersion = "25.05"; +} diff --git a/home-manager/hosts/iso_server/default.nix b/home-manager/hosts/iso_server/default.nix new file mode 100644 index 0000000..2600642 --- /dev/null +++ b/home-manager/hosts/iso_server/default.nix @@ -0,0 +1,6 @@ +{...}: { + # You can import other home-manager modules here + imports = [ + ./lillian.nix + ]; +} diff --git a/home-manager/hosts/iso_server/lillian.nix b/home-manager/hosts/iso_server/lillian.nix new file mode 100644 index 0000000..2b344a4 --- /dev/null +++ b/home-manager/hosts/iso_server/lillian.nix @@ -0,0 +1,22 @@ +# This is your home-manager configuration file +# Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) +{pkgs, ...}: { + # You can import other home-manager modules here + imports = [ + # If you want to use modules your own flake exports (from modules/home-manager): + # outputs.homeManagerModules.example + + # Or modules exported from other flakes (such as nix-colors): + # inputs.nix-colors.homeManagerModules.default + + # You can also split up your configuration and import pieces of it here: + # ./nvim.nix + ../../shared + ]; + + home.packages = with pkgs; [ + ]; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + home.stateVersion = "25.05"; +} diff --git a/home-manager/hosts/queen/default.nix b/home-manager/hosts/queen/default.nix new file mode 100644 index 0000000..2600642 --- /dev/null +++ b/home-manager/hosts/queen/default.nix @@ -0,0 +1,6 @@ +{...}: { + # You can import other home-manager modules here + imports = [ + ./lillian.nix + ]; +} diff --git a/home-manager/hosts/queen/id_ed25519.pub b/home-manager/hosts/queen/id_ed25519.pub new file mode 100644 index 0000000..bf8d43c --- /dev/null +++ b/home-manager/hosts/queen/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGtwcWXnwOOI8G3NqAMfTeuSuDk9ly5xqwQDH2Iey3u+ lillian@queen diff --git a/home-manager/hosts/wheatley/wheatley-Lillian.nix b/home-manager/hosts/queen/lillian.nix similarity index 90% rename from home-manager/hosts/wheatley/wheatley-Lillian.nix rename to home-manager/hosts/queen/lillian.nix index 016bbf5..9bd29f7 100644 --- a/home-manager/hosts/wheatley/wheatley-Lillian.nix +++ b/home-manager/hosts/queen/lillian.nix @@ -1,13 +1,6 @@ # This is your home-manager configuration file # Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{...}: { # You can import other home-manager modules here imports = [ # If you want to use modules your own flake exports (from modules/home-manager): @@ -18,7 +11,7 @@ # You can also split up your configuration and import pieces of it here: # ./nvim.nix - ../../package-configs/zsh.nix + ../../shared ]; nixpkgs = { @@ -42,5 +35,5 @@ }; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "24.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/shodan/default.nix b/home-manager/hosts/shodan/default.nix new file mode 100644 index 0000000..2600642 --- /dev/null +++ b/home-manager/hosts/shodan/default.nix @@ -0,0 +1,6 @@ +{...}: { + # You can import other home-manager modules here + imports = [ + ./lillian.nix + ]; +} diff --git a/home-manager/hosts/shodan/id_ed25519.pub b/home-manager/hosts/shodan/id_ed25519.pub new file mode 100644 index 0000000..2f2ee8f --- /dev/null +++ b/home-manager/hosts/shodan/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL279XPFj1nzLDozFclntPh8rOcn3d1B5iJNGds9Ray6 lillian@shodan diff --git a/home-manager/hosts/shodan/shodan-Lillian.nix b/home-manager/hosts/shodan/lillian.nix similarity index 56% rename from home-manager/hosts/shodan/shodan-Lillian.nix rename to home-manager/hosts/shodan/lillian.nix index 4675608..e3e8ffb 100644 --- a/home-manager/hosts/shodan/shodan-Lillian.nix +++ b/home-manager/hosts/shodan/lillian.nix @@ -1,13 +1,6 @@ # This is your home-manager configuration file # Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{pkgs, ...}: { # You can import other home-manager modules here imports = [ # If you want to use modules your own flake exports (from modules/home-manager): @@ -18,7 +11,14 @@ # You can also split up your configuration and import pieces of it here: # ./nvim.nix - ../../package-configs/zsh.nix + + ../../desktop/package-configs/plasma-desktop.nix + ../../desktop/package-configs/firefox.nix + ../../desktop/package-configs/konsole + ../../desktop/package-configs/foot + ../../desktop/package-configs/freetube + ../../desktop/package-configs/vesktop + ../../shared ]; nixpkgs = { # You can add overlays here @@ -47,43 +47,68 @@ home.packages = with pkgs; [ #Chat: - webcord-vencord + vesktop #Gaming: prismlauncher r2modman + ryubing # Multimedia: freetube obs-studio vlc + fcast-receiver + fcast-client # System tools: rage - discover flameshot fzf nextcloud-client nitrokey-app - protonvpn-gui + # protonvpn-gui sops - watchmate + #watchmate qbittorrent zsh + # Theming: + catppuccin-cursors + (catppuccin-kde.override { + flavour = ["macchiato"]; + accents = ["mauve"]; + }) + catppuccin-plymouth + catppuccin-sddm-corners + # Web browsing: - librewolf + firefox ungoogled-chromium ]; + programs = { + # # Automount services for user + # programs.bashmount.enable = true; + # services.udiskie = { + # enable = true; + # automount = true; + # notify = false; + # tray = "never"; + # }; - # Enable home-manager and git - programs.home-manager.enable = true; - programs.git = { - enable = true; - userEmail = "git@lillianviolet.dev"; - userName = "Lillian-Violet"; + # Enable home-manager and git + home-manager.enable = true; + git = { + enable = true; + userEmail = "git@lillianviolet.dev"; + userName = "Lillian-Violet"; + signing.format = "ssh"; + }; }; + # Make the kde screenlock not require a password :) + programs.plasma.kscreenlocker.passwordRequired = false; + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "24.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/wheatley/default.nix b/home-manager/hosts/wheatley/default.nix new file mode 100644 index 0000000..2600642 --- /dev/null +++ b/home-manager/hosts/wheatley/default.nix @@ -0,0 +1,6 @@ +{...}: { + # You can import other home-manager modules here + imports = [ + ./lillian.nix + ]; +} diff --git a/home-manager/hosts/wheatley/id_ed25519.pub b/home-manager/hosts/wheatley/id_ed25519.pub new file mode 100644 index 0000000..dbfe237 --- /dev/null +++ b/home-manager/hosts/wheatley/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILxXVL6QAiMLwvUYBtXCbkHEh6ENgaEO/rkZWSPJrjLJ lillian@wheatley diff --git a/home-manager/hosts/queen/queen-Lillian.nix b/home-manager/hosts/wheatley/lillian.nix similarity index 90% rename from home-manager/hosts/queen/queen-Lillian.nix rename to home-manager/hosts/wheatley/lillian.nix index 016bbf5..9bd29f7 100644 --- a/home-manager/hosts/queen/queen-Lillian.nix +++ b/home-manager/hosts/wheatley/lillian.nix @@ -1,13 +1,6 @@ # This is your home-manager configuration file # Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{...}: { # You can import other home-manager modules here imports = [ # If you want to use modules your own flake exports (from modules/home-manager): @@ -18,7 +11,7 @@ # You can also split up your configuration and import pieces of it here: # ./nvim.nix - ../../package-configs/zsh.nix + ../../shared ]; nixpkgs = { @@ -42,5 +35,5 @@ }; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "24.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/package-configs/zsh.nix b/home-manager/package-configs/zsh.nix deleted file mode 100644 index e86be66..0000000 --- a/home-manager/package-configs/zsh.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { - # Enable starship - programs.starship = { - enable = true; - }; - - programs.zsh = { - enable = true; - plugins = [ - { - name = "zsh-nix-shell"; - file = "nix-shell.plugin.zsh"; - src = pkgs.fetchFromGitHub { - owner = "chisui"; - repo = "zsh-nix-shell"; - rev = "v0.8.0"; - sha256 = "sha256-Z6EYQdasvpl1P78poj9efnnLj7QQg13Me8x1Ryyw+dM="; - }; - } - ]; - enableAutosuggestions = true; - enableCompletion = true; - historySubstringSearch.enable = true; - syntaxHighlighting.enable = true; - #zsh-abbr.enable = true; - oh-my-zsh = { - enable = true; - plugins = [ - "git" - "adb" - "battery" - "branch" - "coffee" - "colored-man-pages" - "colorize" - "command-not-found" - "common-aliases" - "compleat" - "composer" - "copypath" - "copybuffer" - "copyfile" - "cp" - "dirhistory" - "dirpersist" - "docker" - "docker-compose" - "extract" - "fancy-ctrl-z" - "fastfile" - "frontend-search" - "git-auto-fetch" - "git-escape-magic" - "git-extras" - "git-flow" - "github" - "gitignore" - "gnu-utils" - "gpg-agent" - "history" - "history-substring-search" - "isodate" - "jsontools" - "keychain" - "man" - "nanoc" - "pip" - "pipenv" - "pyenv" - "python" - "rsync" - "rvm" - "screen" - "sdk" - "sfdx" - "shell-proxy" - "sudo" - "systemadmin" - "systemd" - "themes" - "urltools" - "web-search" - "zsh-interactive-cd" - "zsh-navigation-tools" - ]; - theme = "jtriley"; - }; - }; -} diff --git a/home-manager/shared/background.jpg b/home-manager/shared/background.jpg new file mode 100644 index 0000000..2ad658c Binary files /dev/null and b/home-manager/shared/background.jpg differ diff --git a/home-manager/shared/default.nix b/home-manager/shared/default.nix new file mode 100644 index 0000000..5889b96 --- /dev/null +++ b/home-manager/shared/default.nix @@ -0,0 +1,89 @@ +{ + pkgs, + osConfig, + ... +}: { + imports = [ + ./ssh + ./shell/helix + ./shell/zellij + ./shell/zsh.nix + ./shell/starship.nix + ./shell/eza.nix + ./shell/hyfetch.nix + ]; + + home = { + username = "lillian"; + homeDirectory = "/home/lillian"; + file."id_ed25519.pub" = { + source = ../hosts/${osConfig.networking.hostName}/id_ed25519.pub; + target = ".ssh/id_ed25519.pub"; + force = true; + }; + + packages = with pkgs; [ + # System tools: + vscode-langservers-extracted + sops + zsh + bat + btop + broot + lazygit + navi + nil + gh + ]; + }; + + catppuccin = { + flavor = "macchiato"; + btop.enable = true; + cache.enable = true; + chromium.enable = true; + freetube.enable = true; + freetube.flavor = "macchiato"; + }; + programs = { + navi.enable = true; + yazi = { + enable = true; + # package = pkgs.yazi.override { + # _7zz = pkgs._7zz.override {useUasm = true;}; + # }; + }; + }; + # stylix.enable = true; + # qt.platformTheme.name = lib.mkForce "kvantum"; + # qt.style.name = lib.mkForce "kvantum"; + + # stylix = { + # enable = true; + # autoEnable = true; + # base16Scheme = { + # scheme = "Catppuccin Macchiato"; + # author = "https://github.com/catppuccin/catppuccin"; + # base00 = "24273a"; + # base01 = "1e2030"; + # base02 = "363a4f"; + # base03 = "494d64"; + # base04 = "5b6078"; + # base05 = "cad3f5"; + # base06 = "f4dbd6"; + # base07 = "b7bdf8"; + # base08 = "ed8796"; + # base09 = "f5a97f"; + # base0A = "eed49f"; + # base0B = "a6da95"; + # base0C = "8bd5ca"; + # base0D = "8aadf4"; + # base0E = "c6a0f6"; + # base0F = "f0c6c6"; + # }; + # image = ./background.jpg; + # cursor.package = pkgs.catppuccin-cursors; + # cursor.name = "catppuccin-macchiato-mauve-cursors"; + # cursor.size = 16; + # }; +} diff --git a/home-manager/shared/kde-connect-commands.json b/home-manager/shared/kde-connect-commands.json new file mode 100644 index 0000000..ebe234e --- /dev/null +++ b/home-manager/shared/kde-connect-commands.json @@ -0,0 +1,50 @@ +[ + { + "command": "systemctl poweroff", + "name": "shutdown" + }, + { + "command": "systemctl reboot", + "name": "reboot" + }, + { + "command": "systemctl suspend", + "name": "suspend" + }, + { + "command": "systemctl hibernate", + "name": "hibernate" + }, + { + "command": "loginctl lock-session", + "name": "lock" + }, + { + "command": "loginctl unlock-session", + "name": "unlock" + }, + { + "command": "qdbus org.kde.kglobalaccel /component/kmix invokeShortcut \"mute\"", + "name": "mute" + }, + { + "command": "qdbus org.kde.kglobalaccel /component/kmix invokeShortcut \"mic_mute\"", + "name": "mute mic" + }, + { + "command": "file=/tmp/$(hostname)_$(date \"+%Y%m%d_%H%M%S\").png; spectacle -bo \"${file}\" && while ! [ -f \"${file}\" ]; do sleep 0.5; done && kdeconnect-cli -d $(kdeconnect-cli -a --id-only) --share \"${file}\"", + "name": "screenshot to phone" + }, + { + "command": "file=\"$HOME/Images/WebcamImage_$(date \"+%Y%m%d_%H%M%S\").jpg\"; ffmpeg -f video4linux2 -s 1280x720 -i /dev/video0 -ss 0:0:2 -frames 1 \"${file}\" && kdeconnect-cli -d $(kdeconnect-cli -a --id-only) --share \"${file}\"", + "name": "webcam to phone" + }, + { + "command": "bluetoothctl connect 38:18:4C:11:56:99", + "name": "connect headset" + }, + { + "command": "bluetoothctl disconnect 38:18:4C:11:56:99", + "name": "disconnect headset" + } +] \ No newline at end of file diff --git a/home-manager/shared/shell/bat.nix b/home-manager/shared/shell/bat.nix new file mode 100644 index 0000000..8658a54 --- /dev/null +++ b/home-manager/shared/shell/bat.nix @@ -0,0 +1,7 @@ +{pkgs, ...}: { + programs.bat = { + enable = true; + extraPackages = with pkgs.bat-extras; [batdiff batman batgrep batwatch]; + # catppuccin.enable = true; + }; +} diff --git a/home-manager/shared/shell/eza.nix b/home-manager/shared/shell/eza.nix new file mode 100644 index 0000000..df2968b --- /dev/null +++ b/home-manager/shared/shell/eza.nix @@ -0,0 +1,7 @@ +{...}: { + programs.eza = { + enable = true; + enableZshIntegration = true; + git = true; + }; +} diff --git a/home-manager/shared/shell/helix/default.nix b/home-manager/shared/shell/helix/default.nix new file mode 100644 index 0000000..249254b --- /dev/null +++ b/home-manager/shared/shell/helix/default.nix @@ -0,0 +1,216 @@ +{pkgs, ...}: let + yazi = + pkgs.writeText "open_in_helix_from_yazi.zsh" + '' + #! ~/.nix-profile/bin/zsh + files=(''${(fqq)"$( yazi --chooser-file=/dev/stdout | cat )"}) + zellij action toggle-floating-panes + zellij action write 27 # send escape-key + zellij action write-chars ":open $files" + zellij action write 13 # send enter-key + zellij action toggle-floating-panes + zellij action close-pane + ''; + jupyter = + pkgs.writeText "run_jupyter_from_helix.zsh" + '' + #! ~/.nix-profile/bin/zsh + is_new() { + new=0; + mkdir -p /tmp/rjh; + if [[ -a "/tmp/rjh/$(pwd | tr \"/\" -).json" ]]; then + new=1 + fi + return $new + } + + is_new && zellij run -f -n "jupyter console" -- direnv exec . jupyter console --kernel="$1" -f="/tmp/rjh/$(pwd | tr \"/\" -).json" --ZMQTerminalInteractiveShell.include_other_output=True --ZMQTerminalInteractiveShell.other_output_prefix=''' && sleep 3 + rm -f /tmp/pipe-rjh + mkfifo /tmp/pipe-rjh + cat > /tmp/pipe-rjh + zellij run -f -n "REPL" -- direnv exec . just send < /tmp/pipe-rjh + rm /tmp/pipe-rjh + + ''; +in { + programs.helix = { + enable = true; + defaultEditor = true; + + settings = { + # theme = "catppuccin_macchiato"; # Don't need this because the module themes it for us + keys.normal.backspace = { + b = ":sh zellij run -f -n 'build code' -- direnv exec . just build"; + r = ":sh zellij run -f -n 'run code' -- direnv exec . just run"; + t = ":sh zellij run -f -n 'test code' -- direnv exec . just test"; + g = ":sh zellij run -fc -n 'lazygit' -- lazygit"; + f = ":sh zellij run --floating -n 'yazi picker' -- zsh ~/.config/helix/open_in_helix_from_yazi.zsh "; + j = ":pipe-to just jupyter"; + }; + editor = { + auto-save = { + focus-lost = true; + after-delay.enable = true; + after-delay.timeout = 3000; + }; + line-number = "relative"; + lsp.display-messages = true; + lsp.display-inlay-hints = true; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + cursorline = true; + bufferline = "always"; + color-modes = true; + soft-wrap = { + enable = true; + max-wrap = 25; + wrap-indicator = ""; + }; + }; + }; + languages = { + language = [ + { + name = "python"; + language-id = "python"; + auto-format = true; + file-types = ["py"]; + language-servers = ["ruff" "scls" "pylsp"]; + } + { + name = "typst"; + language-id = "typst"; + auto-format = false; + file-types = ["typ"]; + language-servers = ["typst-lsp" "scls"]; + } + { + name = "rust"; + language-id = "rust"; + auto-format = true; + file-types = ["rs"]; + roots = ["Cargo.lock"]; + language-servers = ["rust-analyzer" "scls"]; + } + { + name = "stub"; + scope = "text.stub"; + file-types = []; + shebangs = []; + roots = []; + auto-format = false; + language-servers = ["scls"]; + } + { + name = "nix"; + language-id = "nix"; + auto-format = true; + file-types = ["nix"]; + roots = ["flake.lock" "flake.nix"]; + language-servers = ["nil" "scls"]; + formatter = { + command = "alejandra"; + args = ["-q"]; + }; + } + { + name = "html"; + language-id = "html"; + auto-format = true; + file-types = ["htm" "html"]; + language-servers = ["vscode-html-language-server" "vscode-eslint-language-server"]; + } + { + name = "css"; + language-id = "css"; + auto-format = true; + file-types = ["css"]; + language-servers = ["vscode-css-language-server" "vscode-eslint-language-server"]; + } + { + name = "json"; + language-id = "json"; + auto-format = true; + file-types = ["json"]; + language-servers = ["vscode-json-language-server" "vscode-eslint-language-server"]; + } + ]; + language-server = { + vscode-html-language-server = { + command = "vscode-html-language-server"; + }; + vscode-css-language-server = { + command = "vscode-css-language-server"; + }; + vscode-eslint-language-server = { + command = "vscode-eslint-language-server"; + }; + vscode-json-language-server = { + command = "vscode-json-language-server"; + }; + pylsp = { + config.pylsp.plugins = { + flake8 = {enabled = false;}; + autopep8 = {enabled = false;}; + mccabe = {enabled = false;}; + pycodestyle = {enabled = false;}; + pyflakes = {enabled = false;}; + pylint = {enabled = false;}; + yapf = {enabled = false;}; + ruff = { + enabled = true; + select = ["E" "F" "UP" "B" "SIM" "I" "PD" "NPY" "PERF" "FURB" "DOC" "TRY" "W" "R" "PL" "TCH" "Q" "PT" "ICN" "C4" "COM" "FBT" "S" "N"]; + ignore = ["F401"]; + lineLength = 120; + }; + }; + }; + ruff = { + command = "ruff-lsp"; + }; + typst-lsp = { + command = "typst-lsp"; + }; + rust-analyzer = { + command = "rust-analyzer"; + }; + nil = { + command = "nil"; + }; + scls = { + command = "simple-completion-language-server"; + config = { + max_completion_items = 20; + snippets_first = true; + feature_words = true; + feature_snippets = true; + feature_unicode_input = true; + feature_paths = true; + }; + }; + }; + }; + }; + home.file = { + "helix" = { + source = ./snippets.toml; + target = ".config/helix/external-snippets.toml"; + }; + }; + + home.file = { + "yazi" = { + source = "${yazi}"; + target = ".config/helix/open_in_helix_from_yazi.zsh"; + }; + }; + home.file = { + "jupyter" = { + source = "${jupyter}"; + target = ".config/helix/run_jupyter_from_helix.zsh"; + }; + }; +} diff --git a/home-manager/shared/shell/helix/helix.nix b/home-manager/shared/shell/helix/helix.nix new file mode 100644 index 0000000..bbadd82 --- /dev/null +++ b/home-manager/shared/shell/helix/helix.nix @@ -0,0 +1,46 @@ +{ + fetchzip, + lib, + rustPlatform, + git, + installShellFiles, +}: +rustPlatform.buildRustPackage rec { + pname = "helix"; + version = "25.01.1"; + + # This release tarball includes source code for the tree-sitter grammars, + # which is not ordinarily part of the repository. + src = fetchzip { + url = "https://github.com/helix-editor/helix/releases/download/${version}/helix-${version}-source.tar.xz"; + hash = ""; + stripRoot = false; + }; + + useFetchCargoVendor = true; + cargoHash = ""; + + nativeBuildInputs = [git installShellFiles]; + + env.HELIX_DEFAULT_RUNTIME = "${placeholder "out"}/lib/runtime"; + + postInstall = '' + # not needed at runtime + rm -r runtime/grammars/sources + + mkdir -p $out/lib + cp -r runtime $out/lib + installShellCompletion contrib/completion/hx.{bash,fish,zsh} + mkdir -p $out/share/{applications,icons/hicolor/256x256/apps} + cp contrib/Helix.desktop $out/share/applications + cp contrib/helix.png $out/share/icons/hicolor/256x256/apps + ''; + + meta = with lib; { + description = "Post-modern modal text editor"; + homepage = "https://helix-editor.com"; + license = licenses.mpl20; + mainProgram = "hx"; + maintainers = with maintainers; [danth yusdacra zowoq]; + }; +} diff --git a/home-manager/shared/shell/helix/snippets.toml b/home-manager/shared/shell/helix/snippets.toml new file mode 100644 index 0000000..8ebea98 --- /dev/null +++ b/home-manager/shared/shell/helix/snippets.toml @@ -0,0 +1,3 @@ +[[sources]] # list of sources to load +name = "friendly-snippets" # optional name shown on snippet description +git = "https://github.com/rafamadriz/friendly-snippets.git" # git repo with snippets collections \ No newline at end of file diff --git a/home-manager/shared/shell/hyfetch.nix b/home-manager/shared/shell/hyfetch.nix new file mode 100644 index 0000000..774a3d7 --- /dev/null +++ b/home-manager/shared/shell/hyfetch.nix @@ -0,0 +1,15 @@ +{...}: { + programs.hyfetch = { + enable = true; + settings = { + preset = "transgender"; + mode = "rgb"; + light_dark = "dark"; + lightness = 0.65; + color_align = { + mode = "horizontal"; + }; + backend = "neofetch"; + }; + }; +} diff --git a/home-manager/shared/shell/starship.nix b/home-manager/shared/shell/starship.nix new file mode 100644 index 0000000..90dda44 --- /dev/null +++ b/home-manager/shared/shell/starship.nix @@ -0,0 +1,49 @@ +{ + lib, + pkgs, + ... +}: { + programs.starship = let + flavor = "macchiato"; # One of `latte`, `frappe`, `macchiato`, or `mocha` + in { + enable = true; + settings = + { + add_newline = true; + format = lib.concatStrings [ + "$sudo" + "$all" + ]; + character.success_symbol = "[➜](bold purple)"; + package.disabled = true; + sudo = { + symbol = "witch "; + style = "bold blue"; + format = "[$symbol]($style)"; + disabled = false; + }; + hostname = { + ssh_only = false; + format = "[$hostname](bold yellow)[$ssh_symbol](bold blue):"; + trim_at = ""; + disabled = false; + }; + username = { + show_always = true; + format = "[$user]($style)@"; + }; + git_branch.style = "bold blue"; + directory.style = "bold blue"; + direnv.disabled = false; + } + // builtins.fromTOML (builtins.readFile + (pkgs.fetchFromGitHub + { + owner = "catppuccin"; + repo = "starship"; + rev = "5629d23"; # Replace with the latest commit hash + sha256 = "sha256-nsRuxQFKbQkyEI4TXgvAjcroVdG+heKX5Pauq/4Ota0="; + } + + /palettes/${flavor}.toml)); + }; +} diff --git a/home-manager/shared/shell/zellij/default.nix b/home-manager/shared/shell/zellij/default.nix new file mode 100644 index 0000000..d8bebaf --- /dev/null +++ b/home-manager/shared/shell/zellij/default.nix @@ -0,0 +1,226 @@ +{ + pkgs, + inputs, + ... +}: let + layout = + pkgs.writeText "default.kdl" + '' + layout { + tab { + pane + } + + swap_tiled_layout name="vertical" { + tab max_panes=5 { + pane split_direction="vertical" { + pane + pane { children; } + } + } + tab max_panes=8 { + pane split_direction="vertical" { + pane { children; } + pane { pane; pane; pane; pane; } + } + } + tab max_panes=12 { + pane split_direction="vertical" { + pane { children; } + pane { pane; pane; pane; pane; } + pane { pane; pane; pane; pane; } + } + } + } + + swap_tiled_layout name="horizontal" { + tab max_panes=5 { + pane + pane + } + tab max_panes=8 { + pane { + pane split_direction="vertical" { children; } + pane split_direction="vertical" { pane; pane; pane; pane; } + } + } + tab max_panes=12 { + pane { + pane split_direction="vertical" { children; } + pane split_direction="vertical" { pane; pane; pane; pane; } + pane split_direction="vertical" { pane; pane; pane; pane; } + } + } + } + + default_tab_template { + pane size=1 borderless=true { + plugin location="file:${inputs.zjstatus.packages.${pkgs.system}.default}/bin/zjstatus.wasm" { + format_left "#[bg=#1D1D2E,fg=#C9D2F5,bold] {session} {mode} {tabs}" + format_right "#[bg=#C9D2F5,fg=#1D1D2E]#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#C9D2F5,fg=#1D1D2E,bold]{datetime}#[bg=#1D1D2E,fg=#C9D2F5]" + + mode_locked "#[fg=magenta,bold] {name} " + mode_normal "#[fg=green,bold] {name} " + mode_resize "#[fg=orange,bold] {name} " + mode_default_to_mode "resize" + + tab_normal "#[bg=#C9D2F5,fg=#1D1D2E]#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#C9D2F5,fg=#1D1D2E,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#1D1D2E,fg=#C9D2F5]" + tab_active "#[bg=#A6DA95,fg=#1D1D2E]#[bg=#A6DA95,fg=#A6DA95]#[bg=#A6DA95,fg=#1D1D2E,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#A6DA95,fg=#A6DA95]#[bg=#1D1D2E,fg=#A6DA95]" + + tab_sync_indicator " " + tab_fullscreen_indicator "□ " + tab_floating_indicator "󰉈 " + + datetime "#[bg=#C9D2F5,fg=#1D1D2E,bold]{format} " + datetime_format "%Y-%m-%d %H:%M" + datetime_timezone "Europe/Amsterdam" + } + } + children + pane size=2 borderless=true { + plugin location="status-bar" + } + } + } + ''; + helix_zellij = + pkgs.writeText "helix.kdl" + '' + layout { + tab { + pane { + command "hx" + args "." + } + pane split_direction="vertical" size="20%" {} + } + swap_tiled_layout name="vertical" { + tab max_panes=5 { + pane split_direction="vertical" { + pane + pane { children; } + } + } + tab max_panes=8 { + pane split_direction="vertical" { + pane { children; } + pane { pane; pane; pane; pane; } + } + } + tab max_panes=12 { + pane split_direction="vertical" { + pane { children; } + pane { pane; pane; pane; pane; } + pane { pane; pane; pane; pane; } + } + } + } + + swap_tiled_layout name="horizontal" { + tab max_panes=5 { + pane + pane + } + tab max_panes=8 { + pane { + pane split_direction="vertical" { children; } + pane split_direction="vertical" { pane; pane; pane; pane; } + } + } + tab max_panes=12 { + pane { + pane split_direction="vertical" { children; } + pane split_direction="vertical" { pane; pane; pane; pane; } + pane split_direction="vertical" { pane; pane; pane; pane; } + } + } + } + + default_tab_template { + pane size=1 borderless=true { + plugin location="file:${inputs.zjstatus.packages.${pkgs.system}.default}/bin/zjstatus.wasm" { + format_left "#[bg=#1D1D2E,fg=#C9D2F5,bold] {session} {mode} {tabs}" + format_right "#[bg=#C9D2F5,fg=#1D1D2E]#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#C9D2F5,fg=#1D1D2E,bold]{datetime}#[bg=#1D1D2E,fg=#C9D2F5]" + + mode_locked "#[fg=magenta,bold] {name} " + mode_normal "#[fg=green,bold] {name} " + mode_resize "#[fg=orange,bold] {name} " + mode_default_to_mode "resize" + + tab_normal "#[bg=#C9D2F5,fg=#1D1D2E]#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#C9D2F5,fg=#1D1D2E,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#C9D2F5,fg=#C9D2F5]#[bg=#1D1D2E,fg=#C9D2F5]" + tab_active "#[bg=#A6DA95,fg=#1D1D2E]#[bg=#A6DA95,fg=#A6DA95]#[bg=#A6DA95,fg=#1D1D2E,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#A6DA95,fg=#A6DA95]#[bg=#1D1D2E,fg=#A6DA95]" + + tab_sync_indicator " " + tab_fullscreen_indicator "□ " + tab_floating_indicator "󰉈 " + + datetime "#[bg=#C9D2F5,fg=#1D1D2E,bold]{format} " + datetime_format "%Y-%m-%d %H:%M" + datetime_timezone "Europe/Amsterdam" + } + } + children + pane size=2 borderless=true { + plugin location="status-bar" + } + } + } + ''; +in { + programs.zellij = { + # This autostarts zellij on zsh start + # TODO find specific settings for vscode to avoid + enable = true; + enableZshIntegration = true; + settings = { + session_serialization = true; + # theme = "catppuccin-macchiato"; + + themes = { + catppuccin-mocha = { + bg = "#585b70"; + fg = "#cdd6f4"; + red = "#f38ba8"; + green = "#a6e3a1"; + blue = "#89b4fa"; + yellow = "#f9e2af"; + magenta = "#f5c2e7"; + orange = "#fab387"; + cyan = "#89dceb"; + black = "#181825"; + white = "#cdd6f4"; + }; + catppuccin-macchiato = { + bg = "#5b6078"; + fg = "#cad3f5"; + red = "#ed8796"; + green = "#a6da95"; + blue = "#8aadf4"; + yellow = "#eed49f"; + magenta = "#f5bde6"; + orange = "#f5a97f"; + cyan = "#91d7e3"; + black = "#1e2030"; + white = "#cad3f5"; + }; + }; + }; + }; + home.file = { + "layout" = { + source = "${layout}"; + target = ".config/zellij/layouts/default.kdl"; + }; + + "helix_zellij" = { + source = "${helix_zellij}"; + target = ".config/zellij/layouts/helix.kdl"; + }; + }; + #home.file = { + # "config" = { + # source = ./zellij.kdl; + # target = ".config/zellij/config.kdl"; + # }; + #}; +} diff --git a/home-manager/shared/shell/zellij/zellij.kdl b/home-manager/shared/shell/zellij/zellij.kdl new file mode 100644 index 0000000..6f552c3 --- /dev/null +++ b/home-manager/shared/shell/zellij/zellij.kdl @@ -0,0 +1,31 @@ +session_serialization true +theme "catppuccin-macchiato" + +themes { + catppuccin-mocha { + bg "#585b70" // Surface2 + fg "#cdd6f4" + red "#f38ba8" + green "#a6e3a1" + blue "#89b4fa" + yellow "#f9e2af" + magenta "#f5c2e7" // Pink + orange "#fab387" // Peach + cyan "#89dceb" // Sky + black "#181825" // Mantle + white "#cdd6f4" + } + catppuccin-macchiato { + bg "#5b6078" // Surface2 + fg "#cad3f5" + red "#ed8796" + green "#a6da95" + blue "#8aadf4" + yellow "#eed49f" + magenta "#f5bde6" // Pink + orange "#f5a97f" // Peach + cyan "#91d7e3" // Sky + black "#1e2030" // Mantle + white "#cad3f5" + } +} \ No newline at end of file diff --git a/home-manager/shared/shell/zsh.nix b/home-manager/shared/shell/zsh.nix new file mode 100644 index 0000000..7579669 --- /dev/null +++ b/home-manager/shared/shell/zsh.nix @@ -0,0 +1,71 @@ +{pkgs, ...}: { + programs = { + zoxide = { + enable = true; + }; + zsh = { + enable = true; + shellAliases = { + cd = "z"; + code = "codium ./"; + ls = "eza"; + lh = "ls -lah"; + cat = "bat"; + tree = "tre"; + neofetch = "hyfetch"; + shutdown = "shutdown 0"; + reboot = "reboot 0"; + }; + plugins = [ + { + name = "zsh-nix-shell"; + file = "nix-shell.plugin.zsh"; + src = pkgs.fetchFromGitHub { + owner = "chisui"; + repo = "zsh-nix-shell"; + rev = "v0.8.0"; + sha256 = "sha256-Z6EYQdasvpl1P78poj9efnnLj7QQg13Me8x1Ryyw+dM="; + }; + } + { + name = "terraform"; + src = pkgs.fetchFromGitHub { + owner = "macunha1"; + repo = "zsh-terraform"; + rev = "fd1471d3757f8ed13f56c4426f88616111de2a87"; + sha256 = "0z6i9wjjklb4lvr7zjhbphibsyx51psv50gm07mbb0kj9058j6kc"; + }; + } + ]; + autosuggestion.enable = true; + enableCompletion = true; + historySubstringSearch.enable = true; + syntaxHighlighting.enable = true; + #zsh-abbr.enable = true; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "colored-man-pages" + "colorize" + "dirhistory" + "dirpersist" + "history" + "history-substring-search" + "fancy-ctrl-z" + "git-flow" + "isodate" + "z" + "zsh-interactive-cd" + "zsh-navigation-tools" + ]; + }; + # Extra commands that take more complex forms + initContent = '' + eval "$(zoxide init --cmd cd zsh)" + tre() { command tre "$@" -e && source "/tmp/tre_aliases_$USER" 2>/dev/null; } + zhx() { command zellij action new-tab --layout $HOME/.config/zellij/layouts/helix.kdl; } + ''; + }; + }; +} diff --git a/home-manager/shared/ssh/config b/home-manager/shared/ssh/config new file mode 100644 index 0000000..9469604 --- /dev/null +++ b/home-manager/shared/ssh/config @@ -0,0 +1,25 @@ +Host wheatley +HostName 10.0.0.1 +User lillian +Port 22 + +Host GLaDOS +HostName 10.0.0.2 +User lillian +Port 22 + +Host EDI +HostName 10.0.0.3 +User lillian +Port 22 + +Host shodan +HostName 10.0.0.4 +User lillian +Port 22 + +Host queen +HostName gladtherescake.eu +User lillian +Port 22 + diff --git a/home-manager/shared/ssh/default.nix b/home-manager/shared/ssh/default.nix new file mode 100644 index 0000000..aef7a98 --- /dev/null +++ b/home-manager/shared/ssh/default.nix @@ -0,0 +1,7 @@ +{...}: { + home.file."sshconfig" = { + source = ./config; + target = ".config/ssh/config"; + force = true; + }; +} diff --git a/justfile b/justfile new file mode 100644 index 0000000..60f43e4 --- /dev/null +++ b/justfile @@ -0,0 +1,24 @@ +build: + sudo echo "sudo check..." && sudo nixos-rebuild --log-format internal-json -v switch --flake .# --show-trace |& nom --json + +run: + nix-repl -f flake:nixpkgs + +test: + sudo echo "sudo check..." && sudo nix flake check --show-trace --log-format internal-json -v |& nom --json + +update: + nix flake update --log-format internal-json -v |& nom --json && zsh + +clean: + sudo nix-collect-garbage + sudo nix-store --optimise + +setup: + echo "just test" >> ./.git/hooks/pre-commit && chmod +x ./.git/hooks/pre-commit + +push: + git pull + git add * + read -p "Commit message: " -r message && git commit -m "$message" + git push diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix new file mode 100644 index 0000000..c682b92 --- /dev/null +++ b/modules/home-manager/default.nix @@ -0,0 +1,5 @@ +# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module). +# These should be stuff you would like to share with others, not your personal configurations. +{ + # List your module files here +} diff --git a/modules/nixos/contabo/wan/default.nix b/modules/nixos/contabo/wan/default.nix new file mode 100644 index 0000000..e12ddeb --- /dev/null +++ b/modules/nixos/contabo/wan/default.nix @@ -0,0 +1,65 @@ +{ + lib, + config, + ... +}: +with lib; let + cfg = config.modules.contabo.wan; +in { + options.modules.contabo.wan = { + enable = mkEnableOption "Enable Contabo Cloud WAN interface configuration"; + + macAddress = mkOption { + type = types.str; + description = "MAC Address of the WAN interface"; + }; + + ipAddresses = mkOption { + type = types.listOf types.str; + description = "List of IP Addresses on the WAN interface"; + }; + }; + + config = mkIf cfg.enable { + systemd.network.networks."20-wan" = { + matchConfig = { + MACAddress = cfg.macAddress; + }; + address = cfg.ipAddresses; + routes = [ + {routeConfig.Gateway = "fe80::1";} + # {routeConfig = {Destination = "62.171.160.1";};} + # { + # routeConfig = { + # Gateway = "62.171.160.1"; + # GatewayOnLink = true; + # }; + # } + # { + # routeConfig = { + # Destination = "172.16.0.0/12"; + # Type = "unreachable"; + # }; + # } + # { + # routeConfig = { + # Destination = "192.168.0.0/16"; + # Type = "unreachable"; + # }; + # } + # { + # routeConfig = { + # Destination = "10.0.0.0/8"; + # Type = "unreachable"; + # }; + # } + # { + # routeConfig = { + # Destination = "fc00::/7"; + # Type = "unreachable"; + # }; + # } + ]; + }; + }; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix new file mode 100644 index 0000000..4be86f1 --- /dev/null +++ b/modules/nixos/default.nix @@ -0,0 +1,5 @@ +# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module). +# These should be stuff you would like to share with others, not your personal configurations. +{ + vpn-ip = import ./vpn-ip; +} diff --git a/modules/nixos/vpn-ip/default.nix b/modules/nixos/vpn-ip/default.nix new file mode 100644 index 0000000..71d56a6 --- /dev/null +++ b/modules/nixos/vpn-ip/default.nix @@ -0,0 +1,18 @@ +{lib, ...}: +with lib; { + # Declare what settings a user of this "hello.nix" module CAN SET. + options.services.vpn-ip = { + enable = mkOption { + type = types.bool; + default = true; + }; + ip = mkOption { + type = types.str; + default = "0"; + }; + publicKey = mkOption { + type = types.str; + default = ""; + }; + }; +} diff --git a/nixos/board/package-configs/pi-hole/configuration.nix b/nixos/board/package-configs/pi-hole/default.nix similarity index 94% rename from nixos/board/package-configs/pi-hole/configuration.nix rename to nixos/board/package-configs/pi-hole/default.nix index 7ce2716..0596d3b 100644 --- a/nixos/board/package-configs/pi-hole/configuration.nix +++ b/nixos/board/package-configs/pi-hole/default.nix @@ -1,11 +1,4 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{...}: { services.pihole = { enable = true; hostConfig = { diff --git a/nixos/desktop/configuration.nix b/nixos/desktop/configuration.nix deleted file mode 100644 index be24784..0000000 --- a/nixos/desktop/configuration.nix +++ /dev/null @@ -1,170 +0,0 @@ -# This is your system's configuration file. -# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { - imports = [ - # Import locale settings - ../shared/locale/configuration.nix - - # Import shared packages - ../shared/packages/configuration.nix - ]; - nixpkgs = { - # You can add overlays here - overlays = [ - # Add overlays your own flake exports (from overlays and pkgs dir): - outputs.overlays.additions - outputs.overlays.modifications - #outputs.overlays.unstable-packages - - # You can also add overlays exported from other flakes: - # neovim-nightly-overlay.overlays.default - - # Or define it inline, for example: - # (final: prev: { - # hi = final.hello.overrideAttrs (oldAttrs: { - # patches = [ ./change-hello-to-hi.patch ]; - # }); - # }) - ]; - # Configure your nixpkgs instance - config = { - # Disable if you don't want unfree packages - allowUnfree = true; - }; - }; - - nix = { - gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; - }; - # This will add each flake input as a registry - # To make nix3 commands consistent with your flake - registry = lib.mapAttrs (_: value: {flake = value;}) inputs; - - # This will additionally add your inputs to the system's legacy channels - # Making legacy nix commands consistent as well, awesome! - nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; - - settings = { - # Enable flakes and new 'nix' command - experimental-features = "nix-command flakes"; - # Deduplicate and optimize nix store - auto-optimise-store = true; - }; - }; - - environment.systemPackages = with pkgs; [ - # Custom tools - dvd - dvt - - # System tools - direnv - git-filter-repo - pciutils - waydroid - xwaylandvideobridge - yubikey-personalization - zsh - - # KDE/QT - krunner-translator - libsForQt5.discover - libsForQt5.kcalc - libsForQt5.kdepim-addons - libsForQt5.kirigami2 - libsForQt5.kdeconnect-kde - libsForQt5.krunner-ssh - libsForQt5.krunner-symbols - libsForQt5.packagekit-qt - libportal-qt5 - - # User tools - noisetorch - ]; - - programs.direnv = { - enable = true; - }; - - # Enable networking - networking.networkmanager.enable = true; - - programs.steam = { - enable = true; - remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play - dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server - }; - hardware.opengl.driSupport32Bit = true; # Enables support for 32bit libs that steam uses - - # Set your time zone. - time.timeZone = "Europe/Amsterdam"; - - # Enable the X11 windowing system. - services.xserver.enable = true; - - # Enable the KDE Plasma Desktop Environment. - services.xserver.displayManager.sddm.enable = true; - services.xserver.desktopManager.plasma5.enable = true; - services.xserver.displayManager.defaultSession = "plasmawayland"; - programs.kdeconnect.enable = true; - - # Enable flatpak support - services.flatpak.enable = true; - services.packagekit.enable = true; - - # Configure keymap in X11 - services.xserver.xkb = { - layout = "us"; - variant = ""; - options = "terminate:ctrl_alt_bksp,compose:caps_toggle"; - }; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable bluetooth hardware - hardware.bluetooth.enable = true; - - # Enable fwupd daemon and user space client - services.fwupd.enable = true; - - # Enable sound with pipewire. - sound.enable = true; - hardware.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - - programs.noisetorch = { - enable = true; - }; - - programs.zsh = { - enable = true; - }; - - users.users = { - lillian = { - isNormalUser = true; - extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf"]; - shell = pkgs.zsh; - }; - }; - - # Enable completion of system packages by zsh - environment.pathsToLink = ["/share/zsh"]; -} diff --git a/nixos/desktop/default.nix b/nixos/desktop/default.nix new file mode 100644 index 0000000..ac4febd --- /dev/null +++ b/nixos/desktop/default.nix @@ -0,0 +1,227 @@ +# This is your system's configuration file. +# Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) +{ + outputs, + lib, + config, + pkgs, + pkgs-edge, + ... +}: { + imports = [ + # Import shared packages + ../shared + ./package-configs + ]; + nixpkgs = { + # You can add overlays here + overlays = [ + #(final: prev: { + #bcachefs-tools = pkgs-edge.bcachefs-tools; + #}) + # Add overlays your own flake exports (from overlays and pkgs dir): + outputs.overlays.additions + outputs.overlays.modifications + #outputs.overlays.unstable-packages + ]; + config = { + allowUnfree = true; + }; + }; + + environment.systemPackages = + (with pkgs; [ + # Custom tools + dvd + dvt + servo + restart + + # System tools + aha + #bcachefs-tools + clinfo + comma + direnv + exfat + exfatprogs + git-filter-repo + gnupg + pciutils + podman + podman-compose + sbctl + tpm2-tools + tpm2-tss + virtualgl + vulkan-tools + # waydroid + waypipe + wayland-utils + yubikey-personalization + zsh + + # KDE/QT + krunner-translator + kdePackages.discover + kdePackages.filelight + kdePackages.kcalc + kdePackages.kdepim-addons + kdePackages.kirigami + kdePackages.kdeconnect-kde + kdePackages.konsole + # kdePackages.krunner-ssh + # kdePackages.krunner-symbols + kdePackages.packagekit-qt + kdePackages.plasma-pa + kdePackages.sddm-kcm + kdePackages.dolphin-plugins + kdePackages.qtstyleplugin-kvantum + kdePackages.krdc + kdePackages.krfb + kdePackages.kate + kdePackages.xwaylandvideobridge + libportal-qt5 + libportal + + # User tools + noisetorch + qjackctl + wireplumber + #rustdesk + ]) + ++ (with pkgs-edge; [ + freetube + # list of latest packages from nixpkgs master + # Can be used to install latest version of some packages + ]); + sops = { + secrets."nextcloud-password" = { + mode = "0600"; + owner = config.users.users.lillian.name; + path = "/home/lillian/.netrc"; + }; + }; + + programs = { + # Allow executing of anything on the system with a , eg: , python executes python from the nix store even if not in $PATH currently + command-not-found.enable = lib.mkForce false; + # nix-index.enable = true; + # nix-index-database.comma.enable = true; + + direnv = { + enable = true; + }; + + steam = { + enable = true; + remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play + dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server + extest.enable = true; + }; + kdeconnect.enable = true; + + noisetorch = { + enable = true; + }; + }; + + # Enable networking + networking.networkmanager.enable = true; # Enables support for 32bit libs that steam uses + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + services = { + # Enable the X11 windowing system. + xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + displayManager.defaultSession = "plasma"; + desktopManager.plasma6.enable = true; + desktopManager.plasma6.notoPackage = pkgs.atkinson-hyperlegible; + + # Enable flatpak support + flatpak.enable = true; + packagekit.enable = true; + + # Configure keymap in X11 + xserver.xkb = { + layout = "us"; + variant = ""; + options = "terminate:ctrl_alt_bksp,compose:caps_toggle"; + }; + + # Enable CUPS to print documents. + printing.enable = true; + + # Enable fwupd daemon and user space client + fwupd.enable = true; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + wireplumber.enable = true; + }; + + avahi = { + nssmdns4 = true; + enable = true; + ipv4 = true; + ipv6 = true; + publish = { + enable = true; + addresses = true; + workstation = true; + }; + }; + }; + hardware = { + graphics.enable32Bit = true; + + # Enable bluetooth hardware + bluetooth.enable = true; + }; + security.rtkit.enable = true; + + services.pulseaudio.enable = false; + virtualisation.podman = { + enable = true; + dockerCompat = true; + }; + security.tpm2 = { + enable = true; + pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so + tctiEnvironment.enable = true; + }; # TPM2TOOLS_TCTI and TPM2_PKCS11_TCTI env variables + users.users.lillian.extraGroups = ["tss"]; + boot = { + # tss group has access to TPM devices + bootspec.enable = true; + binfmt.emulatedSystems = ["aarch64-linux"]; + #boot.kernelPackages = lib.mkForce pkgs.linuxPackages_latest; + #boot.supportedFilesystems = ["bcachefs"]; + extraModulePackages = with config.boot.kernelPackages; [v4l2loopback.out]; + kernelModules = [ + # Virtual Camera + "v4l2loopback" + # Virtual Microphone, built-in + "snd-aloop" + ]; + + # Set initial kernel module settings + extraModprobeConfig = '' + # exclusive_caps: Skype, Zoom, Teams etc. will only show device when actually streaming + # card_label: Name of virtual camera, how it'll show up in Skype, Zoom, Teams + # https://github.com/umlaeute/v4l2loopback + options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" + ''; + loader.systemd-boot.configurationLimit = 3; + loader.efi.canTouchEfiVariables = true; + }; +} diff --git a/nixos/desktop/package-configs/default.nix b/nixos/desktop/package-configs/default.nix new file mode 100644 index 0000000..372d666 --- /dev/null +++ b/nixos/desktop/package-configs/default.nix @@ -0,0 +1,5 @@ +{...}: { + imports = [ + ./firefox + ]; +} diff --git a/nixos/desktop/package-configs/firefox/default.nix b/nixos/desktop/package-configs/firefox/default.nix new file mode 100644 index 0000000..95b8aad --- /dev/null +++ b/nixos/desktop/package-configs/firefox/default.nix @@ -0,0 +1,186 @@ +{ + config, + pkgs, + ... +}: { + programs.firefox = { + enable = true; + package = pkgs.floorp; + policies = { + DisableTelemetry = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableFirefoxAccounts = true; + DisableAccounts = true; + DisableProfileImport = true; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DontCheckDefaultBrowser = true; + DisplayBookmarksToolbar = "newtab"; + ManualAppUpdateOnly = true; + OfferToSaveLogins = false; + PasswordManagerEnabled = false; + DownloadDirectory = "\${home}/Downloads"; + EnableTrackingProtection = { + Value = true; + Cryptomining = true; + Fingerprinting = true; + }; + ExtensionSettings = { + # "*".installation_mode = "blocked"; # blocks all addons except the ones specified below + # Catppuccin Macchiato - Mauve theme: + "{55750c61-e5f3-4d9a-898d-0643b3093678}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/catppuccin-macchiato-mauve/latest.xpi"; + installation_mode = "force_installed"; + }; + # Sideberry: + #"{3c078156-979c-498b-8990-85f7987dd929}" = { + # install_url = "https://addons.mozilla.org/firefox/downloads/latest/sidebery/latest.xpi"; + # installation_mode = "force_installed"; + #}; + # Privacy Badger: + "jid1-MnnxcxisBPnSXQ@jetpack" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi"; + installation_mode = "force_installed"; + }; + # Bitwarden: + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; + installation_mode = "force_installed"; + }; + # Libredirect: + "7esoorv3@alefvanoon.anonaddy.me" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/libredirect/latest.xpi"; + installation_mode = "force_installed"; + }; + # DarkReader: + "addon@darkreader.org" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi"; + installation_mode = "force_installed"; + }; + # SimpleLogin: + "addon@simplelogin" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/simplelogin/latest.xpi"; + installation_mode = "force_installed"; + }; + # Cookie Auto Delete: + "CookieAutoDelete@kennydo.com" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/cookie-autodelete/latest.xpi"; + installation_mode = "force_installed"; + }; + # Don't fuck with paste: + "DontFuckWithPaste@raim.ist" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/don-t-fuck-with-paste/latest.xpi"; + installation_mode = "force_installed"; + }; + # Firefox pwas: + "firefoxpwa@filips.si" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/pwas-for-firefox/latest.xpi"; + installation_mode = "force_installed"; + }; + # Consent o matic: + "gdpr@cavi.au.dk" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/consent-o-matic/latest.xpi"; + installation_mode = "force_installed"; + }; + # Mailvelope: + "jid1-AQqSMBYb0a8ADg@jetpack" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/mailvelope/latest.xpi"; + installation_mode = "force_installed"; + }; + # KDE connect: + "kde-connect@0xc0dedbad.com" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/kde-connect/latest.xpi"; + installation_mode = "force_installed"; + }; + # Plasma browser integration: + "plasma-browser-integration@kde.org" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/plasma-integration/latest.xpi"; + installation_mode = "force_installed"; + }; + # Shinigami eyes: + "shinigamieyes@shinigamieyes" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/shinigami-eyes/latest.xpi"; + installation_mode = "force_installed"; + }; + # uBlock Origin: + "uBlock0@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + installation_mode = "force_installed"; + }; + # uBlock Scope: + "uBO-Scope@raymondhill.net" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/ubo-scope/latest.xpi"; + installation_mode = "force_installed"; + }; + # Wayback machine: + "wayback_machine@mozilla.org" = { + install_url = "https://addons.mozilla.org/firefox/downloads/file/4047136/wayback_machine_new-3.2.xpi"; + installation_mode = "force_installed"; + }; + # Tree Style Tabs + "treestyletab@piro.sakura.ne.jp" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/tree-style-tab/latest.xpi"; + installation_mode = "force_installed"; + }; + # Adaptive Tab Bar Colour + "ATBC@EasonWong" = { + install_url = "https://addons.mozilla.org/firefox/downloads/latest/Adaptive-Tab-Bar-Colour/latest.xpi"; + installation_mode = "force_installed"; + }; + }; + FirefoxHome = { + Search = true; + TopSites = false; + SponsoredTopSites = false; + Highlights = false; + Pocket = false; + SponsoredPocket = false; + Snippets = false; + }; + FirefoxSuggest = { + WebSuggestions = false; + SponsoredSuggestions = false; + ImproveSuggest = false; + }; + Preferences = { + "browser.compactmode.show" = true; + "browser.uidensity" = 0; + # "browser.newtabpage.activity-stream.feeds.topsites" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.system.showSponsored" = false; + "font.name.serif.x-western" = "Crimson"; + "font.name.sans-serif.x-western" = "Atkinson Hyperlegible"; + "font.name.monospace.x-western" = "FiraCode Nerd Font"; + "font.size.variable.x-western" = 14; + "floorp.browser.sidebar.useIconProvider" = "duckduckgo"; + "floorp.browser.tabbar.settings" = 2; + "floorp.browser.tabs.verticaltab" = true; + "floorp.tabbar.style" = 2; + "floorp.browser.user.interface" = 8; + "signon.rememberSignons" = true; + "browser.ml.chat.enabled" = false; + "browser.ml.chat.shortcuts" = false; + }; + # TODO: switch to ManagedBookmarks as this will be dropped at some point https://mozilla.github.io/policy-templates/#managedbookmarks + # Bookmarks = [ + # { + # Title = "NixOS wiki"; + # Placement = "toolbar"; + # URL = "https://nixos.wiki/"; + # } + # { + # Title = "NixOS options"; + # Placement = "toolbar"; + # URL = "https://nixos.org/manual/nixos/stable/options"; + # } + # { + # Title = "NixOS home-manager options"; + # Placement = "toolbar"; + # URL = "https://nix-community.github.io/home-manager/options.xhtml"; + # } + # ]; + }; + }; +} diff --git a/nixos/hosts/EDI/configuration.nix b/nixos/hosts/EDI/configuration.nix index c7fd076..d52551f 100644 --- a/nixos/hosts/EDI/configuration.nix +++ b/nixos/hosts/EDI/configuration.nix @@ -1,17 +1,13 @@ # This is your system's configuration file. # Use this to configure your system environment (it replaces /etc/nixos/configuration.nix) { - inputs, outputs, lib, - config, pkgs, ... }: { # You can import other NixOS modules here imports = [ - # Import home-manager's NixOS module - inputs.home-manager.nixosModules.home-manager # If you want to use modules your own flake exports (from modules/nixos): # outputs.nixosModules.example @@ -22,47 +18,44 @@ # You can also split up your configuration and import pieces of it here: # ./users.nix - ../../desktop/configuration.nix + outputs.nixosModules.vpn-ip - # Import your generated (nixos-generate-config) hardware configuration - ./hardware-configuration.nix + ../../../disko/EDI ]; - home-manager = { - extraSpecialArgs = {inherit inputs outputs;}; - users = { - # Import your home-manager configuration - lillian = import ../../../home-manager/hosts/EDI/EDI-Lillian.nix; - }; - }; - environment.systemPackages = with pkgs; [ - podman - podman-compose ]; - virtualisation.podman = { - enable = true; - dockerCompat = true; + services.vpn-ip = { + ip = "3"; }; - networking.hostName = "EDI"; + networking = { + hostName = "EDI"; + networkmanager.enable = true; + }; + + hardware.enableAllFirmware = true; + hardware.enableRedistributableFirmware = true; - boot.bootspec.enable = true; - boot.kernelPackages = pkgs.linuxPackages_latest; - boot.supportedFilesystems = ["bcachefs"]; boot = { + # Lanzaboote currently replaces the systemd-boot module. + # This setting is usually set to true in configuration.nix + # generated at installation time. So we force it to false + # for now. loader.systemd-boot.enable = lib.mkForce false; + initrd.systemd.enable = true; + lanzaboote = { enable = true; pkiBundle = "/etc/secureboot"; }; + kernelModules = [ + "iwlmvm" + "iwlwifi" + ]; }; - # Enable bluetooth hardware - hardware.bluetooth.enable = true; - - users.users.lillian.extraGroups = ["docker"]; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "unstable"; + system.stateVersion = "25.05"; } diff --git a/nixos/hosts/EDI/hardware-configuration.nix b/nixos/hosts/EDI/hardware-configuration.nix index ad2bffb..40ca9e0 100644 --- a/nixos/hosts/EDI/hardware-configuration.nix +++ b/nixos/hosts/EDI/hardware-configuration.nix @@ -4,7 +4,6 @@ { config, lib, - pkgs, modulesPath, ... }: { @@ -13,36 +12,29 @@ ]; boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"]; - boot.initrd.kernelModules = []; + boot.initrd.kernelModules = ["dm-snapshot"]; boot.kernelModules = ["kvm-intel"]; boot.extraModulePackages = []; - fileSystems."/" = { - device = "UUID=88cd54d3-b644-4bae-96e9-51d2db3c5628"; - fsType = "bcachefs"; - }; + #fileSystems."/" = + # { device = "UUID=65956905-b7a5-4573-81fe-622c42cabdf5"; + # fsType = "bcachefs"; + # }; - boot.initrd.luks.devices."crypted".device = "/dev/disk/by-uuid/91da75e7-52bc-4a50-9293-7e5e431040e0"; + #fileSystems."/boot" = + # { device = "/dev/disk/by-uuid/3D90-9CF4"; + # fsType = "vfat"; + # }; - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/01B2-909E"; - fsType = "vfat"; - options = ["fmask=0077" "dmask=0077" "defaults"]; - }; - - swapDevices = [ - { - device = "/dev/disk/by-path/pci-0000:71:00.0-nvme-1-part2"; - randomEncryption.enable = true; - } - ]; + #swapDevices = + # [ { device = "/dev/disk/by-uuid/07258619-dbae-4fe9-aa2e-921d85b6a53b"; } + # ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enp0s20f0u9u2c2.useDHCP = lib.mkDefault true; # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; diff --git a/nixos/hosts/EDI/secrets/sops.yaml b/nixos/hosts/EDI/secrets/sops.yaml index 8a2082f..4db54a6 100644 --- a/nixos/hosts/EDI/secrets/sops.yaml +++ b/nixos/hosts/EDI/secrets/sops.yaml @@ -1,4 +1,7 @@ -password: ENC[AES256_GCM,data:4EAU7m0RF3BWnIDdcRFkC+UcwcQ=,iv:s1gF8edUjatry3h/e5ZmBXLOEJO1iX8tiyuanzuJgJY=,tag:cicC8WzOnIhG8xIM09nrTw==,type:str] +lillian-password: ENC[AES256_GCM,data:0mwqnvA+xrDD/m6uQtPbo9MpcFsOoqHE+Cg2gF6xZzNsqM3i/OmvAe7syp+mGBacZ3avoIHowLSWgXUkMcuFPeYa6XRkrX4LhA==,iv:f1kB54k6ZYWKlZ0Zowu8fOD0cf2WvNlX3GSpy1sUMdA=,tag:dsusc45E1BmYsNmiPzNccg==,type:str] +wg-private-key: ENC[AES256_GCM,data:CqXlIN0gKzMrZRJycAf96LUVNw9yCZpHtE8XP+JwV2Ftip46iUksg1uExxQ=,iv:LdcopSz8Hx5hO1M00B8r+C7XViwpjGOpvmoXUHIkFtc=,tag:rbskx98YjcYV1lB8OO2VxQ==,type:str] +nextcloud-password: ENC[AES256_GCM,data:h93FmVY3XZdRZECEzz5ArBPnuRYyp0kJ6UUoxKmWVuVeFVkOzxQ5dGra6R/jZg8ofjhu+WosoDso3S/i,iv:J1K2NMAjv7Y26q91V/f11gNs82/UD6jbrMy0hVh81pw=,tag:/mQFulslQ3Mqabnc0mb1lQ==,type:str] +ssh-private-key: ENC[AES256_GCM,data:AYyOFlqcNrlTnKSewgb8B/XzegkJGB79gUT419n6aYiH0xom+DmxfRqQm46x/fldlSeN8u2mmzisC6xcRt3fnK4+0gN5Ywvr6hQEtKKxu2N6Pj7+tFLvFmbYPFplecyGBs1S092UXL65ozQs8aYbogoXxVTVu6/MuCsks9UO1JQWq5utCAyU8VGc0/Ft4OZN2qUbS+VZ0ONZ0WzBA+s+CFZ1FNKsr4tvltLXf8fgpsiSHLUigS4rojlxm84+w8omE1IwpAOxOa9n9X1EDuPxrQvZ+LvcJcgwqrtU2HVGis1GfytPM6vRAoVdBKX37enXelPBX2z9W7wPtmTxippD7yzcEJOggJ6ETMUessNKm3yBsMzTcojSWYzHo4v3San1I+ZiNxjvykuHmomRhXdzdM/2RsBpev8q2sC9YU4euzjzCQdwfoNqhbqyN/1X2BOkJMceMqw8fD8nLc3mIbczMFNO6ByVocZ+iC9BvaBYeLrFd3gncqGRRCJdBCD5CYiOYcdIAipNGL7NQVhM1tcv,iv:RZKsKCENIKhIWo4aKyDVj9xx0GfdjhYLP0B2Rad2LSM=,tag:XOOxsyGidnKWzgGlUPmvXw==,type:str] sops: kms: [] gcp_kms: [] @@ -14,8 +17,8 @@ sops: eUZ6b09pYlRVWFBuUm1Ua2l6Z0dacW8KeQdAVsxXsDiDMtFA2koSpDsw7Ib63vA0 GE/ubWDwwRc7wMPFGuofIe6TaDSFgtVXza+yo+i4y51+BOpwqxlYYA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-11-04T09:24:15Z" - mac: ENC[AES256_GCM,data:SoNQ2F2hye6l4B29dLOycZYNqdpluRWgsIj0ZJ5aanExBKq8REHyoXU11X+ItZkrHkyNHyDf1cpQSwyL0AMJG6KXn0z//hKuMijOF3AQ5fXgIu4vmutvpvvIQ/7rBxATsFq43QjIWHsSOOfi1HYpBRlDwc/oTCG9G//NzR9MqOo=,iv:uhZuK1wGPUbhby++T2diyleLWvGbFE+1HCuw0y73eTQ=,tag:lkWn+nYkGP0L0HyVjjYhCA==,type:str] + lastmodified: "2025-01-09T23:59:45Z" + mac: ENC[AES256_GCM,data:DQ8uXsVkbzc1JrMDaTGHb9ijRB//6I6GN4bAU1LWnhyxGA2QjYEk5xwEI1950kroXVf1hDTw5fdh+MXvvEcNUL6BZOc4Ecl5lPliZ4aemjhz+O8FCkSbnW2o5JnV4m/rFe9CP6KaoFdr/tgSBVklzaUE4Qdo1DUWCfF7XssXECw=,iv:gb1b569ar5wlc2XMkLXnYfyVp/ZMsLjh9cXM85GrUz0=,tag:MGFgFcF4jIdJxteiFp2n/Q==,type:str] pgp: [] unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.2 diff --git a/nixos/hosts/GLaDOS/configuration.nix b/nixos/hosts/GLaDOS/configuration.nix index d42cb1c..f225830 100644 --- a/nixos/hosts/GLaDOS/configuration.nix +++ b/nixos/hosts/GLaDOS/configuration.nix @@ -3,8 +3,6 @@ { inputs, outputs, - lib, - config, pkgs, ... }: { @@ -12,6 +10,8 @@ imports = [ # Import home-manager's NixOS module inputs.home-manager.nixosModules.home-manager + outputs.nixosModules.vpn-ip + inputs.jovian.nixosModules.jovian # If you want to use modules your own flake exports (from modules/nixos): # outputs.nixosModules.example @@ -22,28 +22,82 @@ # You can also split up your configuration and import pieces of it here: # ./users.nix - ../../desktop/configuration.nix + ../../desktop + + ../../../disko/GLaDOS # Import your generated (nixos-generate-config) hardware configuration ./hardware-configuration.nix ]; - boot.loader.systemd-boot.enable = true; - boot.loader.systemd-boot.configurationLimit = 3; - boot.loader.efi.canTouchEfiVariables = true; - boot.supportedFilesystems = ["bcachefs"]; - boot.kernelPackages = pkgs.linuxPackages_latest; + environment.systemPackages = with pkgs; [ + ]; - home-manager = { - extraSpecialArgs = {inherit inputs outputs;}; - users = { - # Import your home-manager configuration - lillian = import ../../../home-manager/hosts/GLaDOS/GLaDOS-Lillian.nix; - }; + services.vpn-ip = { + ip = "2"; }; networking.hostName = "GLaDOS"; + services.xserver.videoDrivers = ["amdgpu"]; + hardware = { + # Add vulkan support to GPU + graphics.extraPackages = with pkgs; [ + amdvlk + ]; + # For 32 bit applications + graphics.extraPackages32 = with pkgs; [ + driversi686Linux.amdvlk + ]; + }; + programs = { + # gamemode.enable = false; + # gamemode.settings = { + # general = { + # renice = 10; + # }; + + # # Warning: GPU optimisations have the potential to damage hardware + # # gpu = { + # # apply_gpu_optimisations = "accept-responsibility"; + # # gpu_device = 0; + # # amd_performance_level = "high"; + # # }; + + # custom = { + # start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'"; + # end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'"; + # }; + # }; + }; + + jovian = { + steam = { + enable = true; + autoStart = false; + user = "lillian"; + desktopSession = "plasma"; + }; + decky-loader = { + enable = true; + package = pkgs.decky-loader-prerelease; + extraPackages = [pkgs.python3]; + }; + hardware.has.amd.gpu = true; + }; + boot = { + loader.systemd-boot.enable = false; + + binfmt.emulatedSystems = ["aarch64-linux"]; + + lanzaboote = { + enable = true; + pkiBundle = "/var/lib/sbctl"; + }; + }; + + users.users.lillian.extraGroups = ["gamemode"]; + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "unstable"; + system.stateVersion = "25.05"; } diff --git a/nixos/hosts/GLaDOS/hardware-configuration.nix b/nixos/hosts/GLaDOS/hardware-configuration.nix index 3b523fc..7c7fcbd 100644 --- a/nixos/hosts/GLaDOS/hardware-configuration.nix +++ b/nixos/hosts/GLaDOS/hardware-configuration.nix @@ -1,31 +1,34 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + config, + lib, + modulesPath, + ... +}: { + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"]; + boot.initrd.kernelModules = ["dm-snapshot" "amdgpu"]; + boot.kernelModules = []; + boot.extraModulePackages = []; - fileSystems."/" = - { device = "/dev/disk/by-uuid/14883cd2-72b8-4ab3-8cbf-d5dca40e036a"; - fsType = "ext4"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/BA43-C24E"; - fsType = "vfat"; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/cffe625e-1dac-45bd-a744-303baa09affd"; } - ]; + # fileSystems."/" = + # { device = "UUID=166dc8d8-b77f-43fe-8bee-a0fc5b26aeb5"; + # fsType = "bcachefs"; + # }; + # + # fileSystems."/boot" = + # { device = "/dev/disk/by-uuid/743A-083A"; + # fsType = "vfat"; + # }; + # + # swapDevices = + # [ { device = "/dev/disk/by-uuid/3d300fda-35d4-4bdb-ac89-21b0f29b167c"; } + # ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's @@ -33,7 +36,6 @@ # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; # networking.interfaces.enp3s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlan0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; diff --git a/nixos/hosts/GLaDOS/secrets/sops.yaml b/nixos/hosts/GLaDOS/secrets/sops.yaml new file mode 100644 index 0000000..d2521b7 --- /dev/null +++ b/nixos/hosts/GLaDOS/secrets/sops.yaml @@ -0,0 +1,24 @@ +lillian-password: ENC[AES256_GCM,data:aHJCYmnpGIWJMsNZ8aw51Rquuv4F7kgGvfIxHMELuDlEqgjkg+SAhh+UQEpv16F0WVxrYZ/EwxKFMBpfPv9M2NLZC98bav0D9g==,iv:uzYLfmxG46ubmgeFsfW7aqXZbcL+TQw0VdDcklV0/ZI=,tag:Ozcf5qXC7xh0VcsBzhyo2g==,type:str] +wg-private-key: ENC[AES256_GCM,data:em6sci3eefw5TJHpzgTaGGuQp8UuvOmkHRsQltg0TKpMb1Lrcxicb23cQxo=,iv:VEeGmzncHyAgP5toTOwDK6qw0OT4/6Etxh8Zr4uYQD4=,tag:nvse11zMhzukzClx5ub4dw==,type:str] +ssh-private-key: ENC[AES256_GCM,data:YM8GTH6EEXLt1ZC1ZdyLWVJyGUykS0DulTL0QgOFCTztRA+5JoA6Af42MIEMm4sMSatOt9pbGE9BXh5T53uNkx87cS8pfb714N8EKrMTYmtWi2M2TatEM6+qMRpP777GalB3v2HnfTfwhx+TfQ+iSCEo45Unsumzr+/9uZ/b4vYBxbd82UKO1tmlTw3R7aEpesJuJe/I3sAg0ZXTWti0e2MYfFawlSXtgQo382bFnV/mi9JkNx62AUFI6Q0a09V2C3FU4e4qP9jeP+COfCuCjRuaf8eu0VYczy4vVkN5NNBhkuLCZl0xANfqM5tDt8q+meYHmYWq1ceyeZ9OdZhKA7lMJi2K1DgTmgbD356itEtjXb7KF7VWIVnR0Gm+vVHx90Bv6eQp4n2I5mWbCVy8wqiIlacxuH8PO6jAPUM1Q8E+SVJb2HcLPdlURHyyK0fLVWaFhtFH4rwyKAv/2yEO2iNfZd9zFqvX5/JdyUPRCpMKkjxQgZN+raVHok0SwvPfXA9wvRpQyYSD4SUqCYsRcs6JugW8a14bZrvg,iv:L9ACOUFtAxkWsXW+tDKGwKn1ZHYNv7WmBty5krayVu8=,tag:hbrgscOczukqLBU/Y+6aLA==,type:str] +nextcloud-password: ENC[AES256_GCM,data:ClQk7M7BTeIhgWTWsgjTFb0Um8qZ901530dI9xnbs63ZGIni4+bWjLPetOmM3+PPsg33vF6r0xiwu0Ff,iv:jDy8miUoPcua3sraRQWOHWrhNacKEgf6nGsi8PVTYaY=,tag:ldGta+DdUmoajtAE6HLtkw==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLUHlSTzhndDRHOUd1WG41 + Wk9haEVmS3FlcFl5VUxRZUVDaENHcUpsYm04ClBJS3doOXRHUjhsMmIvck5ldy8y + VW9yb2NCRWZhNGNlZWlyRlk4NFJiTTgKLS0tIElLMFdiUU95ejNoUFl4US9DSWU5 + MUZWTVh0dVdMZlRzelJ4WlROUlIyNmcKphNuMN9Wh8h/gvmtUxQWjPKtgjWriLRD + +DpEEVGrmu0RJ8/wUqjxGoL4GzLAlZm4EnKlyUyA0tw8sbLZ2Lnl/w== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-01-01T15:48:15Z" + mac: ENC[AES256_GCM,data:64DmkqcYlLtzL+9WcgvnSOjF25MiZFkbEsgKP/xLrBBvhqqqm4ev9tk8QGoA5NJPHen+GItX7D3lJgfTyjX6LXn6vLFQWemrEP2+A9hZxnwvtdBjSD5dEl6wHGgY4mvqTJupmpv6Gg8zXP1kh5vsO82Un03TcfyPHVVgmfagpOw=,iv:j/6jJjRoiTUfTW2SJ0Ui6dAVQO9Ij8zN2mrKEhIt7fY=,tag:6r/GNnG/lw42KbWgIBoIzQ==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.9.2 diff --git a/nixos/hosts/iso/configuration.nix b/nixos/hosts/iso/configuration.nix new file mode 100644 index 0000000..1c45890 --- /dev/null +++ b/nixos/hosts/iso/configuration.nix @@ -0,0 +1,152 @@ +{ + inputs, + outputs, + lib, + pkgs, + ... +}: { + imports = [ + # If you want to use modules your own flake exports (from modules/home-manager): + # outputs.homeManagerModules.example + # outputs.nixosModules.contabo.wan + inputs.home-manager.nixosModules.home-manager + # Or modules exported from other flakes (such as nix-colors): + # inputs.nix-colors.homeManagerModules.defaults + + # Import shared settings + ../../shared + ]; + + programs.command-not-found.enable = lib.mkForce false; + programs.nix-index.enable = true; + programs.nix-index-database.comma.enable = true; + + boot.tmp.cleanOnBoot = true; + zramSwap.enable = false; + networking.domain = ""; + services.openssh = { + enable = true; + # require public key authentication for better security + settings.PasswordAuthentication = false; + settings.KbdInteractiveAuthentication = false; + }; + + nixpkgs = { + # You can add overlays here + overlays = [ + ]; + # Configure your nixpkgs instance + config = { + # Disable if you don't want unfree packages + allowUnfree = true; + }; + }; + + #Set up sops config, and configure where the keyfile is, then set the mode for the unencrypted keys + sops.defaultSopsFile = ./secrets/sops.yaml; + + services.desktopManager.plasma6.enable = true; + + environment.systemPackages = with pkgs; [ + # Custom tools + dvd + dvt + servo + restart + install-nix + + # System tools + aha + direnv + efitools + git-filter-repo + gnupg + pciutils + sbctl + tpm2-tools + tpm2-tss + waydroid + zsh + + # KDE/QT + krunner-translator + kdePackages.discover + kdePackages.kcalc + kdePackages.kdepim-addons + kdePackages.kirigami + kdePackages.kdeconnect-kde + # kdePackages.krunner-ssh + # kdePackages.krunner-symbols + kdePackages.packagekit-qt + kdePackages.plasma-pa + kdePackages.sddm-kcm + kdePackages.dolphin-plugins + libportal-qt5 + libportal + ]; + + # Enable networking + networking.networkmanager.enable = true; + + # Contabo ipv6 nameservers: "2a02:c207::1:53" "2a02:c207::2:53" + + networking.firewall.enable = true; + + networking.firewall.allowedTCPPorts = [22]; + + programs.kdeconnect.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + options = "terminate:ctrl_alt_bksp,compose:caps_toggle"; + }; + + # Enable bluetooth hardware + hardware.bluetooth.enable = true; + + security.tpm2.enable = true; + security.tpm2.pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so + security.tpm2.tctiEnvironment.enable = true; # TPM2TOOLS_TCTI and TPM2_PKCS11_TCTI env variables + users.users.lillian.extraGroups = ["tss"]; # tss group has access to TPM devices + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + programs.git = { + enable = true; + }; + + programs.direnv = { + enable = true; + }; + + # Enable completion of system packages by zsh + environment.pathsToLink = ["/share/zsh"]; + + # kde power settings do not turn off screen + systemd = { + services.sshd.wantedBy = pkgs.lib.mkForce ["multi-user.target"]; + targets = { + sleep.enable = false; + suspend.enable = false; + hibernate.enable = false; + hybrid-sleep.enable = false; + }; + }; + + home-manager = { + extraSpecialArgs = {inherit inputs outputs;}; + users = { + # Import your home-manager configuration + lillian = import ../../../home-manager/hosts/iso; + }; + }; + + boot.kernelPackages = lib.mkForce pkgs.linuxPackages_latest; + boot.supportedFilesystems = lib.mkForce ["bcachefs" "btrfs" "cifs" "f2fs" "jfs" "ntfs" "reiserfs" "vfat" "xfs"]; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + system.stateVersion = "24.11"; +} diff --git a/nixos/hosts/iso/secrets/sops.yaml b/nixos/hosts/iso/secrets/sops.yaml new file mode 100644 index 0000000..92548c8 --- /dev/null +++ b/nixos/hosts/iso/secrets/sops.yaml @@ -0,0 +1,21 @@ +lillian-password: ENC[AES256_GCM,data:eQzZwGxK9Lw2gc8HDNw57odxPzTH4sa/2O97h3VAghRwLClmCYKT91kxj2F3kQ4iEctBl0GxdS4WoL3H9eE4/CAPffXdTmkdYg==,iv:2ezB4DNHFv5ceJ2gtATV12Azm3vFFDLX1qSSy+cKuMY=,tag:zxb5agUCDpi92bYV7+DmoA==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArbVd5bkxmV2FSNDVCWXN1 + RGxwdVZ5ZEROQTZ1d2ptU1RJc0dTUVlVOTE4CjhjeklubEhwUFgydkFWbDJkcU1U + VnowU29NSG10a3VKbXk3RWNWY0FwZ1EKLS0tIDJYMXhGeXArRnZ1NmQwQ3NqVHdM + dXlaN3dWOUl4Mys2V0x3Z3F6UVU4MVUKEJYpX8XhSNcM+7aUuxnIwrokY0/29Cnh + yz0HAZkaj8FwvnPnafo5jmwVyi6WXECvX5E0NZfjKH4AF5vTu6Wukg== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-03-20T18:17:48Z" + mac: ENC[AES256_GCM,data:3UHIoYPHC6n56CHguOVuoFd9VwCjGiD9VCYy2d5W+4XQEZpjnONX8fhwwWRm42COymz89tmqDmpDp88BnSU8uE14IaCIUoxfCaRiZtjAiHjouua2jr50aUV56pwyan8ZiiOjP8oP1VY/tsv1w0jWI9TjSTHvCdNLR8XEcf6bCrk=,iv:/lBJdkQgwZyiztQ9vSoHgY+WxXJKHFI93dxtOSunHNo=,tag:lLwrSdzoN9CzmyIdLOe5ig==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.8.1 diff --git a/nixos/hosts/iso_server/configuration.nix b/nixos/hosts/iso_server/configuration.nix new file mode 100644 index 0000000..9f0cd35 --- /dev/null +++ b/nixos/hosts/iso_server/configuration.nix @@ -0,0 +1,125 @@ +{ + inputs, + outputs, + lib, + pkgs, + ... +}: { + imports = [ + # If you want to use modules your own flake exports (from modules/home-manager): + # outputs.homeManagerModules.example + # outputs.nixosModules.contabo.wan + inputs.home-manager.nixosModules.home-manager + # Or modules exported from other flakes (such as nix-colors): + # inputs.nix-colors.homeManagerModules.defaults + + # Import shared settings + ../../shared + ]; + + programs.command-not-found.enable = lib.mkForce false; + programs.nix-index.enable = true; + programs.nix-index-database.comma.enable = true; + + boot.tmp.cleanOnBoot = true; + zramSwap.enable = false; + networking.domain = ""; + services.openssh = { + enable = true; + # require public key authentication for better security + settings.PasswordAuthentication = false; + settings.KbdInteractiveAuthentication = false; + }; + + nixpkgs = { + # You can add overlays here + overlays = [ + ]; + # Configure your nixpkgs instance + config = { + # Disable if you don't want unfree packages + allowUnfree = true; + }; + }; + + #Set up sops config, and configure where the keyfile is, then set the mode for the unencrypted keys + sops.defaultSopsFile = ./secrets/sops.yaml; + + environment.systemPackages = with pkgs; [ + # Custom tools + dvd + dvt + servo + restart + install-nix + + # System tools + aha + direnv + efitools + git-filter-repo + gnupg + pciutils + sbctl + tpm2-tools + tpm2-tss + zsh + ]; + + # Contabo ipv6 nameservers: "2a02:c207::1:53" "2a02:c207::2:53" + + networking.firewall.enable = true; + + networking.firewall.allowedTCPPorts = [22]; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + options = "terminate:ctrl_alt_bksp,compose:caps_toggle"; + }; + + security.tpm2.enable = true; + security.tpm2.pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so + security.tpm2.tctiEnvironment.enable = true; # TPM2TOOLS_TCTI and TPM2_PKCS11_TCTI env variables + users.users.lillian.extraGroups = ["tss"]; # tss group has access to TPM devices + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + programs.git = { + enable = true; + }; + + programs.direnv = { + enable = true; + }; + + # Enable completion of system packages by zsh + environment.pathsToLink = ["/share/zsh"]; + + # kde power settings do not turn off screen + systemd = { + services.sshd.wantedBy = pkgs.lib.mkForce ["multi-user.target"]; + targets = { + sleep.enable = false; + suspend.enable = false; + hibernate.enable = false; + hybrid-sleep.enable = false; + }; + }; + + home-manager = { + extraSpecialArgs = {inherit inputs outputs;}; + users = { + # Import your home-manager configuration + lillian = import ../../../home-manager/hosts/iso_server; + }; + }; + + boot.kernelPackages = lib.mkForce pkgs.linuxPackages_latest; + boot.supportedFilesystems = lib.mkForce ["bcachefs" "btrfs" "cifs" "f2fs" "jfs" "ntfs" "reiserfs" "vfat" "xfs"]; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + system.stateVersion = "unstable"; +} diff --git a/nixos/hosts/iso_server/secrets/sops.yaml b/nixos/hosts/iso_server/secrets/sops.yaml new file mode 100644 index 0000000..779cbb4 --- /dev/null +++ b/nixos/hosts/iso_server/secrets/sops.yaml @@ -0,0 +1,21 @@ +lillian-password: ENC[AES256_GCM,data:kDP9LpmtLR2UEjCY0kgcdHmYAYLipOd/9I3NuiRHzLDhCX44M5QGfbQrle7bi9EOVD4eNB3uNtk+oBClr7cc21E9YtMIp5vg2g==,iv:EWB/hMRtWZfEn48Qmjo/V30BtSLrOsmo/cuEKnfW6Wk=,tag:vjiOkVga18BLKjf3GnZM2Q==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrTFI5MDRiUkp1TGF2eHlG + VmwyVEdXQVR4dFJaZTNxeTRXQXZNbkN6T1dRClZyMU1LbFFmY0RwK1pmNDNWY0hW + bUJGYXI5ZEFIdDhUak1kMzF1WTE2SGsKLS0tIHpUQUVEWml1a251RmhQSGt1dm5E + a1hsN3NaVzNvRXlwcEpPd0RVQndiZk0KJ7/cnWzw1zSmgn+bOJn4Y1xRHqlk+zRM + Om0p+V9tUCCS5yGzacp8pFCa2DQNj0OVdyB2ZpjAiOzK7vWY8EU5XA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-05-03T14:29:41Z" + mac: ENC[AES256_GCM,data:ezq0K/lFSNSog0UzvsVNNpCewzBKmKJdsXlkWzZ8nhXN7/1lHeoONQnoEooNhNhpmFF1yCvcArZ6Suy7+R4UuybKBky+6r62fyz0BKrAO9y0Xb/HFiAJPAYwP7/5sRFq/jDdtMAbjLxJhoH128md5LoHXhUUc3sws/SIQvdan4I=,iv:/IxAO3rw4lc8ZzDWUtfJb3siGCtzCxid5NfhEnad01Q=,tag:IRg7LV7hnFmWl5WhWD2ZSg==,type:str] + pgp: [] + unencrypted_suffix: _unencrypted + version: 3.8.1 diff --git a/nixos/hosts/queen/configuration.nix b/nixos/hosts/queen/configuration.nix index 2a20f4f..10ff532 100644 --- a/nixos/hosts/queen/configuration.nix +++ b/nixos/hosts/queen/configuration.nix @@ -2,97 +2,59 @@ inputs, outputs, lib, - config, pkgs, - nixpkgs-stable, ... }: { imports = [ # If you want to use modules your own flake exports (from modules/home-manager): # outputs.homeManagerModules.example + # outputs.nixosModules.contabo.wan inputs.home-manager.nixosModules.home-manager # Or modules exported from other flakes (such as nix-colors): # inputs.nix-colors.homeManagerModules.default + outputs.nixosModules.vpn-ip + # You can also split up your configuration and import pieces of it here: # ./nvim.nix ./hardware-configuration.nix - # Import locale settings - ../../shared/locale/configuration.nix + # Import shared settings + ../../shared - # Import shared packages - ../../shared/packages/configuration.nix + # Import server settings + ../../server - #../../server/package-configs/akkoma/configuration.nix - ../../server/package-configs/forgejo/configuration.nix - ../../server/package-configs/gotosocial/configuration.nix - ../../server/package-configs/mail-server/configuration.nix - ../../server/package-configs/nextcloud/configuration.nix - ../../server/package-configs/postgres/configuration.nix - ../../server/package-configs/postgres/upgrade.nix - ../../server/package-configs/roundcube/configuration.nix - ../../server/package-configs/jellyfin/configuration.nix - ../../server/package-configs/ombi/configuration.nix - ../../server/package-configs/aria2/configuration.nix - ../../server/package-configs/conduit/configuration.nix + # Import disko + # ../../../disko/queen ]; - - boot.tmp.cleanOnBoot = true; zramSwap.enable = false; - networking.domain = ""; - services.openssh.enable = true; + services = { + openssh = { + enable = true; + settings = { + # require public key authentication for better security + PasswordAuthentication = false; + KbdInteractiveAuthentication = false; + PermitRootLogin = "no"; + }; + }; + }; nixpkgs = { # You can add overlays here overlays = [ - # You can also add overlays exported from other flakes: - # neovim-nightly-overlay.overlays.default - - # Or define it inline, for example: - # (final: prev: { - # hi = final.hello.overrideAttrs (oldAttrs: { - # patches = [ ./change-hello-to-hi.patch ]; - # }); - # }) ]; # Configure your nixpkgs instance config = { + allowBroken = true; # Disable if you don't want unfree packages allowUnfree = true; }; }; - #Set up sops config, and configure where the keyfile is, then set the mode for the unencrypted keys - sops.defaultSopsFile = ./secrets/sops.yaml; - sops.age.keyFile = ../../../../../var/secrets/keys.txt; - - nix = { - gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; - }; - # This will add each flake input as a registry - # To make nix3 commands consistent with your flake - registry = lib.mapAttrs (_: value: {flake = value;}) inputs; - - # This will additionally add your inputs to the system's legacy channels - # Making legacy nix commands consistent as well, awesome! - nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; - - settings = { - # Enable flakes and new 'nix' command - experimental-features = "nix-command flakes"; - # Deduplicate and optimize nix store - auto-optimise-store = true; - }; - }; - environment.systemPackages = with pkgs; [ - akkoma fzf - matrix-conduit docker docker-compose gitea @@ -101,15 +63,17 @@ exiftool imagemagick ffmpeg - aria2 - jellyfin - jellyfin-web - jellyfin-ffmpeg - nextcloud28 + #aria2 + #jellyfin + #jellyfin-web + #jellyfin-ffmpeg nginx onlyoffice-documentserver + openssl postgresql_16 - python3 + python310 + # python310Packages.nbconvert + jupyter rabbitmq-server roundcube roundcubePlugins.contextmenu @@ -118,25 +82,90 @@ roundcubePlugins.persistent_login roundcubePlugins.thunderbird_labels youtube-dl + sqlite ]; + services.vpn-ip = { + enable = false; + }; - # Enable networking - networking.networkmanager.enable = true; - networking.nat.enable = true; - networking.nat.internalInterfaces = ["ve-+"]; - networking.nat.externalInterface = "ens18"; + networking = { + domain = ""; - networking.firewall.enable = true; + # Create an auto-update systemd service that runs every day + # system.autoUpgrade = { + # flake = "git+https://git.lillianviolet.dev/Lillian-Violet/NixOS-Config.git"; + # dates = "daily"; + # enable = true; + # }; - networking.firewall.allowedTCPPorts = [22 80 443]; + # systemd.services.systemd-networkd.serviceConfig.Environment = "SYSTEMD_LOG_LEVEL=debug"; + # Enable networking + # networking.networkmanager.enable = true; + # networking.nat.enable = true; + # networking.nat.internalInterfaces = ["ve-+"]; + # networking.nat.externalInterface = "ens18"; + enableIPv6 = lib.mkForce true; + nameservers = ["2a02:c207::1:53" "2a02:c207::2:53"]; + + # networking.interfaces.ens18.ipv4.addresses = [ + # { + # address = "62.171.160.195"; + # prefixLength = 32; + # } + # ]; + + interfaces.ens18.ipv6.addresses = [ + { + address = "2a02:c207:2063:2448::1"; + prefixLength = 64; + } + ]; + defaultGateway6 = { + address = "fe80::1"; + interface = "ens18"; + }; + firewall = { + # Open ports in the firewall. + + enable = true; + allowPing = false; + allowedTCPPorts = [ + 22 # SSH + 5349 # STUN tls + 5350 # STUN tls alt + 80 # http + 443 # https + ]; + allowedUDPPortRanges = [ + { + from = 49152; + to = 49999; + } # TURN relay + ]; + }; + + hostName = "queen"; + + # Disable the server going through wireguard vpn for now + wireguard.enable = lib.mkForce false; + }; + + # networking.useNetworkd = true; + + # networking.useDHCP = false; + + # modules.contabo.wan = { + # enable = true; + # macAddress = "00:50:56:43:01:e2"; # changeme + # ipAddresses = [ + # "192.0.2.0/32" + # "2001:db8::1/64" + # ]; + # }; # Set your time zone. time.timeZone = "Europe/Amsterdam"; - programs.zsh = { - enable = true; - }; - programs.git = { enable = true; }; @@ -148,35 +177,18 @@ # users.groups.virtualMail = {}; - users.users = { - lillian = { - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGatnsrKMoZSW24Lw4meb6BAgHgeyN/8rUib4nZVT+CB lillian@EDI" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC7+LEQnC/nlYp7nQ4p6hUCqaGiqfsA3Mg8bSy+zA8Fj lillian@GLaDOS" - ]; - isNormalUser = true; - extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf"]; - shell = pkgs.zsh; - }; - }; - # Enable completion of system packages by zsh environment.pathsToLink = ["/share/zsh"]; - home-manager = { - extraSpecialArgs = {inherit inputs outputs;}; - users = { - # Import your home-manager configuration - lillian = import ../../../home-manager/hosts/queen/queen-Lillian.nix; + boot = { + tmp.cleanOnBoot = true; + loader.grub = { + enable = true; + configurationLimit = 3; }; + loader.efi.canTouchEfiVariables = true; }; - networking.hostName = "queen"; - - boot.loader.grub.enable = true; - boot.loader.grub.configurationLimit = 3; - boot.loader.efi.canTouchEfiVariables = true; - # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "unstable"; + system.stateVersion = "25.05"; } diff --git a/nixos/hosts/queen/hardware-configuration.nix b/nixos/hosts/queen/hardware-configuration.nix index 52ea2b5..cf6fbc9 100644 --- a/nixos/hosts/queen/hardware-configuration.nix +++ b/nixos/hosts/queen/hardware-configuration.nix @@ -1,18 +1,25 @@ { - config, lib, - pkgs, modulesPath, ... }: { imports = [(modulesPath + "/profiles/qemu-guest.nix")]; boot.loader.grub.device = "/dev/sda"; - boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi"]; + boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod"]; boot.initrd.kernelModules = ["nvme"]; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + networking.useDHCP = lib.mkDefault true; + fileSystems."/" = { - device = "/dev/sda3"; + device = "/dev/disk/by-uuid/dc10d09c-9394-4854-acd5-93ceccd2f448"; fsType = "ext4"; }; - swapDevices = [{device = "/dev/sda2";}]; - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + + fileSystems."/nix/store" = { + device = "/nix/store"; + fsType = "none"; + options = ["bind"]; + }; + + swapDevices = []; } diff --git a/nixos/hosts/queen/secrets/sops.yaml b/nixos/hosts/queen/secrets/sops.yaml index 1eba722..dcd0abb 100644 --- a/nixos/hosts/queen/secrets/sops.yaml +++ b/nixos/hosts/queen/secrets/sops.yaml @@ -6,7 +6,15 @@ releaseCookie: ENC[AES256_GCM,data:oG8DcUP+gIm5xPzIJdmjrtX/TdrcS8IgeGJeu0oOmZb0/ mssqlpass: ENC[AES256_GCM,data:XEu4bQC5qM5Cm8UDVX3qAzTuL/t3xbx+qcEbZM4h3Hg=,iv:jgpZ93THYBlUvJDC5+YZiIxu/14e7nFSy76J0vc8Hek=,tag:iKsEDp/KZ5juqzmUgtP8iA==,type:str] mailpassunhash: ENC[AES256_GCM,data:q/P3nrNLy3hCISDmalw94nzWIFhoCdCTyflj27D2Ltr8,iv:oAFna87l3sL/42ljUF1QsRL0xBrP82uYdKLxK/8HcQE=,tag:liFFGHbNPOpOHyMsjnvMOQ==,type:str] rpcSecret: ENC[AES256_GCM,data:gOuQSY2RI6rnSnG1,iv:xz1ueq4/UOKYBs5r9Tk4jL0+GyX8uo8I8ZymVgIMKLI=,tag:Fr8rWIttLz7X8Pri6FBJBQ==,type:str] -wg-private: ENC[AES256_GCM,data:6BEuNqqG//p5UhRmQ4RPEze6jZdvzK4PEXxlbX2ANYIhFpacj0aZnCr9o/A=,iv:tPlwYdV4I5oA8qG+bfVi1Dpbf7xedByantqsmylZXKQ=,tag:k1BqKqlayOWz5QW1XiAjqQ==,type:str] +wg-private-key: ENC[AES256_GCM,data:mq8QWoQ4tE4eYaFbwCzQnRREUFI2qrnmDnwurKMu6qdKkDylqc65E7jgGDI=,iv:r5RdcmfW4OaKlbbzUCPahONvpLcfZ7X7KcEEYFIYFDk=,tag:e93C4lByJV75JMHLJ02PfA==,type:str] +lillian-password: ENC[AES256_GCM,data:tc+Romv2fL+tdqLLmbwqaF4IHrNZ0VEpnECmW/66FW7IUpjHMyS7YP+pmmvDCzM9afIXMxyPFHGNRwiCmxqstiiNeSeLdo6rDw==,iv:sGeu9aNTgdpThv+0Z/nZKIrat1xNgM0t/KTGPaFbsdI=,tag:kZBHF4X0KO9znog61NwU+Q==,type:str] +coturn-auth-secret: ENC[AES256_GCM,data:RYxyATuYIcrGd8h8Gc4CP9ZQ80ekuuwHehnOPYisHejmycgT8a2mWpk+5r3HkFmBNcLDeNlfnhIif5oLHGuHyw==,iv:M2GdNDxP4xpP35FJPTgljbcKpOm6DmEEnIYRItAxDVI=,tag:IiiNXeTi6Yja5PrnKRkhdA==,type:str] +grafana-telegraf-key: ENC[AES256_GCM,data:agpUzG1/n2NAKDt45IgelmDf0CUlC82fmD4f7JdcszNuUg7uCNA7XeaJ6PZtHQ==,iv:keo3i+qSbtXkA5fyCr2S5z9nJS9bXUn5WDiPgWocPU8=,tag:p/nDff10PRhi9pOszp1PnA==,type:str] +sync-secrets: ENC[AES256_GCM,data:AwCgqfSXmYVGnCV5PJ5Ql44IiutTS76F1H7Ow7gB4mQQ8PtiAsmArzpAXd7LzsXedm55X04U+GvkcbM9cwPcF+psyb3Zi8EnI/mjnI9MgFyySSEcosJZVAtCpXGIMyYgRXtF5OBh5CzupAG059d1TDAqrSpLXMuSDdypTaOMHxnlq5q1swfpzhhY3PVgUKVFXdjZLX8aF3JTE9ceVxFsB+traLzOQsl+QKty0x0mpuqR97zkMCchX7bTwgUgbl7phzTvmwV8Qw==,iv:gkZs5NB9+CLfz4kfV4ha2llZQPP81uuXRKqUlASgpiA=,tag:DXkiG0ZFHLHlVhwLwtv/XQ==,type:str] +writefreely: ENC[AES256_GCM,data:QOj5h/rHCxmgpPNhu3IS4eyruhQokHTJxW6yQM9YDgQ=,iv:qAd+/rAAanzL9FTIX22M+2kwI0WI2d3i86cJrn8MFBo=,tag:3zvpqnovDEoJdvK/qcFDuQ==,type:str] +writefreelymysql: ENC[AES256_GCM,data:1JZwIX04O3DBAo7JvEkeNrFcSdcmk/u4WUf/kkbr2JA=,iv:8H8MR8w1iLfl2r62EbxPnLzs4qWFmwB5gNKEaly8q6c=,tag:K01oKMXkeMOFs3u7frMs0Q==,type:str] +ssh-private-key: ENC[AES256_GCM,data:DK/ggskAyhvotRkf36oZBoPw3hGvVlXneqaJZRPwX2a3YVMy4zgDE3iN65UeR6mfkp9J3OmLejOHeWFB/bRCHY3oTW6GUuZljTe2rI1/x/d2s4zX5UPPEWcy3cXH25d72DzElQBEMDKuZyDe0OZ0/NkR//vEeXgoA2Nr/NKHlTWrq/t26DMD2Vt+kQ+S9b0hh4tgh3OP1lwRu9/mTJOmInd/86gKB9+aD9V0oFvNbMEmgbwIah+ZjQBHB7GEIwjUc/lLmc+3RSn9J0rICIhnhL7NTzHUDHkYd93Tm0L9UHIyi9Oco2sK8tuV5mTDM1OK8CbDg/5FICTQ0H4sstCrDNZd2wE4E1kaZuwYOyxpzQpWJY8jOxxw5oIE0IccvvptM/9vp+0f1F2RIDrkIdHSLpFbGZGvXNVAWlXyv+0qOYS7BGzD0KAh9f74GcAvULq36vdzBahb5e+CqT3JXESne8qhkpsP0G9Z1I1Fy0xpADx/9cTnAm5RmXTw/KBPmBA5IZYZBRbR/C+N7Xyxr7u9RcwFJdIbSpAeT/ew,iv:pHT7DtX1ab7boPboXRaSg9w/4sMgNraEswtEf2tBPkw=,tag:Fbw2/Evf4ZsLFMBPflf9CA==,type:str] +mollysocket-vapid-key: ENC[AES256_GCM,data:8N2hxY6WN6mCcjMIFsw/Vt1RoGvUbYxkVPOOn4WRjXZtEEkkVCIaNevozF4xCnBUEWIukNg8lZk8ake/pHAq,iv:+NHm3hSotcRPRjrwEe9xKnEeYbnUZqJEB1sd5B+tWIE=,tag:Pd2pnJqj771XqdqBREGzJQ==,type:str] sops: kms: [] gcp_kms: [] @@ -22,8 +30,8 @@ sops: KzNBMCtUaS9sU21Xc1JUd1FSR29tSkEKyqaDM/WUWjK2l+ahE6sIFYsQ6Qtkf7yz NWFTzsDZBmm9kpSIjchf+PuBuoRHeEKbEH8jnMlYB3J8boEnUnXMlw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-01-04T21:18:00Z" - mac: ENC[AES256_GCM,data:ZHXg541BI94kwvLJ/CFHS7UauQN6LimqNK9rU60dil1RIArDy5xHtRki/p5uajKeGhM+Bv1t9SWAehk1n3U0PiynLGLm3npraIxItBPiRf7hyqDXmc8kG4U7BBcbIf3qvkvxVVd5auWfnPobKsRhKA+gC1Z11ylPqK37yIgK5Sw=,iv:EKacOHhgwjFDw2ioraxlyfXt89VpT+B4D/a/rC+ulNM=,tag:YvgctOLxmojg2uOAlKihkQ==,type:str] + lastmodified: "2025-01-14T13:43:37Z" + mac: ENC[AES256_GCM,data:GK+WcmMgDbZ5xeqMK06CuquR6/ptd2oXzVJ9V74+n6lBx4XsyPu17puKGKgsGsIHeRYdbwtQh8tm42/XJ0tK8qJz1yGvfQxPasd+ibRBHatWWHzQ/czR3NIRWYqGF9/mxi2uHrftaKtku1/huxjzjb69blopMzn2LEH0vCzXCkc=,iv:K6Fbhmz9FAzLd8KcjDSriVre8MhCYrGTVXh+u6oGLaQ=,tag:4Ylrs+Mm54vAKFQyyo8Njg==,type:str] pgp: [] unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.2 diff --git a/nixos/hosts/shodan/auto-mount.nix b/nixos/hosts/shodan/auto-mount.nix new file mode 100644 index 0000000..2924824 --- /dev/null +++ b/nixos/hosts/shodan/auto-mount.nix @@ -0,0 +1,21 @@ +{pkgs, ...}: { + services.udev.extraRules = '' + KERNEL=="sd[a-z]|sd[a-z][0-9]", ACTION=="add", RUN+="${pkgs.systemd}/bin/systemctl start --no-block external-drive-mount@%k.service" + KERNEL=="sd[a-z]|sd[a-z][0-9]", ACTION=="remove", RUN+="${pkgs.systemd}/bin/systemctl stop --no-block external-drive-mount@%k.service" + KERNEL=="mmcblk0|mmcblk0p[0-9]", ACTION=="add", RUN+="${pkgs.systemd}/bin/systemctl start --no-block external-drive-mount@%k.service" + KERNEL=="mmcblk0|mmcblk0p[0-9]", ACTION=="remove", RUN+="${pkgs.systemd}/bin/systemctl stop --no-block external-drive-mount@%k.service" + KERNEL=="nvme0n1p9|nvme0n1p1[0-9]", ACTION=="add", RUN+="${pkgs.systemd}/bin/systemctl start --no-block external-drive-mount@%k.service" + KERNEL=="nvme0n1p9|nvme0n1p1[0-9]", ACTION=="remove", RUN+="${pkgs.systemd}/bin/systemctl stop --no-block external-drive-mount@%k.service" + ''; + + systemd.services."external-drive-mount@" = { + path = with pkgs; [util-linux udisks bash auto-mount steam jq]; + enable = true; + serviceConfig = { + ExecStart = "${pkgs.auto-mount}/bin/auto-mount add %i"; + ExecStop = "${pkgs.auto-mount}/bin/auto-mount remove %i"; + Type = "oneshot"; + RemainAfterExit = true; + }; + }; +} diff --git a/nixos/hosts/shodan/configuration.nix b/nixos/hosts/shodan/configuration.nix index 34382fb..851c69a 100644 --- a/nixos/hosts/shodan/configuration.nix +++ b/nixos/hosts/shodan/configuration.nix @@ -2,7 +2,6 @@ inputs, outputs, lib, - config, pkgs, ... }: { @@ -15,33 +14,120 @@ # Or modules exported from other flakes (such as nix-colors): # inputs.nix-colors.homeManagerModules.default - # Import the locale settings - ../../shared/locale/configuration.nix + outputs.nixosModules.vpn-ip + + # Import the shared settings + ../../desktop/package-configs/firefox # You can also split up your configuration and import pieces of it here: # ./nvim.nix ./hardware-configuration.nix - ]; - boot.tmp.cleanOnBoot = true; + ../../../disko/shodan + + # ./auto-mount.nix + ]; + boot = { + tmp.cleanOnBoot = true; + loader = { + # TPM2TOOLS_TCTI and TPM2_PKCS11_TCTI env variables + # tss group has access to TPM devices + + # Lanzaboote currently replaces the systemd-boot module. + # This setting is usually set to true in configuration.nix + # generated at installation time. So we force it to false + # for now. + systemd-boot.enable = lib.mkForce false; + systemd-boot.configurationLimit = 3; + timeout = 0; + efi.canTouchEfiVariables = true; + }; + initrd.systemd.enable = true; + + lanzaboote = { + enable = true; + pkiBundle = "/etc/secureboot"; + }; + consoleLogLevel = 0; + kernelParams = ["quiet" "udev.log_priority=0" "fbcon=vc:2-6" "console=tty0"]; + plymouth.enable = true; + }; zramSwap.enable = false; - networking.domain = ""; - services.openssh.enable = true; + networking = { + domain = ""; + + # Enable networking + networkmanager.enable = true; + + firewall.enable = true; + firewall.interfaces."wg0".allowedTCPPorts = [8080]; + firewall.interfaces."wg0".allowedUDPPorts = [8080]; + firewall.allowedTCPPorts = [22 8080 9090 9777]; + firewall.allowedUDPPorts = [22 8080 9090 9777]; + + hostName = "shodan"; + }; + services.vpn-ip = { + ip = "4"; + }; + + services = { + openssh.enable = true; # Enables support for 32bit libs that steam uses + + # Enable the X11 windowing system. + xserver.enable = true; + + # Enable the KDE Plasma Desktop Environment. + desktopManager.plasma6.enable = true; + + avahi = { + nssmdns4 = true; + enable = true; + ipv4 = true; + ipv6 = true; + publish = { + enable = true; + addresses = true; + workstation = true; + }; + }; + displayManager = { + defaultSession = "plasma"; + sddm.wayland.enable = lib.mkForce true; + sddm.settings = { + Autologin = { + Session = "plasma.desktop"; + User = "lillian"; + }; + }; + }; + + # Enable flatpak support + flatpak.enable = true; + packagekit.enable = true; + + # Configure keymap in X11 + xserver = { + xkb.layout = "us"; + xkb.variant = ""; + }; + + # Enable CUPS to print documents. + printing.enable = true; + + # Enable fwupd daemon and user space client + fwupd.enable = true; + # pipewire = { + # enable = true; + # alsa.enable = true; + # alsa.support32Bit = true; + # pulse.enable = true; + # }; + }; nixpkgs = { # You can add overlays here overlays = [ - inputs.extest.overlays.default - - # You can also add overlays exported from other flakes: - # neovim-nightly-overlay.overlays.default - - # Or define it inline, for example: - # (final: prev: { - # hi = final.hello.overrideAttrs (oldAttrs: { - # patches = [ ./change-hello-to-hi.patch ]; - # }); - # }) ]; # Configure your nixpkgs instance config = { @@ -49,201 +135,146 @@ allowUnfree = true; }; }; - - #Set up sops config, and configure where the keyfile is, then set the mode for the unencrypted keys - sops.defaultSopsFile = ./secrets/sops.yaml; - sops.age.keyFile = ./keys.txt; - - nix = { - gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; - }; - # This will add each flake input as a registry - # To make nix3 commands consistent with your flake - registry = lib.mapAttrs (_: value: {flake = value;}) inputs; - - # This will additionally add your inputs to the system's legacy channels - # Making legacy nix commands consistent as well, awesome! - nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; - - settings = { - # Enable flakes and new 'nix' command - experimental-features = "nix-command flakes"; - # Deduplicate and optimize nix store - auto-optimise-store = true; - }; - }; - environment.systemPackages = with pkgs; [ + # Custom tools + auto-mount + #System: - alejandra btrfs-progs - git - git-filter-repo - home-manager - htop + decky-loader + efitools + jq noto-fonts noto-fonts-emoji-blob-bin noto-fonts-emoji - oh-my-zsh - rsync - wget - zsh + qjackctl + jellyfin-media-player + + #rustdesk + sbctl + udisks + util-linux + waypipe + python3 + protonup-qt #KDE: krunner-translator - libsForQt5.discover - libsForQt5.kcalc - libsForQt5.kdepim-addons - libsForQt5.kirigami2 - libsForQt5.kdeconnect-kde - libsForQt5.krunner-ssh - libsForQt5.krunner-symbols - libsForQt5.packagekit-qt - libsForQt5.qt5.qtvirtualkeyboard - libportal-qt5 + # kdePackages.discover + kdePackages.kcalc + kdePackages.kdepim-addons + kdePackages.kirigami + kdePackages.kdeconnect-kde + # kdePackages.krunner-ssh + # kdePackages.krunner-symbols + kdePackages.qtvirtualkeyboard + kdePackages.packagekit-qt + kdePackages.krdc + kdePackages.krfb + libportal #Gaming: heroic legendary-gl + protontricks rare + lutris + + (kodi.withPackages (kodiPkgs: + with kodiPkgs; [ + steam-controller + invidious + youtube + netflix + upnext + sponsorblock + sendtokodi + jellyfin + inputstream-adaptive + inputstreamhelper + inputstream-ffmpegdirect + upnext + sponsorblock + sendtokodi + routing + requests-cache + requests + plugin-cache + a4ksubtitles + ])) ]; - #Enable steam deck steam interface - jovian.steam.enable = true; - - #Autostart this inteface at login - jovian.steam.autoStart = true; - - #What desktop to start when switching to desktop session - jovian.steam.desktopSession = "plasmawayland"; - - jovian.steam.user = "lillian"; - - #Enable gyro service for CEMU - jovian.devices.steamdeck.enableGyroDsuService = true; - - #Enable steam deck specific services - jovian.devices.steamdeck.enable = true; - - #Enable auto updates for the BIOS and controller firmware - jovian.devices.steamdeck.autoUpdate = true; - - jovian.decky-loader.enable = true; - - jovian.hardware.has.amd.gpu = true; - - programs.steam = { - enable = true; - remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play - dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server - package = pkgs.steam.override { - extraProfile = ''export LD_PRELOAD=${pkgs.extest}/lib/libextest.so:$LD_PRELOAD''; + jovian = { + steam = { + enable = true; + autoStart = true; + user = "lillian"; + desktopSession = "plasma"; + }; + decky-loader = { + enable = true; + package = pkgs.decky-loader-prerelease; + extraPackages = [pkgs.python3 pkgs.flatpak pkgs.uutils-findutils]; + }; + devices.steamdeck = { + enable = true; + autoUpdate = true; + }; + steamos = { + enableAutoMountUdevRules = true; + enableMesaPatches = true; }; }; - hardware.opengl.driSupport32Bit = true; # Enables support for 32bit libs that steam uses + programs = { + steam = lib.mkForce { + enable = true; + remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play + dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server + extest.enable = true; + }; + kdeconnect.enable = true; - # Enable the X11 windowing system. - services.xserver.enable = true; + noisetorch = { + enable = true; + }; - # Enable the KDE Plasma Desktop Environment. - services.xserver.desktopManager.plasma5.enable = true; - programs.kdeconnect.enable = true; - - services.xserver.displayManager.sddm.settings = { - Autologin = { - Session = "plasma.desktop"; - User = "lillian"; + git = { + enable = true; }; }; - # Enable flatpak support - services.flatpak.enable = true; - services.packagekit.enable = true; - - # Configure keymap in X11 - services.xserver = { - xkb.layout = "us"; - xkb.variant = ""; - }; - - # Enable networking - networking.networkmanager.enable = true; - - networking.firewall.enable = true; - - networking.firewall.allowedTCPPorts = [22]; + # # Enable automounting of removable media + # services.udisks2.enable = true; + # services.devmon.enable = true; + # services.gvfs.enable = true; + # environment.variables.GIO_EXTRA_MODULES = lib.mkForce ["${pkgs.gvfs}/lib/gio/modules"]; # Set your time zone. time.timeZone = "Europe/Amsterdam"; + hardware = { + graphics.enable32Bit = true; - # Enable CUPS to print documents. - services.printing.enable = true; + # Enable bluetooth hardware + bluetooth.enable = true; - # Enable bluetooth hardware - hardware.bluetooth.enable = true; - - # Enable fwupd daemon and user space client - services.fwupd.enable = true; - - # Enable sound with pipewire. - sound.enable = true; - hardware.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; + # Enable sound with pipewire. }; - programs.noisetorch = { - enable = true; - }; - - programs.zsh = { - enable = true; - }; - - programs.git = { - enable = true; - }; - - users.users = { - lillian = { - openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCnYgErCnva8fvLvsmTMC6dHJp2Fvwja0BYL8K/58ugDxNA0PVGj5PpEMar5yhi4AFGGYL4EgD75tRgI/WQU87ZiKjJ6HFIhgX9curncB2kIJ0JoA+FIQMNOT72GFuhjcO4svanrobsMrRmcn193suXY/N6m6F+3pitxBfHPWuPKKjlZqVBzpqCdz9pXoGOk48OSYv7Zyw8roVsUw3fqJqs68LRLM/winWVhVSPabXGyX7PAAW51Nbv6M64REs+V1a+wGvK5sGhRy7lIBAIuD22tuL4/PZojST1hasKN+7cSp7F1QTi4u0yeQ2+gIclQNuhfvghzl6zcVEpOycFouSIJaJjo8jyuHkbm4I2XfALVTFHe7sLpYNNS7Mf6E6i5rHvAvtXI4UBx/LjgPOj7RWZFaotxQRk1D+N0y2xNrO4ft6mS+hrJ/+ybp1XTGdtlkpUDKjiTZkV7Z4fq9J0jtijvtxRfcPhjia50IIHtZ28wVBMCCwYzh5pR15F/XbvKCc= lillian@EDI" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC7+LEQnC/nlYp7nQ4p6hUCqaGiqfsA3Mg8bSy+zA8Fj lillian@GLaDOS" - ]; - isNormalUser = true; - extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf" "decky"]; - shell = pkgs.zsh; - }; - }; + services.pulseaudio.enable = false; + users.users.lillian.extraGroups = ["decky" "tss" "input"]; # Enable completion of system packages by zsh environment.pathsToLink = ["/share/zsh"]; - home-manager = { - extraSpecialArgs = {inherit inputs outputs;}; - users = { - # Import your home-manager configuration - lillian = import ../../../home-manager/hosts/shodan/shodan-Lillian.nix; + security = { + rtkit.enable = true; + tpm2 = { + enable = true; + pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so + tctiEnvironment.enable = true; }; }; - networking.hostName = "shodan"; - - boot.loader.systemd-boot.enable = true; - boot.loader.systemd-boot.configurationLimit = 3; - boot.loader.timeout = 0; - boot.loader.efi.canTouchEfiVariables = true; - boot.consoleLogLevel = 0; - boot.kernelParams = ["quiet" "udev.log_priority=0"]; - boot.plymouth.enable = true; - # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "unstable"; + system.stateVersion = "25.05"; } diff --git a/nixos/hosts/shodan/hardware-configuration.nix b/nixos/hosts/shodan/hardware-configuration.nix index dbd00de..fb0baa3 100644 --- a/nixos/hosts/shodan/hardware-configuration.nix +++ b/nixos/hosts/shodan/hardware-configuration.nix @@ -4,7 +4,6 @@ { config, lib, - pkgs, modulesPath, ... }: { @@ -17,20 +16,6 @@ boot.kernelModules = ["kvm-amd"]; boot.extraModulePackages = []; - fileSystems."/" = { - device = "/dev/disk/by-uuid/b29d5a9c-a4a6-4321-a767-27ed928cfa94"; - fsType = "ext4"; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/ABC6-B031"; - fsType = "vfat"; - }; - - swapDevices = [ - {device = "/dev/disk/by-uuid/c0c87d80-b6be-444a-a76f-b32d35c38994";} - ]; - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's # still possible to use this option, but it's recommended to use it in conjunction diff --git a/nixos/hosts/shodan/secrets/sops.yaml b/nixos/hosts/shodan/secrets/sops.yaml index 45ec605..3c8e216 100644 --- a/nixos/hosts/shodan/secrets/sops.yaml +++ b/nixos/hosts/shodan/secrets/sops.yaml @@ -1,4 +1,6 @@ -pass: ENC[AES256_GCM,data:M7V75Q7I,iv:d59fWvFsEOOu8A+BSK0f2ZskX1SXHN1wA3EfGGsHp70=,tag:FLTogvUgI3HdKYWCJc/M1Q==,type:int] +lillian-password: ENC[AES256_GCM,data:uPNBvMyhkiX3eedduFlsFUIcas/VBVSYrsmGTlgGUOzTQST59CYZRoq0ArphIJ3+Usy6KbR5tA5FCp4PoB3qVYBfjlAq6dhZIw==,iv:TiUIo2lvdL6SiDuW4gWn0TeJXkz5MldzqGxuK3MNPnE=,tag:d3p/h+q50JxygDtk2qxIeQ==,type:str] +wg-private-key: ENC[AES256_GCM,data:PeuKeYRHfOzGlekLI95EH3qq+blntZrrboPKaKC0ghD5zIyaCYrFHYWLkug=,iv:BcugGYW7+i7d04H4EKn+BdJJPqwMVVvlHBETO0x0kQM=,tag:Z/ammSrFpWTIbVfi4VJZ9w==,type:str] +ssh-private-key: ENC[AES256_GCM,data:7K3p6Lu4je2fNmvtKpLY2z7MG5E0gg3486PCLTlm/NzWpiH0FO8KO2yPkPPVurXfUWj7ig3eiP+bc6+kufRQ8+MCHaR+JA056cdMch0MMK92FyPvJjNKzwB4W3BpdvOKipaZvuvSfgdrEdpz6rWRwBb9KaUW5aHBjW5eQNm+q0yP2uZjW6Ncp/zrdevjlRJyXGnNJD8CBDQgLILvqlvziRO4xBnSZOmFpdCKM9jMkxwHIQUND4ic71G6cheN+kIsgsa67DlJjfrngGWxKrlC3Q2DC+30vHtW8f18oa+g7eu9eTz8+bSLxYJf9TADwE+UYe2Hakib1ju67yxBkcomIjBvqgo+zEr0jC2qYmOvlKfqn64gSbAE7zEVCbavz6gA2EMb0g47twtAdgGUyzppGQ4LXjZXv6lyYov2gdXP7bzAcXXfzDh92BuTUOp9HXOTsLh7XC7cPKziowwwT+oUeOaSujMT9tgqkazgcVR3ne+PjxduptV75gxOwxeu6F2Zm+4Y4xJBdJeyP1Baq0yj4HNY/gv3pxEEXgU5,iv:TJ3AsSvXeUmBsKd6xy+Kc1ws+Yc9ZQ5Q4A8UFHI7Wsg=,tag:egCYoe3Mkbvkup0itszm4w==,type:str] sops: kms: [] gcp_kms: [] @@ -14,8 +16,8 @@ sops: KzNBMCtUaS9sU21Xc1JUd1FSR29tSkEKyqaDM/WUWjK2l+ahE6sIFYsQ6Qtkf7yz NWFTzsDZBmm9kpSIjchf+PuBuoRHeEKbEH8jnMlYB3J8boEnUnXMlw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-12-28T21:33:20Z" - mac: ENC[AES256_GCM,data:4tFAJCqCAfqlIGj7kDQ9uoUg7TgXYgogkm/h0nP6fuedKiV/CRmD8CbdWInesaDP276pggZbtUY9I92pV8bpJ2h+U07qihTo79ZTPTsObUHQrrc002ZiYwCtI+14t1+2KuTQNpEJsZxoECjG1R0mjg3Zv8MQ0wj6YpnEaGmXkC0=,iv:roPZJXFjB7lLK4RQcmQaNOq5RRCvguNO4O2iasgolEU=,tag:j7G0HvAx6XqrijyZcqntXQ==,type:str] + lastmodified: "2024-12-22T22:35:15Z" + mac: ENC[AES256_GCM,data:olqDdjgOF7MsYXibawEn4bou6LPof25j231+Vwr+pSGCO19Sj44OkZpS0YmNBi+Uym+X6RGM5uV3fg4JYVgThnALI9JFyFuZ41gjPRyNBXJ16RnogKykHK5XNjQEogYho5bgLA8DTDeOvSfFHW2ENM052z6lJyAaPWJLa4ADlEY=,iv:YXGKcHQfqZCnK9Z3Nw/JxcTmZR++0iKUc7PDbLBqahY=,tag:UbHZvFZjaYjrC51Q1f/oyg==,type:str] pgp: [] unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.2 diff --git a/nixos/hosts/wheatley/armv7l.nix b/nixos/hosts/wheatley/armv7l.nix index e6a9f37..d908a24 100644 --- a/nixos/hosts/wheatley/armv7l.nix +++ b/nixos/hosts/wheatley/armv7l.nix @@ -1,8 +1,4 @@ -{ - config, - pkgs, - ... -}: { +{pkgs, ...}: { boot.kernelPatches = [ rec { name = "compat_uts_machine"; diff --git a/nixos/hosts/wheatley/configuration.nix b/nixos/hosts/wheatley/configuration.nix index 4e07297..b39a571 100644 --- a/nixos/hosts/wheatley/configuration.nix +++ b/nixos/hosts/wheatley/configuration.nix @@ -1,152 +1,356 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). { - inputs, - outputs, lib, - config, pkgs, + outputs, + config, + modulesPath, ... }: { imports = [ - inputs.home-manager.nixosModules.home-manager + # inputs.nixos-hardware.nixosModules.raspberry-pi-4 + (modulesPath + "/installer/sd-card/sd-image-aarch64.nix") + outputs.nixosModules.vpn-ip - ./armv7l.nix ./hardware-configuration.nix - # Import locale settings - ../../shared/locale/configuration.nix - - # Import shared packages - ../../shared/packages/configuration.nix + # Import shared settings ]; - boot.loader.generic-extlinux-compatible.enable = true; - boot.loader.generic-extlinux-compatible.configurationLimit = 5; - boot.loader.grub.enable = false; - boot.tmp.cleanOnBoot = true; + hardware.enableRedistributableFirmware = true; + powerManagement.cpuFreqGovernor = "ondemand"; + hardware.graphics.enable = true; - # boot.extraModulePackages = [ - # (pkgs.callPackage ./rtl8189es.nix { - # kernel = config.boot.kernelPackages.kernel; - # }) - # ]; - nixpkgs = { - # You can add overlays here - overlays = [ - # You can also add overlays exported from other flakes: - # neovim-nightly-overlay.overlays.default + nixpkgs.overlays = [ + (final: super: { + makeModulesClosure = x: + super.makeModulesClosure (x // {allowMissing = true;}); + }) + ]; + programs = { + # Allow executing of anything on the system with a , eg: , python executes python from the nix store even if not in $PATH currently + command-not-found.enable = lib.mkForce false; + nix-index.enable = true; + nix-index-database.comma.enable = true; + }; + services = { + automatic-timezoned.enable = true; - # Or define it inline, for example: - # (final: prev: { - # hi = final.hello.overrideAttrs (oldAttrs: { - # patches = [ ./change-hello-to-hi.patch ]; - # }); - # }) + # stubby = { + # enable = true; + # settings = + # pkgs.stubby.passthru.settingsExample + # // { + # upstream_recursive_servers = [ + # { + # address_data = "94.140.14.49"; + # tls_auth_name = "4b921896.d.adguard-dns.com"; + # tls_pubkey_pinset = [ + # { + # digest = "sha256"; + # value = "19HOzAWb2bgl7bo/b4Soag+5luf7bo6vlDN8W812k4U="; + # } + # ]; + # } + # { + # address_data = "94.140.14.59"; + # tls_auth_name = "4b921896.d.adguard-dns.com"; + # tls_pubkey_pinset = [ + # { + # digest = "sha256"; + # value = "19HOzAWb2bgl7bo/b4Soag+5luf7bo6vlDN8W812k4U="; + # } + # ]; + # } + # { + # address_data = "2a10:50c0:0:0:0:0:ded:ff"; + # tls_auth_name = "4b921896.d.adguard-dns.com"; + # tls_pubkey_pinset = [ + # { + # digest = "sha256"; + # value = "19HOzAWb2bgl7bo/b4Soag+5luf7bo6vlDN8W812k4U="; + # } + # ]; + # } + # { + # address_data = "2a10:50c0:0:0:0:0:dad:ff"; + # tls_auth_name = "4b921896.d.adguard-dns.com"; + # tls_pubkey_pinset = [ + # { + # digest = "sha256"; + # value = "19HOzAWb2bgl7bo/b4Soag+5luf7bo6vlDN8W812k4U="; + # } + # ]; + # } + # ]; + # }; + # }; + + openssh = { + enable = true; + # require public key authentication for better security + settings.PasswordAuthentication = false; + settings.KbdInteractiveAuthentication = false; + settings.PermitRootLogin = "no"; + }; + + davfs2.enable = true; + + aria2 = { + enable = true; + settings = { + dir = "/var/lib/media"; + rpc-listen-port = 6969; + }; + rpcSecretFile = config.sops.secrets."rpcSecret".path; + }; + dnsmasq = { + enable = true; + settings = { + interface = "wg1"; + }; + }; + }; + + sops = { + # users.users = { + # ombi.extraGroups = ["radarr" "sonarr" "aria2"]; + # }; + # services.ombi = { + # enable = true; + # port = 2368; + # }; + + # users.users = { + # radarr.extraGroups = ["aria2"]; + # sonarr.extraGroups = ["aria2"]; + # }; + + # services = { + # #uses port 7878 + # radarr.enable = true; + # #uses port 8989 + # sonarr.enable = true; + # prowlarr.enable = true; + # }; + + secrets."webdav-secret" = { + mode = "0600"; + path = "/etc/davfs2/secrets"; + owner = config.users.users.root.name; + }; + + secrets."rpcSecret".mode = "0440"; + secrets."rpcSecret".owner = config.users.users.aria2.name; + + secrets."protonvpn-priv-key".mode = "0440"; + secrets."protonvpn-priv-key".owner = config.users.users.root.name; + }; + boot = { + kernelPackages = lib.mkForce pkgs.linuxPackages_latest; + + initrd.kernelModules = ["vc4" "bcm2835_dma" "i2c_bcm2835" "cma=256M" "console=tty0" "reset-raspberrypi"]; + kernelParams = ["video=HDMI-A-1:1920x1080@60D"]; + kernel.sysctl = { + "net.ipv4.ip_forward" = 1; + "net.ipv6.conf.all.forwarding" = 1; + }; + }; + + sdImage.compressImage = false; + + services.vpn-ip = { + enable = false; + }; + + networking = { + hostName = "wheatley"; + + networkmanager.enable = true; + + # Disable NetworkManager's internal DNS resolution + networkmanager.dns = "none"; + + # These options are unnecessary when managing DNS ourselves + useDHCP = false; + dhcpcd.enable = false; + + # Configure DNS servers manually (this example uses Cloudflare and Google DNS) + # IPv6 DNS servers can be used here as well. + nameservers = [ + # "127.0.0.1" + # "::1" + "94.140.14.49" + "94.140.14.59" + "2a10:50c0:0:0:0:0:ded:ff" + "2a10:50c0:0:0:0:0:ded:ff" ]; - # Configure your nixpkgs instance - config = { - # Disable if you don't want unfree packages - allowUnfree = true; + + wireguard.enable = true; + + wg-quick.interfaces = { + # # "wg0" is the network interface name. You can name the interface arbitrarily. + # wg0 = { + # autostart = true; + # # Determines the IP address and subnet of the server's end of the tunnel interface. + # address = ["10.2.0.2/32"]; + + # # The port that WireGuard listens to. Must be accessible by the client. + # listenPort = 51820; + + # dns = ["10.2.0.1"]; + # # Path to the private key file. + # # + # # Note: The private key can also be included inline via the privateKey option, + # # but this makes the private key world-readable; thus, using privateKeyFile is + # # recommended. + # privateKeyFile = config.sops.secrets."protonvpn-priv-key".path; + + # peers = [ + # # List of allowed peers. + # { + # # Feel free to give a meaning full name + # # Public key of the peer (not a file path). + # publicKey = "/i7jCNpcqVBUkY07gVlILN4nFdvZHmxvreAOgLGoZGg="; + # # List of IPs assigned to this peer within the tunnel subnet. Used to configure routing. + # allowedIPs = ["0.0.0.0/0"]; + # endpoint = "146.70.86.114:51820"; + # } + # ]; + # }; + + # wg public key for host: A02sO7uLdgflhPIRd0cbJONIaPP4z8HTxDkmX4NegFg= + # TODO: generate this dynamically based on other hosts + wg1 = { + # Determines the IP address and subnet of the server's end of the tunnel interface. + address = ["10.0.0.1/24" "fdc9:281f:04d7:9ee9::1/64"]; + + # The port that WireGuard listens to. Must be accessible by the client. + listenPort = 51821; + + # This allows the wireguard server to route your traffic to the internet and hence be like a VPN + postUp = '' + ${pkgs.iptables}/bin/iptables -A FORWARD -i wg0 -j ACCEPT + ${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE + ${pkgs.iptables}/bin/ip6tables -A FORWARD -i wg0 -j ACCEPT + ${pkgs.iptables}/bin/ip6tables -t nat -A POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o eth0 -j MASQUERADE + ''; + + # Undo the above + preDown = '' + ${pkgs.iptables}/bin/iptables -D FORWARD -i wg0 -j ACCEPT + ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE + ${pkgs.iptables}/bin/ip6tables -D FORWARD -i wg0 -j ACCEPT + ${pkgs.iptables}/bin/ip6tables -t nat -D POSTROUTING -s fdc9:281f:04d7:9ee9::1/64 -o eth0 -j MASQUERADE + ''; + + privateKeyFile = lib.mkForce config.sops.secrets."wg-private-key".path; + + peers = [ + { + #GLaDOS public key + publicKey = "yieF2yQptaE3jStoaGytUnN+HLxyVhFBZIUOGUNAV38="; + allowedIPs = ["10.0.0.2/32" "fdc9:281f:04d7:9ee9::2/128"]; + } + { + #EDI public key + publicKey = "i4nDZbU+a2k5C20tFJRNPVE1vhYKJwhoqGHEdeC4704="; + allowedIPs = ["10.0.0.3/32" "fdc9:281f:04d7:9ee9::3/128"]; + } + { + #Shodan public key + publicKey = "Zah2nZDaHF8jpP5AtMA5bhE7t38fMB2UHzbXAc96/jw="; + allowedIPs = ["10.0.0.4/32" "fdc9:281f:04d7:9ee9::3/128"]; + } + { + #ADA public key + publicKey = "SHu7xxRVWuqp4U4uipMoITKrFPWZATGsJevUeqBSzWo="; + allowedIPs = ["10.0.0.5/32" "fdc9:281f:04d7:9ee9::3/128"]; + } + #Queen public key: FVTrYM7S2Ev2rGrYrHsG2et1/SU3UjEBQH2AOen4+04= + ]; + }; }; - }; - - sops.defaultSopsFile = ./secrets/sops.yaml; - sops.age.keyFile = ../../../../../var/secrets/keys.txt; - - sops.secrets."wireless.env".mode = "0440"; - sops.secrets."wireless.env".owner = config.users.users.root.name; - - environment.systemPackages = with pkgs; [ - age - git - htop - ]; - - boot.kernelParams = [ - "console=ttyS0,115200n8" - ]; - - nix = { - gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; + nat = { + # enable NAT + enable = true; + externalInterface = "end0"; + internalInterfaces = ["wg1"]; }; - # This will add each flake input as a registry - # To make nix3 commands consistent with your flake - registry = lib.mapAttrs (_: value: {flake = value;}) inputs; - - # This will additionally add your inputs to the system's legacy channels - # Making legacy nix commands consistent as well, awesome! - nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; - - settings = { - # Enable flakes and new 'nix' command - experimental-features = "nix-command flakes"; - # Deduplicate and optimize nix store - auto-optimise-store = true; - }; - }; - - networking.wireless.enable = true; - networking.wireless.environmentFile = config.sops.secrets."wireless.env".path; - networking.wireless.networks."KPNAA6306" = { - hidden = true; - auth = '' - key_mgmt=WPA-PSK - password="@PSK_HOME@" - ''; - }; - - networking.firewall.enable = true; - - networking.firewall = { - allowedTCPPorts = [22 80 443 5335 8080]; - allowedUDPPorts = [5335]; - }; - # Set your time zone. - time.timeZone = "Europe/Amsterdam"; - - programs.zsh = { - enable = true; - }; - - programs.git = { - enable = true; - }; - - users.users = { - lillian = { - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGatnsrKMoZSW24Lw4meb6BAgHgeyN/8rUib4nZVT+CB lillian@EDI" - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC7+LEQnC/nlYp7nQ4p6hUCqaGiqfsA3Mg8bSy+zA8Fj lillian@GLaDOS" + firewall = { + enable = true; + allowPing = false; + allowedTCPPorts = [ + 22 # SSH + 5349 # STUN tls + 5350 # STUN tls alt + 80 # http + 443 # https + 51821 # wg + 7878 + 53 # dnsmasq + ]; + allowedUDPPorts = [ + 53 #dnsmasq + ]; + allowedUDPPortRanges = [ + { + from = 51820; + to = 51822; # wg + } + { + from = 49152; + to = 49999; + } # TURN relay ]; - isNormalUser = true; - extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf"]; - shell = pkgs.zsh; }; }; + systemd.mounts = [ + { + enable = true; + description = "Webdav mount point"; + after = ["network-online.target"]; + wants = ["network-online.target"]; - home-manager = { - extraSpecialArgs = {inherit inputs outputs;}; - users = { - # Import your home-manager configuration - lillian = import ../../../home-manager/hosts/wheatley/wheatley-Lillian.nix; - }; - }; + what = "https://nextcloud.gladtherescake.eu/remote.php/dav/files/GLaDTheresCake"; + where = "/home/kodi/nextcloud"; + options = "uid=1002,gid=100,file_mode=0664,dir_mode=2775"; + type = "davfs"; + } + ]; - networking.hostName = "wheatley"; # Define your hostname + environment.systemPackages = [ + pkgs.mpv-unwrapped + # (pkgs.kodi.withPackages (kodiPkgs: + # with kodiPkgs; [ + # steam-controller + # invidious + # youtube + # netflix + # upnext + # sponsorblock + # sendtokodi + # jellyfin + # inputstream-adaptive + # inputstreamhelper + # inputstream-ffmpegdirect + # upnext + # sponsorblock + # sendtokodi + # routing + # requests-cache + # requests + # plugin-cache + # a4ksubtitles + # ])) + pkgs.iptables + ]; - networking.wireless.interfaces = ["enu1u1"]; + users.extraUsers.kodi.isNormalUser = true; + services.cage.user = "kodi"; + services.cage.program = "${pkgs.kodi-wayland}/bin/kodi-standalone"; + services.cage.enable = true; + nixpkgs.config.kodi.enableAdvancedLauncher = true; - # powerManagement.cpuFreqGovernor = "powersave"; - powerManagement.cpufreq.max = 648000; - - # This value determines the NixOS release with which your system is to be - # compatible, in order to avoid breaking some software such as database - # servers. You should change this only after NixOS release notes say you - # should. - system.stateVersion = "unstable"; # Did you read the comment? + system.stateVersion = "25.05"; + nixpkgs.hostPlatform = lib.mkForce "aarch64-linux"; } diff --git a/nixos/hosts/wheatley/hardware-configuration.nix b/nixos/hosts/wheatley/hardware-configuration.nix index f7ea389..3f0b8dc 100644 --- a/nixos/hosts/wheatley/hardware-configuration.nix +++ b/nixos/hosts/wheatley/hardware-configuration.nix @@ -2,9 +2,7 @@ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. { - config, lib, - pkgs, modulesPath, ... }: { @@ -12,40 +10,26 @@ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = ["usbhid"]; + boot.initrd.availableKernelModules = ["xhci_pci"]; boot.initrd.kernelModules = []; boot.kernelModules = []; boot.extraModulePackages = []; + boot.supportedFilesystems = lib.mkForce ["btrfs" "cifs" "f2fs" "jfs" "ntfs" "reiserfs" "vfat" "xfs"]; - fileSystems = { - # Prior to 19.09, the boot partition was hosted on the smaller first partition - # Starting with 19.09, the /boot folder is on the main bigger partition. - # The following is to be used only with older images. Note such old images should not be considered supported anymore whatsoever, but if you installed back then, this might be needed - - # "/boot" = { - # device = "/dev/disk/by-label/FIRMWARE"; - # fsType = "vfat"; - # }; - - "/" = { - device = "/dev/disk/by-label/NIXOS_SD"; - fsType = "ext4"; - }; - }; - - swapDevices = [{device = "/dev/disk/by-uuid/b299ad0d-37a0-43d6-9647-5f717aca7b3";}]; + swapDevices = [ + { + device = "/swapfile"; + size = 16 * 1024; + } + ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.enu1u1.useDHCP = lib.mkDefault true; - # networking.interfaces.ip6tnl0.useDHCP = lib.mkDefault true; - # networking.interfaces.sit0.useDHCP = lib.mkDefault true; + # networking.interfaces.end0.useDHCP = lib.mkDefault true; # networking.interfaces.wlan0.useDHCP = lib.mkDefault true; - nixpkgs.hostPlatform = lib.mkDefault "armv7l-linux"; - - powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand"; + nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; } diff --git a/nixos/hosts/wheatley/secrets/sops.yaml b/nixos/hosts/wheatley/secrets/sops.yaml index 94f8617..6fcd84c 100644 --- a/nixos/hosts/wheatley/secrets/sops.yaml +++ b/nixos/hosts/wheatley/secrets/sops.yaml @@ -1,4 +1,10 @@ wireless.env: ENC[AES256_GCM,data:a5sUW0Lc4GRd9aUJwHbmQvzvRB8WaRjMSQ==,iv:+3ncL38E3aqbejoCzzeBtMukLk4n/AQBJELlqhXDqSA=,tag:buY9Mp10DAEEEKqSyHwB3g==,type:str] +lillian-password: ENC[AES256_GCM,data:GY7WyfLRc/q4fecnazWzfoZsruN/F0ar7mJ9RaqTHSb9K6xhEmifmJeqpR5xGIJYW6MYciCsZ9YmRsJbuSHTIlo9PrCTYBGvXg==,iv:bzml3abPox3RdvtKBQiBAcVXHUdGAn0ETMsDpBtT8T0=,tag:2iaBJ4hFFBUbonslTvQH5Q==,type:str] +protonvpn-priv-key: ENC[AES256_GCM,data:s4LAq1Rqm+jGaK3OKcjIBCQYXPs3oEuTKJMAM+gFxIpZdwcJCIU7uyoCy6c=,iv:zoWv5u0xgJHldwdRGRv3bXI1kasaWQz1YD7wt0J890I=,tag:cFXnayZRq13UqP+XWuHnWw==,type:str] +rpcSecret: ENC[AES256_GCM,data:3tCZk2csB/ofxPc6,iv:NwT6k1hh73moH6eErT23/Dvwgb1wP/qIuoxXnCgNSao=,tag:nh0mFsh9I4R1baCL1oH+AA==,type:str] +webdav-secret: ENC[AES256_GCM,data:SDFyHaE+HprkguOmDfnzwQ/n5OYgbTpxcVl4FGiLcsItefbSDOIQg5l01fqVB8zv+rRGlPcyRrIn7KTPrTpBx7X4RNHfFK4FKKvAANt6z0e5pu1+wnoObWxTShCFjfFoRCLkoh/j/CmLFyFIafrI7rzZUhs=,iv:stygLmNVWXkZL5A0J83CKPefRr7TqXeygQVLszr28eY=,tag:9hss2c77JELSASnwUyAF4w==,type:str] +wg-private-key: ENC[AES256_GCM,data:5WGAAst0qVqn1siX3snkAhsSDhZaS33XHT44BfViWLZqvzw+OhPB/jkSr4U=,iv:yXfN50SM3OWdycINB8iWXtvCSS01NBTrGBs1kxd1j0M=,tag:yhjDY1AM5aQ6DFeFEjo2Mw==,type:str] +ssh-private-key: ENC[AES256_GCM,data:zbCR/+REHSN4BIQIXSOQjSRKYWhaXutdn4AE2zxmN44qHPzMI98c7/aX2KFhHOL+vKpgyhhR6JAGVTF5Jk72lmIHwDvwvwx+gLXgpZH1KEK3nTUdwUVcqBDsVB4Na5rTsHMWmRH+NxV7n+3nSQo/Byi0Jb602IPXRNREL+0toCbHon27/o2uIy4uzbsEWZu6N2hadzQCtXmHJM2dqmbKvpADt04TQ4wAcZ6wB0538g5WdtOSU6T1xcBBSDU7MNEVP7e7dUPKJWK79cI+RrzpGIh/da7cM6exSBRas711oL6woH4Hi3G6Yjd1rPxBPt1+/qq45gm/4UvjQywn/1s7BInCe9/5vJLn3TEzuUd96CsT36vEsxMeOekXf50Ntu6Xr02bnFRwUBm76BVGAggwGf/khRNJuLw0xHsCdeKzHsPD0efe5mHTJw8mB3M6vDhO6e3g6E3uRjjBaDnrPuHuD4NE1kCjQTTJh3NbuT2Ab55lhpSOEK+f0Ik2qZgKzALvJhn+MILjXSfP/hXgiwBeP4dkTY3fOcpmnPyS,iv:ojh2hzVzJFy1kvvo/WvaIpMpGT+b9aSC+L8L0iwhF1o=,tag:bHOj/fxDn/qUmp1eijLPuw==,type:str] sops: kms: [] gcp_kms: [] @@ -14,8 +20,8 @@ sops: Vm9mWk5JRGtZNVVhN1JQWTBlb2kySkEKoLI1MzS3uGNUbyn7kI5DylKZiPtc1div bKIboWoobTfDt0EURfmZ5+JrX6DlZxRyNQyl9dsKmZT6pLdaIppStA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-01-12T16:14:03Z" - mac: ENC[AES256_GCM,data:J/0+e7w8tcfsQ9xtWJifKYpWQLpLssjSgxMl/PdIyYuWKDKkF/dDr+joP7Evlk5Hg3dXL7ijGFgYVwUjhFzbgk9pUiHt0cvXj0hthgwUIUpQh42M6qKtxRaxP/Mp9Shb2CSwZfZ2GyXP4lJuMS76SDKo46xGdbejwlLPZ11oArA=,iv:rWrrB9VUxX3N2OSSep9SPfyl9Ke7hQVGkheazOrbis4=,tag:9fBYgtCoNm9Unv7ADJTb0Q==,type:str] + lastmodified: "2024-12-22T22:37:02Z" + mac: ENC[AES256_GCM,data:T31z1/pngI6Wa3HMyOxS5ofb2Y5YqK0v5m96mn7n5dQ0d992ooEpoNyE7r8qHsD+tXiHvLIybWUMiMlDLI7Gq8op9GLEYYnFNDfc24k7lQPPuQK/iraJFUQwiRBbK063Rmfa6q6S3P2YN58+oxUJUiKuAy4yUIJTNaHeCCH8HMc=,iv:uLbAtSNbUcsejWdE1oBvCQVOtuaHL7A3R0sT/ispjhU=,tag:t3D7h0B0dDDZ18qo8G8wiA==,type:str] pgp: [] unencrypted_suffix: _unencrypted - version: 3.8.1 + version: 3.9.2 diff --git a/nixos/server/default.nix b/nixos/server/default.nix new file mode 100644 index 0000000..99a5736 --- /dev/null +++ b/nixos/server/default.nix @@ -0,0 +1,6 @@ +{...}: { + # You can import other home-manager modules here + imports = [ + ./package-configs + ]; +} diff --git a/nixos/server/package-configs/akkoma/configuration.nix b/nixos/server/package-configs/akkoma/default.nix similarity index 97% rename from nixos/server/package-configs/akkoma/configuration.nix rename to nixos/server/package-configs/akkoma/default.nix index bd68ba9..d0495bf 100644 --- a/nixos/server/package-configs/akkoma/configuration.nix +++ b/nixos/server/package-configs/akkoma/default.nix @@ -1,7 +1,4 @@ { - inputs, - outputs, - lib, config, pkgs, ... diff --git a/nixos/server/package-configs/aria2/container.nix b/nixos/server/package-configs/aria2/container.nix index 6d2fc82..c76c97c 100644 --- a/nixos/server/package-configs/aria2/container.nix +++ b/nixos/server/package-configs/aria2/container.nix @@ -1,8 +1,4 @@ -{ - config, - pkgs, - ... -}: { +{config, ...}: { users.users.aria2.group = "aria2"; users.groups.aria2 = {}; users.users.aria2.isSystemUser = true; diff --git a/nixos/server/package-configs/aria2/configuration.nix b/nixos/server/package-configs/aria2/default.nix similarity index 88% rename from nixos/server/package-configs/aria2/configuration.nix rename to nixos/server/package-configs/aria2/default.nix index f2a075c..e7d15bd 100644 --- a/nixos/server/package-configs/aria2/configuration.nix +++ b/nixos/server/package-configs/aria2/default.nix @@ -1,10 +1,4 @@ -{ - inputs, - outputs, - config, - pkgs, - ... -}: { +{config, ...}: { users.users.aria2.group = "aria2"; users.groups.aria2 = {}; users.users.aria2.isSystemUser = true; diff --git a/nixos/server/package-configs/caddy/default.nix b/nixos/server/package-configs/caddy/default.nix new file mode 100644 index 0000000..029c590 --- /dev/null +++ b/nixos/server/package-configs/caddy/default.nix @@ -0,0 +1,56 @@ +{config, ...}: { + services.phpfpm.pools.nextcloud.settings = { + "listen.owner" = config.services.caddy.user; + "listen.group" = config.services.caddy.group; + }; + + users.users.caddy.extraGroups = ["nextcloud"]; + + services.caddy = { + enable = true; + + # Setup Nextcloud virtual host to listen on ports + virtualHosts = { + "${config.services.nextcloud.hostName}" = { + useACMEHost = "${config.services.nextcloud.hostName}"; + extraConfig = '' + redir /.well-known/carddav /remote.php/dav 301 + redir /.well-known/caldav /remote.php/dav 301 + redir /.well-known/webfinger /index.php/.well-known/webfinger 301 + redir /.well-known/nodeinfo /index.php/.well-known/nodeinfo 301 + + encode gzip + reverse_proxy localhost:9000 + header Strict-Transport-Security max-age=31536000; + @forbidden { + path /.htaccess + path /data/* + path /config/* + path /db_structure + path /.xml + path /README + path /3rdparty/* + path /lib/* + path /templates/* + path /occ + path /console.php + } + handle @forbidden { + respond 404 + } + + handle { + root * /var/www/html + php_fastcgi 127.0.0.1:9000 { + # Tells nextcloud to remove /index.php from URLs in links + env front_controller_active true + } + file_server + } + ''; + }; + "onlyoffice.gladtherescake.eu" = { + }; + }; + }; +} diff --git a/nixos/server/package-configs/cinny/default.nix b/nixos/server/package-configs/cinny/default.nix new file mode 100644 index 0000000..63891b4 --- /dev/null +++ b/nixos/server/package-configs/cinny/default.nix @@ -0,0 +1,17 @@ +{pkgs, ...}: { + services.nginx = { + enable = true; + virtualHosts = { + "cinny.gladtherescake.eu" = { + root = "${pkgs.cinny}"; + ## Force HTTP redirect to HTTPS + forceSSL = true; + ## LetsEncrypt + enableACME = true; + locations."/" = { + index = "index.html"; + }; + }; + }; + }; +} diff --git a/nixos/server/package-configs/conduit/configuration.nix b/nixos/server/package-configs/conduit/configuration.nix deleted file mode 100644 index d9f44a9..0000000 --- a/nixos/server/package-configs/conduit/configuration.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { - services.matrix-conduit = { - enable = true; - settings.global = { - allow_registration = true; - server_name = "matrix.gladtherescake.eu"; - port = 6167; - }; - }; - - services.nginx = { - virtualHosts = { - "matrix.gladtherescake.eu" = { - forceSSL = true; - enableACME = true; - locations."/" = { - proxyPass = "http://localhost:6167"; - proxyWebsockets = true; - }; - }; - }; - }; - - # Open firewall ports for HTTP, HTTPS, and Matrix federation - networking.firewall.allowedTCPPorts = [80 443 8448]; - networking.firewall.allowedUDPPorts = [80 443 8448]; -} diff --git a/nixos/server/package-configs/conduit/default.nix b/nixos/server/package-configs/conduit/default.nix new file mode 100644 index 0000000..17424c4 --- /dev/null +++ b/nixos/server/package-configs/conduit/default.nix @@ -0,0 +1,153 @@ +{ + config, + pkgs, + ... +}: let + # You'll need to edit these values + # The hostname that will appear in your user and room IDs + server_name = "matrix.gladtherescake.eu"; + + # An admin email for TLS certificate notifications + admin_email = "letsencrypt@gladtherescake.eu"; + + # These ones you can leave alone + + # Build a dervation that stores the content of `${server_name}/.well-known/matrix/server` + well_known_server = pkgs.writeText "well-known-matrix-server" '' + { + "m.server": "${server_name}" + } + ''; + + # Build a dervation that stores the content of `${server_name}/.well-known/matrix/client` + well_known_client = pkgs.writeText "well-known-matrix-client" '' + { + "m.homeserver": { + "base_url": "https://${server_name}" + } + } + ''; +in { + # Configure Conduit itself + services.matrix-continuwuity = { + enable = true; + + settings.global = { + inherit server_name; + allow_registration = false; + # emergency_password = "testpassword"; + turn_uris = ["turn:turn.gladtherescake.eu.url?transport=udp" "turn:turn.gladtherescake.eu?transport=tcp"]; + turn_secret = "cPKWEn4Fo5TAJoE7iX3xeVOaMVE4afeRN1iRGWYfbkWbkaZMxTpnmazHyH6c6yXT"; + well_known = { + server = "matrix.gladtherescake.eu:443"; + client = "https://matrix.gladtherescake.eu"; + }; + }; + }; + + # Configure automated TLS acquisition/renewal + security.acme = { + acceptTerms = true; + defaults = { + email = admin_email; + }; + }; + + # ACME data must be readable by the NGINX user + users.users.nginx.extraGroups = [ + "acme" + ]; + + # Configure NGINX as a reverse proxy + services.nginx = { + enable = true; + + virtualHosts = { + "${server_name}" = { + forceSSL = true; + enableACME = true; + + listen = [ + { + addr = "0.0.0.0"; + port = 443; + ssl = true; + } + { + addr = "[::]"; + port = 443; + ssl = true; + } + { + addr = "0.0.0.0"; + port = 8448; + ssl = true; + } + { + addr = "[::]"; + port = 8448; + ssl = true; + } + ]; + + locations."/_matrix/" = { + proxyPass = "http://backend_conduit"; + proxyWebsockets = true; + extraConfig = '' + proxy_set_header Host $host; + proxy_buffering off; + ''; + }; + locations."=/.well-known/matrix/server" = { + # Use the contents of the derivation built previously + alias = "${well_known_server}"; + + extraConfig = '' + # Set the header since by default NGINX thinks it's just bytes + default_type application/json; + ''; + }; + + locations."=/.well-known/matrix/client" = { + # Use the contents of the derivation built previously + alias = "${well_known_client}"; + return = "200 '{\"m.homeserver\": {\"base_url\": \"https://${server_name}\"}, \"org.matrix.msc3575.proxy\": {\"url\": \"https://${server_name}\"}}'"; + + extraConfig = '' + # Set the header since by default NGINX thinks it's just bytes + default_type application/json; + + # https://matrix.org/docs/spec/client_server/r0.4.0#web-browser-clients + add_header Access-Control-Allow-Origin "*"; + ''; + }; + locations."/_matrix/client/unstable/org.matrix.msc3575/sync" = { + proxyPass = "http://matrix.gladtherescake.eu/client/unstable/org.matrix.msc3575/sync"; + proxyWebsockets = true; + recommendedProxySettings = false; + return = "200 '{\"contacts\": [{\"matrix_id\": \"@admin:server.name\", \"email_address\": \"admin@server.name\", \"role\": \"m.role.admin\"}]}'"; + extraConfig = '' + proxy_set_header Host $host; + proxy_buffering off; + ''; + }; + + extraConfig = '' + merge_slashes off; + ''; + }; + }; + + upstreams = { + "backend_conduit" = { + servers = { + "[::1]:${toString config.services.matrix-conduit.settings.global.port}" = {}; + }; + }; + }; + }; + + # Open firewall ports for HTTP, HTTPS, and Matrix federation + networking.firewall.allowedTCPPorts = [80 443 8448]; + networking.firewall.allowedUDPPorts = [80 443 8448]; +} diff --git a/nixos/server/package-configs/coturn/default.nix b/nixos/server/package-configs/coturn/default.nix new file mode 100644 index 0000000..5bae63e --- /dev/null +++ b/nixos/server/package-configs/coturn/default.nix @@ -0,0 +1,44 @@ +{config, ...}: { + sops.secrets."coturn-auth-secret".mode = "0440"; + sops.secrets."coturn-auth-secret".owner = config.users.users.turnserver.name; + users.users.nginx.extraGroups = ["turnserver"]; + services.coturn = { + enable = true; + use-auth-secret = true; + static-auth-secret = "cPKWEn4Fo5TAJoE7iX3xeVOaMVE4afeRN1iRGWYfbkWbkaZMxTpnmazHyH6c6yXT"; + realm = "turn.gladtherescake.eu"; + relay-ips = [ + "62.171.160.195" + "2a02:c207:2063:2448::1" + ]; + extraConfig = " + cipher-list=\"HIGH\" + no-loopback-peers + no-multicast-peers + "; + secure-stun = true; + cert = "/var/lib/acme/turn.gladtherescake.eu/fullchain.pem"; + pkey = "/var/lib/acme/turn.gladtherescake.eu/key.pem"; + min-port = 49152; + max-port = 49999; + }; + + # setup certs + services.nginx = { + enable = true; + virtualHosts = { + "turn.gladtherescake.eu" = { + forceSSL = true; + enableACME = true; + }; + }; + }; + + # share certs with coturn and restart on renewal + security.acme.certs = { + "turn.gladtherescake.eu" = { + group = "turnserver"; + postRun = "systemctl reload nginx.service; systemctl restart coturn.service"; + }; + }; +} diff --git a/nixos/server/package-configs/dashboard/default.nix b/nixos/server/package-configs/dashboard/default.nix new file mode 100644 index 0000000..7bbb7fc --- /dev/null +++ b/nixos/server/package-configs/dashboard/default.nix @@ -0,0 +1,8 @@ +{...}: { + imports = [ + ./grafana + #./loki + ./prometheus + ./telegraf + ]; +} diff --git a/nixos/server/package-configs/dashboard/grafana/default.nix b/nixos/server/package-configs/dashboard/grafana/default.nix new file mode 100644 index 0000000..41f696e --- /dev/null +++ b/nixos/server/package-configs/dashboard/grafana/default.nix @@ -0,0 +1,44 @@ +{config, ...}: { + # grafana configuration + services.grafana = { + enable = true; + settings.server = { + domain = "grafana.lillianviolet.dev"; + http_port = 2342; + http_addr = "127.0.0.1"; + }; + provision = { + datasources.settings = { + apiVersion = 1; + datasources = [ + { + name = "Prometheus"; + type = "prometheus"; + access = "proxy"; + url = "http://localhost:${toString config.services.prometheus.port}"; + isDefault = true; + } + { + name = "Loki"; + type = "loki"; + access = "proxy"; + url = "http://localhost:3100"; + isDefault = true; + } + ]; + }; + }; + }; + + # nginx reverse proxy + services.nginx.virtualHosts.${config.services.grafana.settings.server.domain} = { + ## Force HTTP redirect to HTTPS + forceSSL = true; + ## LetsEncrypt + enableACME = true; + locations."/" = { + proxyPass = "http://${toString config.services.grafana.settings.server.http_addr}:${toString config.services.grafana.settings.server.http_port}"; + proxyWebsockets = true; + }; + }; +} diff --git a/nixos/server/package-configs/dashboard/loki/default.nix b/nixos/server/package-configs/dashboard/loki/default.nix new file mode 100644 index 0000000..e83159b --- /dev/null +++ b/nixos/server/package-configs/dashboard/loki/default.nix @@ -0,0 +1,6 @@ +{...}: { + services.loki = { + enable = true; + configFile = ./loki.yaml; + }; +} diff --git a/nixos/server/package-configs/dashboard/loki/loki.yaml b/nixos/server/package-configs/dashboard/loki/loki.yaml new file mode 100644 index 0000000..d0e9699 --- /dev/null +++ b/nixos/server/package-configs/dashboard/loki/loki.yaml @@ -0,0 +1,40 @@ +# Enables authentication through the X-Scope-OrgID header, which must be present +# if true. If false, the OrgID will always be set to "fake". +auth_enabled: false + +server: + http_listen_address: "0.0.0.0" + http_listen_port: 3100 + +ingester: + lifecycler: + address: "127.0.0.1" + ring: + kvstore: + store: inmemory + replication_factor: 1 + final_sleep: 0s + chunk_idle_period: 5m + chunk_retain_period: 30s + +schema_config: + configs: + - from: 2020-05-15 + store: boltdb + object_store: filesystem + schema: v11 + index: + prefix: index_ + period: 168h + +storage_config: + boltdb: + directory: /tmp/loki/index + + filesystem: + directory: /tmp/loki/chunks + +limits_config: + enforce_metric_name: false + reject_old_samples: true + reject_old_samples_max_age: 168h \ No newline at end of file diff --git a/nixos/server/package-configs/dashboard/prometheus/default.nix b/nixos/server/package-configs/dashboard/prometheus/default.nix new file mode 100644 index 0000000..fd08b3e --- /dev/null +++ b/nixos/server/package-configs/dashboard/prometheus/default.nix @@ -0,0 +1,34 @@ +{config, ...}: { + services.prometheus = { + enable = true; + port = 9001; + # Export the current system metrics + exporters = { + node = { + enable = true; + enabledCollectors = ["systemd"]; + port = 9002; + }; + }; + scrapeConfigs = [ + # Scrape the current system + { + job_name = "GrafanaService system"; + static_configs = [ + { + targets = ["127.0.0.1:${toString config.services.prometheus.exporters.node.port}"]; + } + ]; + } + # Scrape the Loki service + { + job_name = "Loki service"; + static_configs = [ + { + targets = ["127.0.0.1:3100"]; + } + ]; + } + ]; + }; +} diff --git a/nixos/server/package-configs/dashboard/telegraf/default.nix b/nixos/server/package-configs/dashboard/telegraf/default.nix new file mode 100644 index 0000000..591e279 --- /dev/null +++ b/nixos/server/package-configs/dashboard/telegraf/default.nix @@ -0,0 +1,49 @@ +{config, ...}: { + sops.secrets."grafana-telegraf-key".mode = "0440"; + sops.secrets."grafana-telegraf-key".owner = config.users.users.telegraf.name; + services.telegraf = { + enable = true; + extraConfig = { + agent = { + interval = "10s"; + round_interval = true; + metric_batch_size = 1000; + metric_buffer_limit = 10000; + collection_jitter = "0s"; + flush_interval = "10s"; + flush_jitter = "0s"; + precision = ""; + debug = false; + quiet = false; + logfile = ""; + hostname = "queen"; + omit_hostname = false; + }; + inputs = { + cpu = { + percpu = true; + totalcpu = true; + collect_cpu_time = false; + report_active = false; + core_tags = false; + }; + disk = { + ignore_fs = ["tmpfs" "devtmpfs" "devfs" "overlay" "aufs" "squashfs"]; + }; + diskio = {}; + kernel = {}; + mem = {}; + system = {}; + }; + outputs = { + websocket = { + url = "ws://localhost:${toString config.services.prometheus.port}/api/live/push/telegraf"; + data_format = "influx"; + headers = { + Authorisation = "Bearer glsa_lqpcKV34Pp0d7eIhKN79E2HTwzWWwN4m_fe64e398"; + }; + }; + }; + }; + }; +} diff --git a/nixos/server/package-configs/default.nix b/nixos/server/package-configs/default.nix new file mode 100644 index 0000000..91ff838 --- /dev/null +++ b/nixos/server/package-configs/default.nix @@ -0,0 +1,18 @@ +{...}: { + imports = [ + ./conduit + ./forgejo + ./gotosocial + ./mail-server + ./nextcloud + ./phanpy + ./postgres + ./roundcube + ./coturn + ./dashboard + #./cinny + #./firefox-sync + ./writefreely + ./mollysocket + ]; +} diff --git a/nixos/server/package-configs/dex/configuration.nix b/nixos/server/package-configs/dex/configuration.nix deleted file mode 100644 index 7779479..0000000 --- a/nixos/server/package-configs/dex/configuration.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - config, - pkgs, - ... -}: { - services.dex = { - enable = true; - # You can add secret files here - environmentFile = null; - settings = { - # External url - issuer = "http://127.0.0.1:5556/dex"; - storage = { - type = "postgres"; - config.host = "/var/run/postgres"; - }; - web = { - http = "127.0.0.1:5556"; - }; - enablePasswordDB = true; - staticClients = [ - { - id = "oidcclient"; - name = "Client"; - redirectURIs = ["https://example.com/callback"]; - secretFile = "/etc/dex/oidcclient"; # The content of `secretFile` will be written into to the config as `secret`. - } - ]; - }; - }; -} diff --git a/nixos/server/package-configs/firefox-sync/default.nix b/nixos/server/package-configs/firefox-sync/default.nix new file mode 100644 index 0000000..a97abf3 --- /dev/null +++ b/nixos/server/package-configs/firefox-sync/default.nix @@ -0,0 +1,30 @@ +{ + config, + pkgs, + ... +}: let + port = 5126; +in { + sops.secrets."sync-secrets".mode = "0440"; + sops.secrets."sync-secrets".owner = config.users.users.firefox-syncserver.name; + + users.groups.firefox-syncserver = {}; + users.users.firefox-syncserver = { + isSystemUser = true; + group = "firefox-syncserver"; + extraGroups = [config.users.groups.keys.name]; + }; + + services.mysql.package = pkgs.mariadb; + services.firefox-syncserver = { + enable = true; + secrets = config.sops.secrets."sync-secrets".path; + singleNode = { + enable = true; + hostname = "sync.gladtherescake.eu"; + url = "http://localhost:${toString port}"; + enableNginx = true; + enableTLS = true; + }; + }; +} diff --git a/nixos/server/package-configs/forgejo/configuration.nix b/nixos/server/package-configs/forgejo/default.nix similarity index 55% rename from nixos/server/package-configs/forgejo/configuration.nix rename to nixos/server/package-configs/forgejo/default.nix index 8911594..b4efc44 100644 --- a/nixos/server/package-configs/forgejo/configuration.nix +++ b/nixos/server/package-configs/forgejo/default.nix @@ -1,39 +1,14 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{pkgs, ...}: { imports = []; - #users.groups.gitea = {}; - #users.users = { - # gitea = { - # openssh.authorizedKeys.keys = [ - # "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCnYgErCnva8fvLvsmTMC6dHJp2Fvwja0BYL8K/58ugDxNA0PVGj5PpEMar5yhi4AFGGYL4EgD75tRgI/WQU87ZiKjJ6HFIhgX9curncB2kIJ0JoA+FIQMNOT72GFuhjcO4svanrobsMrRmcn193suXY/N6m6F+3pitxBfHPWuPKKjlZqVBzpqCdz9pXoGOk48OSYv7Zyw8roVsUw3fqJqs68LRLM/winWVhVSPabXGyX7PAAW51Nbv6M64REs+V1a+wGvK5sGhRy7lIBAIuD22tuL4/PZojST1hasKN+7cSp7F1QTi4u0yeQ2+gIclQNuhfvghzl6zcVEpOycFouSIJaJjo8jyuHkbm4I2XfALVTFHe7sLpYNNS7Mf6E6i5rHvAvtXI4UBx/LjgPOj7RWZFaotxQRk1D+N0y2xNrO4ft6mS+hrJ/+ybp1XTGdtlkpUDKjiTZkV7Z4fq9J0jtijvtxRfcPhjia50IIHtZ28wVBMCCwYzh5pR15F/XbvKCc= lillian@EDI" - # "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC7+LEQnC/nlYp7nQ4p6hUCqaGiqfsA3Mg8bSy+zA8Fj lillian@GLaDOS" - # ]; - # isSystemUser = true; - # isNormalUser = false; - # group = "gitea"; - # extraGroups = ["virtualMail"]; - # }; - #}; #sops.secrets."mailpassunhash".mode = "0440"; #sops.secrets."mailpassunhash".owner = config.users.users.virtualMail.name; services.forgejo = { enable = true; - #user = "gitea"; - #group = "gitea"; - #stateDir = "/var/lib/gitea"; #TODO: different mail passwords for different services #mailerPasswordFile = config.sops.secrets."mailpassunhash".path; database = { - #user = "gitea"; - #name = "gitea"; type = "postgres"; }; settings = { @@ -64,6 +39,21 @@ ROOT_URL = "https://git.lillianviolet.dev/"; HTTP_PORT = 3218; }; + "markup.jupyter" = { + ENABLED = true; + FILE_EXTENSIONS = ".ipynb"; + RENDER_COMMAND = "${pkgs.jupyter}/bin/jupyter nbconvert --stdout --to html --template full"; + IS_INPUT_FILE = true; + RENDER_CONTENT_MODE = "no-sanitizer"; + }; + "markup.sanitizer.jupyter0" = { + ELEMENT = "div"; + ALLOW_ATTR = "class"; + REGEXP = ""; + }; + "markup.sanitizer.jupyter0.img" = { + ALLOW_DATA_URI_IMAGES = true; + }; }; }; diff --git a/nixos/server/package-configs/gotosocial/configuration.nix b/nixos/server/package-configs/gotosocial/default.nix similarity index 95% rename from nixos/server/package-configs/gotosocial/configuration.nix rename to nixos/server/package-configs/gotosocial/default.nix index 9e3afdf..3740c15 100644 --- a/nixos/server/package-configs/gotosocial/configuration.nix +++ b/nixos/server/package-configs/gotosocial/default.nix @@ -1,11 +1,4 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{pkgs, ...}: { users.users.gotosocial.extraGroups = ["virtualMail"]; services.nginx = { diff --git a/nixos/server/package-configs/jellyfin/configuration.nix b/nixos/server/package-configs/jellyfin/default.nix similarity index 87% rename from nixos/server/package-configs/jellyfin/configuration.nix rename to nixos/server/package-configs/jellyfin/default.nix index f61461e..cc492d4 100644 --- a/nixos/server/package-configs/jellyfin/configuration.nix +++ b/nixos/server/package-configs/jellyfin/default.nix @@ -1,11 +1,4 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{...}: { users.users.jellyfin.extraGroups = ["nextcloud" "aria2"]; services.nginx = { diff --git a/nixos/server/package-configs/mail-server/configuration.nix b/nixos/server/package-configs/mail-server/default.nix similarity index 83% rename from nixos/server/package-configs/mail-server/configuration.nix rename to nixos/server/package-configs/mail-server/default.nix index e43a5c6..2a65c9b 100644 --- a/nixos/server/package-configs/mail-server/configuration.nix +++ b/nixos/server/package-configs/mail-server/default.nix @@ -1,18 +1,12 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{config, ...}: { sops.secrets."mailpass".mode = "0440"; sops.secrets."mailpass".owner = config.users.users.virtualMail.name; #Fix for the dovecot update - services.dovecot2.sieve.extensions = ["fileinto"]; + # services.dovecot2.sieve.extensions = ["fileinto"]; mailserver = { + stateVersion = 1; enable = true; enableImap = true; enableSubmission = true; @@ -21,11 +15,21 @@ "nextcloud.gladtherescake.eu" "akkoma.gladtherescake.eu" "social.gladtherescake.eu" + "gladtherescake.eu" "lillianviolet.dev" "git.lillianviolet.dev" ]; loginAccounts = { + "me@gladtherescake.eu" = { + hashedPasswordFile = config.sops.secrets."mailpass".path; + aliases = [ + "@gladtherescake.eu" + ]; + catchAll = [ + "gladtherescake.eu" + ]; + }; "no-reply@nextcloud.gladtherescake.eu" = { hashedPasswordFile = config.sops.secrets."mailpass".path; }; @@ -81,6 +85,7 @@ "no-reply@akkoma.gladtherescake.eu" "no-reply@social.gladtherescake.eu" "no-reply@git.lillianviolet.dev" + "ongebonden@gladtherescake.eu" ]; certificateScheme = "acme-nginx"; certificateDomains = [ @@ -88,6 +93,7 @@ "mail.lillianviolet.dev" "pop3.lillianviolet.dev" "lillianviolet.dev" + "gladtherescake.eu" "mail.gladtherescake.eu" ]; }; diff --git a/nixos/server/package-configs/mollysocket/default.nix b/nixos/server/package-configs/mollysocket/default.nix new file mode 100644 index 0000000..1d445ea --- /dev/null +++ b/nixos/server/package-configs/mollysocket/default.nix @@ -0,0 +1,25 @@ +{config, ...}: { + sops.secrets."mollysocket-vapid-key".mode = "0440"; + + services.mollysocket = { + enable = true; + environmentFile = config.sops.secrets."mollysocket-vapid-key".path; + settings = { + port = 4381; + allowed_endpoints = ["https://molly.gladtherescake.eu" "https://nextcloud.gladtherescake.eu"]; + allowed_uuids = ["db639f29-b7e7-431a-9c75-bcdcb87b6bdf"]; + webserver = true; + }; + }; + services.nginx = { + virtualHosts = { + "molly.gladtherescake.eu" = { + forceSSL = true; + enableACME = true; + locations."/" = { + proxyPass = "http://localhost:4381"; + }; + }; + }; + }; +} diff --git a/nixos/server/package-configs/nextcloud/configuration.nix b/nixos/server/package-configs/nextcloud/default.nix similarity index 79% rename from nixos/server/package-configs/nextcloud/configuration.nix rename to nixos/server/package-configs/nextcloud/default.nix index 2485eca..3367dbd 100644 --- a/nixos/server/package-configs/nextcloud/configuration.nix +++ b/nixos/server/package-configs/nextcloud/default.nix @@ -7,13 +7,14 @@ sops.secrets."nextcloudadmin".owner = config.users.users.nextcloud.name; sops.secrets."nextclouddb".mode = "0440"; sops.secrets."nextclouddb".owner = config.users.users.nextcloud.name; - sops.secrets."local.json".mode = "0440"; - sops.secrets."local.json".owner = config.users.users.onlyoffice.name; + # sops.secrets."local.json".mode = "0440"; + # sops.secrets."local.json".owner = config.users.users.onlyoffice.name; users.users = { - nextcloud.extraGroups = [config.users.groups.keys.name "aria2" "onlyoffice"]; - aria2.extraGroups = ["nextcloud"]; - onlyoffice.extraGroups = ["nextcloud"]; + # nextcloud.extraGroups = [config.users.groups.keys.name config.users.users.onlyoffice.name]; + nextcloud.extraGroups = [config.users.groups.keys.name]; + #aria2.extraGroups = ["nextcloud"]; + # onlyoffice.extraGroups = [config.users.users.nextcloud.name]; }; # Enable Nginx @@ -49,7 +50,7 @@ enable = true; hostName = "nextcloud.gladtherescake.eu"; - package = pkgs.nextcloud28; + package = pkgs.nextcloud31; # Use HTTPS for links https = true; @@ -67,6 +68,7 @@ settings = { overwriteprotocol = "https"; default_phone_region = "NL"; + maintenance_window_start = 3; }; appstoreEnable = true; extraAppsEnable = true; @@ -89,14 +91,15 @@ }; }; - services.onlyoffice = { - enable = true; - hostname = "onlyoffice.gladtherescake.eu"; - #postgresHost = "/run/postgesql"; - #postgresUser = "onlyoffice"; - #postgresName = "onlyoffice"; - #jwtSecretFile = config.sops.secrets."local.json".path; - }; + # services.onlyoffice = { + # port = 16783; + # enable = true; + # hostname = "onlyoffice.gladtherescake.eu"; + # #postgresHost = "/run/postgesql"; + # #postgresUser = "onlyoffice"; + # #postgresName = "onlyoffice"; + # #jwtSecretFile = config.sops.secrets."local.json".path; + # }; services.rabbitmq = { enable = true; diff --git a/nixos/server/package-configs/ombi/configuration.nix b/nixos/server/package-configs/ombi/default.nix similarity index 97% rename from nixos/server/package-configs/ombi/configuration.nix rename to nixos/server/package-configs/ombi/default.nix index 7065ae5..c82156c 100644 --- a/nixos/server/package-configs/ombi/configuration.nix +++ b/nixos/server/package-configs/ombi/default.nix @@ -1,8 +1,4 @@ -{ - config, - pkgs, - ... -}: { +{...}: { users.users = { ombi.extraGroups = ["radarr" "sonarr" "aria2" "nextcloud"]; }; diff --git a/nixos/server/package-configs/phanpy/default.nix b/nixos/server/package-configs/phanpy/default.nix new file mode 100644 index 0000000..362f8f7 --- /dev/null +++ b/nixos/server/package-configs/phanpy/default.nix @@ -0,0 +1,17 @@ +{pkgs, ...}: { + services.nginx = { + enable = true; + virtualHosts = { + "phanpy.gladtherescake.eu" = { + root = "${pkgs.phanpy}"; + ## Force HTTP redirect to HTTPS + forceSSL = true; + ## LetsEncrypt + enableACME = true; + locations."/" = { + index = "index.html"; + }; + }; + }; + }; +} diff --git a/nixos/server/package-configs/postgres/configuration.nix b/nixos/server/package-configs/postgres/default.nix similarity index 95% rename from nixos/server/package-configs/postgres/configuration.nix rename to nixos/server/package-configs/postgres/default.nix index 92b9478..0a3e4f6 100644 --- a/nixos/server/package-configs/postgres/configuration.nix +++ b/nixos/server/package-configs/postgres/default.nix @@ -1,8 +1,4 @@ -{ - config, - pkgs, - ... -}: { +{pkgs, ...}: { services.postgresql = { # https://nixos.org/manual/nixos/stable/#module-postgresql package = pkgs.postgresql_16; diff --git a/nixos/server/package-configs/roundcube/configuration.nix b/nixos/server/package-configs/roundcube/default.nix similarity index 99% rename from nixos/server/package-configs/roundcube/configuration.nix rename to nixos/server/package-configs/roundcube/default.nix index d33c621..59ee43d 100644 --- a/nixos/server/package-configs/roundcube/configuration.nix +++ b/nixos/server/package-configs/roundcube/default.nix @@ -1,7 +1,6 @@ { config, pkgs, - lib, ... }: { # TODO: Figure out how to create packages for some plugins for roundcube! diff --git a/nixos/server/package-configs/writefreely/default.nix b/nixos/server/package-configs/writefreely/default.nix new file mode 100644 index 0000000..43dc7bc --- /dev/null +++ b/nixos/server/package-configs/writefreely/default.nix @@ -0,0 +1,39 @@ +{ + config, + pkgs, + ... +}: { + sops.secrets."writefreely".mode = "0440"; + sops.secrets."writefreely".owner = config.users.users.writefreely.name; + sops.secrets."writefreelymysql".mode = "0440"; + sops.secrets."writefreelymysql".owner = config.users.users.writefreely.name; + services.writefreely = { + enable = true; + host = "writefreely.gladtherescake.eu"; + nginx.enable = true; + nginx.forceSSL = true; + acme.enable = true; + # database = { + # type = "mysql"; + # createLocally = true; + # passwordFile = config.sops.secrets."writefreelymysql".path; + # }; + admin = { + initialPasswordFile = config.sops.secrets."writefreely".path; + name = "GLaDTheresCake"; + }; + settings = { + app = { + min_username_len = 2; + max_blogs = 100; + default_visibility = "public"; + federation = true; + local_timeline = true; + }; + server.port = 1212; + }; + }; + systemd.services.writefreely = { + path = [pkgs.openssl]; + }; +} diff --git a/nixos/shared/background.jpg b/nixos/shared/background.jpg new file mode 100644 index 0000000..2ad658c Binary files /dev/null and b/nixos/shared/background.jpg differ diff --git a/nixos/shared/default.nix b/nixos/shared/default.nix new file mode 100644 index 0000000..b9663e3 --- /dev/null +++ b/nixos/shared/default.nix @@ -0,0 +1,232 @@ +{ + inputs, + outputs, + lib, + config, + pkgs, + ... +}: { + imports = [ + ./locale + ./packages + inputs.home-manager.nixosModules.home-manager + #../hosts/${config.networking.hostName}/hardware-configuration.nix + ]; + sops = { + age.keyFile = ../../../../../../var/secrets/keys.txt; + secrets."lillian-password".neededForUsers = true; + + defaultSopsFile = ../hosts/${config.networking.hostName}/secrets/sops.yaml; + + secrets."wg-private-key".mode = "0440"; + secrets."wg-private-key".owner = config.users.users.root.name; + + secrets."ssh-private-key" = { + mode = "0600"; + owner = config.users.users.lillian.name; + path = "/home/lillian/.ssh/id_ed25519"; + }; + }; + #TODO: remove this when unneeded for freetube + nixpkgs.config.permittedInsecurePackages = [ + "python3.12-youtube-dl-2021.12.17" + ]; + + nix = { + package = pkgs.lix; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + # This will add each flake input as a registry + # To make nix3 commands consistent with your flake + registry = lib.mapAttrs (_: value: {flake = value;}) inputs; + + # This will additionally add your inputs to the system's legacy channels + # Making legacy nix commands consistent as well, awesome! + nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; + + settings = { + trusted-users = ["root" "lillian"]; + # Enable flakes and new 'nix' command + experimental-features = "nix-command flakes"; + # Deduplicate and optimize nix store + auto-optimise-store = true; + extra-substituters = [ + "https://cache.lix.systems" + "https://nix-community.cachix.org" + "https://nixpkgs-unfree.cachix.org" + "https://0uptime.cachix.org" + ]; + trusted-public-keys = [ + "cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "nixpkgs-unfree.cachix.org-1:hqvoInulhbV4nJ9yJOEr+4wxhDV4xq2d1DK7S6Nj6rs=" + "0uptime.cachix.org-1:ctw8yknBLg9cZBdqss+5krAem0sHYdISkw/IFdRbYdE=" + ]; + }; + }; + + #TODO: ugly hardcoded delete, if it ever becomes a problem fix this, else just leave it I guess + system.userActivationScripts = { + removeConflictingFiles = { + text = '' + rm -f /home/lillian/.config/gtk-3.0/settings.ini.backup + rm -f /home/lillian/.config/gtk-3.0/gtk.css.backup + rm -f /home/lillian/.config/gtk-4.0/settings.ini.backup + rm -f /home/lillian/.config/gtk-4.0/gtk.css.backup + ''; + }; + }; + + catppuccin = { + flavor = "macchiato"; + tty.enable = true; + sddm.enable = true; + sddm.flavor = "macchiato"; + forgejo.enable = true; + forgejo.flavor = "macchiato"; + # plymouth.enable = false; + # grub.enable = false; + }; + + programs.zsh = { + enable = true; + }; + + programs.gnupg.agent = { + enable = true; + enableBrowserSocket = true; + }; + + stylix = { + enable = true; + # targets.qt.platform = "kde6"; + autoEnable = true; + base16Scheme = { + scheme = "Catppuccin Macchiato"; + author = "https://github.com/catppuccin/catppuccin"; + base00 = "24273a"; + base01 = "1e2030"; + base02 = "363a4f"; + base03 = "494d64"; + base04 = "5b6078"; + base05 = "cad3f5"; + base06 = "f4dbd6"; + base07 = "b7bdf8"; + base08 = "ed8796"; + base09 = "f5a97f"; + base0A = "eed49f"; + base0B = "a6da95"; + base0C = "8bd5ca"; + base0D = "8aadf4"; + base0E = "c6a0f6"; + base0F = "f0c6c6"; + }; + image = ./background.jpg; + cursor.package = pkgs.catppuccin-cursors.macchiatoMauve; + cursor.name = "catppuccin-macchiato-mauve-cursors"; + cursor.size = 24; + homeManagerIntegration.followSystem = true; + fonts = { + serif = { + package = pkgs.atkinson-hyperlegible; + name = "Atkinson Hyperlegible"; + }; + + monospace = { + package = pkgs.atkinson-monolegible; + name = "Atkinson Monolegible"; + }; + + sansSerif = { + package = pkgs.atkinson-hyperlegible; + name = "Atkinson Hyperlegible"; + }; + + emoji = { + package = pkgs.noto-fonts-emoji-blob-bin; + name = "Blobmoji"; + }; + }; + }; + + fonts.packages = [ + pkgs.atkinson-hyperlegible + pkgs.atkinson-monolegible + pkgs.noto-fonts + pkgs.nerd-fonts.fira-mono + pkgs.font-awesome + ]; + + # fonts.fontconfig.defaultFonts = { + # emoji = ["Blobmoji"]; + # monospace = ["Atkinson Monolegible"]; + # sansSerif = ["Atkinson Hyperlegible"]; + # }; + + networking = + if config.services.vpn-ip.enable + then { + wireguard.enable = true; + + wg-quick.interfaces = { + wg0 = { + autostart = true; + address = ["10.0.0.${config.services.vpn-ip.ip}/24" "fdc9:281f:04d7:9ee9::${config.services.vpn-ip.ip}/64"]; + dns = ["10.0.0.1" "fdc9:281f:04d7:9ee9::1"]; + listenPort = 51821; + privateKeyFile = config.sops.secrets."wg-private-key".path; + peers = [ + { + publicKey = "A02sO7uLdgflhPIRd0cbJONIaPP4z8HTxDkmX4NegFg="; + endpoint = "84.87.146.85:51821"; + allowedIPs = ["0.0.0.0/0" "::/0"]; + persistentKeepalive = 25; + } + ]; + }; + }; + } + else {}; + + environment = { + systemPackages = with pkgs; [ + nix-output-monitor + ]; + + # Enable completion of system packages by zsh + pathsToLink = ["/share/zsh"]; + }; + + home-manager = { + backupFileExtension = "backup"; + extraSpecialArgs = { + inputs = inputs; + outputs = outputs; + }; + users = { + # Import your home-manager configuration + lillian = import ../../home-manager/hosts/${config.networking.hostName}; + }; + }; + + users = { + users.lillian = { + isNormalUser = true; + extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf" "docker"]; + shell = pkgs.zsh; + hashedPasswordFile = config.sops.secrets."lillian-password".path; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILhwA+ZdP2tEBYQNdzLHZzFHxocyeqzhXI6tFpaZA3PZ lillian@EDI" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH30G2PJOnI6jnAtxOQV0SpLFUva0adarLZLvaoZvjGE lillian@GLaDOS" + ]; + }; + mutableUsers = false; + + users.root = { + hashedPassword = "*"; + }; + }; +} diff --git a/nixos/shared/locale/configuration.nix b/nixos/shared/locale/default.nix similarity index 87% rename from nixos/shared/locale/configuration.nix rename to nixos/shared/locale/default.nix index 2444204..ea9e4e8 100644 --- a/nixos/shared/locale/configuration.nix +++ b/nixos/shared/locale/default.nix @@ -1,11 +1,4 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { +{...}: { # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; diff --git a/nixos/shared/packages/configuration.nix b/nixos/shared/packages/configuration.nix deleted file mode 100644 index d16f35f..0000000 --- a/nixos/shared/packages/configuration.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - inputs, - outputs, - lib, - config, - pkgs, - ... -}: { - environment.systemPackages = with pkgs; [ - # System tools - age - alejandra - git - git-filter-repo - home-manager - htop - neofetch - oh-my-zsh - rsync - spacevim - wget - zsh - - # System libraries - noto-fonts - noto-fonts-emoji-blob-bin - noto-fonts-emoji - ]; -} diff --git a/nixos/shared/packages/default.nix b/nixos/shared/packages/default.nix new file mode 100644 index 0000000..d82be3b --- /dev/null +++ b/nixos/shared/packages/default.nix @@ -0,0 +1,74 @@ +{ + outputs, + pkgs, + pkgs-edge, + ... +}: { + nixpkgs = { + # You can add overlays here + overlays = [ + # Add overlays your own flake exports (from overlays and pkgs dir): + outputs.overlays.additions + outputs.overlays.modifications + ]; + }; + + environment.systemPackages = + (with pkgs; [ + # Custom tools + rebuild + rebuild-no-inhibit + install-nix + install-nix-no-inhibit + update + upgrade + simple-completion-language-server + + # System tools + age + alejandra + e2fsprogs + uutils-findutils + git + git-filter-repo + pre-commit + helix + home-manager + htop + just + killall + oh-my-zsh + rsync + tre-command + wget + zsh + tldr + + # System libraries + ]) + ++ (with pkgs-edge; [ + # list of latest packages from nixpkgs master + # Can be used to install latest version of some packages + ]); + + # fonts = { + # packages = with pkgs; [ + # noto-fonts-emoji-blob-bin + # cantarell-fonts + # dejavu_fonts + # fira-code + # noto-fonts + # noto-fonts-cjk-sans + # noto-fonts-cjk-serif + # paratype-pt-sans + # paratype-pt-mono + # paratype-pt-serif + # roboto + # twemoji-color-font + # font-awesome + # atkinson-hyperlegible + # fira-code-nerdfont + # ]; + # enableDefaultPackages = false; + # }; +} diff --git a/overlays/default.nix b/overlays/default.nix index 54f7d69..267ba4c 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,5 +1,14 @@ # This file defines overlays {inputs, ...}: { + # This one contains whatever you want to overlay + # You can change versions, add patches, set compilation flags, anything really. + # https://nixos.wiki/wiki/Overlays + modifications = final: prev: { + # steam = prev.steam.override { + # extraProfile = ''export LD_PRELOAD=${inputs.extest}/lib/libextest.so:$LD_PRELOAD''; + # }; + }; + # This one brings our custom packages from the 'pkgs' directory additions = final: _prev: import ../pkgs { @@ -7,15 +16,6 @@ pkgs = final; }; - # This one contains whatever you want to overlay - # You can change versions, add patches, set compilation flags, anything really. - # https://nixos.wiki/wiki/Overlays - modifications = final: prev: { - # example = prev.example.overrideAttrs (oldAttrs: rec { - # ... - # }); - }; - # When applied, the stable nixpkgs set (declared in the flake inputs) will # be accessible through 'pkgs.stable' pkg-sets = ( diff --git a/pkgs/auto-mount/default.nix b/pkgs/auto-mount/default.nix new file mode 100644 index 0000000..b7a8a26 --- /dev/null +++ b/pkgs/auto-mount/default.nix @@ -0,0 +1,239 @@ +{ + pkgs, + writeShellApplication, +}: +writeShellApplication +{ + # Originally from: https://github.com/scawp/Steam-Deck.Mount-External-Drive/ + + name = "auto-mount"; + + runtimeInputs = [pkgs.steam]; + + text = '' + set -euo pipefail + + # Originally from https://serverfault.com/a/767079 + + # This script is called from our systemd unit file to mount or unmount + # a USB drive. + + usage() + { + echo "Usage: $0 {add|remove} device_name (e.g. sdb1)" + exit 1 + } + + if [[ $# -ne 2 ]]; then + usage + fi + + ACTION=$1 + DEVBASE=$2 + DEVICE="/dev/''${DEVBASE}" + + # Shared between this and the auto-mount script to ensure we're not double-triggering nor automounting while formatting + # or vice-versa. + MOUNT_LOCK="/home/lillian/lock/jupiter-automount-''${DEVBASE//\/_}.lock" + + # Obtain lock + exec 9<>"$MOUNT_LOCK" + if ! flock -n 9; then + echo "$MOUNT_LOCK is active: ignoring action $ACTION" + # Do not return a success exit code: it could end up putting the service in 'started' state without doing the mount + # work (further start commands will be ignored after that) + exit 1 + fi + + # Wait N seconds for steam + wait_steam() + { + local i=0 + local wait=$1 + echo "Waiting up to $wait seconds for steam to load" + while ! pgrep -x steamwebhelper &>/dev/null && (( i++ < wait )); do + sleep 1 + done + } + + send_steam_url() + { + local command + command="$1" + local arg + arg="$2" + local encoded + encoded=$(urlencode "$arg") + if pgrep -x "steam" > /dev/null; then + # TODO use -ifrunning and check return value - if there was a steam process and it returns -1, the message wasn't sent + # need to retry until either steam process is gone or -ifrunning returns 0, or timeout i guess + echo "Sent URL to steam: steam://''${command}/''${arg} (steam://''${command}/''${encoded})" >> /home/lillian/steam.txt + systemd-run -M 1000@ --user --collect --wait sh -c "${pkgs.steam}/bin/steam steam://''${command}/''${encoded@Q}" + else + echo "Could not send steam URL steam://''${command}/''${arg} (steam://''${command}/''${encoded}) -- steam not running" + fi + } + + # From https://gist.github.com/HazCod/da9ec610c3d50ebff7dd5e7cac76de05 + urlencode() + { + [ -z "$1" ] || echo -n "$@" | hexdump -v -e '/1 "%02x"' | sed 's/\(..\)/%\1/g' + } + + do_mount() + { + declare -i ret + # NOTE: these values are ABI, since they are sent to the Steam client + # shellcheck disable=SC2034 + readonly FSCK_ERROR=1 + # shellcheck disable=SC2034 + readonly MOUNT_ERROR=2 + + # Get info for this drive: $ID_FS_LABEL, and $ID_FS_TYPE + dev_json=$(lsblk -o PATH,LABEL,FSTYPE --json -- "$DEVICE" | jq '.blockdevices[0]') + ID_FS_LABEL=$(jq -r '.label | select(type == "string")' <<< "$dev_json") + ID_FS_TYPE=$(jq -r '.fstype | select(type == "string")' <<< "$dev_json") + + # Global mount options + OPTS="rw,noatime" + + # File system type specific mount options + #if [[ ''${ID_FS_TYPE} == "vfat" ]]; then + # OPTS+=",users,gid=100,umask=000,shortname=mixed,utf8=1,flush" + #fi + + case "''${ID_FS_TYPE}" in + "ntfs") + echo "FSType is NTFS" + #Extra Opts don't seem necessary anymore? add if required + #OPTS+="" + ;; + "exfat") + echo "FSType is exFat" + #OPTS+=",users,gid=100,umask=000,shortname=mixed,utf8=1,flush" + ;; + "btrfs") + echo "FSType is btrfs" + ;; + "ext4") + echo "FSType is ext4" + #exit 2 + ;; + *) + echo "Error mounting ''${DEVICE}: unsupported fstype: ''${ID_FS_TYPE} - ''${dev_json}" + rm "''${MOUNT_LOCK}" + exit 2 + ;; + esac + + # Prior to talking to udisks, we need all udev hooks (we were started by one) to finish, so we know it has knowledge + # of the drive. Our own rule starts us as a service with --no-block, so we can wait for rules to settle here + # safely. + #if ! udevadm settle; then + # echo "Failed to wait for \`udevadm settle\`" + # exit 1 + #fi + + # Ask udisks to auto-mount. This needs a version of udisks that supports the 'as-user' option. + ret=0 + reply=$(busctl call --allow-interactive-authorization=false --expect-reply=true --json=short \ + org.freedesktop.UDisks2 \ + /org/freedesktop/UDisks2/block_devices/"''${DEVBASE}" \ + org.freedesktop.UDisks2.Filesystem \ + Mount 'a{sv}' 3 \ + as-user s lillian \ + auth.no_user_interaction b true \ + options s "$OPTS") || ret=$? + + if (( ret != 0 )); then + # send_steam_url "system/devicemountresult" "''${DEVBASE}/''${MOUNT_ERROR}" + echo "Error mounting ''${DEVICE} (status = $ret)" + exit 1 + fi + + # Expected reply is of the format + # {"type":"s","data":["/run/media/lillian/home"]} + mount_point=$(jq -r '.data[0] | select(type == "string")' <<< "$reply" || true) + if [[ -z $mount_point ]]; then + echo "Error when mounting ''${DEVICE}: udisks returned success but could not parse reply:" + echo "---"$'\n'"$reply"$'\n'"---" + exit 1 + fi + + if [[ ''${ID_FS_TYPE} == "exfat" ]]; then + echo "exFat does not support symlinks, do not add library to Steam" + exit 0 + fi + + # Create a symlink from /run/media to keep compatibility with apps + # that use the older mount point (for SD cards only). + case "''${DEVBASE}" in + mmcblk0p*) + if [[ -z "''${ID_FS_LABEL}" ]]; then + old_mount_point="/run/media/''${DEVBASE}" + else + old_mount_point="/run/media/''${mount_point##*/}" + fi + if [[ ! -d "''${old_mount_point}" ]]; then + rm -f -- "''${old_mount_point}" + ln -s -- "''${mount_point}" "''${old_mount_point}" + fi + ;; + esac + + echo "**** Mounted ''${DEVICE} at ''${mount_point} ****" + + if [ -f "''${mount_point}/libraryfolder.vdf" ]; then + echo " send_steam_url \"addlibraryfolder\" \"''${mount_point}\"" + # send_steam_url "addlibraryfolder" "''${mount_point}" + else + #TODO check permissions are 1000 when creating new SteamLibrary + mkdir -p "''${mount_point}/SteamLibrary" + chown lillian:users "''${mount_point}/SteamLibrary" + # send_steam_url "addlibraryfolder" "''${mount_point}/SteamLibrary" + fi + } + + do_unmount() + { + local mount_point + mount_point=$(findmnt -fno TARGET "''${DEVICE}" || true) + if [[ -n $mount_point ]]; then + # Remove symlink to the mount point that we're unmounting + find /run/media -maxdepth 1 -xdev -type l -lname "''${mount_point}" -exec rm -- {} \; + else + # If we don't know the mount point then remove all broken symlinks + find /run/media -maxdepth 1 -xdev -xtype l -exec rm -- {} \; + fi + } + + do_retrigger() + { + local mount_point + mount_point=$(findmnt -fno TARGET "''${DEVICE}" || true) + [[ -n $mount_point ]] || return 0 + + # In retrigger mode, we want to wait a bit for steam as the common pattern is starting in parallel with a retrigger + wait_steam 10 + # This is a truly gnarly way to ensure steam is ready for commands. + # TODO literally anything else + sleep 6 + # send_steam_url "addlibraryfolder" "''${mount_point}" + } + + case "''${ACTION}" in + add) + do_mount + ;; + remove) + do_unmount + ;; + retrigger) + do_retrigger + ;; + *) + usage + ;; + esac + ''; +} diff --git a/pkgs/cinny/default.nix b/pkgs/cinny/default.nix new file mode 100644 index 0000000..ed59af3 --- /dev/null +++ b/pkgs/cinny/default.nix @@ -0,0 +1,50 @@ +{ + lib, + buildNpmPackage, + fetchFromGitHub, + pkgs, +}: let + port = 2143; + configFile = + pkgs.writeText "config.json" + '' + { + "defaultHomeserver": 0, + "homeserverList": [ + "matrix.gladtherescake.eu" + ], + "allowCustomHomeservers": false + } + ''; +in + buildNpmPackage rec { + pname = "cinny"; + version = "09a0a2d"; + + src = fetchFromGitHub { + owner = "cinnyapp"; + repo = pname; + rev = "${version}"; + hash = "sha256-ee8YOJ0fGy26OWXb2Uumzy68M4UpERHH3ni0q+tDY14="; + }; + + npmDepsHash = "sha256-zelk15/rXXjhWuHj1GsSevnyXVBeDkMJ0qZfPyejq4A="; + + # The prepack script runs the build script, which we'd rather do in the build phase. + npmPackFlags = ["--ignore-scripts" "--max_old_space_size=4096"]; + + installPhase = '' + mkdir $out + npm run build + cp -r dist/* $out + mkdir $out/app + cp ${configFile} $out/app/config.json + ''; + + meta = with lib; { + description = "Yet another matrix client"; + homepage = "https://cinny.in/"; + license = licenses.agpl3O; + maintainers = with maintainers; [Lillian-Violet]; + }; + } diff --git a/pkgs/default.nix b/pkgs/default.nix index 819fb05..464322b 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -3,4 +3,15 @@ pkgs: { dvd = pkgs.callPackage ./dvd {}; dvt = pkgs.callPackage ./dvt {}; + servo = pkgs.callPackage ./servo {}; + rebuild-no-inhibit = pkgs.callPackage ./rebuild-no-inhibit {}; + rebuild = pkgs.callPackage ./rebuild {}; + install-nix-no-inhibit = pkgs.callPackage ./install-nix-no-inhibit {}; + install-nix = pkgs.callPackage ./install-nix {}; + update = pkgs.callPackage ./update {}; + upgrade = pkgs.callPackage ./upgrade {}; + restart = pkgs.callPackage ./restart {}; + phanpy = pkgs.callPackage ./phanpy {}; + auto-mount = pkgs.callPackage ./auto-mount {}; + simple-completion-language-server = pkgs.callPackage ./simple-completion-language-server {}; } diff --git a/pkgs/dvd/default.nix b/pkgs/dvd/default.nix index 7c6f81f..0973487 100644 --- a/pkgs/dvd/default.nix +++ b/pkgs/dvd/default.nix @@ -1,6 +1,4 @@ { - lib, - stdenv, direnv, writeShellApplication, }: diff --git a/pkgs/dvt/default.nix b/pkgs/dvt/default.nix index eabc160..7a9424c 100644 --- a/pkgs/dvt/default.nix +++ b/pkgs/dvt/default.nix @@ -1,6 +1,4 @@ { - lib, - stdenv, direnv, writeShellApplication, }: diff --git a/pkgs/install-nix-no-inhibit/default.nix b/pkgs/install-nix-no-inhibit/default.nix new file mode 100644 index 0000000..a1dff9e --- /dev/null +++ b/pkgs/install-nix-no-inhibit/default.nix @@ -0,0 +1,49 @@ +{ + git, + nix-output-monitor, + gum, + writeShellApplication, +}: +writeShellApplication +{ + name = "install-nix-no-inhibit"; + + runtimeInputs = [git gum nix-output-monitor]; + + text = '' + # An install script for NixOS installation to /tmp + set -e + pushd /tmp > /dev/null + rm -rf ./install-nix + git clone https://codeberg.org/Lillian-Violet/NixOS-Config.git ./install-nix + pushd ./install-nix/nixos/hosts > /dev/null + echo "Please choose the hostname you are installing to from the following list:" + i=1 + for d in */ + do + dirs[i++]="''${d%/}" + done + select dir in "''${dirs[@]}"; do echo "you selected ''${dir}"; break; done + popd > /dev/null + pushd ./install-nix > /dev/null + gum confirm --default=false \ + "🔥 🔥 🔥 WARNING!!!! This will ERASE ALL DATA on the disk for ''${dir}. Are you sure you want to continue?" + + echo "Partitioning Disks" + sudo nix run github:nix-community/disko \ + --extra-experimental-features "nix-command flakes" \ + --no-write-lock-file \ + -- \ + --mode zap_create_mount \ + "./disko/''${dir}/default.nix" + echo "NixOS Installing..." + sudo nixos-install --flake .#"''${dir}" --show-trace --log-format internal-json -v |& nom --json + sudo nixos-install --flake .#"''${dir}" --show-trace --log-format internal-json -v |& nom --json + popd > /dev/null + echo "Cleaning up repository in '/tmp/install-nix'..." + rm -rf ./install-nix + rm -rf ./install-nix + popd > /dev/null + echo "NixOS Install Succeeded!" + ''; +} diff --git a/pkgs/install-nix/default.nix b/pkgs/install-nix/default.nix new file mode 100644 index 0000000..51bd530 --- /dev/null +++ b/pkgs/install-nix/default.nix @@ -0,0 +1,12 @@ +{writeShellApplication}: +writeShellApplication +{ + name = "install-nix"; + + runtimeInputs = []; + + text = '' + # A rebuild script for NixOS + sudo systemd-inhibit --who="NixOS Installer" --why="Installing NixOS to /mnt" install-nix-no-inhibit + ''; +} diff --git a/pkgs/phanpy/default.nix b/pkgs/phanpy/default.nix new file mode 100644 index 0000000..7d02853 --- /dev/null +++ b/pkgs/phanpy/default.nix @@ -0,0 +1,36 @@ +{ + lib, + buildNpmPackage, + fetchFromGitHub, +}: +buildNpmPackage rec { + pname = "phanpy"; + version = "2024.04.19.5145730"; + + src = fetchFromGitHub { + owner = "cheeaun"; + repo = pname; + rev = "${version}"; + hash = "sha256-+/VtvDYBRy5Y6ZmqNH3id4hph1p3323G2zeE1bqfT1Y="; + }; + + npmDepsHash = "sha256-9tcZ3jQg+mHeI2K/dNFs0C1k7CfHwxbx+/+I8pdO/wQ="; + + # The prepack script runs the build script, which we'd rather do in the build phase. + npmPackFlags = ["--ignore-scripts"]; + + installPhase = '' + export PHANPY_CLIENT_NAME="Phanpy on gladtherescake.eu" + export PHANPY_WEBSITE="phanpy.gladtherescake.eu" + mkdir $out + npm run build + cp -r dist/* $out + ''; + + meta = with lib; { + description = "Minimalistic opinionated Mastodon web client."; + homepage = "https://phanpy.social/"; + license = licenses.mit; + maintainers = with maintainers; [Lillian-Violet]; + }; +} diff --git a/pkgs/rebuild-no-inhibit/default.nix b/pkgs/rebuild-no-inhibit/default.nix new file mode 100644 index 0000000..ab38581 --- /dev/null +++ b/pkgs/rebuild-no-inhibit/default.nix @@ -0,0 +1,28 @@ +{ + writeShellApplication, + nix-output-monitor, + just, +}: +writeShellApplication +{ + name = "rebuild-no-inhibit"; + + runtimeInputs = [nix-output-monitor just]; + + text = '' + # A rebuild script for NixOS + + set -e + pushd /tmp > /dev/null + rm -rf ./rebuild + git clone https://codeberg.org/Lillian-Violet/NixOS-Config.git ./rebuild + pushd ./rebuild > /dev/null + echo "NixOS Rebuilding..." + just build + popd > /dev/null + echo "Cleaning up repository in '/tmp/rebuild'..." + rm -rf ./rebuild + popd > /dev/null + echo "NixOS Rebuilt OK!" + ''; +} diff --git a/pkgs/rebuild/default.nix b/pkgs/rebuild/default.nix new file mode 100644 index 0000000..8c61e66 --- /dev/null +++ b/pkgs/rebuild/default.nix @@ -0,0 +1,12 @@ +{writeShellApplication}: +writeShellApplication +{ + name = "rebuild"; + + runtimeInputs = []; + + text = '' + # A rebuild script for NixOS + sudo systemd-inhibit --who="NixOS Updater" --why="Updating system configuration" rebuild-no-inhibit + ''; +} diff --git a/pkgs/restart/default.nix b/pkgs/restart/default.nix new file mode 100644 index 0000000..2405faa --- /dev/null +++ b/pkgs/restart/default.nix @@ -0,0 +1,14 @@ +{writeShellApplication}: +writeShellApplication +{ + name = "restart"; + + runtimeInputs = []; + + text = '' + # Restart script for kde + + killall .plasmashell-wr + kstart plasmashell& + ''; +} diff --git a/pkgs/servo/default.nix b/pkgs/servo/default.nix new file mode 100644 index 0000000..6c140d2 --- /dev/null +++ b/pkgs/servo/default.nix @@ -0,0 +1,79 @@ +{ + lib, + stdenv, + fetchurl, + autoPatchelfHook, + zlib, + glib, + harfbuzz, + fontconfig, + freetype, + dbus, + libunwind, + gst_all_1, + xorg, + libxkbcommon, + vulkan-loader, +}: +stdenv.mkDerivation rec { + pname = "servo"; + version = "2024-04-12"; + + src = fetchurl { + url = "https://github.com/servo/servo-nightly-builds/releases/download/${version}/servo-latest.tar.gz"; + hash = "sha256-sMqjnFrJvlu3Dck/HdyKVzqMZxvMatlt9/5cHqzjusI="; + }; + + nativeBuildInputs = [ + autoPatchelfHook + ]; + + buildInputs = + [ + stdenv.cc.cc.lib + zlib + glib + harfbuzz + fontconfig + freetype + dbus + libunwind + ] + ++ (with gst_all_1; [ + gstreamer + gst-plugins-base + gst-plugins-bad + ]) + ++ (with xorg; [ + libxcb + libX11 + ]); + + runtimeDependencies = + [ + libxkbcommon + vulkan-loader + ] + ++ (with xorg; [ + libXcursor + libXrandr + libXi + ]); + + sourceRoot = "servo"; + + installPhase = '' + runHook preInstall + install -m755 -D servo $out/bin/._servo + echo "WINIT_UNIX_BACKEND=x11 $out/bin/._servo" > $out/bin/servo + chmod +x $out/bin/servo + cp -r ./resources $out/bin/ + runHook postInstall + ''; + + meta = with lib; { + homepage = "https://servo.org"; + description = "The embeddable, independent, memory-safe, modular, parallel web rendering engine"; + platforms = platforms.linux; + }; +} diff --git a/pkgs/simple-completion-language-server/default.nix b/pkgs/simple-completion-language-server/default.nix new file mode 100644 index 0000000..474f9f3 --- /dev/null +++ b/pkgs/simple-completion-language-server/default.nix @@ -0,0 +1,25 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, +}: +rustPlatform.buildRustPackage rec { + pname = "simple-completion-language-server"; + version = "6c797949ad5a6e9548b60b5475d1c9977f26c811"; + + src = fetchFromGitHub { + owner = "estin"; + repo = pname; + rev = version; + hash = "sha256-cITZdlDB03i7gOYbahV99wZOQ7tisnqdT/N2Z12oLFM="; + }; + + useFetchCargoVendor = true; + cargoHash = "sha256-nannF4BKRLCcsS7VznzEHqrhLHYvN4X22t8jud87XEM="; + meta = with lib; { + description = "Language server to enable word completion and snippets for Helix editor"; + homepage = "https://github.com/estin/simple-completion-language-server"; + license = licenses.mit; + maintainers = ["Lillian-Violet"]; + }; +} diff --git a/pkgs/update/default.nix b/pkgs/update/default.nix new file mode 100644 index 0000000..7f1b3e4 --- /dev/null +++ b/pkgs/update/default.nix @@ -0,0 +1,27 @@ +{writeShellApplication}: +writeShellApplication +{ + name = "update"; + + runtimeInputs = []; + + text = '' + # A script to update the flake lock for NixOS + set -e + pushd /tmp > /dev/null + rm -rf ./update + git clone git@codeberg.org:Lillian-Violet/NixOS-Config.git ./update + pushd ./update > /dev/null + echo "Updating flake lock..." + nix flake update + git stage ./flake.lock + git commit -m "update flake lock" + sudo nix flake check + git push + popd > /dev/null + echo "Cleaning up repository in '/tmp/update'..." + rm -rf ./update + popd > /dev/null + echo "Flake lock update OK!" + ''; +} diff --git a/pkgs/upgrade/default.nix b/pkgs/upgrade/default.nix new file mode 100644 index 0000000..7ab662b --- /dev/null +++ b/pkgs/upgrade/default.nix @@ -0,0 +1,13 @@ +{writeShellApplication}: +writeShellApplication +{ + name = "upgrade"; + + runtimeInputs = []; + + text = '' + # An upgrade script for nixos + update + sudo systemd-inhibit --who="NixOS Updater" --why="Updating system configuration" rebuild-no-inhibit + ''; +} diff --git a/temp.nix b/temp.nix new file mode 100644 index 0000000..e69de29