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/README.md b/README.md index a3071c5..31f5291 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,11 @@ if you don't want to use [sops](https://github.com/Mic92/sops-nix) secret manage 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, [lanzaboote](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 lanzaboote configuration, and replace the line +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 [lanzaboote](https://github.com/nix-community/lanzaboote) repository and follow the install steps. +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): @@ -46,16 +46,6 @@ To test if your build succeeds the basic checks and can start building the artif Note: this does not build the full configuration, and errors might still happen in deployment, especially for dependencies that rely on external services like webservers to be called. For obvious reasons the test building does not actually pull in all the artifacts, and does not make external calls aside from to the package files (You will need a built nix store, or a connection to the git repository that hosts your packages, like an internet connection to github, to make the test run) -## Post installation - -I have made a few commands for post installation (and for an iso installer to use) that make life a bit easier, they are automatically added to the [$PATH](https://en.wikipedia.org/wiki/PATH_(variable)). The commands will automatically inhibit sleep and standby so you don't have to worry about them getting interrupted. -| Command | Effect | -| ------------- | ------------- | -| rebuild | Use the latest version of the repo and do a nixos-rebuild switch on it to upgrade your system. | -| update | Update the flake lock in the repo, run a test to see if nothing breaks, and then push the flake lock update done to the repo. | -| upgrade | Run update and rebuild one after the other, useful for a quick upgrade. | -| install | Run a script that automatically lets you select a host to format the disks with disko, install nixos on that disk, and deploy the entire configuration. (useful for instal USBs) | - ## Technical details ### [Home manager](https://github.com/nix-community/home-manager) @@ -66,7 +56,4 @@ The secrets are managed in sops files within the hosts folders, there is only on ``nix-shell -p sops --run "sops ./nixos/hosts//secrets/sops.yaml"`` -This requires your system to have the keyfile available for sops to use, by default sops looks in the sops/age folder in your user folder for a keys.txt file with the private key. You can change this behaviour by setting the **\$SOPS_AGE_KEY_FILE** environment variable, or setting the **\$SOPS_AGE_KEY** environment variable to the key itself. - -### [Just](https://github.com/casey/just) -This repo uses just as a command runner for setting up and building the nixos files more easily. The programs needed to run all the commands are nix, just, and nom (nix output monitor). The commands you can use can be found in the justfile (named justfile in the root of this repo). This is purely for convenience, it doesn't add anything you could not manually do, it just automates a lot of steps. +This requires your system to have the keyfile available for sops to use, by default sops looks in the sops/age folder in your user folder for a keys.txt file with the private key. You can change this behaviour by setting the **\$SOPS_AGE_KEY_FILE** environment variable, or setting the **\$SOPS_AGE_KEY** environment variable to the key itself. \ No newline at end of file diff --git a/disko/GLaDOS/default.nix b/disko/GLaDOS/default.nix index 6e64efe..c605347 100644 --- a/disko/GLaDOS/default.nix +++ b/disko/GLaDOS/default.nix @@ -1,9 +1,9 @@ { disko.devices = { disk = { - main = { + sda1 = { type = "disk"; - device = "/dev/disk/by-path/pci-0000:01:00.0-nvme-1"; + device = "/dev/disk/by-path/pci-0000:06:00.0-ata-6"; content = { type = "gpt"; partitions = { @@ -14,14 +14,16 @@ type = "filesystem"; format = "vfat"; mountpoint = "/boot"; - mountOptions = ["umask=0077"]; + mountOptions = [ + "defaults" + ]; }; }; - nvme_luks = { + luks = { size = "100%"; content = { type = "luks"; - name = "nvme_crypted"; + name = "crypted"; extraOpenArgs = []; settings = { # if you want to use the key for interactive login be sure there is no trailing newline @@ -29,41 +31,58 @@ #keyFile = "/tmp/secret.key"; allowDiscards = true; }; + #additionalKeyFiles = ["/tmp/additionalSecret.key"]; content = { - type = "btrfs"; - extraArgs = ["-f"]; - subvolumes = { - "/root" = { - mountpoint = "/"; - mountOptions = ["subvol=root" "compress=zstd:1" "noatime" "ssd" "discard=async" "space_cache=v2" "commit=120"]; - }; - "/home" = { - mountpoint = "/home"; - mountOptions = ["subvol=home" "compress=zstd:1" "noatime" "ssd" "discard=async" "space_cache=v2" "commit=120" "autodefrag"]; - }; - "/nix" = { - mountpoint = "/nix"; - mountOptions = ["subvol=nix" "compress=zstd:1" "noatime" "ssd" "discard=async" "space_cache=v2" "commit=120" "nodatacow" "nodatasum"]; - }; - "/persist" = { - mountpoint = "/persistent"; - mountOptions = ["subvol=persistent" "compress=zstd:1" "noatime" "ssd" "discard=async" "space_cache=v2" "commit=120"]; - }; - "/log" = { - mountpoint = "/var/log"; - mountOptions = ["subvol=log" "compress=zstd:1" "noatime" "ssd" "discard=async" "space_cache=v2" "commit=120" "nodatacow" "nodatasum"]; - }; - "/swap" = { - mountpoint = "/swap"; - swap.swapfile.size = "8G"; - }; - }; + 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" = { diff --git a/flake.lock b/flake.lock index 7d8a4f7..c376c31 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1755819240, - "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "lastModified": 1732200724, + "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "rev": "153d52373b0fb2d343592871009a286ec8837aec", "type": "github" }, "original": { @@ -21,28 +21,27 @@ "base16-fish": { "flake": false, "locked": { - "lastModified": 1765809053, - "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", + "lastModified": 1622559957, + "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", "owner": "tomyun", "repo": "base16-fish", - "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", "type": "github" }, "original": { "owner": "tomyun", "repo": "base16-fish", - "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", "type": "github" } }, "base16-helix": { "flake": false, "locked": { - "lastModified": 1760703920, - "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", + "lastModified": 1736852337, + "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "d646af9b7d14bff08824538164af99d0c521b185", + "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", "type": "github" }, "original": { @@ -68,6 +67,33 @@ "type": "github" } }, + "bcachefs-tools": { + "inputs": { + "crane": "crane", + "flake-compat": "flake-compat", + "flake-parts": [ + "flake-parts" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1742852783, + "narHash": "sha256-pgpFoMc1RGGSyOGJikcXzsQND7VQ1/ywTwFa537b/hQ=", + "owner": "koverstreet", + "repo": "bcachefs-tools", + "rev": "6657ce2de3cdb25b14fb0183b90366e3e577fb9a", + "type": "github" + }, + "original": { + "owner": "koverstreet", + "repo": "bcachefs-tools", + "type": "github" + } + }, "blobs": { "flake": false, "locked": { @@ -89,11 +115,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1771508520, - "narHash": "sha256-srt94sUlkaGEJHQg7k6gVrBF1QZcHUY/VBESjCgZmKI=", + "lastModified": 1742599566, + "narHash": "sha256-xr6ntmiUPXSh9o9mJ7og9vxALMQs1EQhIhWUAO2D1M0=", "owner": "catppuccin", "repo": "nix", - "rev": "ec35c21e843e4748e60822cd5543983eb61dc87a", + "rev": "5e303e8d7e251868fa79f83bbda69da90aa62402", "type": "github" }, "original": { @@ -104,11 +130,11 @@ }, "crane": { "locked": { - "lastModified": 1771121070, - "narHash": "sha256-aIlv7FRXF9q70DNJPI237dEDAznSKaXmL5lfK/Id/bI=", + "lastModified": 1742394900, + "narHash": "sha256-vVOAp9ahvnU+fQoKd4SEXB2JG2wbENkpqcwlkIXgUC0=", "owner": "ipetkov", "repo": "crane", - "rev": "a2812c19f1ed2e5ed5ce2ef7109798b575c180e1", + "rev": "70947c1908108c0c551ddfd73d4f750ff2ea67cd", "type": "github" }, "original": { @@ -119,11 +145,26 @@ }, "crane_2": { "locked": { - "lastModified": 1765739568, - "narHash": "sha256-gQYx35Of4UDKUjAYvmxjUEh/DdszYeTtT6MDin4loGE=", + "lastModified": 1741148495, + "narHash": "sha256-EV8KUaIZ2/CdBXlutXrHoZYbWPeB65p5kKZk71gvDRI=", "owner": "ipetkov", "repo": "crane", - "rev": "67d2baff0f9f677af35db61b32b5df6863bcc075", + "rev": "75390a36cd0c2cdd5f1aafd8a9f827d7107f2e53", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "crane_3": { + "locked": { + "lastModified": 1739053031, + "narHash": "sha256-LrMDRuwAlRFD2T4MgBSRd1s2VtOE+Vl1oMCNu3RpPE0=", + "owner": "ipetkov", + "repo": "crane", + "rev": "112e6591b2d6313b1bd05a80a754a8ee42432a7e", "type": "github" }, "original": { @@ -139,11 +180,11 @@ ] }, "locked": { - "lastModified": 1771469470, - "narHash": "sha256-GnqdqhrguKNN3HtVfl6z+zbV9R9jhHFm3Z8nu7R6ml0=", + "lastModified": 1741786315, + "narHash": "sha256-VT65AE2syHVj6v/DGB496bqBnu1PXrrzwlw07/Zpllc=", "owner": "nix-community", "repo": "disko", - "rev": "4707eec8d1d2db5182ea06ed48c820a86a42dc13", + "rev": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de", "type": "github" }, "original": { @@ -155,11 +196,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1764873433, - "narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=", + "lastModified": 1741628778, + "narHash": "sha256-RsvHGNTmO2e/eVfgYK7g+eYEdwwh7SbZa+gZkT24MEA=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92", + "rev": "5a81d390bb64afd4e81221749ec4bffcbeb5fa80", "type": "github" }, "original": { @@ -171,15 +212,15 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "NixOS", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -187,15 +228,46 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1767039857, - "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", - "owner": "NixOS", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -207,11 +279,11 @@ ] }, "locked": { - "lastModified": 1769996383, - "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", "type": "github" }, "original": { @@ -223,16 +295,38 @@ "flake-parts_2": { "inputs": { "nixpkgs-lib": [ - "stylix", + "lanzaboote", "nixpkgs" ] }, "locked": { - "lastModified": 1767609335, - "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", + "lastModified": 1740872218, + "narHash": "sha256-ZaMw0pdoUKigLpv9HiNDH2Pjnosg7NBYMJlHTIsHEUo=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "250481aafeb741edfe23d29195671c19b36b6dca", + "rev": "3876f6b87db82f33775b1ef5ea343986105db764", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", "type": "github" }, "original": { @@ -260,6 +354,27 @@ } }, "flake-utils_2": { + "inputs": { + "systems": [ + "stylix", + "systems" + ] + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { "inputs": { "systems": "systems_3" }, @@ -296,21 +411,21 @@ "git-hooks": { "inputs": { "flake-compat": [ - "simple-nixos-mailserver", + "stylix", "flake-compat" ], "gitignore": "gitignore_2", "nixpkgs": [ - "simple-nixos-mailserver", + "stylix", "nixpkgs" ] }, "locked": { - "lastModified": 1769939035, - "narHash": "sha256-Fok2AmefgVA0+eprw2NDwqKkPGEI5wvR+twiZagBvrg=", + "lastModified": 1741379162, + "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "a8ca480175326551d6c4121498316261cbb5b260", + "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc", "type": "github" }, "original": { @@ -323,7 +438,7 @@ "inputs": { "nixpkgs": [ "lanzaboote", - "pre-commit", + "pre-commit-hooks-nix", "nixpkgs" ] }, @@ -344,7 +459,7 @@ "gitignore_2": { "inputs": { "nixpkgs": [ - "simple-nixos-mailserver", + "stylix", "git-hooks", "nixpkgs" ] @@ -366,20 +481,18 @@ "gnome-shell": { "flake": false, "locked": { - "host": "gitlab.gnome.org", - "lastModified": 1767737596, - "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", + "lastModified": 1732369855, + "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=", "owner": "GNOME", "repo": "gnome-shell", - "rev": "ef02db02bf0ff342734d525b5767814770d85b49", - "type": "gitlab" + "rev": "dadd58f630eeea41d645ee225a63f719390829dc", + "type": "github" }, "original": { - "host": "gitlab.gnome.org", "owner": "GNOME", - "ref": "gnome-49", + "ref": "47.2", "repo": "gnome-shell", - "type": "gitlab" + "type": "github" } }, "home-manager": { @@ -389,11 +502,11 @@ ] }, "locked": { - "lastModified": 1771519029, - "narHash": "sha256-H59Qf82wv5kBXVoyXsmUKW+9J3o8FqgY4uKaLdsLdLg=", + "lastModified": 1742851132, + "narHash": "sha256-8vEcDefstheV1whup+5fSpZu4g9Jr7WpYzOBKAMSHn4=", "owner": "nix-community", "repo": "home-manager", - "rev": "167e0b6837115e672ec5f58e2b0ea39093abe807", + "rev": "c4d5d72805d14ea43c140eeb70401bf84c0f11b4", "type": "github" }, "original": { @@ -403,17 +516,38 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741635347, + "narHash": "sha256-2aYfV44h18alHXopyfL4D9GsnpE5XlSVkp4MGe586VU=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "7fb8678716c158642ac42f9ff7a18c0800fea551", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "jovian": { "inputs": { "nix-github-actions": "nix-github-actions", "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1771440156, - "narHash": "sha256-IrznE3ZQ+tf6amuQW/zlVkA18LzknWK+Hbt6tdmNtnw=", + "lastModified": 1742465245, + "narHash": "sha256-gpjtkoeq5Ye9J8GoR+rWg3NL4bbEtcLvvF4nN6MtxdU=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "faf829408344456d53c33df0a99f2f307498c830", + "rev": "a95606cae5c9e1f5b84debe7865ef171d4deb287", "type": "github" }, "original": { @@ -424,17 +558,19 @@ }, "lanzaboote": { "inputs": { - "crane": "crane", + "crane": "crane_2", + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts_2", "nixpkgs": "nixpkgs_3", - "pre-commit": "pre-commit", - "rust-overlay": "rust-overlay" + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1771492583, - "narHash": "sha256-nQzvnU4BGu8dA6BsPPCqmVcab/3ebVmHtX3ZWbW3Hxc=", + "lastModified": 1741442524, + "narHash": "sha256-tVcxLDLLho8dWcO81Xj/3/ANLdVs0bGyCPyKjp70JWk=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "5e9380994665ef66c87ab8e22c913ff837174ce4", + "rev": "d8099586d9a84308ffedac07880e7f07a0180ff4", "type": "github" }, "original": { @@ -472,11 +608,11 @@ ] }, "locked": { - "lastModified": 1771130777, - "narHash": "sha256-UIKOwG0D9XVIJfNWg6+gENAvQP+7LO46eO0Jpe+ItJ0=", + "lastModified": 1742701275, + "narHash": "sha256-AulwPVrS9859t+eJ61v24wH/nfBEIDSXYxlRo3fL/SA=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "efec7aaad8d43f8e5194df46a007456093c40f88", + "rev": "36dc43cb50d5d20f90a28d53abb33a32b0a2aae6", "type": "github" }, "original": { @@ -508,11 +644,11 @@ ] }, "locked": { - "lastModified": 1769813415, - "narHash": "sha256-nnVmNNKBi1YiBNPhKclNYDORoHkuKipoz7EtVnXO50A=", + "lastModified": 1742568034, + "narHash": "sha256-QaMEhcnscfF2MqB7flZr+sLJMMYZPnvqO4NYf9B4G38=", "owner": "nix-community", "repo": "nixos-generators", - "rev": "8946737ff703382fda7623b9fab071d037e897d5", + "rev": "42ee229088490e3777ed7d1162cb9e9d8c3dbb11", "type": "github" }, "original": { @@ -523,11 +659,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1771423359, - "narHash": "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig=", + "lastModified": 1742806253, + "narHash": "sha256-zvQ4GsCJT6MTOzPKLmlFyM+lxo0JGQ0cSFaZSACmWfY=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "740a22363033e9f1bb6270fbfb5a9574067af15b", + "rev": "ecaa2d911e77c265c2a5bac8b583c40b0f151726", "type": "github" }, "original": { @@ -539,11 +675,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1770197578, - "narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=", + "lastModified": 1742288794, + "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2", + "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42", "type": "github" }, "original": { @@ -553,13 +689,28 @@ "type": "github" } }, - "nixpkgs-edge": { + "nixpkgs-24_11": { "locked": { - "lastModified": 1771529647, - "narHash": "sha256-jg/CvWdnL3ZZhx58j8g1WDXJHALqiutiwnSyP4zPLj8=", + "lastModified": 1734083684, + "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64a253ac18f1496577a30251a06c3871bdcaaa99", + "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-24.11", + "type": "indirect" + } + }, + "nixpkgs-edge": { + "locked": { + "lastModified": 1742855907, + "narHash": "sha256-7njF0f8vk19p0cCYP+9EgYWT2RPCTSD822Yi41THKcs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d395b30f4825e4bfbc31ed2fbd06162da496217e", "type": "github" }, "original": { @@ -570,11 +721,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1771369470, - "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", + "lastModified": 1742669843, + "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0182a361324364ae3f436a63005877674cf45efb", + "rev": "1e5b653dff12029333a6546c11e108ede13052eb", "type": "github" }, "original": { @@ -586,11 +737,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1770562336, - "narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=", + "lastModified": 1739214665, + "narHash": "sha256-26L8VAu3/1YRxS8MHgBOyOM8xALdo6N0I04PgorE7UM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d6c71932130818840fc8fe9509cf50be8c64634f", + "rev": "64e75cd44acf21c7933d61d7721e812eac1b5a0a", "type": "github" }, "original": { @@ -602,27 +753,27 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1771008912, - "narHash": "sha256-gf2AmWVTs8lEq7z/3ZAsgnZDhWIckkb+ZnAo5RzSxJg=", + "lastModified": 1741241576, + "narHash": "sha256-/mxmUVd+AE2bTmulNfM7yICocUvavlFQHcMYK67z3qI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a82ccc39b39b621151d6732718e3e250109076fa", + "rev": "ffe8d1b1030b5de6eba761102ee34b6e41d040ee", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-unstable-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_4": { "locked": { - "lastModified": 1771369470, - "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", + "lastModified": 1742669843, + "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0182a361324364ae3f436a63005877674cf45efb", + "rev": "1e5b653dff12029333a6546c11e108ede13052eb", "type": "github" }, "original": { @@ -634,27 +785,26 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1770650459, - "narHash": "sha256-hGeOnueXorzwDD1V9ldZr+y+zad4SNyqMnQsa/mIlvI=", + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fff0554c67696d76a0cdd9cfe14403fbdbf1f378", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable-small", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" } }, "nixpkgs_6": { "locked": { - "lastModified": 1770843696, - "narHash": "sha256-LovWTGDwXhkfCOmbgLVA10bvsi/P8eDDpRudgk68HA8=", + "lastModified": 1742578646, + "narHash": "sha256-GiQ40ndXRnmmbDZvuv762vS+gew1uDpFwOfgJ8tLiEs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2343bbb58f99267223bc2aac4fc9ea301a155a16", + "rev": "94c4dbe77c0740ebba36c173672ca15a7926c993", "type": "github" }, "original": { @@ -666,11 +816,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1767767207, - "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=", + "lastModified": 1741513245, + "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5912c1772a44e31bf1c63c0390b90501e5026886", + "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", "type": "github" }, "original": { @@ -682,11 +832,11 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1765934234, - "narHash": "sha256-pJjWUzNnjbIAMIc5gRFUuKCDQ9S1cuh3b2hKgA7Mc4A=", + "lastModified": 1739138025, + "narHash": "sha256-M4ilIfGxzbBZuURokv24aqJTbdjPA9K+DtKUzrJaES4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "af84f9d270d404c17699522fab95bbf928a2d92f", + "rev": "b2243f41e860ac85c0b446eadc6930359b294e79", "type": "github" }, "original": { @@ -698,21 +848,19 @@ }, "nur": { "inputs": { - "flake-parts": [ - "stylix", - "flake-parts" - ], + "flake-parts": "flake-parts_3", "nixpkgs": [ "stylix", "nixpkgs" - ] + ], + "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1767810917, - "narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=", + "lastModified": 1741693509, + "narHash": "sha256-emkxnsZstiJWmGACimyAYqIKz2Qz5We5h1oBVDyQjLw=", "owner": "nix-community", "repo": "NUR", - "rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4", + "rev": "5479646b2574837f1899da78bdf9a48b75a9fb27", "type": "github" }, "original": { @@ -731,11 +879,11 @@ ] }, "locked": { - "lastModified": 1770766818, - "narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=", + "lastModified": 1742765550, + "narHash": "sha256-2vVIh2JrL6GAGfgCeY9e6iNKrBjs0Hw3bGQEAbwVs68=", "owner": "pjones", "repo": "plasma-manager", - "rev": "44b928068359b7d2310a34de39555c63c93a2c90", + "rev": "b70be387276e632fe51232887f9e04e2b6ef8c16", "type": "github" }, "original": { @@ -744,9 +892,12 @@ "type": "github" } }, - "pre-commit": { + "pre-commit-hooks-nix": { "inputs": { - "flake-compat": "flake-compat", + "flake-compat": [ + "lanzaboote", + "flake-compat" + ], "gitignore": "gitignore", "nixpkgs": [ "lanzaboote", @@ -754,11 +905,11 @@ ] }, "locked": { - "lastModified": 1770726378, - "narHash": "sha256-kck+vIbGOaM/dHea7aTBxdFYpeUl/jHOy5W3eyRvVx8=", + "lastModified": 1740915799, + "narHash": "sha256-JvQvtaphZNmeeV+IpHgNdiNePsIpHD5U/7QN5AeY44A=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "5eaaedde414f6eb1aea8b8525c466dc37bba95ae", + "rev": "42b1ba089d2034d910566bf6b40830af6b8ec732", "type": "github" }, "original": { @@ -767,23 +918,9 @@ "type": "github" } }, - "preservation": { - "locked": { - "lastModified": 1757436102, - "narHash": "sha256-mMI9IanU+Xw+pVogD2oT0I2kTmvz2Un/Apc5+CwUpEY=", - "owner": "nix-community", - "repo": "preservation", - "rev": "93416f4614ad2dfed5b0dcf12f27e57d27a5ab11", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "preservation", - "type": "github" - } - }, "root": { "inputs": { + "bcachefs-tools": "bcachefs-tools", "catppuccin": "catppuccin", "disko": "disko", "flake-parts": "flake-parts", @@ -798,7 +935,6 @@ "nixpkgs-edge": "nixpkgs-edge", "nixpkgs-unstable": "nixpkgs-unstable", "plasma-manager": "plasma-manager", - "preservation": "preservation", "simple-nixos-mailserver": "simple-nixos-mailserver", "sops-nix": "sops-nix", "stylix": "stylix", @@ -808,16 +944,16 @@ "rust-overlay": { "inputs": { "nixpkgs": [ - "lanzaboote", + "bcachefs-tools", "nixpkgs" ] }, "locked": { - "lastModified": 1771125043, - "narHash": "sha256-ldf/s49n6rOAxl7pYLJGGS1N/assoHkCOWdEdLyNZkc=", + "lastModified": 1742524367, + "narHash": "sha256-KzTwk/5ETJavJZYV1DEWdCx05M4duFCxCpRbQSKWpng=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "4912f951a26dc8142b176be2c2ad834319dc06e8", + "rev": "70bf752d176b2ce07417e346d85486acea9040ef", "type": "github" }, "original": { @@ -827,6 +963,27 @@ } }, "rust-overlay_2": { + "inputs": { + "nixpkgs": [ + "lanzaboote", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1741228283, + "narHash": "sha256-VzqI+k/eoijLQ5am6rDFDAtFAbw8nltXfLBC6SIEJAE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "38e9826bc4296c9daf18bc1e6aa299f3e932a403", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { "inputs": { "nixpkgs": [ "zjstatus", @@ -834,11 +991,11 @@ ] }, "locked": { - "lastModified": 1765939271, - "narHash": "sha256-7F/d+ZrTYyOxnBZcleQZjOOEWc1IMXR/CLLRLLsVtHo=", + "lastModified": 1739240901, + "narHash": "sha256-YDtl/9w71m5WcZvbEroYoWrjECDhzJZLZ8E68S3BYok=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "8028944c1339469124639da276d403d8ab7929a8", + "rev": "03473e2af8a4b490f4d2cdb2e4d3b75f82c8197c", "type": "github" }, "original": { @@ -850,16 +1007,16 @@ "simple-nixos-mailserver": { "inputs": { "blobs": "blobs", - "flake-compat": "flake-compat_2", - "git-hooks": "git-hooks", - "nixpkgs": "nixpkgs_5" + "flake-compat": "flake-compat_3", + "nixpkgs": "nixpkgs_5", + "nixpkgs-24_11": "nixpkgs-24_11" }, "locked": { - "lastModified": 1770659507, - "narHash": "sha256-RVZno9CypFN3eHxfULKN1K7mb/Cq0HkznnWqnshxpWY=", + "lastModified": 1742413977, + "narHash": "sha256-NkhM9GVu3HL+MiXtGD0TjuPCQ4GFVJPBZ8KyI2cFDGU=", "owner": "simple-nixos-mailserver", "repo": "nixos-mailserver", - "rev": "781e833633ebc0873d251772a74e4400a73f5d78", + "rev": "b4fbffe79c00f19be94b86b4144ff67541613659", "type": "gitlab" }, "original": { @@ -874,11 +1031,11 @@ "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1771524872, - "narHash": "sha256-eksVUcUsfS9mQx4D9DrYu88u9w70bAf+n6KmTDuIGEE=", + "lastModified": 1742700801, + "narHash": "sha256-ZGlpUDsuBdeZeTNgoMv+aw0ByXT2J3wkYw9kJwkAS4M=", "owner": "Mic92", "repo": "sops-nix", - "rev": "e85540ffe97322dc1fea14dd11cdc2f59d540ac7", + "rev": "67566fe68a8bed2a7b1175fdfb0697ed22ae8852", "type": "github" }, "original": { @@ -894,8 +1051,11 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", - "flake-parts": "flake-parts_2", + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_2", + "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", + "home-manager": "home-manager_2", "nixpkgs": "nixpkgs_7", "nur": "nur", "systems": "systems_2", @@ -906,15 +1066,15 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1771428844, - "narHash": "sha256-rTzo6bZEsdT7yHUZ0B4BYe32XQZzm8SiWKvWLJnxerE=", - "owner": "nix-community", + "lastModified": 1742855382, + "narHash": "sha256-C/aBeGktWiRg2EoSc0Aug8v+cZirSkyoVtMx1P0Dex0=", + "owner": "danth", "repo": "stylix", - "rev": "801843d10e9e22d7a00f660d069e2de70aa2980a", + "rev": "5321ab0c763caa786c9756a8e8e85d1c35a8e650", "type": "github" }, "original": { - "owner": "nix-community", + "owner": "danth", "repo": "stylix", "type": "github" } @@ -984,27 +1144,28 @@ "tinted-kitty": { "flake": false, "locked": { - "lastModified": 1735730497, - "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "lastModified": 1716423189, + "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=", "owner": "tinted-theming", "repo": "tinted-kitty", - "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "rev": "eb39e141db14baef052893285df9f266df041ff8", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "tinted-kitty", + "rev": "eb39e141db14baef052893285df9f266df041ff8", "type": "github" } }, "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1767710407, - "narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=", + "lastModified": 1741468895, + "narHash": "sha256-YKM1RJbL68Yp2vESBqeZQBjTETXo8mCTTzLZyckCfZk=", "owner": "tinted-theming", "repo": "schemes", - "rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2", + "rev": "47c8c7726e98069cade5827e5fb2bfee02ce6991", "type": "github" }, "original": { @@ -1016,11 +1177,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1767489635, - "narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=", + "lastModified": 1740877430, + "narHash": "sha256-zWcCXgdC4/owfH/eEXx26y5BLzTrefjtSLFHWVD5KxU=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184", + "rev": "d48ee86394cbe45b112ba23ab63e33656090edb4", "type": "github" }, "original": { @@ -1032,11 +1193,11 @@ "tinted-zed": { "flake": false, "locked": { - "lastModified": 1767488740, - "narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=", + "lastModified": 1725758778, + "narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", "owner": "tinted-theming", "repo": "base16-zed", - "rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40", + "rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", "type": "github" }, "original": { @@ -1045,19 +1206,62 @@ "type": "github" } }, - "zjstatus": { + "treefmt-nix": { "inputs": { - "crane": "crane_2", - "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_8", - "rust-overlay": "rust-overlay_2" + "nixpkgs": [ + "bcachefs-tools", + "nixpkgs" + ] }, "locked": { - "lastModified": 1771148613, - "narHash": "sha256-nLzdw8jskekSRrunxBDCA0NCHr/2aJjcXqZ1Fcqm5eY=", + "lastModified": 1742370146, + "narHash": "sha256-XRE8hL4vKIQyVMDXykFh4ceo3KSpuJF3ts8GKwh5bIU=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "adc195eef5da3606891cedf80c0d9ce2d3190808", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "zjstatus": { + "inputs": { + "crane": "crane_3", + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_8", + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1741803511, + "narHash": "sha256-DcCGBWvAvt+OWI+EcPRO+/IXZHkFgPxZUmxf2VLl8no=", "owner": "dj95", "repo": "zjstatus", - "rev": "7a039f56da80681408454d6e175fde3f54b9e592", + "rev": "df9c77718f7023de8406e593eda6b5b0bc09cddd", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 8933b57..b95b68a 100644 --- a/flake.nix +++ b/flake.nix @@ -13,11 +13,11 @@ 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"; - # }; + 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 @@ -33,7 +33,11 @@ # catpuccin theme catppuccin.url = "github:catppuccin/nix"; - # Conduwuit fork after it shut down + # Conduit fork without all the fuss and drama + # conduwuit = { + # url = "github:girlbossceo/conduwuit"; + # inputs.nixpkgs.follows = "nixpkgs"; + # }; # Nix index database files nix-index-database.url = "github:nix-community/nix-index-database"; @@ -70,15 +74,12 @@ zjstatus.url = "github:dj95/zjstatus"; - # preservation - preservation.url = "github:nix-community/preservation"; - # Fix for steam cursor not being visible under wayland # Add any other flake you might need # hardware.url = "github:nixos/nixos-hardware"; # Stylix theming engine - stylix.url = "github:nix-community/stylix"; + stylix.url = "github:danth/stylix"; }; outputs = { @@ -98,16 +99,10 @@ jovian, nixos-hardware, nix-index-database, - preservation, + # conduwuit, 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. @@ -134,11 +129,9 @@ catppuccin.nixosModules.catppuccin stylix.nixosModules.stylix nix-index-database.nixosModules.nix-index - preservation.nixosModules.preservation - {programs.nix-index-database.comma.enable = true;} { home-manager.sharedModules = [ - catppuccin.homeModules.catppuccin + inputs.catppuccin.homeModules.catppuccin ./home-manager/shared sops-nix.homeManagerModules.sops ]; @@ -149,18 +142,12 @@ ./nixos/desktop { home-manager.sharedModules = [ - inputs.plasma-manager.homeModules.plasma-manager + 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: @@ -185,18 +172,6 @@ # NixOS configuration entrypoint # Available through 'nixos-rebuild --flake .#your-hostname' nixosConfigurations = { - # nixIso = nixpkgs.lib.nixosSystem { - # system = "x86_64-linux"; - # specialArgs = {inherit inputs outputs;}; - # modules = - # sharedModules - # ++ desktopModules - # ++ [ - # ./nixos/hosts/iso/configuration.nix - # "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-base.nix" - # ]; - # }; - EDI = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = {inherit inputs outputs;}; @@ -220,6 +195,7 @@ ++ desktopModules ++ [ {_module.args = {inherit pkgs-edge;};} + jovian.nixosModules.jovian # > Our main nixos configuration file < ./nixos/hosts/GLaDOS/configuration.nix lanzaboote.nixosModules.lanzaboote @@ -244,7 +220,6 @@ specialArgs = {inherit inputs outputs;}; modules = sharedModules - ++ desktopModules ++ [ {_module.args = {inherit pkgs-edge;};} # > Our main nixos configuration file < @@ -253,7 +228,7 @@ jovian.nixosModules.jovian { home-manager.sharedModules = [ - inputs.plasma-manager.homeModules.plasma-manager + inputs.plasma-manager.homeManagerModules.plasma-manager ]; } ]; @@ -265,7 +240,6 @@ modules = sharedModules ++ [ - {_module.args = {inherit pkgs-edge;};} ./nixos/hosts/wheatley/configuration.nix ]; }; diff --git a/home-manager/desktop/default.nix b/home-manager/desktop/default.nix index 60ae31e..2f83b66 100644 --- a/home-manager/desktop/default.nix +++ b/home-manager/desktop/default.nix @@ -13,8 +13,8 @@ # You can also split up your configuration and import pieces of it here: # ./nvim.nix - ./package-configs/plasma-desktop - ./package-configs/firefox + ./package-configs/plasma-desktop.nix + ./package-configs/firefox.nix ./package-configs/konsole ./package-configs/foot ./package-configs/freetube @@ -60,6 +60,7 @@ # }) ]; 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 @@ -134,19 +135,6 @@ source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/.mozilla/firefox"; target = ".floorp"; }; - librewolf = { - source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/.mozilla/firefox"; - target = ".librewolf"; - }; - steam = { - source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/.local/share/Steam/"; - target = "Steam"; - }; - # instances = { - # source = config.lib.file.mkOutOfStoreSymlink "/home/lillian/Nextcloud/instances"; - # target = ".local/share/PrismLauncher/instances"; - # force = true; - # }; }; # Add stuff for your user as you see fit: @@ -158,8 +146,8 @@ direnv git git-credential-manager + git-credential-manager ruff - devtoolbox # Chat applications: signal-desktop @@ -168,7 +156,8 @@ # Gaming: prismlauncher - heroic + steam + gamescope # Multimedia: vlc @@ -176,7 +165,7 @@ fcast-client # Office applications: - onlyoffice-desktopeditors + onlyoffice-bin gimp thunderbird @@ -185,8 +174,8 @@ flameshot fzf nextcloud-client - # nitrokey-app - # protonvpn-gui + nitrokey-app + protonvpn-gui virtualbox #watchmate qbittorrent @@ -209,6 +198,7 @@ # Web browsing: firefoxpwa + firefoxpwa ungoogled-chromium ]; }; @@ -233,12 +223,6 @@ # ]; # }; - chromium = { - extensions = [ - {id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} - ]; - }; - obs-studio.enable = true; obs-studio.plugins = with pkgs.obs-studio-plugins; [ wlrobs @@ -250,11 +234,9 @@ home-manager.enable = true; git = { enable = true; - settings = { - user = { - name = "Lillian-Violet"; - email = "git@lillianviolet.dev"; - }; + userEmail = "git@lillianviolet.dev"; + userName = "Lillian-Violet"; + extraConfig = { init = { defaultBranch = "main"; }; diff --git a/home-manager/desktop/package-configs/firefox/default.nix b/home-manager/desktop/package-configs/firefox.nix similarity index 82% rename from home-manager/desktop/package-configs/firefox/default.nix rename to home-manager/desktop/package-configs/firefox.nix index 579c3d1..7184a64 100644 --- a/home-manager/desktop/package-configs/firefox/default.nix +++ b/home-manager/desktop/package-configs/firefox.nix @@ -1,16 +1,11 @@ {pkgs, ...}: { - stylix.targets.firefox.profileNames = ["lillian"]; programs.firefox = { enable = true; nativeMessagingHosts = [pkgs.firefoxpwa]; - package = pkgs.librewolf; - profiles.default = {isDefault = false;}; + package = pkgs.floorp; profiles.lillian = { isDefault = true; - id = 1; settings = { - "sidebar.verticalTabs" = true; - "sidebar.visibility" = "expand-on-hover"; "browser.aboutConfig.showWarning" = false; "browser.bookmarks.addedImportButton" = true; "browser.bookmarks.restore_default_bookmarks" = false; @@ -81,7 +76,7 @@ bookmarks = [ { name = "PoE2 build sorceres"; - tags = ["PoE" "PoE2" "path of exile" "path of exile 2" "games" "guides" "build" "sorcerer" "sorceress"]; + tags = ["PoE" "PoE2" "path of exile" "path of exile 2" "games" "guides" "build" "sorcerer" "sorceres"]; url = "https://maxroll.gg/poe2/planner/caeye0hz"; } { @@ -91,42 +86,6 @@ } ]; } - { - name = "Cooking"; - toolbar = false; - bookmarks = [ - { - name = "Maldivian chili paste"; - tags = ["cooking" "maldives" "maldivian]" "chili paste" "chili" "spicy" "food" "sauce" "recipes"]; - url = "https://maldivescook.com/recipe/lonumirus/"; - } - { - name = "Samosas"; - tags = ["cooking" "india" "fried" "baked" "snack" "pastry" "samosa"]; - url = "https://www.indianhealthyrecipes.com/samosa-recipe-make-samosa/"; - } - { - name = "Sticky Toffee Pudding"; - tags = ["baking" "UK" "England" "dessert" "treat" "snack" "baked" "sweet" "treacle" "dates"]; - url = "https://www.latimes.com/recipe/sticky-toffee-pudding-moju"; - } - { - name = "Vegan Pumpkin Cheesecake"; - tags = ["baking" "vegan" "US" "cheesecake" "cake" "dessert" "sweet" "baked" "pumpkin" "cream cheese"]; - url = "https://www.karissasvegankitchen.com/vegan-pumpkin-cheesecake/"; - } - { - name = "Vegan Cheesecake"; - tags = ["baking" "US" "vegan" "cheesecake" "cake" "dessert" "sweet" "baked" "nut free" "cream cheese"]; - url = "https://www.noracooks.com/vegan-cheesecake/"; - } - { - name = "Biscotti"; - tags = ["baking" "Italian" "cookies" "sweet" "dessert" "fruits" "nuts" "almonds" "cranberries" "lemon"]; - url = "https://italianchef.org/the-ultimate-guide-to-homemade-italian-biscotti-recipes-tips-and-variations/"; - } - ]; - } ]; }; }; diff --git a/home-manager/desktop/package-configs/foot/default.nix b/home-manager/desktop/package-configs/foot/default.nix index aada26e..3591d14 100644 --- a/home-manager/desktop/package-configs/foot/default.nix +++ b/home-manager/desktop/package-configs/foot/default.nix @@ -4,6 +4,7 @@ # catppuccin.enable = true; settings = { main = { + font = "Atkinson Monolegible:size=12"; }; mouse = { diff --git a/home-manager/desktop/package-configs/plasma-desktop/default.nix b/home-manager/desktop/package-configs/plasma-desktop.nix similarity index 96% rename from home-manager/desktop/package-configs/plasma-desktop/default.nix rename to home-manager/desktop/package-configs/plasma-desktop.nix index 745fce1..ab636fe 100644 --- a/home-manager/desktop/package-configs/plasma-desktop/default.nix +++ b/home-manager/desktop/package-configs/plasma-desktop.nix @@ -1,103 +1,16 @@ -{ - osConfig, - pkgs, - config, - ... -}: { - #TODO: make the creation of the command file easier, for now this is a nice solution though - systemd.user.services."set-kde-connect-commands" = { - Install = { - WantedBy = ["default.target"]; - }; - Service = { - Type = "OneShot"; - ExecStart = "${pkgs.writeShellScript "set-kde-connect-commands" '' - #!/run/current-system/sw/bin/bash - find ${config.home.homeDirectory}/.config/kdeconnect/ -type d -name \'kdeconnect_runcommand\' -execdir cp ${builtins.toPath ./kde-connect-commands} {}+"/config" \; - ''}"; - RemainAfterExit = true; - }; +{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; }; - 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; - }; - "Games/.directory" = { - text = '' - [Desktop Entry] - Icon=folder-games - ''; - target = "Games/.directory"; - force = true; - }; - "Code/.directory" = { - text = '' - [Desktop Entry] - Icon=folder-script - ''; - target = "Code/.directory"; - force = true; - }; - "Writing/.directory" = { - text = '' - [Desktop Entry] - Icon=folder-notes - ''; - target = "Writing/.directory"; - force = true; - }; - "mimeapps.list" = { - text = '' - [Added Associations] - x-scheme-handler/http=librewolf.desktop; - x-scheme-handler/https=librewolf.desktop; - [Default Applications] - x-scheme-handler/discord=vesktop.desktop - x-scheme-handler/http=librewolf.desktop; - x-scheme-handler/https=librewolf.desktop; - x-scheme-handler/sgnl=signal.desktop - x-scheme-handler/signalcaptcha=signal.desktop - x-scheme-handler/email=thunderbird.desktop - x-scheme-handler/text=helix.desktop - ''; - target = ".config/mimeapps.list"; - force = true; - }; - "librewolf.desktop" = { - target = ".config/autostart/librewolf.desktop"; - source = "${pkgs.librewolf}/share/applications/librewolf.desktop"; - }; - "signal.desktop" = { - target = ".config/autostart/signal.desktop"; - source = "${pkgs.signal-desktop}/share/applications/signal.desktop"; - }; - "foot.desktop" = { - target = ".config/autostart/foot.desktop"; - source = "${pkgs.foot}/share/applications/foot.desktop"; - }; - "vesktop.desktop" = { - target = ".config/autostart/vesktop.desktop"; - source = "${pkgs.vesktop}/share/applications/vesktop.desktop"; - }; - "com.nextcloud.desktopclient.nextcloud.desktop" = { - target = ".config/autostart/com.nextcloud.desktopclient.nextcloud.desktop"; - source = "${pkgs.nextcloud-client}/share/applications/com.nextcloud.desktopclient.nextcloud.desktop"; - }; - }; programs.plasma = { - workspace = { - lookAndFeel = "Catppuccin-Macchiato-Mauve"; - colorScheme = "CatppuccinMacchiatoMauve"; - cursor.theme = "catppuccin-macchiato-mauve-cursors"; - }; enable = true; desktop.mouseActions.verticalScroll = "switchVirtualDesktop"; kscreenlocker.appearance.wallpaper = "${osConfig.stylix.image}"; @@ -161,8 +74,6 @@ hidden = [ "Xwayland Video Bridge_pipewireToXProxy" "org.kde.plasma.devicenotifier" - "org.kde.plasma.keyboardindicator" - "org.kde.plasma.keyboardlayout" "org.kde.kscreen" "org.kde.plasma.printmanager" "chrome_status_icon_1" @@ -170,9 +81,8 @@ "Nitrokey App" "qBittorrent" "vlc" - "obs" "steam" - "nitrokey-app" + "Thunderbird Daily" ]; }; } @@ -208,16 +118,18 @@ config = { General = { launchers = [ - "applications:librewolf.desktop" + "applications:floorp.desktop" "applications:systemsettings.desktop" "applications:org.kde.dolphin.desktop" - "applications:signal.desktop" + "applications:signal-desktop.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" ]; }; @@ -307,12 +219,12 @@ "mediacontrol"."previousmedia" = "Media Previous"; "mediacontrol"."stopmedia" = "Media Stop"; "org_kde_powerdevil"."Decrease Keyboard Brightness" = "Keyboard 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"."Decrease Screen Brightness" = "Monitor Brightness Down"; + "org_kde_powerdevil"."Decrease Screen Brightness Small" = "Shift+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" "Ctrl+Volume Up"]; - "org_kde_powerdevil"."Increase Screen Brightness Small" = ["Shift+Monitor Brightness Up" "Ctrl+Shift+Volume Up"]; + "org_kde_powerdevil"."Increase Screen Brightness" = "Monitor Brightness Up"; + "org_kde_powerdevil"."Increase Screen Brightness Small" = "Shift+Monitor Brightness Up"; "org_kde_powerdevil"."PowerDown" = "Power Down"; "org_kde_powerdevil"."PowerOff" = "Power Off"; "org_kde_powerdevil"."Sleep" = "Sleep"; diff --git a/home-manager/desktop/package-configs/plasma-desktop/kde-connect-commands b/home-manager/desktop/package-configs/plasma-desktop/kde-connect-commands deleted file mode 100644 index f494cfc..0000000 --- a/home-manager/desktop/package-configs/plasma-desktop/kde-connect-commands +++ /dev/null @@ -1,2 +0,0 @@ -[General] -commands="@ByteArray({\"2574d457_7a99_40a3_8239_24407c7a074d\":{\"command\":\"loginctl unlock-session\",\"name\":\"unlock\"},\"2bbbb9cc_892a_44a1_b097_27b149387511\":{\"command\":\"bluetoothctl disconnect 38:18:4C:11:56:99\",\"name\":\"disconnect headset\"},\"35ad74aa_c1f0_4dd7_a392_2b2676105b62\":{\"command\":\"systemctl hibernate\",\"name\":\"hibernate\"},\"5dd755de_e098_4907_982d_bedba5c3511d\":{\"command\":\"loginctl lock-session\",\"name\":\"lock\"},\"6423946a_b13e_4127_a0d0_0ca38e79fa0f\":{\"command\":\"bluetoothctl connect 38:18:4C:11:56:99\",\"name\":\"connect headset\"},\"690a4134_162b_4851_83a4_bf75722c699a\":{\"command\":\"systemctl suspend\",\"name\":\"suspend\"},\"99ae3913_1757_4ed0_ad7e_91c6f5d740ef\":{\"command\":\"qdbus org.kde.kglobalaccel /component/kmix invokeShortcut \\\"mute\\\"\",\"name\":\"mute\"},\"b11480dd_19f7_49c0_9dcc_3065ddc5150b\":{\"command\":\"qdbus org.kde.kglobalaccel /component/kmix invokeShortcut \\\"mic_mute\\\"\",\"name\":\"mute mic\"},\"bd36530a_9ed5_4345_989d_189c27b3ce00\":{\"command\":\"systemctl reboot\",\"name\":\"reboot\"},\"cf6180f7_e4bd_4f15_a9d1_19ed14e99913\":{\"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\"},\"d31a3cab_bb6a_459d_89fb_533d0d8fec61\":{\"command\":\"systemctl poweroff\",\"name\":\"shutdown\"},\"f08e1a64_53be_41da_b942_e05e45f1d69c\":{\"command\":\"qdbus org.kde.kglobalaccel /component/kmix invokeShortcut \\\"decrease_volume\\\"\",\"name\":\"volume down\"},\"fbd67152_2a58_4d5d_a210_982fa0eeb171\":{\"command\":\"qdbus org.kde.kglobalaccel /component/kmix invokeShortcut \\\"increase_volume\\\"\",\"name\":\"volume up\"},\"fc3adde9_7049_4166_bcda_a74d13ec91eb\":{\"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\"}})" diff --git a/home-manager/hosts/EDI/lillian.nix b/home-manager/hosts/EDI/lillian.nix index ed564ed..1922c62 100644 --- a/home-manager/hosts/EDI/lillian.nix +++ b/home-manager/hosts/EDI/lillian.nix @@ -16,10 +16,8 @@ ]; home.packages = with pkgs; [ - lutris - android-tools ]; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "26.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/GLaDOS/lillian.nix b/home-manager/hosts/GLaDOS/lillian.nix index 7e1c8a9..4599605 100644 --- a/home-manager/hosts/GLaDOS/lillian.nix +++ b/home-manager/hosts/GLaDOS/lillian.nix @@ -1,10 +1,6 @@ # This is your home-manager configuration file # Use this to configure your home environment (it replaces ~/.config/nixpkgs/home.nix) -{ - pkgs, - 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): @@ -21,17 +17,9 @@ home.packages = with pkgs; [ r2modman - ryubing + ryujinx lutris - vscodium - unrar ]; - home.file = { - nextcloud = { - source = config.lib.file.mkOutOfStoreSymlink "/run/media/lillian/big-SSD/Nextcloud/"; - target = "Nextcloud"; - }; - }; programs.mangohud = { enable = true; @@ -39,5 +27,5 @@ }; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "26.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/iso/id_ed25519.pub b/home-manager/hosts/iso/id_ed25519.pub deleted file mode 100644 index c1ae600..0000000 --- a/home-manager/hosts/iso/id_ed25519.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKeZHHAEoUh/Ly9F1xUSPZLPNE0Yh/wM2qWgKvlEBa8A lillian@GLaDOS diff --git a/home-manager/hosts/iso/lillian.nix b/home-manager/hosts/iso/lillian.nix index b76bd91..1922c62 100644 --- a/home-manager/hosts/iso/lillian.nix +++ b/home-manager/hosts/iso/lillian.nix @@ -11,11 +11,13 @@ # 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.11"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/queen/id_ed25519.pub b/home-manager/hosts/queen/id_ed25519.pub index bf8d43c..d06bc9c 100644 --- a/home-manager/hosts/queen/id_ed25519.pub +++ b/home-manager/hosts/queen/id_ed25519.pub @@ -1 +1 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGtwcWXnwOOI8G3NqAMfTeuSuDk9ly5xqwQDH2Iey3u+ lillian@queen +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINl+QRyKBYm+sx0hUiD2u6FBdT7aXsZBGUxm4cb7r24k lillian@GLaDOS diff --git a/home-manager/hosts/queen/lillian.nix b/home-manager/hosts/queen/lillian.nix index 9297b6a..9bd29f7 100644 --- a/home-manager/hosts/queen/lillian.nix +++ b/home-manager/hosts/queen/lillian.nix @@ -35,5 +35,5 @@ }; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "26.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/shodan/id_ed25519.pub b/home-manager/hosts/shodan/id_ed25519.pub index 2f2ee8f..c5065c3 100644 --- a/home-manager/hosts/shodan/id_ed25519.pub +++ b/home-manager/hosts/shodan/id_ed25519.pub @@ -1 +1 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL279XPFj1nzLDozFclntPh8rOcn3d1B5iJNGds9Ray6 lillian@shodan +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKRT5MqPrYUhhD5rJFp0PQbkTRtGcNaCaTxEkZw9RiVT lillian@GLaDOS diff --git a/home-manager/hosts/shodan/lillian.nix b/home-manager/hosts/shodan/lillian.nix index e072776..3ea8fa4 100644 --- a/home-manager/hosts/shodan/lillian.nix +++ b/home-manager/hosts/shodan/lillian.nix @@ -12,8 +12,13 @@ # You can also split up your configuration and import pieces of it here: # ./nvim.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 - ../../desktop ]; nixpkgs = { # You can add overlays here @@ -28,17 +33,82 @@ # }); # }) ]; + # Configure your nixpkgs instance + config = { + # Disable if you don't want unfree packages + allowUnfree = true; + }; + }; + + home = { + username = "lillian"; + homeDirectory = "/home/lillian"; }; home.packages = with pkgs; [ + #Chat: + vesktop + #Gaming: prismlauncher r2modman - ryubing + ryujinx + + # Multimedia: + freetube + obs-studio + vlc + fcast-receiver + fcast-client + + # System tools: + rage + flameshot + fzf + nextcloud-client + nitrokey-app + protonvpn-gui + sops + #watchmate + qbittorrent + zsh + + # Theming: + catppuccin-cursors + (catppuccin-kde.override { + flavour = ["macchiato"]; + accents = ["mauve"]; + }) + catppuccin-plymouth + catppuccin-sddm-corners + + # Web browsing: + 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 + 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 = "26.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/hosts/wheatley/id_ed25519.pub b/home-manager/hosts/wheatley/id_ed25519.pub index dbfe237..0c84515 100644 --- a/home-manager/hosts/wheatley/id_ed25519.pub +++ b/home-manager/hosts/wheatley/id_ed25519.pub @@ -1 +1 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILxXVL6QAiMLwvUYBtXCbkHEh6ENgaEO/rkZWSPJrjLJ lillian@wheatley +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMrmRjLF2tVkWeV7EOgUiF77Q9t+rBziRAdOPo92pyvF lillian@GLaDOS diff --git a/home-manager/hosts/wheatley/lillian.nix b/home-manager/hosts/wheatley/lillian.nix index 9297b6a..9bd29f7 100644 --- a/home-manager/hosts/wheatley/lillian.nix +++ b/home-manager/hosts/wheatley/lillian.nix @@ -35,5 +35,5 @@ }; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "26.05"; + home.stateVersion = "25.05"; } diff --git a/home-manager/kde-connect-commands.json b/home-manager/kde-connect-commands.json new file mode 100644 index 0000000..e69e236 --- /dev/null +++ b/home-manager/kde-connect-commands.json @@ -0,0 +1,46 @@ +[ + { + "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": "", + "name": "" + } +] diff --git a/home-manager/shared/default.nix b/home-manager/shared/default.nix index 0b5bae7..aeb1963 100644 --- a/home-manager/shared/default.nix +++ b/home-manager/shared/default.nix @@ -1,6 +1,7 @@ { pkgs, osConfig, + lib, ... }: { imports = [ @@ -12,7 +13,6 @@ ./shell/eza.nix ./shell/hyfetch.nix ]; - home = { username = "lillian"; homeDirectory = "/home/lillian"; @@ -21,22 +21,6 @@ target = ".ssh/id_ed25519.pub"; force = true; }; - - packages = with pkgs; [ - # System tools: - vscode-langservers-extracted - sops - zsh - bat - btop - broot - lazygit - navi - nil - gh - starship - zellij - ]; }; catppuccin = { @@ -47,6 +31,20 @@ freetube.enable = true; freetube.flavor = "macchiato"; }; + + home.packages = with pkgs; [ + # System tools: + vscode-langservers-extracted + sops + zsh + bat + btop + broot + lazygit + navi + nil + gh + ]; programs = { navi.enable = true; yazi = { @@ -56,36 +54,33 @@ # }; }; }; - # 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; - # }; + 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 deleted file mode 100644 index ebe234e..0000000 --- a/home-manager/shared/kde-connect-commands.json +++ /dev/null @@ -1,50 +0,0 @@ -[ - { - "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/helix/helix.nix b/home-manager/shared/shell/helix/helix.nix index bbadd82..3b224db 100644 --- a/home-manager/shared/shell/helix/helix.nix +++ b/home-manager/shared/shell/helix/helix.nix @@ -7,7 +7,7 @@ }: rustPlatform.buildRustPackage rec { pname = "helix"; - version = "25.01.1"; + version = "24.07"; # This release tarball includes source code for the tree-sitter grammars, # which is not ordinarily part of the repository. @@ -17,7 +17,6 @@ rustPlatform.buildRustPackage rec { stripRoot = false; }; - useFetchCargoVendor = true; cargoHash = ""; nativeBuildInputs = [git installShellFiles]; diff --git a/home-manager/shared/shell/hyfetch.nix b/home-manager/shared/shell/hyfetch.nix index 00f2035..774a3d7 100644 --- a/home-manager/shared/shell/hyfetch.nix +++ b/home-manager/shared/shell/hyfetch.nix @@ -10,7 +10,6 @@ mode = "horizontal"; }; backend = "neofetch"; - pride_month_disable = false; }; }; } diff --git a/home-manager/shared/shell/starship.nix b/home-manager/shared/shell/starship.nix index 0fa93c5..90dda44 100644 --- a/home-manager/shared/shell/starship.nix +++ b/home-manager/shared/shell/starship.nix @@ -41,9 +41,9 @@ { owner = "catppuccin"; repo = "starship"; - rev = "5906cc3"; # Replace with the latest commit hash - sha256 = "sha256-FLHjbClpTqaK4n2qmepCPkb8rocaAo3qeV4Zp1hia0g="; + rev = "5629d23"; # Replace with the latest commit hash + sha256 = "sha256-nsRuxQFKbQkyEI4TXgvAjcroVdG+heKX5Pauq/4Ota0="; } - + /themes/${flavor}.toml)); + + /palettes/${flavor}.toml)); }; } diff --git a/home-manager/shared/shell/zellij/default.nix b/home-manager/shared/shell/zellij/default.nix index b84dcb9..d8bebaf 100644 --- a/home-manager/shared/shell/zellij/default.nix +++ b/home-manager/shared/shell/zellij/default.nix @@ -55,23 +55,23 @@ default_tab_template { pane size=1 borderless=true { - plugin location="file:${inputs.zjstatus.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/zjstatus.wasm" { - format_left "#[bg=#24273A,fg=#cad3f5,bold] {session} {mode} {tabs}" - format_right "#[bg=#cad3f5,fg=#24273A]#[bg=#cad3f5,fg=#cad3f5]#[bg=#cad3f5,fg=#1e2030,bold]{datetime}#[bg=#24273A,fg=#cad3f5]" + 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=#cad3f5,fg=#24273A]#[bg=#cad3f5,fg=#cad3f5]#[bg=#cad3f5,fg=#24273A,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#cad3f5,fg=#cad3f5]#[bg=#24273A,fg=#cad3f5]" - tab_active "#[bg=#a6da95,fg=#24273A]#[bg=#a6da95,fg=#a6da95]#[bg=#a6da95,fg=#1e2030,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#a6da95,fg=#a6da95]#[bg=#24273A,fg=#a6da95]" + 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=#cad3f5,fg=#1e2030,bold]{format} " + datetime "#[bg=#C9D2F5,fg=#1D1D2E,bold]{format} " datetime_format "%Y-%m-%d %H:%M" datetime_timezone "Europe/Amsterdam" } @@ -138,23 +138,23 @@ default_tab_template { pane size=1 borderless=true { - plugin location="file:${inputs.zjstatus.packages.${pkgs.stdenv.hostPlatform.system}.default}/bin/zjstatus.wasm" { - format_left "#[bg=#24273A,fg=#cad3f5,bold] {session} {mode} {tabs}" - format_right "#[bg=#cad3f5,fg=#24273A]#[bg=#cad3f5,fg=#cad3f5]#[bg=#cad3f5,fg=#1e2030,bold]{datetime}#[bg=#24273A,fg=#cad3f5]" + 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=#cad3f5,fg=#24273A]#[bg=#cad3f5,fg=#cad3f5]#[bg=#cad3f5,fg=#1e2030,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#cad3f5,fg=#cad3f5]#[bg=#24273A,fg=#cad3f5]" - tab_active "#[bg=#a6da95,fg=#24273A]#[bg=#a6da95,fg=#a6da95]#[bg=#a6da95,fg=#1e2030,bold]{name}{sync_indicator}{fullscreen_indicator}{floating_indicator}#[bg=#a6da95,fg=#a6da95]#[bg=#24273A,fg=#a6da95]" + 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=#cad3f5,fg=#1e2030,bold]{format} " + datetime "#[bg=#C9D2F5,fg=#1D1D2E,bold]{format} " datetime_format "%Y-%m-%d %H:%M" datetime_timezone "Europe/Amsterdam" } diff --git a/home-manager/shared/shell/zsh.nix b/home-manager/shared/shell/zsh.nix index fea6086..c6cd56c 100644 --- a/home-manager/shared/shell/zsh.nix +++ b/home-manager/shared/shell/zsh.nix @@ -27,15 +27,15 @@ sha256 = "sha256-Z6EYQdasvpl1P78poj9efnnLj7QQg13Me8x1Ryyw+dM="; }; } - # { - # name = "terraform"; - # src = pkgs.fetchFromGitHub { - # owner = "macunha1"; - # repo = "zsh-terraform"; - # rev = "fd1471d3757f8ed13f56c4426f88616111de2a87"; - # sha256 = "0z6i9wjjklb4lvr7zjhbphibsyx51psv50gm07mbb0kj9058j6kc"; - # }; - # } + { + name = "terraform"; + src = pkgs.fetchFromGitHub { + owner = "macunha1"; + repo = "zsh-terraform"; + rev = "fd1471d3757f8ed13f56c4426f88616111de2a87"; + sha256 = "0z6i9wjjklb4lvr7zjhbphibsyx51psv50gm07mbb0kj9058j6kc"; + }; + } ]; autosuggestion.enable = true; enableCompletion = true; @@ -61,7 +61,7 @@ ]; }; # Extra commands that take more complex forms - initContent = '' + initExtra = '' 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/justfile b/justfile index 44b9a63..3dbeb05 100644 --- a/justfile +++ b/justfile @@ -1,44 +1,22 @@ -# Build the nixos configuration and switch to it build: - sudo echo "sudo check..." && sudo nixos-rebuild --fallback --log-format internal-json -v switch --flake .# --show-trace |& nom --json + sudo nixos-rebuild switch --flake .# --show-trace -# Build the nixos configuration bot don't switch to it until a reboot -boot: - sudo echo "sudo check..." && sudo nixos-rebuild --fallback --log-format internal-json -v boot --flake .# --show-trace |& nom --json - -# Run the nix flake in the nix repl run: nix-repl -f flake:nixpkgs -# Check the nix configuration for errors test: - sudo echo "sudo check..." && sudo nix flake check --show-trace --log-format internal-json -v |& nom --json + sudo nix flake check --show-trace -# Update the flake lock update: - nix flake update --log-format internal-json -v |& nom --json && zsh + nix flake update -# Clean your nix store and optimize it clean: sudo nix-collect-garbage sudo nix-store --optimise -# Set up the commit hook for testing before doing a commit setup: - #!/run/current-system/sw/bin/bash -e - if [ -s ./.git/hooks/pre-commit ]; then - read -p $"This file already contains the following text: - $(<./.git/hooks/pre-commit) - Do you want to add the test hook (y/N)? (This will NOT delete data)" choice - case "$choice" in - y|Y ) echo "just test" >> ./.git/hooks/pre-commit && chmod +x ./.git/hooks/pre-commit && echo "Added test hook to pre-commit.";; - * ) echo "No test added to pre-commit.";; - esac - else - echo "just test" >> ./.git/hooks/pre-commit && chmod +x ./.git/hooks/pre-commit - fi + echo "just test" >> ./.git/hooks/pre-commit && chmod +x ./.git/hooks/pre-commit -# Make sure all the git actions of pulling, adding all files, committing, and pushing are done in one command push: git pull git add * diff --git a/nixos/desktop/default.nix b/nixos/desktop/default.nix index 8284ad6..50f1252 100644 --- a/nixos/desktop/default.nix +++ b/nixos/desktop/default.nix @@ -28,17 +28,9 @@ allowUnfree = true; }; }; - services.udev.extraRules = '' - KERNEL=="hidraw*", ATTRS{idVendor}=="057e", MODE="0660", TAG+="uaccess" - KERNEL=="hidraw*", KERNELS=="*057e:*", MODE="0660", TAG+="uaccess" - KERNEL=="hidraw*", ATTRS{idVendor}=="2dc8", MODE="0660", TAG+="uaccess" - KERNEL=="hidraw*", KERNELS=="*2DC8:*", MODE="0660", TAG+="uaccess" - KERNEL=="hidraw*", ATTRS{idProduct}=="6012", ATTRS{idVendor}=="2dc8", MODE="0660", TAG+="uaccess" - KERNEL=="hidraw*", KERNELS=="*2DC8:6012*", MODE="0660", TAG+="uaccess" - ''; - environment.systemPackages = with pkgs; - [ + environment.systemPackages = + (with pkgs; [ # Custom tools dvd dvt @@ -47,13 +39,9 @@ # System tools aha - ttf-ms-win10 - wineWow64Packages.stable - bottles - tpm2-abrmd - jdk21_headless #bcachefs-tools clinfo + comma direnv exfat exfatprogs @@ -62,7 +50,6 @@ pciutils podman podman-compose - python3Minimal sbctl tpm2-tools tpm2-tss @@ -75,12 +62,7 @@ zsh # KDE/QT - kdePackages.plasma-desktop - kdePackages.plasma-wayland-protocols - kdePackages.libplasma - kdePackages.plasma-integration - kdePackages.plasma-activities - kdePackages.plasma-workspace + krunner-translator kdePackages.discover kdePackages.filelight kdePackages.kcalc @@ -98,57 +80,45 @@ kdePackages.krdc kdePackages.krfb kdePackages.kate - kdePackages.qrca + kdePackages.xwaylandvideobridge libportal-qt5 libportal # User tools - freetube noisetorch qjackctl wireplumber - intiface-central #rustdesk - ] + ]) ++ (with pkgs-edge; [ - kdePackages.plasma-vault + freetube + # list of latest packages from nixpkgs master + # Can be used to install latest version of some packages ]); - - fonts.packages = [pkgs.ttf-ms-win10]; sops = { secrets."nextcloud-password" = { mode = "0600"; owner = config.users.users.lillian.name; path = "/home/lillian/.netrc"; }; - secrets."prod.keys" = { - mode = "0600"; - owner = config.users.users.lillian.name; - path = "/home/lillian/.config/Ryujinx/system/prod.keys"; - }; - secrets."title.keys" = { - mode = "0600"; - owner = config.users.users.lillian.name; - path = "/home/lillian/.config/Ryujinx/system/title.keys"; - }; }; 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.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; - # }; + 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 = { @@ -156,8 +126,6 @@ }; }; - xdg.portal.enable = true; - # Enable networking networking.networkmanager.enable = true; # Enables support for 32bit libs that steam uses @@ -168,10 +136,10 @@ xserver.enable = true; # Enable the KDE Plasma Desktop Environment. - # displayManager.sddm = { - # enable = true; - # wayland.enable = true; - # }; + displayManager.sddm = { + enable = true; + wayland.enable = true; + }; displayManager.defaultSession = "plasma"; desktopManager.plasma6.enable = true; desktopManager.plasma6.notoPackage = pkgs.atkinson-hyperlegible; diff --git a/nixos/desktop/package-configs/firefox/default.nix b/nixos/desktop/package-configs/firefox/default.nix index c57887f..f2bf654 100644 --- a/nixos/desktop/package-configs/firefox/default.nix +++ b/nixos/desktop/package-configs/firefox/default.nix @@ -1,7 +1,11 @@ -{pkgs, ...}: { +{ + config, + pkgs, + ... +}: { programs.firefox = { enable = true; - package = pkgs.librewolf; + package = pkgs.floorp; policies = { DisableTelemetry = true; DisableFirefoxStudies = true; @@ -115,10 +119,10 @@ 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"; - # }; + "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"; @@ -156,8 +160,6 @@ "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 = [ diff --git a/nixos/hosts/EDI/configuration.nix b/nixos/hosts/EDI/configuration.nix index ab62e21..d52551f 100644 --- a/nixos/hosts/EDI/configuration.nix +++ b/nixos/hosts/EDI/configuration.nix @@ -24,54 +24,8 @@ ]; environment.systemPackages = with pkgs; [ - gparted ]; - 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 - extest.enable = true; - }; - - programs.virt-manager.enable = true; - - users.groups.libvirtd.members = ["lillian"]; - - virtualisation.libvirtd.enable = true; - - virtualisation.spiceUSBRedirection.enable = true; - - services.displayManager.sddm = { - enable = true; - wayland.enable = true; - }; - - services.displayManager.defaultSession = "plasma"; - services.desktopManager.plasma6.enable = true; - - services.samba = { - enable = true; - openFirewall = true; - settings = { - global = { - "invalid users" = [ - "root" - ]; - "passwd program" = "/run/wrappers/bin/passwd %u"; - security = "user"; - }; - public = { - browseable = "yes"; - comment = "Public samba share."; - "guest ok" = "yes"; - path = "/home/lillian/samba"; - "read only" = "no"; - }; - }; - }; - users.groups.samba.members = ["lillian"]; - services.vpn-ip = { ip = "3"; }; @@ -91,14 +45,10 @@ # for now. loader.systemd-boot.enable = lib.mkForce false; initrd.systemd.enable = true; - kernelPackages = pkgs.linuxPackages_latest; - supportedFilesystems = ["btrfs" "bcachefs"]; - - binfmt.emulatedSystems = ["aarch64-linux"]; lanzaboote = { enable = true; - pkiBundle = "/var/lib/sbctl"; + pkiBundle = "/etc/secureboot"; }; kernelModules = [ "iwlmvm" @@ -107,5 +57,5 @@ }; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "26.05"; + system.stateVersion = "25.05"; } diff --git a/nixos/hosts/EDI/secrets/sops.yaml b/nixos/hosts/EDI/secrets/sops.yaml index 85292b6..4db54a6 100644 --- a/nixos/hosts/EDI/secrets/sops.yaml +++ b/nixos/hosts/EDI/secrets/sops.yaml @@ -2,9 +2,11 @@ lillian-password: ENC[AES256_GCM,data:0mwqnvA+xrDD/m6uQtPbo9MpcFsOoqHE+Cg2gF6xZz 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] -prod.keys: ENC[AES256_GCM,data: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,iv:h6ixSWPmuqXBeLbwy/Sl4EeEpMU1jQkisxowihuWx8g=,tag:P504lT9lggD0nrJIMj9/Qg==,type:str] -title.keys: ENC[AES256_GCM,data:ntJ3Cl7Bjzr2JSScVoXtFhrxTC3DZ85j5VaA946cQaNzAamHfE3lDGGFXB2fyjQC1Lg26U7bH5u7qTgdhaoMq38ymriWnNCIruw/ngqIWzsCZSFw8UiLeBglmcSMbWdTm5E+Utn22+ClJriK2SKsybkzX9+pbv+k8vKaRHXalvLajzZ61yfWzo8TAs8OYOa0lFbZHT5KuejuR8XP/ZEkpnHpnxXBpuEPwmDm0sOHTHGxqyAnp1lzDDjZdgAWjs57Dh0x7WB0VUClCUewLkRCWN4YmWJ9qbyKXOqGhKu1qi2yBMvmQSxh20qgAKF78EPxd3cmPISZ0OQCdNLWNtJAqpJpCFa+XNAJaSqojQ5UX5H2pI6qeK5W6Twr6vwS6ZDN7snrs4hXPRBCWfKUFgxsALqHbmMlNoA7+RyyCPVGwanZ/hzSyepxtZpXS7erYf+ld1yYU8mSRJ3Em39EcY/1Gihw8si3ZTfhj0h8TGRok3qNiBAFXD9/SN1xEEWgmRMbS3Ba72N+tsBVlDT6WSnXaM34As4MxAArhfPe6JYADZnbCf5DGxWQzBuTvJnS6YzzfkvhJZ9yD4qGsd8DZI6TvXVDNXa2X5hxTwcmmBdd/Y0QRi1q4qsJoViHILZU4UfUYiu1XEU/UycQQUS+4DxsGWOOav8Pt65IS/VGpNyCWhnSrN0V9Qnk3YoILDeUNP7IbRBPkycgrF+d+kMZN0Gwgh+/ohRvkmw5MD7uhlBFomUmgDzONGLRLuBrTYF++s7O3XwwcaOYoItib5lGLAOrFhsc9t9YeqXlxs4+gTCudvKeWs6dwmnL0v/c//HmMSMMCEf2OEWbkntyYzrk/CluhzDOLiqm4pppFLDITX2SjGz3I1OQXP3/LfHHvMfGlZmGoWHe/fGSPpDj7I0+g2Lvo+9EQvyJ7fzqDNQFiQ1edoTP6pxgBh1G0HHkX3tKPgca6LWFoB9g8dGRLlWlHmRz4+RMWt++p0euRT3/Mjk+1x2Es24EdKAC55V5lUSPl+L7UmGOwOx7zaOO1yamn/2e33DYE9crRn1eTP4atHjJPbwLSj/Bat80QcJWRNROAfAlCpHmuzztkUKSjv2eMGw8KjROW6KeAXY5idC2Q/ecPqQj5RX1Fy/lOnhlXWFVQpFHc3OF9F+n44kKs6ROGm4D/lM6eNEgXW8t0OE02sPsuDEgJ3O84ork5Kb4PUv+9iLv+ixhRA/VbECoLGj4hyoyTUMipN4UMgKqGNQQtodBlQYPGyUVtsVvWeM5amlfdQY+esv7dEbeR/FUj97BDXKfo9JbEXqnT5kwdQq5Zl0KZpKOVN7VkOGpX7vsYhJYcAlSx/92gGIuxRFYGN/pcF/ZqxyCuqm1QH0b34al5YcqknVOPUf8CeJM3muNp/JbGhlxCGl+nWNOFBjRVtMHcslQK/vgbTV7Kg9USSOZeoGe+hF7t52s/rx/oafn1gB6Pa/7h3mbfZpBhq877Pr9KK0WcRfKzLvAFetzXTZDH4e8gioEXTQ0yEBI1bgRymj7Du6DLZguKsil6UEU8/oKSlIS0TVkudwlZBzHQ8JKhxnMl62VUtaIF/WSmxbQCJJElEWNI1BmwngBmLyUREa1x1Q02g8bsNsX+MEk,iv:DIw0Ji3ztBVR6GF6Gik7YZRsqM7tDODy3nTxC+u0S5U=,tag:Y2eWgJrR705vNx9OyUEfvg==,type:str] sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] age: - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz enc: | @@ -15,7 +17,8 @@ sops: eUZ6b09pYlRVWFBuUm1Ua2l6Z0dacW8KeQdAVsxXsDiDMtFA2koSpDsw7Ib63vA0 GE/ubWDwwRc7wMPFGuofIe6TaDSFgtVXza+yo+i4y51+BOpwqxlYYA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-01-11T21:17:00Z" - mac: ENC[AES256_GCM,data:uezrk8E77Je1xxEbBL3UvHsmOscb4oOuVf5jL9DBdTjL2kMW9lgEidDInp0fRs6XikjH1JFj3hxAhwF5EkhKPcVp8BZxDClqCwHtdzgQjw9sQ+8fCXSmG7La/GN+UthHDrKenzKdgbblJxEdRfQ34qbcZvLtSH1ikBPDvlWPiJc=,iv:wKcrHt3LYhVQt357vugYU7yTi/il/Fo4gYI9NCHbFuE=,tag:+wJd/lSoQeIm3uJFUnj09g==,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.11.0 + version: 3.9.2 diff --git a/nixos/hosts/GLaDOS/configuration.nix b/nixos/hosts/GLaDOS/configuration.nix index 3ae30f8..ef21414 100644 --- a/nixos/hosts/GLaDOS/configuration.nix +++ b/nixos/hosts/GLaDOS/configuration.nix @@ -11,6 +11,7 @@ # 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 @@ -30,17 +31,8 @@ ]; environment.systemPackages = with pkgs; [ - gparted ]; - services.displayManager.sddm = { - enable = true; - wayland.enable = true; - }; - - services.displayManager.defaultSession = "plasma"; - services.desktopManager.plasma6.enable = true; - services.vpn-ip = { ip = "2"; }; @@ -48,14 +40,17 @@ 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 = { - 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; - }; - # gamemode.enable = false; # gamemode.settings = { # general = { @@ -75,53 +70,33 @@ # }; # }; }; - boot = { - # Nuke root AND home subvolumes on every boot - initrd.systemd.services.wipe-my-fs = { - requires = ["dev-mapper-nvme_crypted.device"]; - after = ["dev-mapper-nvme_crypted.device"]; - wantedBy = ["initrd.target"]; - script = '' - mkdir -p /btrfs_tmp - mount /dev/mapper/cryptroot /btrfs_tmp - delete_subvolume_recursively() { - IFS=$'\n' - for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do - delete_subvolume_recursively "/btrfs_tmp/$i" - done - btrfs subvolume delete "$1" - } - - # Nuke and recreate root - delete_subvolume_recursively /btrfs_tmp/root - btrfs subvolume create /btrfs_tmp/root - - # Nuke and recreate home (wipes /home — but we restore via impermanence) - delete_subvolume_recursively /btrfs_tmp/home - btrfs subvolume create /btrfs_tmp/home - - umount /btrfs_tmp - ''; - }; - - loader.systemd-boot.enable = false; - initrd.systemd.enable = true; - kernelPackages = pkgs.linuxPackages_latest; - supportedFilesystems = ["btrfs" "bcachefs"]; - - binfmt.emulatedSystems = ["aarch64-linux"]; - - lanzaboote = { + jovian = { + steam = { enable = true; - pkiBundle = "/var/lib/sbctl"; + autoStart = false; + user = "lillian"; + desktopSession = "plasma"; }; - extraModprobeConfig = '' - ''; + decky-loader = { + enable = true; + package = pkgs.decky-loader-prerelease; + extraPackages = [pkgs.python3]; + }; + hardware.has.amd.gpu = true; + }; + + boot = { + loader.systemd-boot.enable = false; + }; + + boot.lanzaboote = { + enable = true; + pkiBundle = "/var/lib/sbctl"; }; users.users.lillian.extraGroups = ["gamemode"]; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "26.05"; + system.stateVersion = "25.05"; } diff --git a/nixos/hosts/GLaDOS/secrets/sops.yaml b/nixos/hosts/GLaDOS/secrets/sops.yaml index 6e48ec8..d2521b7 100644 --- a/nixos/hosts/GLaDOS/secrets/sops.yaml +++ b/nixos/hosts/GLaDOS/secrets/sops.yaml @@ -1,11 +1,12 @@ lillian-password: ENC[AES256_GCM,data:aHJCYmnpGIWJMsNZ8aw51Rquuv4F7kgGvfIxHMELuDlEqgjkg+SAhh+UQEpv16F0WVxrYZ/EwxKFMBpfPv9M2NLZC98bav0D9g==,iv:uzYLfmxG46ubmgeFsfW7aqXZbcL+TQw0VdDcklV0/ZI=,tag:Ozcf5qXC7xh0VcsBzhyo2g==,type:str] -#ENC[AES256_GCM,data:RrwVo88C14k703l24w5RQd81lQFy/49aJUa1IZWdY0at1GfiKSbbep+kdxtQBpU0Bp9VYg==,iv:+K1BLn+6SlQC5JAjgzMUZnuqT4cuqisETzHBKUfS+y4=,tag:jTMn4LcoNnhWyzVzLOvXrA==,type:comment] 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] -prod.keys: ENC[AES256_GCM,data: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,iv:0QEPw6CMkOeGPkpZq3hZenkKDFnAdNiBbJbIMOLCbHw=,tag:SqHlmsYEPIMlGfPhkVrDAQ==,type:str] -title.keys: ENC[AES256_GCM,data:mAlox5nq4dyZHmDndZkmghu8Qp7F5oTSx7CKEiygztmrFaSNji8csIdMp+t9eL43elrVatckALrLIw4e3Zlh7Osf9dqLAVbE6SV7YUfo/AeKfbmYU9UoM7+YlnxqS9T83xvmr++pNM/mxSZJwvgDTbQVWeW2T6+6Mglozmh/8yDOqT/vmj+gsHD6ndXID+FxohgI+kP3b8YI1oYlwdZaPAVtZYrYhgWpZ6yBiZbhhjtoBV5xIfQQRQdDAx8kC1xDbA0Ntmn5hGgPbCwpina3K+1Ukh30orGq1dB/7hb2AsuxsRVgWQ5uqSHCCV+BkybgoeHFR8G58VYl5/TzQbJSRb+NOo/2XeVByUq++kFyudQTSZvhijyjZ+GmErftpEz6rC4a/jte9j1MGaMLbAzEMTFZbBte4VLVgC4k/CNFDxkeYKcB3+Dspl4tMw+R70WWr5vo1hduUCkhC2N+2VlJ2vokFkoL+E4pw1r8XaQZN60JHz/3C5hgw/FwlNidro6DzlFzWSpZoRymkr1UPuEICb5P7fDB3au0yDYpqpWXCPqTU1WtFvAf2273kip2VOd1iWpcx4LcVOYdwvM2NkGx/gIzEmU2sJAIdB8m/p9Jjj3WHOxnXTR75OZo5zHi1aQiBvMjW+xg37pu6Dt7m9LNabPWpedgQtZxw3bhWhDrOqo0DfQEsyHvjaNzCTro3zZKnCPSqDPcEpAxD8fogtpSZoa6beNVCJYQ54o5qlGoH2eRvG/M2ncq9tzn9iwAP8MfKWlyIyPUwQzZaT14Wl3pl90HRrolu3tzZpAFNc1Ok7zKYTIXKzxMl3Au5hyP2mvGXYZl+GwhO2rk1CpdhFjNvq6orxFmnDQjX1e8QmxlR0B6tUeIwDWyssGO+Ie2k23eOW3mM1JLt+7HY3R65MoI6SdNaQxH7lqNnm21rp9eKjIQS0NBwLeO8XVM7VtyeYt7Awl7eBybmDrrRLTBi4JD2eayhBTqtvmjIwndNcxmSbY9chYs1n128ujNuzHud/QdTx4w0CndR9F8zIpISakonSZvVb4vh6JFY5uymONK0tlLy63sDLjPh3NMIM4/qEC7W0wTgX1uHG5Ac4AY2ptaaKFLlM/WNNS5cmObWZgytpR+UEWh5S+gmcSePf6DzAoZu/U2gBX+vA3eVA1Y5aAQA0gdDa+AI9jaBT9YGdM/+8im9brIzEozscybltpAdTe8/mUwl06FmziX1mO37mv/uxBAig4o2lUrEinH1vJEKWHtWWIOGIMIkz4BY0/3KK5vO/liie6aY2BbCnx47slRZg9r2jgPtz9iKxSW53QFeg62b51futQbmuipKoGwp0hW2NiKfa3UY5YQUNOoismU0YHvNGRm0VIKhUZZq7DUyHigxAQqrPFjpqw3318gVHQXWwacCgcr6onQ48Ke/H7/Vop/dRNmK7T5CKQE/zP+S/j9AixxNsnZ/FUBiRXQIeQoonrzo45Uh+9DEsn4G91S7utwrxYVEkNLIjGu4h80zpgxHqODop9v5dsvpvje2MX2C84hRttjB+zM1K5T3/xyH+g2Hk7owg9aIZsE+th8cGCkl2BVMl9750+fx5+K7j4iPgbw+6cub09W99Na+tuOMWAJT0M/IHr3,iv:LDGFvr5s5WvigWGeKmjOlY2mKEjAu+So3n6pRbChE+Q=,tag:9gQhB5fcFHNk7IltvrygKQ==,type:str] sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] age: - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz enc: | @@ -16,7 +17,8 @@ sops: MUZWTVh0dVdMZlRzelJ4WlROUlIyNmcKphNuMN9Wh8h/gvmtUxQWjPKtgjWriLRD +DpEEVGrmu0RJ8/wUqjxGoL4GzLAlZm4EnKlyUyA0tw8sbLZ2Lnl/w== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-12-29T14:31:21Z" - mac: ENC[AES256_GCM,data:K6gtlrWGtNvWwcE7zExB45kl9dxpA3zxbaqAFJd18HhVZb6VP1QRe2VcaoS/rlKBU508Z76sVuh/9hj7PBUMp+oPxWyxuUD4PUkYHxvELN4sHFzrJ+whXQVxCC81VwP6adA0fhwSyMxRLETf0tZo/09jTXMmbLZKZIDnFI5vbLs=,iv:Fg1tyIr4yKtdi0R1k+9j+1wxkAGtwvCGwGVHVQMfeuU=,tag:vND8ZazwY7i+DFj4nnTrsA==,type:str] + 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.11.0 + version: 3.9.2 diff --git a/nixos/hosts/iso/configuration.nix b/nixos/hosts/iso/configuration.nix index e2d7688..1c45890 100644 --- a/nixos/hosts/iso/configuration.nix +++ b/nixos/hosts/iso/configuration.nix @@ -10,20 +10,20 @@ # outputs.homeManagerModules.example # outputs.nixosModules.contabo.wan inputs.home-manager.nixosModules.home-manager - outputs.nixosModules.vpn-ip # 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; + 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 = ""; + boot.tmp.cleanOnBoot = true; + zramSwap.enable = false; + networking.domain = ""; services.openssh = { enable = true; # require public key authentication for better security @@ -45,9 +45,7 @@ #Set up sops config, and configure where the keyfile is, then set the mode for the unencrypted keys sops.defaultSopsFile = ./secrets/sops.yaml; - services.vpn-ip.enable = false; - - # services.desktopManager.plasma6.enable = true; + services.desktopManager.plasma6.enable = true; environment.systemPackages = with pkgs; [ # Custom tools @@ -67,9 +65,11 @@ sbctl tpm2-tools tpm2-tss + waydroid zsh # KDE/QT + krunner-translator kdePackages.discover kdePackages.kcalc kdePackages.kdepim-addons @@ -81,14 +81,13 @@ kdePackages.plasma-pa kdePackages.sddm-kcm kdePackages.dolphin-plugins + libportal-qt5 libportal ]; # Enable networking networking.networkmanager.enable = true; - networking.hostName = "iso"; - # Contabo ipv6 nameservers: "2a02:c207::1:53" "2a02:c207::2:53" networking.firewall.enable = true; @@ -107,24 +106,24 @@ # 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 + 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.git = { + enable = true; + }; - # programs.direnv = { - # enable = true; - # }; + programs.direnv = { + enable = true; + }; - # # Enable completion of system packages by zsh - # environment.pathsToLink = ["/share/zsh"]; + # Enable completion of system packages by zsh + environment.pathsToLink = ["/share/zsh"]; # kde power settings do not turn off screen systemd = { @@ -137,17 +136,17 @@ }; }; - # home-manager = { - # extraSpecialArgs = {inherit inputs outputs;}; - # users = { - # # Import your home-manager configuration - # lillian = import ../../../home-manager/hosts/iso; - # }; - # }; + 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"]; + 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 = "25.11"; + system.stateVersion = "24.11"; } diff --git a/nixos/hosts/iso/secrets/sops.yaml b/nixos/hosts/iso/secrets/sops.yaml index 27763b5..92548c8 100644 --- a/nixos/hosts/iso/secrets/sops.yaml +++ b/nixos/hosts/iso/secrets/sops.yaml @@ -1,8 +1,9 @@ lillian-password: ENC[AES256_GCM,data:eQzZwGxK9Lw2gc8HDNw57odxPzTH4sa/2O97h3VAghRwLClmCYKT91kxj2F3kQ4iEctBl0GxdS4WoL3H9eE4/CAPffXdTmkdYg==,iv:2ezB4DNHFv5ceJ2gtATV12Azm3vFFDLX1qSSy+cKuMY=,tag:zxb5agUCDpi92bYV7+DmoA==,type:str] -ssh-private-key: ENC[AES256_GCM,data:YQ+9aKpBL9XYl0IBxpPttUli6/E25alUhO36dZwPPSIBLI1ehyczocQMxNRYNtB2xKYx4wPaYIndLBhj9VdTUgaOWUd2C6aU6YgXgFAsjgEwqVDZWRp7TrTHojtrS5HnJgfopx6EqPf/uljD9yQsOkubDDUbpYkpWX/3vixm9LJ1eRXxTxXW8D3O5OM2Z1NsqA7meVa1xhvWJokqS4sD5ntp1HT78Xmu62EweHQVGaznUvWZupYh0uCQd0tr6GVTZLHdyCdaFUGHRbRddBcljpBIRWaWkhIrkjejvptUZ4Ht/UN5XM5z+zfU3DxsDOxeJ7m83om9I3WdZSdq1aDXe+VFEfMrx/0QTk2LtAmOvujcN6wO7a77SD4Rpuvq8KH2CeKrwMLlFf2BeGIcGhvAhRYUVxtypM38DEdbf/7xIcw0vQP2zNZN4QWdukUInDndnAxMfbIXKpYI5OPRaZMTVui41hkS86LBfbd5RhTjyzrtIpVSq9XkKRX7d5i8Gcjb4ORpQvrNNYMo+TXCiLNTg3/q0My/jEhfjfTF,iv:EpKC9judTZ1+0Y2LC1OK2YzGH/orRpZNtE7O+ZZyU1E=,tag:S6ju/FkwIBbBA8YU3dRo1A==,type:str] -nextcloud-password: ENC[AES256_GCM,data:5u8j1wau5FewTe+t3YZ365Acfcrt09XDgCUNpDbuVKaNZIEW3gdR60XACQeAvsyQeznynILJnz7/txV2,iv:l1xYhUkQGdWYNNy1lG9xB5SgL9cn2FdzAs19iVCohlA=,tag:rT0flG+v9wd8jSUm8DrCjg==,type:str] -wg-private-key: ENC[AES256_GCM,data:3JpyscuzK4LG1lfM3oyQNBHy7BQ2WeTaSyaZoaNfS4U7KkpEaCp5EVLBYiY=,iv:odDG8xp+d+O4FuECfeCJn/z2ka4KSzSBvgBCmcMZ0S0=,tag:iPwnqgtap+i44Mru/S7TyA==,type:str] sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] age: - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz enc: | @@ -13,7 +14,8 @@ sops: dXlaN3dWOUl4Mys2V0x3Z3F6UVU4MVUKEJYpX8XhSNcM+7aUuxnIwrokY0/29Cnh yz0HAZkaj8FwvnPnafo5jmwVyi6WXECvX5E0NZfjKH4AF5vTu6Wukg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-08-14T18:00:16Z" - mac: ENC[AES256_GCM,data:NnX0hMrfeKJucgqgVUIUS0WOHerkDtKe3P+4vvWRCMX3eXg4Tsju8pZySZP7RSZX7+2W3OUHMOUuAum0YrVasTXuhm6jPvlbqvRnVXaVzCNheIUvTCF7LFeJEOQYKS5m8AiVKFRrxz+dGn90DSeijjajSePBjo8AnKyAOQEt1S8=,iv:1iJiqJU0vdDiWnJAYDlbOBBa9lBOODjjdlsRH54aTGI=,tag:JZtgVeLvFN6vcCZkRnuNcQ==,type:str] + 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.10.2 + version: 3.8.1 diff --git a/nixos/hosts/queen/configuration.nix b/nixos/hosts/queen/configuration.nix index da17a6c..1f643b8 100644 --- a/nixos/hosts/queen/configuration.nix +++ b/nixos/hosts/queen/configuration.nix @@ -3,7 +3,6 @@ outputs, lib, pkgs, - config, ... }: { imports = [ @@ -29,24 +28,6 @@ # Import disko # ../../../disko/queen ]; - - preservation.enable = lib.mkForce false; - - # services.anubis.instances.default.settings.TARGET = "http://localhost:8123"; - - # # required due to unix socket permissions - # users.users.nginx.extraGroups = [config.users.groups.anubis.name]; - # services.nginx.virtualHosts."*.gladtherescake.eu" = { - # locations = { - # "/".proxyPass = "http://unix:${config.services.anubis.instances.default.settings.BIND}"; - # }; - # }; - # services.nginx.virtualHosts."*.lillianviolet.dev" = { - # locations = { - # "/".proxyPass = "http://unix:${config.services.anubis.instances.default.settings.BIND}"; - # }; - # }; - zramSwap.enable = false; services = { openssh = { @@ -74,6 +55,7 @@ environment.systemPackages = with pkgs; [ fzf + matrix-conduit docker docker-compose gitea @@ -86,53 +68,29 @@ #jellyfin #jellyfin-web #jellyfin-ffmpeg - nextcloud-spreed-signaling - nats-server nginx onlyoffice-documentserver - libressl + openssl + phanpy postgresql_16 - # python310 + python310 # python310Packages.nbconvert - janus-gateway jupyter - # rabbitmq-server + rabbitmq-server roundcube roundcubePlugins.contextmenu roundcubePlugins.carddav roundcubePlugins.custom_from roundcubePlugins.persistent_login roundcubePlugins.thunderbird_labels + youtube-dl sqlite + rocksdb ]; services.vpn-ip = { enable = false; }; - systemd = { - services."upgrade-nextcloud" = { - path = with pkgs; [nextcloud31]; - enable = true; - unitConfig = { - after = "nextcloud-setup.service"; - }; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${config.services.nextcloud.occ}/bin/nextcloud-occ upgrade"; - RemainAfterExit = "yes"; - }; - }; - - timers."upgrade-nextcloud" = { - wantedBy = ["timers.target"]; - partOf = ["upgrade-nextcloud.service"]; - timerConfig = { - OnCalendar = "daily"; - Unit = "nextcloud-setup.service"; - }; - }; - }; - networking = { domain = ""; @@ -235,5 +193,5 @@ }; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "26.05"; + system.stateVersion = "25.05"; } diff --git a/nixos/hosts/queen/secrets/sops.yaml b/nixos/hosts/queen/secrets/sops.yaml index c0edc61..dcd0abb 100644 --- a/nixos/hosts/queen/secrets/sops.yaml +++ b/nixos/hosts/queen/secrets/sops.yaml @@ -8,8 +8,7 @@ mailpassunhash: ENC[AES256_GCM,data:q/P3nrNLy3hCISDmalw94nzWIFhoCdCTyflj27D2Ltr8 rpcSecret: ENC[AES256_GCM,data:gOuQSY2RI6rnSnG1,iv:xz1ueq4/UOKYBs5r9Tk4jL0+GyX8uo8I8ZymVgIMKLI=,tag:Fr8rWIttLz7X8Pri6FBJBQ==,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:1K7WX5FGhF7+CRZs4SEVKogsGv/93IJVvLeMe6/d1dg3g5/6fQkRCVl1KicMUOsqUxMweUn5hUXSO1h/ruWvPA==,iv:0U/JoeVin2zTkyk60x2boUQRzGW+9swlbxP1ENCbAFQ=,tag:ll8WCgMNtun5Va0VpC81Tw==,type:str] -hpb-secret: ENC[AES256_GCM,data:I/64j3nA0BWW5YY4STMFzxnSKQ+TmiHvweIIGOMJvV4=,iv:zezsPPnKlVBVlrJeG4pGbtuiz1GEWLmQaZl1isNa+pk=,tag:YbTWLAjIIMDn5Jo43U0QtA==,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] @@ -17,6 +16,10 @@ writefreelymysql: ENC[AES256_GCM,data:1JZwIX04O3DBAo7JvEkeNrFcSdcmk/u4WUf/kkbr2J 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: [] + azure_kv: [] + hc_vault: [] age: - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz enc: | @@ -27,7 +30,8 @@ sops: KzNBMCtUaS9sU21Xc1JUd1FSR29tSkEKyqaDM/WUWjK2l+ahE6sIFYsQ6Qtkf7yz NWFTzsDZBmm9kpSIjchf+PuBuoRHeEKbEH8jnMlYB3J8boEnUnXMlw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-08-04T13:04:56Z" - mac: ENC[AES256_GCM,data:ppQgyWY/4Kr8/Ag5x7wBv1RZAxky6Itf4sBBRIzJj8njzSDOPm0blcDHjIGesu9PwmjnnJihZivmWXj43pAjxf6p4FmtlBAIqLUjRIV7fR16VINo7dPx4Pv6+sw1uwFvLliD/FfKwYo2S+Lx0eQnOzW1p7RROpbQJQ8k7AUngKE=,iv:Pk8sPdAMzITgeeaoZHJc77ywp47DuB5A1Lx5pjtHXM0=,tag:JkMDnjYMPTFkyOiikA7ejA==,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.10.2 + version: 3.9.2 diff --git a/nixos/hosts/shodan/configuration.nix b/nixos/hosts/shodan/configuration.nix index 262332b..44eed8c 100644 --- a/nixos/hosts/shodan/configuration.nix +++ b/nixos/hosts/shodan/configuration.nix @@ -17,7 +17,7 @@ outputs.nixosModules.vpn-ip # Import the shared settings - ../../desktop + ../../desktop/package-configs/firefox # You can also split up your configuration and import pieces of it here: # ./nvim.nix @@ -46,17 +46,12 @@ lanzaboote = { enable = true; - pkiBundle = "/var/lib/sbctl"; + pkiBundle = "/etc/secureboot"; }; consoleLogLevel = 0; kernelParams = ["quiet" "udev.log_priority=0" "fbcon=vc:2-6" "console=tty0"]; plymouth.enable = true; }; - services.udev.extraRules = '' - KERNEL=="hidraw*", ATTRS{idVendor}=="2dc8", MODE="0660", TAG+="uaccess" - KERNEL=="hidraw*", KERNELS=="*2DC8:*", MODE="0660", TAG+="uaccess" - SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2dc8", MODE="0666" - ''; zramSwap.enable = false; networking = { domain = ""; @@ -65,10 +60,8 @@ networkmanager.enable = true; firewall.enable = true; - firewall.interfaces."wg0".allowedTCPPorts = [8080]; - firewall.interfaces."wg0".allowedUDPPorts = [8080]; - firewall.allowedTCPPorts = [22 8080 8091 9090 9777 46899 46898]; - firewall.allowedUDPPorts = [22 8080 8091 9090 9777 46899 46898]; + + firewall.allowedTCPPorts = [22]; hostName = "shodan"; }; @@ -76,19 +69,28 @@ ip = "4"; }; - xdg.portal.extraPortals = [pkgs.kdePackages.xdg-desktop-portal-kde]; services = { - openssh = { + 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; - settings = { - # require public key authentication for better security - PasswordAuthentication = false; - KbdInteractiveAuthentication = false; - PermitRootLogin = "no"; + ipv4 = true; + ipv6 = true; + publish = { + enable = true; + addresses = true; + workstation = true; }; }; displayManager = { - # defaultSession = "plasma"; + defaultSession = "plasma"; sddm.wayland.enable = lib.mkForce true; sddm.settings = { Autologin = { @@ -97,17 +99,76 @@ }; }; }; + + # 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 = [ + ]; + # Configure your nixpkgs instance + config = { + # Disable if you don't want unfree packages + allowUnfree = true; + }; + }; environment.systemPackages = with pkgs; [ # Custom tools + auto-mount #System: + btrfs-progs decky-loader - jre8 - # jellyfin-media-player + efitools + jq + # noto-fonts + # noto-fonts-emoji-blob-bin + # noto-fonts-emoji + qjackctl #rustdesk + sbctl + udisks + util-linux + waypipe + python3 + protonup-qt + + #KDE: + krunner-translator + # 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 @@ -115,29 +176,6 @@ 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 - ])) ]; jovian = { @@ -150,7 +188,7 @@ decky-loader = { enable = true; package = pkgs.decky-loader-prerelease; - extraPackages = [pkgs.python3 pkgs.flatpak pkgs.uutils-findutils]; + extraPackages = [pkgs.python3]; }; devices.steamdeck = { enable = true; @@ -158,15 +196,59 @@ }; steamos = { enableAutoMountUdevRules = true; + enableMesaPatches = true; }; }; - fonts.packages = [pkgs.ttf-ms-win10]; + 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; + + noisetorch = { + enable = true; + }; + + git = { + enable = true; + }; + }; + # # 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 bluetooth hardware + bluetooth.enable = true; + + # Enable sound with pipewire. + }; + + services.pulseaudio.enable = false; + users.users.lillian.extraGroups = ["decky" "tss" "input"]; + + # Enable completion of system packages by zsh + environment.pathsToLink = ["/share/zsh"]; + + security = { + rtkit.enable = true; + tpm2 = { + enable = true; + pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so + tctiEnvironment.enable = true; + }; + }; + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - system.stateVersion = "26.05"; + system.stateVersion = "25.05"; } diff --git a/nixos/hosts/shodan/secrets/sops.yaml b/nixos/hosts/shodan/secrets/sops.yaml index 2ea5876..3c8e216 100644 --- a/nixos/hosts/shodan/secrets/sops.yaml +++ b/nixos/hosts/shodan/secrets/sops.yaml @@ -1,10 +1,11 @@ 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] -nextcloud-password: ENC[AES256_GCM,data:vA+L/7rTne16AZbibUAaLAcQKLoKPvM1ATNL/hbzjVt+qmxHhmuQq0cqKdoPOFlOftMNLo5HSKiHdLxh,iv:kw0IorbyjT/ocanJDcR3kuPCqHsPwSD4axIp2dfn1Fc=,tag:5QLl3xKq4a0EiImO07ardQ==,type:str] -prod.keys: ENC[AES256_GCM,data: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,iv:KLy+ZPTzetrbJxCkkmqO2ywSOxQu3x973mMN6LtyLbc=,tag:vPy7805yJVv3hIpYiq3Ijw==,type:str] -title.keys: ENC[AES256_GCM,data:n+2dvLPwSFDUUjKAWasOk11jdcE5EAzFOTLepIYbALCxpBgCIMGDYLXv8HM6k5R6CHzMMnkLawCUgfqG8ozc+mnD7HDgpje1zjH2x/sEjyG93ThrSwaW2ydN8KrU4LvNgRUbGCr1gTBQ2utX5jbaOrO/P4PDLtjxLofqEHQKz3PXjQQuSs9CT0dif1daTNKhSqTHLojxuFS5FMPKTT5KxmDXj2tJi898izi+ZLz/MpM5S+ovs23Jz/nFPFzZcZcb9K9/KjjZAE92ArwMYaHu7SlLVyKmCyEB6kbKN6V7W9/UsQwglSH6KBH/PiknLtsdOwlZFBa7kR4dws+kOlzhR4SakEZZjYtTtZl+Fhbl1vGgn7npbTL1dHEIrbRd8IJSTIkDKdnSUPatEpnfM9BDhDRnYGQsShy0Pf3UENwadu2qDXtu1/RuztlR4XlOmcc2BbGytJ2TkqRcTclMGsT0CPtFORKIo0Mb9nsnOY/049oEkFjXQOaI9Gw3ahc73GgO+Fb256oGmJXmMCcvVDGm3qGR/ZjbFLB7VTOPCDO7M6Dy0kPUvPQYsGN43Wu8cM84cIYRV52JAwUJ5IunoKXl6ONHNMy2LpATGAQ35IKGVFUSJSK4y1RggFIU8ON/2L31u+gsfCrv0UNDQXyIJrZINA8YEFfsarlfBukakgJH8OvQ+DTTLbmJT9bEyhuDut8jR3u1tuEovWRhCtRqnYEiEBKeHzg377I47OFx8oYGABzibQecQf7/pvuvoYRU0pE+CnAW45rrhJMOrZ4U//4HbI+5e5VO7UMrfkuMQcddN0vXJaGpGjLb4O8l+9W+VYAZF/NZZ1vjjfy40coRwa6veiwo0BG4MyhRg9uvwFv27ne+33v7CEmvVUyY+8yafxTQkoaGSPVS1eawEKTdhC2VcsNaH9+LOhe0T8di5FxIho1QOJXYnyuZkIrcHbmIJt7lwwsDLxO1pjqa9xLcbwLDCjsqXVG42K8ZYQOvshuCR/YSG8lBXvqDQsZa7YzTX/gBFJ6d+t+4huPx17PT+oUaJu2Npy7FFb4RfKHWwjshveRG03MI5sYl6tBfZfyODHB8litTgQl0TGvKLkR6RC5jHoSt+ajy+hbB8f7Wenxb9XFoBW59gJVcvdkLXKNz2+b+0ZSLmKK1RkwA1iVSwlvsy7HOqF2Eb8FdaLQGNPBwnsGKYTTLO3+tgKEWH2vDoPQNUCvVcUTVYm+pEIgcGNfVGaw8ZcDUHk/h0D+XBoQYBOIf5Robsie78aTMVMxrZQ3Sf/PK9p0fDFzXNIUyqyUPECGIoXCdGtPDL7jYSlQheQFQulpu59m1A06uqakeUlVtQnaooe3IsRwwHh0UmtonZyv4HTxlb6mg33aLG2RMEyztV6yKRsUkV+TQYHr37Zmht1r7YL46yS1WOX9Gymxoz/5Gpvsf9zXP6+2TGzeRU9xcMaQSppDMrPLJrfBULXVZpXUCLCCnmtF0eemx0cUkILgbG+4U4plkHuvqAsHGPbyEPEhPILpLkF78k33KRpClS0eeVSJ+Sh2UVnZLBTg5tEVKenuuAtT3WNLyuaw4pDTmVzuZegsexbcNj8sMu+bFnxAvZk+WmtY8eLUfBohFiiPoIfdF6Hjf,iv:em/onbNK9UerSYcShqsw3iAhZMfhIQ5NOHB5Li1aJ88=,tag:Y/mILY1zxh3QhZ5pFuvy3g==,type:str] sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] age: - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz enc: | @@ -15,7 +16,8 @@ sops: KzNBMCtUaS9sU21Xc1JUd1FSR29tSkEKyqaDM/WUWjK2l+ahE6sIFYsQ6Qtkf7yz NWFTzsDZBmm9kpSIjchf+PuBuoRHeEKbEH8jnMlYB3J8boEnUnXMlw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-01-31T15:10:12Z" - mac: ENC[AES256_GCM,data:9E1Ghev2RWb+r3+k7bomLTVEmdeUiQXdkO29fs6amMcJvsScvOqAfqXocbw/AQn+hj1KOVfLoGknPlQmUm9FQE3MCfASuJe01y8HjPXwU2C0PFB4qK+LoWyPax0GxfLRZqplCSJShFdhgIXKep5MAoJFTm48QQlmEw+yF10fKI8=,iv:EKbz3/ASb8SsDL3lqrHggnfdBehynYSzIKCXtsSCpmA=,tag:BTzlh1f8EnXhV3DEbf/+oQ==,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.11.0 + version: 3.9.2 diff --git a/nixos/hosts/wheatley/configuration.nix b/nixos/hosts/wheatley/configuration.nix index 7438597..b39a571 100644 --- a/nixos/hosts/wheatley/configuration.nix +++ b/nixos/hosts/wheatley/configuration.nix @@ -14,11 +14,8 @@ ./hardware-configuration.nix # Import shared settings - ../../shared ]; - preservation.enable = lib.mkForce false; - hardware.enableRedistributableFirmware = true; powerManagement.cpuFreqGovernor = "ondemand"; hardware.graphics.enable = true; @@ -32,7 +29,7 @@ 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.enable = true; nix-index-database.comma.enable = true; }; services = { @@ -165,38 +162,6 @@ enable = false; }; - services.stubby = { - enable = true; - settings = - pkgs.stubby.passthru.settingsExample - // { - upstream_recursive_servers = [ - # kdig -d @194.242.2.4 +tls-ca +tls-host=base.dns.mullvad.net example.com - { - address_data = "192.242.2.4"; - tls_auth_name = "base.dns.mullvad.net"; - tls_pubkey_pinset = [ - { - digest = "sha256"; - value = "vRABi3U719mJG1E/XyyrJ+3K43XdmJB+XuzaKESPRSs="; - } - ]; - } - # kdig -d @2a07:e340::4 +tls-ca +tls-host=base.dns.mullvad.net example.com - { - address_data = "2a07:e340::4"; - tls_auth_name = "base.dns.mullvad.net"; - tls_pubkey_pinset = [ - { - digest = "sha256"; - value = "1ABYdzvvAq7Ec7+Wl5KrRcgPeXsIGLBU7I+89u94bcw="; - } - ]; - } - ]; - }; - }; - networking = { hostName = "wheatley"; @@ -212,8 +177,12 @@ # Configure DNS servers manually (this example uses Cloudflare and Google DNS) # IPv6 DNS servers can be used here as well. nameservers = [ - "194.242.2.4" - "2a07:e340::4" + # "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" ]; wireguard.enable = true; @@ -251,36 +220,6 @@ # wg public key for host: A02sO7uLdgflhPIRd0cbJONIaPP4z8HTxDkmX4NegFg= # TODO: generate this dynamically based on other hosts - wg0 = { - address = ["10.73.141.73/32" "fc00:bbbb:bbbb:bb01::a:8d48/128"]; - privateKeyFile = lib.mkForce config.sops.secrets."wg-private-key".path; - dns = ["100.64.0.7"]; - extraOptions = { - FwMark = 51820; - }; - - listenPort = 51820; - - postUp = '' - ${pkgs.iproute2}/bin/ip rule add from 192.168.2.43 table main - ${pkgs.iptables}/bin/iptables -t mangle -A PREROUTING -i end0 -j CONNMARK --set-mark 51820 - ${pkgs.iptables}/bin/iptables -t mangle -A PREROUTING -m connmark --mark 51820 -j MARK --set-mark 51820 - ''; - - preDown = '' - ${pkgs.iproute2}/bin/ip rule del from 192.168.2.43 table main - ${pkgs.iptables}/bin/iptables -t mangle -D PREROUTING -i end0 -j CONNMARK --set-mark 51820 - ${pkgs.iptables}/bin/iptables -t mangle -D PREROUTING -m connmark --mark 51820 -j MARK --set-mark 51820 - ''; - - peers = [ - { - publicKey = "33BoONMGCm2vknq2eq72eozRsHmHQY6ZHEEZ4851TkY="; - allowedIPs = ["0.0.0.0/0" "::0/0"]; - endpoint = "193.32.249.70:51820"; - } - ]; - }; 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"]; @@ -290,26 +229,22 @@ # 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 wg1 -j ACCEPT - ${pkgs.iptables}/bin/iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE - ${pkgs.iptables}/bin/ip6tables -A FORWARD -i wg1 -j ACCEPT - ${pkgs.iptables}/bin/ip6tables -t nat -A POSTROUTING -o wg0 -j MASQUERADE + ${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 wg1 -j ACCEPT - ${pkgs.iptables}/bin/iptables -t nat -D POSTROUTING -o wg0 -j MASQUERADE - ${pkgs.iptables}/bin/ip6tables -D FORWARD -i wg1 -j ACCEPT - ${pkgs.iptables}/bin/ip6tables -t nat -D POSTROUTING -o wg0 -j MASQUERADE + ${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; - extraOptions = { - FwMark = 51820; - }; - peers = [ { #GLaDOS public key @@ -339,7 +274,7 @@ # enable NAT enable = true; externalInterface = "end0"; - internalInterfaces = ["wg1" "wg0"]; + internalInterfaces = ["wg1"]; }; firewall = { enable = true; @@ -351,7 +286,6 @@ 80 # http 443 # https 51821 # wg - 51820 # wg-mullvad 7878 53 # dnsmasq ]; @@ -417,6 +351,6 @@ services.cage.enable = true; nixpkgs.config.kodi.enableAdvancedLauncher = true; - system.stateVersion = "26.05"; + system.stateVersion = "25.05"; nixpkgs.hostPlatform = lib.mkForce "aarch64-linux"; } diff --git a/nixos/hosts/wheatley/secrets/sops.yaml b/nixos/hosts/wheatley/secrets/sops.yaml index 309f90c..6fcd84c 100644 --- a/nixos/hosts/wheatley/secrets/sops.yaml +++ b/nixos/hosts/wheatley/secrets/sops.yaml @@ -1,11 +1,15 @@ wireless.env: ENC[AES256_GCM,data:a5sUW0Lc4GRd9aUJwHbmQvzvRB8WaRjMSQ==,iv:+3ncL38E3aqbejoCzzeBtMukLk4n/AQBJELlqhXDqSA=,tag:buY9Mp10DAEEEKqSyHwB3g==,type:str] -lillian-password: ENC[AES256_GCM,data:cr+Dix1YWrCDHjw0tj4Lnyy6X/bp+/tLSfHteBOsVHhwNRMK6IjZDZtuyFtrqtxfG2VQcFk7cPSkXaK8IQYzG4iYoDBxHxzWOQ==,iv:L1U+dT9eSMpE/WwSA3o9LoYaqv9aErqjXzsADdK2Gk0=,tag:onsOAyulyrbJvayVoGGfgg==,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: [] + azure_kv: [] + hc_vault: [] age: - recipient: age12e00qvf4shtmsfq3ujamyaa72pjvad2qhrxkvpl9hryrjvgxev4sjhmkxz enc: | @@ -16,7 +20,8 @@ sops: Vm9mWk5JRGtZNVVhN1JQWTBlb2kySkEKoLI1MzS3uGNUbyn7kI5DylKZiPtc1div bKIboWoobTfDt0EURfmZ5+JrX6DlZxRyNQyl9dsKmZT6pLdaIppStA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2026-01-08T19:47:05Z" - mac: ENC[AES256_GCM,data:G7YCN4C0fpNLoZLHqagDWqrnTSkWDOjNbs7F/P8Fn/s/U9HBC8gHWktAM41h8MT853t3kF38SoTOD59nno+an9EECoSkWJy66agdrNM3/NZHz7aTbDmlw1EsrFjh8HeleLIwrwrNkQiJuakPjbplvIhFAtNZsFoErDtd5xnHy6c=,iv:A5DCVRUa99xmeDnAoCQR15oIJOjkR/A1aqadLWZGbwg=,tag:YXvBLwXGoE64ZqUTEORX9A==,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.11.0 + version: 3.9.2 diff --git a/nixos/server/package-configs/conduit/default.nix b/nixos/server/package-configs/conduit/default.nix index 09268ee..fb52a62 100644 --- a/nixos/server/package-configs/conduit/default.nix +++ b/nixos/server/package-configs/conduit/default.nix @@ -28,12 +28,18 @@ } ''; in { - # Configure continuwuity itself - services.matrix-continuwuity = { + # Configure Conduit itself + services.matrix-conduit = { enable = true; + # This causes NixOS to use the flake defined in this repository instead of + # the build of Conduit built into nixpkgs. + # package = inputs.conduwuit.packages.${pkgs.system}.default; + package = pkgs.conduwuit; + settings.global = { inherit server_name; + database_backend = "rocksdb"; allow_registration = false; # emergency_password = "testpassword"; turn_uris = ["turn:turn.gladtherescake.eu.url?transport=udp" "turn:turn.gladtherescake.eu?transport=tcp"]; @@ -91,7 +97,7 @@ in { ]; locations."/_matrix/" = { - proxyPass = "http://backend_continuwuity"; + proxyPass = "http://backend_conduit"; proxyWebsockets = true; extraConfig = '' proxy_set_header Host $host; @@ -111,7 +117,6 @@ in { 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 @@ -125,7 +130,6 @@ in { 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; @@ -139,9 +143,9 @@ in { }; upstreams = { - "backend_continuwuity" = { + "backend_conduit" = { servers = { - "[::1]:${toString config.services.matrix-continuwuity.settings.global.port}" = {}; + "[::1]:${toString config.services.matrix-conduit.settings.global.port}" = {}; }; }; }; diff --git a/nixos/server/package-configs/coturn/default.nix b/nixos/server/package-configs/coturn/default.nix index db36913..5bae63e 100644 --- a/nixos/server/package-configs/coturn/default.nix +++ b/nixos/server/package-configs/coturn/default.nix @@ -5,7 +5,7 @@ services.coturn = { enable = true; use-auth-secret = true; - static-auth-secret-file = config.sops.secrets."coturn-auth-secret".path; + static-auth-secret = "cPKWEn4Fo5TAJoE7iX3xeVOaMVE4afeRN1iRGWYfbkWbkaZMxTpnmazHyH6c6yXT"; realm = "turn.gladtherescake.eu"; relay-ips = [ "62.171.160.195" diff --git a/nixos/server/package-configs/default.nix b/nixos/server/package-configs/default.nix index 9c129cb..91ff838 100644 --- a/nixos/server/package-configs/default.nix +++ b/nixos/server/package-configs/default.nix @@ -5,15 +5,14 @@ ./gotosocial ./mail-server ./nextcloud - # ./phanpy + ./phanpy ./postgres ./roundcube ./coturn - # ./dashboard + ./dashboard #./cinny #./firefox-sync ./writefreely ./mollysocket - ./jellyfin ]; } diff --git a/nixos/server/package-configs/jellyfin/default.nix b/nixos/server/package-configs/jellyfin/default.nix index d172e97..cc492d4 100644 --- a/nixos/server/package-configs/jellyfin/default.nix +++ b/nixos/server/package-configs/jellyfin/default.nix @@ -1,4 +1,6 @@ {...}: { + users.users.jellyfin.extraGroups = ["nextcloud" "aria2"]; + services.nginx = { virtualHosts = { "video.gladtherescake.eu" = { @@ -14,7 +16,5 @@ services.jellyfin = { enable = true; - user = "nextcloud"; - group = "nextcloud"; }; } diff --git a/nixos/server/package-configs/mail-server/default.nix b/nixos/server/package-configs/mail-server/default.nix index 58bc60a..eabc625 100644 --- a/nixos/server/package-configs/mail-server/default.nix +++ b/nixos/server/package-configs/mail-server/default.nix @@ -6,7 +6,6 @@ # services.dovecot2.sieve.extensions = ["fileinto"]; mailserver = { - stateVersion = 3; enable = true; enableImap = true; enableSubmission = true; @@ -86,13 +85,9 @@ "no-reply@social.gladtherescake.eu" "no-reply@git.lillianviolet.dev" "ongebonden@gladtherescake.eu" - "teluyep_canoja_52868396@gladtherescake.eu" ]; - x509.useACMEHost = config.mailserver.fqdn; - }; - security.acme.certs.${config.mailserver.fqdn} = { - webroot = "/var/lib/acme/acme-challenge/"; - extraDomainNames = [ + certificateScheme = "acme-nginx"; + certificateDomains = [ "imap.lillianviolet.dev" "mail.lillianviolet.dev" "pop3.lillianviolet.dev" diff --git a/nixos/server/package-configs/nextcloud/default.nix b/nixos/server/package-configs/nextcloud/default.nix index aff2c38..4f588b9 100644 --- a/nixos/server/package-configs/nextcloud/default.nix +++ b/nixos/server/package-configs/nextcloud/default.nix @@ -50,7 +50,7 @@ enable = true; hostName = "nextcloud.gladtherescake.eu"; - package = pkgs.nextcloud32; + package = pkgs.nextcloud30; # Use HTTPS for links https = true; @@ -69,7 +69,6 @@ overwriteprotocol = "https"; default_phone_region = "NL"; maintenance_window_start = 3; - log_type = "file"; }; appstoreEnable = true; extraAppsEnable = true; @@ -102,9 +101,9 @@ # #jwtSecretFile = config.sops.secrets."local.json".path; # }; - # services.rabbitmq = { - # enable = true; - # }; + services.rabbitmq = { + enable = true; + }; systemd.services."sops-nix.service" = { before = [ diff --git a/nixos/server/package-configs/writefreely/default.nix b/nixos/server/package-configs/writefreely/default.nix index aeb9fa2..43dc7bc 100644 --- a/nixos/server/package-configs/writefreely/default.nix +++ b/nixos/server/package-configs/writefreely/default.nix @@ -34,6 +34,6 @@ }; }; systemd.services.writefreely = { - path = [pkgs.libressl]; + path = [pkgs.openssl]; }; } diff --git a/nixos/shared/default.nix b/nixos/shared/default.nix index 76caf99..d0e057a 100644 --- a/nixos/shared/default.nix +++ b/nixos/shared/default.nix @@ -4,18 +4,16 @@ lib, config, pkgs, - pkgs-edge, ... }: { imports = [ ./locale ./packages - ./preservation.nix inputs.home-manager.nixosModules.home-manager #../hosts/${config.networking.hostName}/hardware-configuration.nix ]; sops = { - age.keyFile = "var/secrets/keys.txt"; + age.keyFile = ../../../../../../var/secrets/keys.txt; secrets."lillian-password".neededForUsers = true; defaultSopsFile = ../hosts/${config.networking.hostName}/secrets/sops.yaml; @@ -31,10 +29,11 @@ }; #TODO: remove this when unneeded for freetube nixpkgs.config.permittedInsecurePackages = [ + "python3.12-youtube-dl-2021.12.17" ]; nix = { - package = pkgs-edge.lix; + package = pkgs.lix; gc = { automatic = true; dates = "weekly"; @@ -68,52 +67,28 @@ ]; }; }; - - #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; }; - # 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 = { - zsh = { - enable = true; - }; - - gnupg.agent = { - enable = true; - enableBrowserSocket = true; - }; - chromium = { - enable = true; - #Bet these options get renamed and put under a SearchProvider subheader... - defaultSearchProviderSearchURL = "https://noai.duckduckgo.com/?t=ftab&q={searchTerms}"; - defaultSearchProviderEnabled = true; - extensions = ["cjpalhdlnbpafiamejdnhcphjbkeiagm" "gcbommkclmclpchllfjekcdonpmejbdp"]; - }; + programs.gnupg.agent = { + enable = true; + enableBrowserSocket = true; }; stylix = { - # targets.qt.platform = lib.mkForce "kde"; enable = true; - # targets.qt.platform = "kde6"; autoEnable = true; base16Scheme = { scheme = "Catppuccin Macchiato"; @@ -138,7 +113,7 @@ image = ./background.jpg; cursor.package = pkgs.catppuccin-cursors.macchiatoMauve; cursor.name = "catppuccin-macchiato-mauve-cursors"; - cursor.size = 24; + cursor.size = 16; homeManagerIntegration.followSystem = true; fonts = { serif = { @@ -147,8 +122,8 @@ }; monospace = { - package = pkgs.dejavu_fonts; - name = "DejaVu Sans Mono"; + package = pkgs.atkinson-monolegible; + name = "Atkinson Monolegible"; }; sansSerif = { @@ -163,60 +138,19 @@ }; }; - services.scx.enable = - if (pkgs.stdenv.hostPlatform.system == "aarch64-linux") - then false - else true; - fonts.packages = [ pkgs.atkinson-hyperlegible pkgs.atkinson-monolegible pkgs.noto-fonts-emoji-blob-bin pkgs.noto-fonts pkgs.nerd-fonts.fira-mono - pkgs.font-awesome - pkgs.liberation_ttf ]; - fonts.fontconfig = { - useEmbeddedBitmaps = true; - # defaultFonts = { - # emoji = ["Blobmoji"]; - # monospace = ["Atkinson Monolegible"]; - # sansSerif = ["Atkinson Hyperlegible"]; - # }; - }; - systemd = { - services."shutdown-zellij-zsh" = { - path = with pkgs; [killall]; - enable = true; - unitConfig = { - Before = "shutdown.target"; - }; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${pkgs.killall}/bin/killall -SIGKILL zellij zsh"; - RemainAfterExit = "yes"; - }; - }; - - services."start-vpn-wg" = - if config.services.vpn-ip.enable - then { - path = with pkgs; [systemd]; - enable = true; - unitConfig = { - Wants = "network-online.target"; - After = "network-online.target"; - }; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${pkgs.systemd}/bin/systemctl start wg-quick-wg0.service"; - RemainAfterExit = "yes"; - }; - } - else {}; - }; + # fonts.fontconfig.defaultFonts = { + # emoji = ["Blobmoji"]; + # monospace = ["Atkinson Monolegible"]; + # sansSerif = ["Atkinson Hyperlegible"]; + # }; networking = if config.services.vpn-ip.enable @@ -225,7 +159,7 @@ wg-quick.interfaces = { wg0 = { - autostart = false; + 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; @@ -243,15 +177,8 @@ } else {}; - environment = { - systemPackages = with pkgs; [ - nix-output-monitor - usbutils - ]; - - # Enable completion of system packages by zsh - pathsToLink = ["/share/zsh"]; - }; + # Enable completion of system packages by zsh + environment.pathsToLink = ["/share/zsh"]; home-manager = { backupFileExtension = "backup"; @@ -266,22 +193,20 @@ }; users = { - users = { - lillian = { - isNormalUser = true; - extraGroups = ["sudo" "networkmanager" "wheel" "vboxsf" "docker"]; - shell = pkgs.zsh; - hashedPasswordFile = config.sops.secrets."lillian-password".path; - openssh.authorizedKeys.keys = [ - "${builtins.readFile ../../home-manager/hosts/GLaDOS/id_ed25519.pub}" - "${builtins.readFile ../../home-manager/hosts/EDI/id_ed25519.pub}" - ]; - }; - - root = { - hashedPassword = "*"; - }; + 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/packages/default.nix b/nixos/shared/packages/default.nix index 83fb9ad..fae8d58 100644 --- a/nixos/shared/packages/default.nix +++ b/nixos/shared/packages/default.nix @@ -22,13 +22,12 @@ install-nix-no-inhibit update upgrade - simple-completion-language-server + # simple-completion-language-server # System tools age alejandra e2fsprogs - # uutils-findutils git git-filter-repo pre-commit @@ -43,11 +42,6 @@ wget zsh tldr - nmap - knot-dns - libressl - nettools - starship # System libraries ]) diff --git a/nixos/shared/preservation.nix b/nixos/shared/preservation.nix deleted file mode 100644 index 56f4a87..0000000 --- a/nixos/shared/preservation.nix +++ /dev/null @@ -1,192 +0,0 @@ -{...}: { - preservation = { - # the module doesn't do anything unless it is enabled - enable = true; - - preserveAt."/persistent" = { - # preserve system directories - directories = [ - #Shared - "/var/lib/sbctl" - "/var/lib/bluetooth" - "/var/lib/fprint" - "/var/lib/fwupd" - "/var/lib/libvirt" - "/var/lib/tpm2-tss" - "/var/lib/tpm2-udev-trigger" - "/var/lib/power-profiles-daemon" - "/var/lib/systemd/coredump" - "/var/lib/systemd/rfkill" - "/var/lib/systemd/timers" - "/var/log" - #Desktop - "/var/lib/decky-loader" - "/var/lib/flatpak" - #Server - "/var/lib/continuwuity" - "/var/lib/dhcpcd" - "/var/lib/docker" - "/var/lib/dovecot" - "/var/lib/forgejo" - "/var/lib/gotosocial" - "/var/lib/grafana" - "/var/lib/jellyfin" - "/var/lib/media" - "/var/lib/mollysocket" - "/var/lib/private" - "/var/lib/mysql" - "/var/lib/nextcloud" - "/var/lib/onlyoffice" - "/var/lib/postfix" - "/var/lib/postgresql" - "/var/lib/prometheus2" - "/var/lib/rabbitmq" - "/var/lib/redis-nextcloud" - "/var/lib/redis-rspamd" - "/var/lib/secrets" - "/var/lib/writefreely" - "/var/db" - "/var/dkim" - "/var/secrets" - "/var/sieve" - "/var/vmail" - "/var/mysql" - { - directory = "/var/lib/nixos"; - inInitrd = true; - } - ]; - - # preserve system files - files = [ - { - file = "/etc/machine-id"; - inInitrd = true; - how = "symlink"; - } - { - file = "/etc/ssh/ssh_host_rsa_key"; - how = "symlink"; - configureParent = true; - } - { - file = "/etc/ssh/ssh_host_ed25519_key"; - how = "symlink"; - configureParent = true; - } - "/var/lib/usbguard/rules.conf" - - # creates a symlink on the volatile root - # creates an empty directory on the persistent volume, i.e. /persistent/var/lib/systemd - # does not create an empty file at the symlink's target (would require `createLinkTarget = true`) - { - file = "/var/lib/systemd/random-seed"; - how = "symlink"; - inInitrd = true; - configureParent = true; - } - "/var/lib/systemd/tpm2-srk-public-key.pem" - "/var/lib/systemd/tpm2-srk-public-key.tpm2b_public" - ]; - - # preserve user-specific files, implies ownership - users = { - lillian = { - commonMountOptions = [ - "x-gvfs-hide" - ]; - directories = [ - { - directory = ".ssh"; - mode = "0700"; - } - #Desktop - ".local/state/wireplumber" - ".local/share/direnv" - ".local/state/nix" - ".local/state/comma" - ".local/state/home-manager" - ".local/share/PrismLauncher" - ".local/share/qBittorrent" - ".local/share/kwalletd" - ".local/share/kwin" #TODO: add the window script via nix instead of saving it imperatively and keeping it - ".local/share/lutris" - ".local/share/Nextcloud" - ".local/share/Steam" - ".local/share/zoxide" - ".local/share/flatpak" - ".local/share/applications" - ".local/share/firefoxpwa/" - ".local/share/com.nonpolynomial.intiface_central" - ".mozilla" - ".steam" - ".zsh" - ".pki" - ".tldrc" - ".thunderbird" - "Code" - "Writing" - ".config/kdeconnect" - ".config/Nextcloud" - ".config/noisetorch" - ".config/qBittorrent" - ".config/r2modman" - ".config/r2modmanPlus-local" - ".config/Ryujinx" - ".config/Signal" - ".config/sops" - ".config/vesktop" - ".config/kde.org" - ]; - #Shared - files = [ - ".z" - ".zsh_history" - ]; - }; - root = { - # specify user home when it is not `/home/${user}` - home = "/root"; - directories = [ - { - directory = ".ssh"; - mode = "0700"; - } - ]; - }; - }; - }; - }; - systemd.services.systemd-machine-id-commit = { - unitConfig.ConditionPathIsMountPoint = [ - "" - "/persistent/etc/machine-id" - ]; - serviceConfig.ExecStart = [ - "" - "systemd-machine-id-setup --commit --root /persistent" - ]; - }; - systemd.tmpfiles.settings.preservation = { - "/home/lillian/.config".d = { - user = "lillian"; - group = "users"; - mode = "0755"; - }; - "/home/lillian/.local".d = { - user = "lillian"; - group = "users"; - mode = "0755"; - }; - "/home/lillian/.local/share".d = { - user = "lillian"; - group = "users"; - mode = "0755"; - }; - "/home/lillian/.local/state".d = { - user = "lillian"; - group = "users"; - mode = "0755"; - }; - }; -} diff --git a/overlays/flake.nix b/overlays/flake.nix deleted file mode 100644 index cfa353a..0000000 --- a/overlays/flake.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ - description = "An overlay to remove fascist artifacts"; - - inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; - - outputs = { self, nixpkgs }: { - overlays.antifa = final: prev: - let - patchSystemd = d: d.overrideAttrs (old: { - # https://github.com/systemd/systemd/pull/39285 - patches = old.patches ++ [ ./systemd-detect-fash.patch ]; - }); - disableAuthor = author: throw '' - This package was disabled by nixpkgs-antifa because: it is authored by ${author} - ''; - disableCorp = corp: throw '' - This package was disabled by nixpkgs-antifa because: it exclusively integrates with offerings from ${corp} - ''; - # NB: not listing out culture names in code -- yet - disablePropaganda = throw '' - This package was disabled by nixpkgs-antifa because: it is ethnonationalist propaganda - ''; - in rec { - # https://lix.systems/add-to-config/#flake-based-configurations - inherit (prev.lixPackageSets.stable) lix nixpkgs-review nix-eval-jobs nix-fast-build colmena; - nix = lix; - - certmgr = disableAuthor "Cloudflare"; - cf-terraforming = disableAuthor "Cloudflare"; - cf-vault = disableCorp "Cloudflare"; - cfdyndns = disableCorp "Cloudflare"; - cfssl = disableAuthor "Cloudflare"; - cloudflare-cli = disableCorp "Cloudflare"; - cloudflare-dynamic-dns = disableCorp "Cloudflare"; - cloudflare-dyndns = disableCorp "Cloudflare"; - cloudflare-utils = disableCorp "Cloudflare"; - cloudflare-warp = disableAuthor "Cloudflare"; - cloudflared = disableAuthor "Cloudflare"; - flarectl = disableAuthor "Cloudflare"; - gortr = disableAuthor "Cloudflare"; - prometheus-cloudflare-exporter = disableCorp "Cloudflare"; - proski = disableCorp "Cloudflare"; - wgcf = disableCorp "Cloudflare"; - worker-build = disableAuthor "Cloudflare"; - wrangler = disableAuthor "Cloudflare"; - wrangler_1 = disableAuthor "Cloudflare"; - gnomeExtensions.warp-toggle = disableCorp "Cloudflare"; - octodns-providers.cloudflare = disableCorp "Cloudflare"; - pythonPackages.certbot-dns-cloudflare = disableCorp "Cloudflare"; - pythonPackages.cloudflare = disableAuthor "Cloudflare"; - pythonPackages.pycfdns = disableCorp "Cloudflare"; - terraform-providers.cloudflare = disableCorp "Cloudflare"; - - brave = disableAuthor "Brendan Eich"; - - ladybird = disableAuthor "Andreas Kling"; - - palemoon = disableAuthor "Moonchild Straver"; - - _9base = disableAuthor "suckless"; - dmenu = disableAuthor "suckless"; - dwm = disableAuthor "suckless"; - farbfeld = disableAuthor "suckless"; - ii = disableAuthor "suckless"; - libgrapheme = disableAuthor "suckless"; - quark = disableAuthor "suckless"; - sent = disableAuthor "suckless"; - sic = disableAuthor "suckless"; - sinit = disableAuthor "suckless"; - slock = disableAuthor "suckless"; - slstatus = disableAuthor "suckless"; - sselp = disableAuthor "suckless"; - st = disableAuthor "suckless"; - surf = disableAuthor "suckless"; - svkbd = disableAuthor "suckless"; - tabbed = disableAuthor "suckless"; - wmname = disableAuthor "suckless"; - xssstate = disableAuthor "suckless"; - - blink = disableAuthor "Justine Tunney"; - cosmopolitan = disableAuthor "Justine Tunney"; - jart-jsoncpp = disableAuthor "Justine Tunney"; - pythonPackages.fabulous = disableAuthor "Justine Tunney"; - - hyprland = disableAuthor "Vaxry"; - - tailwindcss = disableAuthor "Adam Wathan"; - - urbit = disableAuthor "Curtis Yarvin"; - - bibletime = disablePropaganda; - biblesync = disablePropaganda; - grb = disablePropaganda; - kjv = disablePropaganda; - lukesmithxyz-bible-kjv = disablePropaganda; - sword = disablePropaganda; - vul = disablePropaganda; - xiphos = disablePropaganda; - - gnomeExtensions.quran-player = disablePropaganda; - - emacsPackages.holy-books = disablePropaganda; - - systemd = patchSystemd prev.systemd; - }; - nixosModules.antifa = { lib, pkgs, ... }: { - nix.package = lib.mkForce pkgs.lix; - }; - }; -} diff --git a/overlays/systemd-detect-fash.patch b/overlays/systemd-detect-fash.patch deleted file mode 100644 index a7c8cd6..0000000 --- a/overlays/systemd-detect-fash.patch +++ /dev/null @@ -1,554 +0,0 @@ -From f09346dd2ceb30d0c7ea03bbd0099967e7e54be0 Mon Sep 17 00:00:00 2001 -From: soscho2143 -Date: Sun, 12 Oct 2025 13:52:36 -0400 -Subject: [PATCH 1/2] detect-fash: implement systemd-detect-fash - ---- - man/systemd-detect-fash.xml | 131 +++++++++ - shell-completion/bash/systemd-detect-fash | 40 +++ - src/detect-fash/detect-fash.c | 312 ++++++++++++++++++++++ - src/detect-fash/meson.build | 9 + - 4 files changed, 492 insertions(+) - create mode 100644 man/systemd-detect-fash.xml - create mode 100644 shell-completion/bash/systemd-detect-fash - create mode 100644 src/detect-fash/detect-fash.c - create mode 100644 src/detect-fash/meson.build - -diff --git a/man/systemd-detect-fash.xml b/man/systemd-detect-fash.xml -new file mode 100644 -index 0000000000000..aaebf4e48650b ---- /dev/null -+++ b/man/systemd-detect-fash.xml -@@ -0,0 +1,131 @@ -+ -+ -+ -+ -+ -+ -+ -+ systemd-detect-fash -+ systemd -+ -+ -+ -+ systemd-detect-fash -+ 1 -+ -+ -+ -+ systemd-detect-fash -+ Detect execution in a fascist environment -+ -+ -+ -+ -+ systemd-detect-fash -+ OPTIONS -+ -+ -+ -+ -+ Description -+ -+ systemd-detect-fash detects execution in -+ a fascist environment. It identifies the fascist -+ technology and can distinguish full machine fascism from -+ installed fashware. systemd-detect-fash -+ exits with a return value of 0 (success) if a fascism -+ technology is detected, and non-zero (error) otherwise. -+ -+ When executed without will print a -+ short identifier for the detected fascist technology. The -+ following technologies are currently identified: -+ -+ -+ Known fascist technologies -+ -+ -+ -+ -+ -+ -+ Type -+ ID -+ Product -+ -+ -+ -+ -+ omarchy -+ Omarchy linux distro. Detected by checking os-release. -+ -+ -+ -+ ladybird -+ Ladybird browser. Detected by checking for "ladybird" binary in path. -+ -+ -+ -+ hyprland -+ Hyperland window manager. Detected by checking the existence of hyprland config files on disk. -+ -+ -+ -+ dhh -+ Checks for DHH's public key on disk. -+ -+ -+ -+
-+
-+ -+ -+ Options -+ -+ The following options are understood: -+ -+ -+ -+ -+ -+ -+ Only detects if os-release is Omarchy. -+ -+ -+ -+ -+ -+ -+ Only detects Hyprland. -+ -+ -+ -+ -+ -+ -+ Only detects Ladybird. -+ -+ -+ -+ -+ -+ -+ Only detects DHH. -+ -+ -+ -+ -+ -+ -+ Suppress output of the fascist technology identifier. -+ -+ -+ -+ -+ Exit status -+ -+ If a fascist technology is detected, 0 is returned, a -+ non-zero code otherwise. -+ -+
-diff --git a/shell-completion/bash/systemd-detect-fash b/shell-completion/bash/systemd-detect-fash -new file mode 100644 -index 0000000000000..dc2a7f5f4774a ---- /dev/null -+++ b/shell-completion/bash/systemd-detect-fash -@@ -0,0 +1,40 @@ -+# shellcheck shell=bash -+# systemd-detect-fash(1) completion -*- shell-script -*- -+# SPDX-License-Identifier: LGPL-2.1-or-later -+# -+# This file is part of systemd. -+# -+# systemd is free software; you can redistribute it and/or modify it -+# under the terms of the GNU Lesser General Public License as published by -+# the Free Software Foundation; either version 2.1 of the License, or -+# (at your option) any later version. -+# -+# systemd is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# General Public License for more details. -+# -+# You should have received a copy of the GNU Lesser General Public License -+# along with systemd; If not, see . -+ -+__contains_word() { -+ local w word=$1; shift -+ for w in "$@"; do -+ [[ $w = "$word" ]] && return -+ done -+} -+ -+_systemd_detect_fash() { -+ local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} words cword -+ local i verb comps -+ -+ local -A OPTS=( -+ [STANDALONE]='-h --help --version -q --quiet -o --omarchy -l --ladybird -y --hyprland -d --dhh' -+ ) -+ -+ _init_completion || return -+ -+ COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) -+} -+ -+complete -F _systemd_detect_fash systemd-detect-fash -diff --git a/src/detect-fash/detect-fash.c b/src/detect-fash/detect-fash.c -new file mode 100644 -index 0000000000000..311547ec6a619 ---- /dev/null -+++ b/src/detect-fash/detect-fash.c -@@ -0,0 +1,312 @@ -+/* SPDX-License-Identifier: LGPL-2.1-or-later */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+#include "alloc-util.h" -+#include "build.h" -+#include "log.h" -+#include "main-func.h" -+#include "pretty-print.h" -+#include "string-table.h" -+ -+static bool arg_quiet = false; -+static enum { -+ ANY_FASCISM, -+ ONLY_LADYBIRD, -+ ONLY_OMARCHY, -+ ONLY_HYPRLAND, -+ ONLY_DHH -+} arg_mode = ANY_FASCISM; -+ -+/* detects if os-release is omarchy */ -+static int detect_omarchy(void) { -+ const char *term = "omarchy"; -+ const int len = 256; -+ -+ /* if we cannot access os-release we cannot check */ -+ if (access("/etc/os-release", F_OK) != 0) -+ return -1; -+ -+ FILE *osfile = fopen("/etc/os-release", "r"); -+ char os[len]; -+ fgets(os, len, osfile); -+ if (strcasestr(os, term) != NULL) -+ return 1; -+ -+ return 0; -+} -+ -+/* -+ detects if the LadyBird browser -+ has been built on this machine -+ or if the binary exists in $PATH -+*/ -+static unsigned detect_ladybird(void) { -+ -+ /* name of the ladybird binary */ -+ const char* ladybird_bin = "/ladybird"; -+ -+ /* check if build variable is available */ -+ char* LADYBIRD_SOURCE_DIR = getenv("LADYBIRD_SOURCE_DIR"); -+ if (LADYBIRD_SOURCE_DIR != NULL) -+ return 1; -+ -+ char* PATH = getenv("PATH"); -+ if (PATH == NULL) -+ return 0; -+ -+ /* this value will get mutated so we need to duplicate it */ -+ char* path = strdup(PATH); -+ /* loop through PATH until we find a file named "ladybird" */ -+ char* path_iter = strtok(path, ":"); -+ char* abs_path = malloc(256); -+ while (path_iter != NULL) { -+ strncat(abs_path, path_iter, 128); -+ strncat(abs_path, ladybird_bin, 128); -+ /* if we do NOT find the binary at current path, keep going */ -+ if (access(abs_path, F_OK) != 0){ -+ path_iter = strtok(NULL, ":"); -+ abs_path[0] = 0; -+ continue; -+ } -+ free(abs_path); -+ free(path); -+ return 1; -+ } -+ free(abs_path); -+ free(path); -+ return 0; -+} -+ -+/* detects if hyprland is installed */ -+static unsigned detect_hyprland(void) { -+ const char* hyprland_config = "/hypr/hyprland.conf"; -+ const char* XDG_CONFIG_HOME = getenv("XDG_CONFIG_HOME"); -+ const char* HOME = getenv("HOME"); -+ int maxlen = 128; -+ -+ char *hyprland_abs_path = malloc(maxlen); -+ -+ if (XDG_CONFIG_HOME != NULL) { -+ strncat(hyprland_abs_path, XDG_CONFIG_HOME, maxlen - strlen(hyprland_config)); -+ } else if (HOME != NULL) { -+ strncat(hyprland_abs_path, HOME, maxlen - strlen(hyprland_config)); -+ strcat(hyprland_abs_path, "/.config"); -+ } else { -+ return 0; -+ } -+ strcat(hyprland_abs_path, hyprland_config); -+ if (access(hyprland_abs_path, F_OK) == 0){ -+ free(hyprland_abs_path); -+ return 1; -+ } -+ free(hyprland_abs_path); -+ return 0; -+} -+ -+/* detects if this is dhh's computer using his ssh pubkey */ -+static int detect_dhh(void) { -+ /* fingerprint of dhh's ssh public key */ -+ const char *dhh_fingerprint = "SHA256:YCKX7xo5Hkihy/NVH5ang8Oty9q8Vvqu4sxI7EbDxPg"; -+ /* path to ssh pubkey */ -+ const char *ssh_pubkey = "/.ssh/id_ed25519.pub"; -+ /* command to generate fingerprint */ -+ const char *ssh_fingerpint_cmd = "ssh-keygen -E sha256 -lf "; -+ -+ /* get the home directory */ -+ char *HOME = getenv("HOME"); -+ -+ if (HOME == NULL) -+ return -1; -+ /* check if we have read access to the public key on disk */ -+ char *ssh_pubkey_abs_path = (char *)malloc(strlen(HOME) + strlen(ssh_pubkey) + 1); -+ ssh_pubkey_abs_path[0] = 0; -+ strcat(ssh_pubkey_abs_path, HOME); -+ strcat(ssh_pubkey_abs_path, ssh_pubkey); -+ if (access(ssh_pubkey_abs_path, F_OK) != 0) -+ return 0; -+ -+ /* generate a fingerprint of it */ -+ char *get_fingerprint_cmd = (char *)malloc(strlen(ssh_fingerpint_cmd) + strlen(ssh_pubkey_abs_path) + 1); -+ get_fingerprint_cmd[0] = 0; -+ strcat(get_fingerprint_cmd, ssh_fingerpint_cmd); -+ strcat(get_fingerprint_cmd, ssh_pubkey_abs_path); -+ -+ char fingerprint[70]; -+ FILE *fingerprint_cmd_output = popen(get_fingerprint_cmd, "r"); -+ -+ if (fingerprint_cmd_output == NULL) -+ return -1; -+ fgets(fingerprint, 70, fingerprint_cmd_output); -+ -+ /* free memory */ -+ pclose(fingerprint_cmd_output); -+ free(ssh_pubkey_abs_path); -+ free(get_fingerprint_cmd); -+ -+ /* comare it to DHH's fingerprint */ -+ if (strstr(fingerprint, dhh_fingerprint) != NULL) -+ return 1; -+ return 0; -+} -+ -+static int help(void) { -+ _cleanup_free_ char *link = NULL; -+ int r; -+ -+ r = terminal_urlify_man("systemd-detect-fash", "1", &link); -+ if (r < 0) -+ return log_oom(); -+ -+ printf("%s [OPTIONS...]\n\n" -+ "Detect execution in a fascist environment.\n\n" -+ " -h --help Show this help\n" -+ " --version Show package version\n" -+ " -q --quiet Quiet mode\n" -+ " -o --omarchy Only detect omarchy\n" -+ " -l --ladybird Only detect ladybird\n" -+ " -y --hyprland Only detect hyprland\n" -+ " -d --dhh Only detect dhh\n" -+ "\nSee the %s for details.\n", -+ program_invocation_short_name, -+ link); -+ -+ return 0; -+} -+ -+static int parse_argv(int argc, char *argv[]) { -+ -+ enum { -+ ARG_VERSION = 0x100, -+ ARG_OMARCHY, -+ ARG_LADYBIRD, -+ ARG_HYPRLAND, -+ ARG_DHH -+ }; -+ -+ static const struct option options[] = { -+ { "help", no_argument, NULL, 'h' }, -+ { "version", no_argument, NULL, ARG_VERSION }, -+ { "omarchy", no_argument, NULL, 'o' }, -+ { "ladybird", no_argument, NULL, 'l' }, -+ { "hyprland", no_argument, NULL, 'y' }, -+ { "dhh", no_argument, NULL, 'd' }, -+ {} -+ }; -+ -+ int c; -+ -+ assert(argc >= 0); -+ assert(argv); -+ -+ while ((c = getopt_long(argc, argv, "hqolyd", options, NULL)) >= 0) -+ -+ switch (c) { -+ -+ case 'h': -+ return help(); -+ -+ case ARG_VERSION: -+ return version(); -+ -+ case 'q': -+ arg_quiet = true; -+ break; -+ -+ case 'l': -+ arg_mode = ONLY_LADYBIRD; -+ break; -+ -+ case 'o': -+ arg_mode = ONLY_OMARCHY; -+ break; -+ -+ case 'y': -+ arg_mode = ONLY_HYPRLAND; -+ break; -+ -+ case 'd': -+ arg_mode = ONLY_DHH; -+ break; -+ -+ case '?': -+ return -EINVAL; -+ -+ default: -+ assert_not_reached(); -+ } -+ return 1; -+} -+ -+static int run(int argc, char *argv[]) { -+ int dhh = 0; -+ int hyprland = 0; -+ int ladybird = 0; -+ int omarchy = 0; -+ int fascism = 0; -+ int r; -+ -+ /* This is mostly intended to be used for scripts which want -+ * to detect whether we are being run in a fascist -+ * environment or not */ -+ -+ log_setup(); -+ -+ r = parse_argv(argc, argv); -+ if (r <= 0) -+ return r; -+ -+ switch (arg_mode) { -+ case ONLY_OMARCHY: -+ omarchy = detect_omarchy(); -+ fascism = omarchy; -+ if (omarchy < 0) -+ return log_error_errno(fascism, "Failed to check for omarchy: %m"); -+ break; -+ -+ case ONLY_LADYBIRD: -+ ladybird = detect_ladybird(); -+ fascism = ladybird; -+ if (ladybird < 0) -+ return log_error_errno(fascism, "Failed to check for ladybird: %m"); -+ break; -+ -+ case ONLY_HYPRLAND: -+ hyprland = detect_hyprland(); -+ fascism = hyprland; -+ if (hyprland < 0) -+ return log_error_errno(fascism, "Failed to check for hyprland: %m"); -+ break; -+ -+ case ONLY_DHH: -+ dhh = detect_dhh(); -+ fascism = dhh; -+ if (dhh < 0) -+ return log_error_errno(fascism, "Failed to check for dhh: %m"); -+ break; -+ -+ case ANY_FASCISM: -+ default: -+ ladybird = detect_ladybird(); -+ omarchy = detect_omarchy(); -+ hyprland = detect_hyprland(); -+ dhh = detect_dhh(); -+ fascism = (ladybird | omarchy | hyprland | dhh); -+ if (fascism < 0) -+ return log_error_errno(fascism, "Failed to check for fascism: %m"); -+ } -+ -+ if (!arg_quiet) { -+ if (ladybird) puts("ladybird"); -+ if (omarchy) puts("omarchy"); -+ if (dhh) puts("dhh"); -+ if (hyprland) puts("hyprland"); -+ } -+ return fascism; -+} -+ -+DEFINE_MAIN_FUNCTION_WITH_POSITIVE_FAILURE(run); -diff --git a/src/detect-fash/meson.build b/src/detect-fash/meson.build -new file mode 100644 -index 0000000000000..f4cca34117e7b ---- /dev/null -+++ b/src/detect-fash/meson.build -@@ -0,0 +1,9 @@ -+# SPDX-License-Identifier: LGPL-2.1-or-later -+ -+executables += [ -+ executable_template + { -+ 'name' : 'systemd-detect-fash', -+ 'public' : true, -+ 'sources' : files('detect-fash.c'), -+ }, -+] - -From 825072a331cb6d7464eb4479c4998ab0d020e32f Mon Sep 17 00:00:00 2001 -From: soscho2143 -Date: Sun, 12 Oct 2025 14:18:49 -0400 -Subject: [PATCH 2/2] detect-fash: added to meson.build - ---- - meson.build | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/meson.build b/meson.build -index c67e7b6c30de4..76c625d22080d 100644 ---- a/meson.build -+++ b/meson.build -@@ -2353,6 +2353,7 @@ subdir('src/cryptenroll') - subdir('src/cryptsetup') - subdir('src/debug-generator') - subdir('src/delta') -+subdir('src/detect-fash') - subdir('src/detect-virt') - subdir('src/dissect') - subdir('src/environment-d-generator') diff --git a/pkgs/altsendme/default.nix b/pkgs/altsendme/default.nix deleted file mode 100644 index e69de29..0000000 diff --git a/pkgs/default.nix b/pkgs/default.nix index 66e28aa..464322b 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -3,7 +3,7 @@ pkgs: { dvd = pkgs.callPackage ./dvd {}; dvt = pkgs.callPackage ./dvt {}; - # servo = pkgs.callPackage ./servo {}; + 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 {}; @@ -14,6 +14,4 @@ pkgs: { phanpy = pkgs.callPackage ./phanpy {}; auto-mount = pkgs.callPackage ./auto-mount {}; simple-completion-language-server = pkgs.callPackage ./simple-completion-language-server {}; - freetube-0236 = pkgs.callPackage ./freetube-0.23.6 {}; - ttf-ms-win10 = pkgs.callPackage ./ttf-ms-win10 {}; } diff --git a/pkgs/freetube-0.23.6/default.nix b/pkgs/freetube-0.23.6/default.nix deleted file mode 100644 index 8391130..0000000 --- a/pkgs/freetube-0.23.6/default.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ - lib, - stdenvNoCC, - fetchFromGitHub, - fetchYarnDeps, - replaceVars, - makeDesktopItem, - - nodejs, - yarnConfigHook, - yarnBuildHook, - makeShellWrapper, - copyDesktopItems, - electron, - - nixosTests, -}: -let - description = "Open Source YouTube app for privacy"; -in -stdenvNoCC.mkDerivation (finalAttrs: { - pname = "freetube"; - version = "0.23.6"; - - src = fetchFromGitHub { - owner = "FreeTubeApp"; - repo = "FreeTube"; - tag = "v${finalAttrs.version}-beta"; - hash = "sha256-Z1L45RHlmylfqKBY37PC5TQ3ubOgH0AHFGM7VkmtkZ0="; - }; - - # Darwin requires writable Electron dist - postUnpack = - if stdenvNoCC.hostPlatform.isDarwin then - '' - cp -r ${electron.dist} electron-dist - chmod -R u+w electron-dist - '' - else - '' - ln -s ${electron.dist} electron-dist - ''; - - patches = [ - (replaceVars ./patch-build-script.patch { - electron-version = electron.version; - }) - ]; - - yarnOfflineCache = fetchYarnDeps { - yarnLock = "${finalAttrs.src}/yarn.lock"; - hash = "sha256-ia5wLRt3Hmo4/dsB1/rhGWGJ7LMnVR9ju9lSlQZDTTg="; - }; - - nativeBuildInputs = [ - nodejs - yarnConfigHook - yarnBuildHook - makeShellWrapper - copyDesktopItems - ]; - - installPhase = '' - runHook preInstall - '' - + lib.optionalString stdenvNoCC.hostPlatform.isLinux '' - mkdir -p $out/share/freetube - cp -r build/*-unpacked/{locales,resources{,.pak}} -t $out/share/freetube - - makeWrapper ${lib.getExe electron} $out/bin/freetube \ - --add-flags "$out/share/freetube/resources/app.asar" \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" - - install -D _icons/icon.svg $out/share/icons/hicolor/scalable/apps/freetube.svg - '' - + lib.optionalString stdenvNoCC.hostPlatform.isDarwin '' - mkdir -p $out/Applications - cp -r build/mac*/FreeTube.app $out/Applications - ln -s "$out/Applications/FreeTube.app/Contents/MacOS/FreeTube" $out/bin/freetube - '' - + '' - runHook postInstall - ''; - - desktopItems = [ - (makeDesktopItem { - name = "freetube"; - desktopName = "FreeTube"; - comment = description; - exec = "freetube %U"; - terminal = false; - type = "Application"; - icon = "freetube"; - startupWMClass = "FreeTube"; - mimeTypes = [ "x-scheme-handler/freetube" ]; - categories = [ "Network" ]; - }) - ]; - - passthru.tests = nixosTests.freetube; - - meta = { - inherit description; - homepage = "https://freetubeapp.io/"; - license = lib.licenses.agpl3Only; - maintainers = with lib.maintainers; [ - ryneeverett - pentane - ryand56 - sigmasquadron - ddogfoodd - ]; - badPlatforms = [ - # output app is called "Electron.app" while derivation expects "FreeTube.app" - #see: https://github.com/NixOS/nixpkgs/pull/384596#issuecomment-2677141349 - lib.systems.inspect.patterns.isDarwin - ]; - inherit (electron.meta) platforms; - mainProgram = "freetube"; - }; -}) diff --git a/pkgs/freetube-0.23.6/patch-build-script.patch b/pkgs/freetube-0.23.6/patch-build-script.patch deleted file mode 100644 index c543391..0000000 --- a/pkgs/freetube-0.23.6/patch-build-script.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/_scripts/ebuilder.config.js b/_scripts/ebuilder.config.js -index 5b79d961..9f5945d2 100644 ---- a/_scripts/ebuilder.config.js -+++ b/_scripts/ebuilder.config.js -@@ -1,6 +1,8 @@ - const { name, productName } = require('../package.json') - - const config = { -+ electronVersion: "@electron-version@", -+ electronDist: "electron-dist", - appId: `io.freetubeapp.${name}`, - copyright: 'Copyleft © 2020-2024 freetubeapp@protonmail.com', - // asar: false, diff --git a/pkgs/hytale/default.nix b/pkgs/hytale/default.nix deleted file mode 100644 index 2c549e2..0000000 --- a/pkgs/hytale/default.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ - lib, - stdenv, - fetchzip, - autoPatchelfHook, - makeWrapper, - gtk3, - nss, - libsecret, - libsoup_3, - gdk-pixbuf, - glib, - webkitgtk_4_1, - xdg-utils, -}: -stdenv.mkDerivation (finalAttrs: { - pname = "hytale-launcher-bin"; - version = "2026.01.11.b022ef5"; - - src = fetchzip { - url = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-2026.01.11-b022ef5.zip"; - hash = "sha256-bJQwGSj7B1szXv1e7RN2VQdriSbGe+En1EQONIeLQ84="; - stripRoot = false; - }; - - nativeBuildInputs = [ - autoPatchelfHook - makeWrapper - ]; - - buildInputs = [ - gtk3 - nss - libsecret - libsoup_3 - gdk-pixbuf - glib - webkitgtk_4_1 - ]; - - dontStrip = true; - - installPhase = '' - runHook preInstall - mkdir -p "$out/lib/${finalAttrs.pname}" "$out/bin" "$out/share/applications" - install -Dm755 "hytale-launcher" "$out/lib/${finalAttrs.pname}/hytale-launcher" - makeWrapper "$out/lib/${finalAttrs.pname}/hytale-launcher" "$out/bin/hytale-launcher" \ - --prefix PATH : "${lib.makeBinPath [xdg-utils]}" \ - --set __NV_DISABLE_EXPLICIT_SYNC 1 \ - --set WEBKIT_DISABLE_DMABUF_RENDERER 1 \ - --set DESKTOP_STARTUP_ID com.hypixel.HytaleLauncher - cat > "$out/share/applications/com.hypixel.HytaleLauncher.desktop" <<'desktop' - [Desktop Entry] - Type=Application - Name=Hytale Launcher - Exec=hytale-launcher - Terminal=false - Categories=Game; - desktop - runHook postInstall - ''; - - meta = { - description = "Hytale Launcher (Native Linux)"; - homepage = "https://hytale.com"; - platforms = ["x86_64-linux"]; - license = lib.licenses.unfreeRedistributable; - mainProgram = "hytale-launcher"; - }; -}) diff --git a/pkgs/install-nix-no-inhibit/default.nix b/pkgs/install-nix-no-inhibit/default.nix index cee56c6..622170a 100644 --- a/pkgs/install-nix-no-inhibit/default.nix +++ b/pkgs/install-nix-no-inhibit/default.nix @@ -1,6 +1,5 @@ { git, - nix-output-monitor, gum, writeShellApplication, }: @@ -8,7 +7,7 @@ writeShellApplication { name = "install-nix-no-inhibit"; - runtimeInputs = [git gum nix-output-monitor]; + runtimeInputs = [git gum]; text = '' # An install script for NixOS installation to /tmp @@ -37,8 +36,8 @@ writeShellApplication --mode zap_create_mount \ "./disko/''${dir}/default.nix" echo "NixOS Installing..." - sudo nixos-install --flake .#"''${dir}" --show-trace -v |& nom - sudo nixos-install --flake .#"''${dir}" --show-trace -v |& nom + sudo nixos-install --flake .#"''${dir}" + sudo nixos-install --flake .#"''${dir}" popd > /dev/null echo "Cleaning up repository in '/tmp/install-nix'..." rm -rf ./install-nix diff --git a/pkgs/rebuild-no-inhibit/default.nix b/pkgs/rebuild-no-inhibit/default.nix index 207a086..e4bd280 100644 --- a/pkgs/rebuild-no-inhibit/default.nix +++ b/pkgs/rebuild-no-inhibit/default.nix @@ -1,13 +1,9 @@ -{ - writeShellApplication, - nix-output-monitor, - just, -}: +{writeShellApplication}: writeShellApplication { name = "rebuild-no-inhibit"; - runtimeInputs = [nix-output-monitor just]; + runtimeInputs = []; text = '' # A rebuild script for NixOS @@ -18,11 +14,7 @@ writeShellApplication git clone https://codeberg.org/Lillian-Violet/NixOS-Config.git ./rebuild pushd ./rebuild > /dev/null echo "NixOS Rebuilding..." - if [ "''$HOSTNAME" = shodan ]; then - just boot - else - just build - fi + sudo nixos-rebuild switch --flake .# popd > /dev/null echo "Cleaning up repository in '/tmp/rebuild'..." rm -rf ./rebuild diff --git a/pkgs/simple-completion-language-server/default.nix b/pkgs/simple-completion-language-server/default.nix index 4ab8766..00d16a2 100644 --- a/pkgs/simple-completion-language-server/default.nix +++ b/pkgs/simple-completion-language-server/default.nix @@ -5,16 +5,16 @@ }: rustPlatform.buildRustPackage rec { pname = "simple-completion-language-server"; - version = "6c797949ad5a6e9548b60b5475d1c9977f26c811"; + version = "ff9f90bc96c347f284571bc6310bc31f95508d55"; src = fetchFromGitHub { owner = "estin"; repo = pname; rev = version; - hash = "sha256-cITZdlDB03i7gOYbahV99wZOQ7tisnqdT/N2Z12oLFM="; + hash = "sha256-qybbZXjKzKcc6UXfAjwmkkB+qEUuGQXABRbMj7bNksM="; }; - cargoHash = "sha256-nannF4BKRLCcsS7VznzEHqrhLHYvN4X22t8jud87XEM="; + cargoHash = "sha256-VTz2Fm+PRUPM5+u9D+2TzGGIEQwb1j0Lz0WRaQ5/Yzo="; meta = with lib; { description = "Language server to enable word completion and snippets for Helix editor"; homepage = "https://github.com/estin/simple-completion-language-server"; diff --git a/pkgs/ttf-ms-win10/default.nix b/pkgs/ttf-ms-win10/default.nix deleted file mode 100644 index 17a5407..0000000 --- a/pkgs/ttf-ms-win10/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - stdenvNoCC, - fetchzip, -}: -stdenvNoCC.mkDerivation rec { - pname = "ttf-ms-win10"; - version = "1.0"; - - src = fetchzip { - url = "https://github.com/streetsamurai00mi/ttf-ms-win10/archive/refs/heads/build.zip"; - hash = "sha256-UwkHlrSRaXhfoMlimyXFETV9yq1SbvUXykrhigf+wP8="; - }; - - installPhase = '' - runHook preInstall - - install -Dm644 *.ttf -t $out/share/fonts/truetype - - runHook postInstall - ''; - - meta = with lib; { - homepage = "https://github.com/streetsamurai00mi/ttf-ms-win10"; - description = "Windows 10 ttf Fonts"; - license = licenses.unfree; - maintainers = []; - }; -}