This commit is contained in:
chayleaf 2024-03-19 15:30:38 +07:00
parent 9780a25072
commit bab4e9eba1
Signed by: chayleaf
GPG key ID: 78171AD46227E68E
29 changed files with 1017 additions and 7122 deletions

View file

@ -25,11 +25,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1703252072, "lastModified": 1712785740,
"narHash": "sha256-IY/0CeFhaKMBcNUmGXwsPazeKu2rGqCa4IHXSmHy5u0=", "narHash": "sha256-5r88elsHgFXDdr/NOwK+2oKMfrFqcXV4tQPhVXTLI0E=",
"owner": "chayleaf", "owner": "chayleaf",
"repo": "coop-ofd", "repo": "coop-ofd",
"rev": "c18e676934884181ad8687e069d28db3c7d1cdfb", "rev": "348dbe813090de3c3b694695699439893df8ad62",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -94,11 +94,11 @@
"flake-compat_3": { "flake-compat_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1668681692, "lastModified": 1696426674,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1", "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -112,11 +112,11 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1704982712, "lastModified": 1712014858,
"narHash": "sha256-2Ptt+9h8dczgle2Oo6z5ni5rt/uLMG47UFTR1ry/wgg=", "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "07f6395285469419cf9d078f59b5b49993198c00", "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -127,14 +127,14 @@
}, },
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1681202837, "lastModified": 1705309234,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401", "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -150,11 +150,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1707204789, "lastModified": 1707205587,
"narHash": "sha256-S3QVfyUPa7zzeyk0TAqr9i9FLwnaO/6zPx4DVCNEeqA=", "narHash": "sha256-WzAIbYbflluERLdPC/5epdodjQbR5WiduYS3BjIiGis=",
"owner": "chayleaf", "owner": "chayleaf",
"repo": "home-manager", "repo": "home-manager",
"rev": "8abb90abf382972e8cd2f3c3b3cdc93c1502b067", "rev": "acc7c52f80f1aa33239272d786a6e9ba2ffef9f5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -166,11 +166,11 @@
}, },
"impermanence": { "impermanence": {
"locked": { "locked": {
"lastModified": 1703656108, "lastModified": 1708968331,
"narHash": "sha256-hCSUqdFJKHHbER8Cenf5JRzjMlBjIdwdftGQsO0xoJs=", "narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=",
"owner": "nix-community", "owner": "nix-community",
"repo": "impermanence", "repo": "impermanence",
"rev": "033643a45a4a920660ef91caa391fbffb14da466", "rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -204,11 +204,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1706482802, "lastModified": 1712452624,
"narHash": "sha256-KXwKTfqFkoPpV8QqaVlpmO8w8rD/jHZL2315RL5QQ8w=", "narHash": "sha256-R35K+4krhK5B2fcV6W2HFe/uhXmP8YGTb35uZ+nDAxw=",
"owner": "fufexan", "owner": "fufexan",
"repo": "nix-gaming", "repo": "nix-gaming",
"rev": "8f354ef64cd18898b8980ecf7fe90118808b514b", "rev": "06314bbf8fedd83c7253442994a2f0c81d47988e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -224,11 +224,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1706411424, "lastModified": 1712459390,
"narHash": "sha256-BzziJYucEZvdCE985vjPoo3ztWcmUiSQ1wJ2CoT6jCc=", "narHash": "sha256-e12bNDottaGoBgd0AdH/bQvk854xunlWAdZwr/oHO1c=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "c782f2a4f6fc94311ab5ef31df2f1149a1856181", "rev": "4676d72d872459e1e3a248d049609f110c570e9a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -239,11 +239,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1706182238, "lastModified": 1712760404,
"narHash": "sha256-Ti7CerGydU7xyrP/ow85lHsOpf+XMx98kQnPoQCSi1g=", "narHash": "sha256-4zhaEW1nB+nGbCNMjOggWeY5nXs/H0Y71q0+h+jdxoU=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "f84eaffc35d1a655e84749228cde19922fcf55f1", "rev": "e1c4bac14beb8c409d0534382cf967171706b9d9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -259,20 +259,14 @@
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-23_05": [
"nixpkgs"
],
"nixpkgs-23_11": [
"nixpkgs"
],
"utils": "utils" "utils": "utils"
}, },
"locked": { "locked": {
"lastModified": 1706219574, "lastModified": 1710449465,
"narHash": "sha256-qO+8UErk+bXCq2ybHU4GzXG4Ejk4Tk0rnnTPNyypW4g=", "narHash": "sha256-2orO8nfplp6uQJBFqKkj1iyNMC6TysmwbWwbb4osTag=",
"owner": "simple-nixos-mailserver", "owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver", "repo": "nixos-mailserver",
"rev": "e47f3719f1db3e0961a4358d4cb234a0acaa7baf", "rev": "79c8cfcd5873a85559da6201b116fb38b490d030",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
@ -288,11 +282,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1706386221, "lastModified": 1710972558,
"narHash": "sha256-fMBhmJqm6yihdweMmi+NPV4SFj2WXOQSpAwfKoLGyRE=", "narHash": "sha256-fA72ql4T4/KgSNxZwZJ1EoEHXjmwt7I/OukHC8NVVF0=",
"owner": "chayleaf", "owner": "chayleaf",
"repo": "nixos-router", "repo": "nixos-router",
"rev": "af7d975e755702b649a386c57b44665d56c80d7a", "rev": "061cf097417ed363b1e23d11daa7192e4b5f1994",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -303,15 +297,16 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1706628962, "lastModified": 1712769857,
"narHash": "sha256-BBbgY5OsYMxithcHtoulfAJHTmNxQ41Gr99cHZo4yOM=", "narHash": "sha256-YUyh+yfB15+2gvvvTvWBQbAUrD1x391QF1PRZUSt87k=",
"owner": "chayleaf", "owner": "chayleaf",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8a98311cb973d73718e004461d57635b23f632af", "rev": "058c6a3724a1cc5ef010ce6f2163d959666e8a86",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "chayleaf", "owner": "chayleaf",
"ref": "ci",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -319,11 +314,11 @@
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"dir": "lib", "dir": "lib",
"lastModified": 1703961334, "lastModified": 1711703276,
"narHash": "sha256-M1mV/Cq+pgjk0rt6VxoyyD+O8cOUiai8t9Q6Yyq4noY=", "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b0d36bd0a420ecee3bc916c91886caca87c894e9", "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -376,11 +371,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1706607970, "lastModified": 1712785619,
"narHash": "sha256-q5W32qx3HhozhAT75AerVqOnhgvNrSyFrjAlu4qNYCU=", "narHash": "sha256-1RCStMZUGqus3DAl7jivw7XM5jpbecfqWtA1r45Ts90=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "d7e286c21530da5d6da54424d64e15de14f7c07a", "rev": "a0471f14e0499a66898fc1c7d5aff259a9fa58b9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -416,11 +411,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1706580650, "lastModified": 1712715149,
"narHash": "sha256-e6q4Pn1dp3NoQJdMYdyNdDHU5IRBW9i3bHSJ3jThEL0=", "narHash": "sha256-uOx7GaLV+5hekAYtm/CBr627Pi7+d1Yh70hwKmVjYYo=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "39e20b3c02caa91c9970beef325a04975d83d77f", "rev": "9ef1eca23bee5fb8080863909af3802130b2ee57",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -444,13 +439,31 @@
"type": "github" "type": "github"
} }
}, },
"utils": { "systems_2": {
"locked": { "locked": {
"lastModified": 1605370193, "lastModified": 1681028828,
"narHash": "sha256-YyMTf3URDL/otKdKgtoMChu4vfVL3vCMkRqpGifhUn0=", "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1709126324,
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "5021eac20303a61fafe17224c087f5519baed54d", "rev": "d465f4819400de7c8d874d50b982301f28a84605",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -4,7 +4,7 @@
inputs = { inputs = {
#nixpkgs.url = "github:NixOS/nixpkgs/3dc2b4f8166f744c3b3e9ff8224e7c5d74a5424f"; #nixpkgs.url = "github:NixOS/nixpkgs/3dc2b4f8166f744c3b3e9ff8224e7c5d74a5424f";
# nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs.url = "github:chayleaf/nixpkgs"; nixpkgs.url = "github:chayleaf/nixpkgs/ci";
nixos-hardware.url = "github:NixOS/nixos-hardware"; nixos-hardware.url = "github:NixOS/nixos-hardware";
nix-index-database = { nix-index-database = {
url = "github:nix-community/nix-index-database"; url = "github:nix-community/nix-index-database";
@ -48,10 +48,6 @@
nixos-mailserver = { nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
# prevent extra input from being in flake.lock
# (this doesn't affect any behavior)
inputs.nixpkgs-23_05.follows = "nixpkgs";
inputs.nixpkgs-23_11.follows = "nixpkgs";
}; };
flake-compat = { flake-compat = {
url = "github:edolstra/flake-compat"; url = "github:edolstra/flake-compat";

View file

@ -11,7 +11,7 @@
../modules/i3-sway.nix ../modules/i3-sway.nix
../modules/nvim.nix ../modules/nvim.nix
../modules/helix.nix ../modules/helix.nix
../modules/kakoune.nix # ../modules/kakoune.nix
inputs.nur.nixosModules.nur inputs.nur.nixosModules.nur
]; ];

View file

@ -185,17 +185,10 @@
input-default-bindings = false; input-default-bindings = false;
}; };
# profiles = { }; # profiles = { };
package = pkgs.wrapMpv ((pkgs.mpv-unwrapped.override { package = pkgs.wrapMpv (pkgs.mpv-unwrapped.override {
# webp support # many features aren't supported by normal ffmpeg
ffmpeg = pkgs.ffmpeg-full; ffmpeg = pkgs.ffmpeg-full;
}).overrideAttrs (old: { }) {
patches = old.patches or [] ++ [
(pkgs.fetchpatch {
url = "https://github.com/mpv-player/mpv/pull/11648.patch";
hash = "sha256-rp5VxVD74dY3w5rKct1BwFbruxpHsGk8zwtkkhdJovM=";
})
];
})) {
scripts = with pkgs.mpvScripts; [ scripts = with pkgs.mpvScripts; [
thumbnail thumbnail
mpris mpris

View file

@ -111,7 +111,7 @@ commonConfig = {
/run/current-system/sw/bin/busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true /run/current-system/sw/bin/busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true
''} ''}
${pkgs.procps}/bin/pkill -x home-daemon ${pkgs.procps}/bin/pkill -x home-daemon
${pkgs.home-daemon}/bin/home-daemon system76-scheduler& ${pkgs.home-daemon}/bin/home-daemon system76-scheduler ${lib.optionalString (!config.phone.enable) "empty-sound"}&
${pkgs.procps}/bin/pkill -x keepassxc ${pkgs.procps}/bin/pkill -x keepassxc
${pkgs.gnome.zenity}/bin/zenity --password | (${pkgs.keepassxc}/bin/keepassxc --pw-stdin ~/var/local.kdbx &) ${pkgs.gnome.zenity}/bin/zenity --password | (${pkgs.keepassxc}/bin/keepassxc --pw-stdin ~/var/local.kdbx &)
# sleep to give keepassxc time to take the input # sleep to give keepassxc time to take the input

View file

@ -1,3 +1,4 @@
# broken
{ pkgs, lib, ... }: { pkgs, lib, ... }:
let let
wrapKakoune = { extraPackages ? [ ], withPython3 ? true, extraPython3Packages ? (_: [ ]) }: wrapKakoune = { extraPackages ? [ ], withPython3 ? true, extraPython3Packages ? (_: [ ]) }:

View file

@ -1,5 +1,5 @@
diff --git a/include/sway/config.h b/include/sway/config.h diff --git a/include/sway/config.h b/include/sway/config.h
index aa58da53..223efae0 100644 index f9da1967..fa2d8858 100644
--- a/include/sway/config.h --- a/include/sway/config.h
+++ b/include/sway/config.h +++ b/include/sway/config.h
@@ -50,6 +50,7 @@ enum binding_flags { @@ -50,6 +50,7 @@ enum binding_flags {
@ -24,10 +24,10 @@ index 979e178f..d17458ea 100644
break; break;
} }
diff --git a/sway/input/keyboard.c b/sway/input/keyboard.c diff --git a/sway/input/keyboard.c b/sway/input/keyboard.c
index c3bf4fbb..78ef8e61 100644 index 8927287f..3faff953 100644
--- a/sway/input/keyboard.c --- a/sway/input/keyboard.c
+++ b/sway/input/keyboard.c +++ b/sway/input/keyboard.c
@@ -162,8 +162,9 @@ static void get_active_binding(const struct sway_shortcut_state *state, @@ -161,8 +161,9 @@ static void get_active_binding(const struct sway_shortcut_state *state,
bool binding_locked = (binding->flags & BINDING_LOCKED) != 0; bool binding_locked = (binding->flags & BINDING_LOCKED) != 0;
bool binding_inhibited = (binding->flags & BINDING_INHIBITED) != 0; bool binding_inhibited = (binding->flags & BINDING_INHIBITED) != 0;
bool binding_release = binding->flags & BINDING_RELEASE; bool binding_release = binding->flags & BINDING_RELEASE;
@ -38,7 +38,7 @@ index c3bf4fbb..78ef8e61 100644
release != binding_release || release != binding_release ||
locked > binding_locked || locked > binding_locked ||
inhibited > binding_inhibited || inhibited > binding_inhibited ||
@@ -175,7 +176,42 @@ static void get_active_binding(const struct sway_shortcut_state *state, @@ -174,7 +175,42 @@ static void get_active_binding(const struct sway_shortcut_state *state,
} }
bool match = false; bool match = false;
@ -83,21 +83,18 @@ index c3bf4fbb..78ef8e61 100644
for (size_t j = 0; j < state->npressed; j++) { for (size_t j = 0; j < state->npressed; j++) {
uint32_t key = *(uint32_t *)binding->keys->items[j]; uint32_t key = *(uint32_t *)binding->keys->items[j];
diff --git a/sway/sway.5.scd b/sway/sway.5.scd diff --git a/sway/sway.5.scd b/sway/sway.5.scd
index 25082c41..268e0526 100644 index 7e58b528..794965b9 100644
--- a/sway/sway.5.scd --- a/sway/sway.5.scd
+++ b/sway/sway.5.scd +++ b/sway/sway.5.scd
@@ -389,8 +389,8 @@ runtime. @@ -390,6 +390,7 @@ runtime.
for_window <criteria> move container to output <output>
*bindsym* [--whole-window] [--border] [--exclude-titlebar] [--release] [--locked] \ *bindsym* [--whole-window] [--border] [--exclude-titlebar] [--release] [--locked] \
-[--to-code] [--input-device=<device>] [--no-warn] [--no-repeat] [Group<1-4>+]<key combo> \ [--to-code] [--input-device=<device>] [--no-warn] [--no-repeat] [--inhibited] \
-<command> +[--allow-other] \
+[--to-code] [--input-device=<device>] [--no-warn] [--no-repeat] [--allow-other] \ [Group<1-4>+]<key combo> <command>
+[Group<1-4>+]<key combo> <command>
Binds _key combo_ to execute the sway command _command_ when pressed. You Binds _key combo_ to execute the sway command _command_ when pressed. You
may use XKB key names here (*wev*(1) is a good tool for discovering these). may use XKB key names here (*wev*(1) is a good tool for discovering these).
With the flag _--release_, the command is executed when the key combo is @@ -419,6 +420,11 @@ runtime.
@@ -419,6 +419,11 @@ runtime.
repeatedly when the key is held, according to the repeat repeatedly when the key is held, according to the repeat
settings specified in the input configuration. settings specified in the input configuration.

View file

@ -22,24 +22,24 @@
"pinned": false, "pinned": false,
"src": { "src": {
"name": null, "name": null,
"sha256": "sha256-5fEYhazqXcMENjp+37IcF5U81vZ9bPDkS0siUVi9mdg=", "sha256": "sha256-wCIffeayOy3kEwmIKB7e+NrliuSpKXoVYC334fxVB3U=",
"type": "url", "type": "url",
"url": "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-27/GE-Proton8-27.tar.gz" "url": "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton9-1/GE-Proton9-1.tar.gz"
}, },
"version": "GE-Proton8-27" "version": "GE-Proton9-1"
}, },
"searxng": { "searxng": {
"cargoLocks": null, "cargoLocks": null,
"date": "2024-01-25", "date": "2024-03-15",
"extract": null, "extract": null,
"name": "searxng", "name": "searxng",
"passthru": null, "passthru": null,
"pinned": false, "pinned": false,
"src": { "src": {
"sha256": "sha256-QW1xC6RsHpn5P/QHjyc3O24tSmLvRCVIJwNqPyp1DV0=", "sha256": "sha256-BqVnp/lByAMr/LOCGkuXCYsomu9hRBGXK3DbBQX10TA=",
"type": "tarball", "type": "tarball",
"url": "https://github.com/searxng/searxng/archive/8c73aa772b7d4446f77be82d8f9d9eef1e348deb.tar.gz" "url": "https://github.com/searxng/searxng/archive/e2af3e49702f6fb40e1614f826544dc3b03bca2f.tar.gz"
}, },
"version": "8c73aa772b7d4446f77be82d8f9d9eef1e348deb" "version": "e2af3e49702f6fb40e1614f826544dc3b03bca2f"
} }
} }

View file

@ -12,19 +12,19 @@
}; };
proton-ge = { proton-ge = {
pname = "proton-ge"; pname = "proton-ge";
version = "GE-Proton8-27"; version = "GE-Proton9-1";
src = fetchurl { src = fetchurl {
url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton8-27/GE-Proton8-27.tar.gz"; url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/GE-Proton9-1/GE-Proton9-1.tar.gz";
sha256 = "sha256-5fEYhazqXcMENjp+37IcF5U81vZ9bPDkS0siUVi9mdg="; sha256 = "sha256-wCIffeayOy3kEwmIKB7e+NrliuSpKXoVYC334fxVB3U=";
}; };
}; };
searxng = { searxng = {
pname = "searxng"; pname = "searxng";
version = "8c73aa772b7d4446f77be82d8f9d9eef1e348deb"; version = "e2af3e49702f6fb40e1614f826544dc3b03bca2f";
src = fetchTarball { src = fetchTarball {
url = "https://github.com/searxng/searxng/archive/8c73aa772b7d4446f77be82d8f9d9eef1e348deb.tar.gz"; url = "https://github.com/searxng/searxng/archive/e2af3e49702f6fb40e1614f826544dc3b03bca2f.tar.gz";
sha256 = "sha256-QW1xC6RsHpn5P/QHjyc3O24tSmLvRCVIJwNqPyp1DV0="; sha256 = "sha256-BqVnp/lByAMr/LOCGkuXCYsomu9hRBGXK3DbBQX10TA=";
}; };
date = "2024-01-25"; date = "2024-03-15";
}; };
} }

View file

@ -37,7 +37,7 @@ in
}) })
]; ];
});*/ });*/
harmonia = (pkgs.harmonia.override { nixVersions.nix_2_19 = nixForNixPlugins; }).overrideAttrs (old: rec { harmonia = (pkgs.harmonia.override { nixVersions.nix_2_21 = nixForNixPlugins; }).overrideAttrs (old: rec {
version = "0.7.3"; version = "0.7.3";
src = old.src.override { src = old.src.override {
rev = "refs/tags/${old.pname}-v${version}"; rev = "refs/tags/${old.pname}-v${version}";

View file

@ -17,16 +17,16 @@
"tabs" "tabs"
"declarativeNetRequestWithHostAccess" "declarativeNetRequestWithHostAccess"
"<all_urls>" "<all_urls>"
]; ];
platforms = platforms.all; platforms = platforms.all;
};
}; };
};
"rikaitan" = buildFirefoxXpiAddon { "rikaitan" = buildFirefoxXpiAddon {
pname = "rikaitan"; pname = "rikaitan";
version = "24.1.22.0"; version = "24.3.7.1";
addonId = "tatsu@autistici.org"; addonId = "tatsu@autistici.org";
url = "https://addons.mozilla.org/firefox/downloads/file/4224979/rikaitan-24.1.22.0.xpi"; url = "https://addons.mozilla.org/firefox/downloads/file/4246908/rikaitan-24.3.7.1.xpi";
sha256 = "7df217a68077d45b9f41fe0170193c9224abc2a543c121429ebef4e7e857b0df"; sha256 = "db849343b029b2f1b510cc66032157502e3fe9e6168072d27e8aad9867b6ec17";
meta = with lib; meta = with lib;
{ {
homepage = "https://github.com/Ajatt-Tools/rikaitan"; homepage = "https://github.com/Ajatt-Tools/rikaitan";
@ -41,10 +41,10 @@
"http://*/*" "http://*/*"
"https://*/*" "https://*/*"
"file://*/*" "file://*/*"
]; ];
platforms = platforms.all; platforms = platforms.all;
};
}; };
};
"youtube-nonstop" = buildFirefoxXpiAddon { "youtube-nonstop" = buildFirefoxXpiAddon {
pname = "youtube-nonstop"; pname = "youtube-nonstop";
version = "0.9.2"; version = "0.9.2";
@ -59,8 +59,8 @@
mozPermissions = [ mozPermissions = [
"https://www.youtube.com/*" "https://www.youtube.com/*"
"https://music.youtube.com/*" "https://music.youtube.com/*"
]; ];
platforms = platforms.all; platforms = platforms.all;
};
}; };
} };
}

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
[package] [package]
name = "home-daemon" name = "home-daemon"
version = "0.1.0" version = "0.2.0"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@ -9,6 +9,7 @@ edition = "2021"
zbus = { version = "3", features = ["tokio"] } zbus = { version = "3", features = ["tokio"] }
futures-util = "0.3" futures-util = "0.3"
swayipc-async = "2" swayipc-async = "2"
cpal = "0.15"
[dependencies.tokio] [dependencies.tokio]
version = "1" version = "1"

View file

@ -1,9 +1,18 @@
{ lib, rustPlatform, nix-gitignore }: { lib
, rustPlatform
, nix-gitignore
, pkg-config
, alsa-lib
}:
rustPlatform.buildRustPackage { rustPlatform.buildRustPackage {
pname = "home-daemon"; pname = "home-daemon";
version = "0.1"; version = "0.2.0";
src = nix-gitignore.gitignoreSource ["/target" "default.nix"] (lib.cleanSource ./.); nativeBuildInputs = [ pkg-config ];
buildInputs = [ alsa-lib ];
src = nix-gitignore.gitignoreSource [ "/target" "default.nix" ] ./.;
cargoLock.lockFile = ./Cargo.lock; cargoLock.lockFile = ./Cargo.lock;

View file

@ -1,8 +1,8 @@
{ pkgs ? import <nixpkgs> {} }: { pkgs ? import <nixpkgs> {}, lib ? pkgs.lib }:
pkgs.mkShell { pkgs.mkShell rec {
name = "shell-rust"; name = "shell-rust";
buildInputs = [ nativeBuildInputs = with pkgs; [ pkg-config rustc cargo ];
pkgs.rustc pkgs.cargo buildInputs = with pkgs; [ alsa-lib ];
]; LD_LIBRARY_PATH = "${lib.makeLibraryPath buildInputs}";
} }

View file

@ -1,3 +1,4 @@
use cpal::{traits::{DeviceTrait, HostTrait, StreamTrait}, SampleFormat};
use futures_util::stream::StreamExt; use futures_util::stream::StreamExt;
use std::collections::HashSet; use std::collections::HashSet;
use swayipc_async::{Connection, Event, EventType, WindowChange}; use swayipc_async::{Connection, Event, EventType, WindowChange};
@ -8,14 +9,26 @@ async fn main() {
let _ses_dbus = Box::leak(Box::new(zbus::Connection::session().await.unwrap())); let _ses_dbus = Box::leak(Box::new(zbus::Connection::session().await.unwrap()));
let mut handlers = Vec::<Box<dyn SwayIpcHandler>>::new(); let mut handlers = Vec::<Box<dyn SwayIpcHandler>>::new();
let mut panic = true;
for args in std::env::args().skip(1) { for args in std::env::args().skip(1) {
handlers.push(match args.as_str() { handlers.push(match args.as_str() {
"system76-scheduler" => Box::new(System76::new(sys_dbus).await), "system76-scheduler" => Box::new(System76::new(sys_dbus).await),
"empty-sound" => {
panic = false;
tokio::spawn(async {
play_empty_sound().await;
});
continue;
}
_ => panic!("handler not supported"), _ => panic!("handler not supported"),
}) })
} }
if handlers.is_empty() { if handlers.is_empty() {
panic!("no handlers set up"); if panic {
panic!("no handlers set up");
} else {
futures_util::future::pending::<()>().await;
}
} }
let mut subs = HashSet::new(); let mut subs = HashSet::new();
@ -29,11 +42,11 @@ async fn main() {
} }
} }
async fn start(subs: &[EventType], handlers: &mut [Box<dyn SwayIpcHandler>]) -> Result<(), swayipc_async::Error> { async fn start(
let mut events = Connection::new() subs: &[EventType],
.await? handlers: &mut [Box<dyn SwayIpcHandler>],
.subscribe(&subs) ) -> Result<(), swayipc_async::Error> {
.await?; let mut events = Connection::new().await?.subscribe(&subs).await?;
while let Some(event) = events.next().await { while let Some(event) = events.next().await {
match event { match event {
Ok(event) => { Ok(event) => {
@ -44,15 +57,48 @@ async fn start(subs: &[EventType], handlers: &mut [Box<dyn SwayIpcHandler>]) ->
Err(err) => match err { Err(err) => match err {
swayipc_async::Error::Io(_) swayipc_async::Error::Io(_)
| swayipc_async::Error::InvalidMagic(_) | swayipc_async::Error::InvalidMagic(_)
| swayipc_async::Error::SubscriptionFailed(_) | swayipc_async::Error::SubscriptionFailed(_) => return Err(err),
=> return Err(err),
_ => {} _ => {}
} },
} }
} }
Ok(()) Ok(())
} }
async fn play_empty_sound() {
let device = cpal::default_host()
.default_output_device()
.expect("no output device available");
let supported_config = device
.supported_output_configs()
.unwrap()
.find(|config| {
config.sample_format() == SampleFormat::F32
&& (config.min_sample_rate()..=config.max_sample_rate())
.contains(&cpal::SampleRate(44100))
&& config.channels() == 1
})
.unwrap()
.with_sample_rate(cpal::SampleRate(44100));
let config = supported_config.into();
let stream = Box::leak(Box::new(
device
.build_output_stream(
&config,
|data: &mut [f32], _: &cpal::OutputCallbackInfo| {
for sample in data.iter_mut() {
*sample = 1.0 / 1985.0;
}
},
|err| eprintln!("an error occurred on the output audio stream: {}", err),
None,
)
.unwrap(),
));
stream.play().unwrap();
futures_util::future::pending::<()>().await;
}
trait SwayIpcHandler { trait SwayIpcHandler {
fn register(&mut self, subs: &mut HashSet<EventType>); fn register(&mut self, subs: &mut HashSet<EventType>);
fn handle(&mut self, event: &Event); fn handle(&mut self, event: &Event);
@ -97,4 +143,3 @@ impl SwayIpcHandler for System76<'static> {
} }
} }
} }

View file

@ -1,3 +1,3 @@
#!/usr/bin/env bash #!/usr/bin/env bash
git push git push "$@"
git push github master git push github master "$@"

View file

@ -131,6 +131,7 @@ in rec {
CPU_FREQ_GOV_ONDEMAND = yes; CPU_FREQ_GOV_ONDEMAND = yes;
CPU_FREQ_DEFAULT_GOV_ONDEMAND = yes; CPU_FREQ_DEFAULT_GOV_ONDEMAND = yes;
CPU_FREQ_DEFAULT_GOV_SCHEDUTIL = lib.mkForce no;
CPU_FREQ_DEFAULT_GOV_PERFORMANCE = lib.mkForce no; CPU_FREQ_DEFAULT_GOV_PERFORMANCE = lib.mkForce no;
CPU_FREQ_GOV_CONSERVATIVE = yes; CPU_FREQ_GOV_CONSERVATIVE = yes;
# disable virtualisation stuff # disable virtualisation stuff
@ -243,7 +244,7 @@ in rec {
# hardware specific stuff # hardware specific stuff
FB = lib.mkForce no; FB = lib.mkForce no;
DRM = no; DRM = lib.mkForce no;
SOUND = no; SOUND = no;
INFINIBAND = lib.mkForce no; INFINIBAND = lib.mkForce no;
CFG80211 = module; CFG80211 = module;
@ -306,6 +307,13 @@ in rec {
# keys that are unused in this case # keys that are unused in this case
# used because i got bitten by config keys changing once # used because i got bitten by config keys changing once
SND_AC97_POWER_SAVE_DEFAULT.optional = lib.mkForce true; SND_HDA_POWER_SAVE_DEFAULT.optional = lib.mkForce true;
SND_USB_AUDIO_MIDI_V2.tristate = lib.mkForce null;
DRM_ACCEL.tristate = lib.mkForce null; DRM_AMD_ACP.tristate = lib.mkForce null; DRM_AMD_SECURE_DISPLAY.tristate = lib.mkForce null;
DRM_DP_CEC.tristate = lib.mkForce null; DRM_NOUVEAU_SVM.tristate = lib.mkForce null; MEM_SOFT_DIRTY.tristate = lib.mkForce null;
PM_TRACE.tristate = lib.mkForce null; RAS_CEC.tristate = lib.mkForce null; SND_AC97_POWER_SAVE_DEFAULT.tristate = lib.mkForce null;
AGP.tristate = lib.mkForce null; ACPI_HOTPLUG_CPU.tristate = lib.mkForce null; CEPH_FSCACHE.tristate = lib.mkForce null;
CIFS_FSCACHE.tristate = lib.mkForce null; DRM_NOUVEAU_GSP_DEFAULT.tristate = lib.mkForce null; FSCACHE_STATS.tristate = lib.mkForce null;
"9P_FSCACHE".tristate = lib.mkForce null; CROS_EC_ISHTP.tristate = lib.mkForce null; CROS_EC_LPC.tristate = lib.mkForce null; "9P_FSCACHE".tristate = lib.mkForce null; CROS_EC_ISHTP.tristate = lib.mkForce null; CROS_EC_LPC.tristate = lib.mkForce null;
DRM_AMDGPU_CIK.tristate = lib.mkForce null; DRM_AMDGPU_SI.tristate = lib.mkForce null; DRM_AMDGPU_USERPTR.tristate = lib.mkForce null; DRM_AMDGPU_CIK.tristate = lib.mkForce null; DRM_AMDGPU_SI.tristate = lib.mkForce null; DRM_AMDGPU_USERPTR.tristate = lib.mkForce null;
DRM_AMD_DC_FP.tristate = lib.mkForce null; DRM_AMD_DC_SI.tristate = lib.mkForce null; DRM_DP_AUX_CHARDEV.tristate = lib.mkForce null; DRM_AMD_DC_FP.tristate = lib.mkForce null; DRM_AMD_DC_SI.tristate = lib.mkForce null; DRM_DP_AUX_CHARDEV.tristate = lib.mkForce null;

View file

@ -1,10 +1,10 @@
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index b60aa1f8934..0e3191950d5 100644 index e6cf3e5d63c..54d5d7c10e4 100644
--- a/arch/arm64/configs/defconfig --- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig
@@ -1317,8 +1317,9 @@ CONFIG_QCOM_AOSS_QMP=y @@ -1351,8 +1351,9 @@ CONFIG_MTK_SVS=m
CONFIG_QCOM_AOSS_QMP=y
CONFIG_QCOM_COMMAND_DB=y CONFIG_QCOM_COMMAND_DB=y
CONFIG_QCOM_CPR=y
CONFIG_QCOM_GENI_SE=y CONFIG_QCOM_GENI_SE=y
-CONFIG_QCOM_LLCC=m -CONFIG_QCOM_LLCC=m
-CONFIG_QCOM_OCMEM=m -CONFIG_QCOM_OCMEM=m

View file

@ -38,7 +38,10 @@ in
requires = [ "dbus.socket" ]; requires = [ "dbus.socket" ];
serviceConfig.ExecStart = "${pkgs.q6voiced}/bin/q6voiced hw:0,6"; serviceConfig.ExecStart = "${pkgs.q6voiced}/bin/q6voiced hw:0,6";
}; };
systemd.user.services.wireplumber.environment.WIREPLUMBER_CONFIG_DIR = pkgs.runCommand "wireplumber-config" {} '' # TODO when testing PipeWire instead of PulseAudio, the following is needed:
# https://gitlab.freedesktop.org/pipewire/wireplumber/-/blob/master/docs/rst/daemon/configuration/migration.rst
# https://gitlab.com/postmarketOS/pmaports/-/tree/master/device/community/soc-qcom-sdm845/
/*systemd.user.services.wireplumber.environment.WIREPLUMBER_CONFIG_DIR = pkgs.runCommand "wireplumber-config" {} ''
cp -a "${pkgs.wireplumber}/share/wireplumber" "$out" cp -a "${pkgs.wireplumber}/share/wireplumber" "$out"
chmod +w "$out" "$out/main.lua.d" chmod +w "$out" "$out/main.lua.d"
ln -s ${pkgs.fetchurl { ln -s ${pkgs.fetchurl {
@ -46,7 +49,7 @@ in
hash = "sha256-56oNJJyuZZe1Iig1xskDuyazw3PbRZtmU/YRFUTqjwk="; hash = "sha256-56oNJJyuZZe1Iig1xskDuyazw3PbRZtmU/YRFUTqjwk=";
}} "$out/main.lua.d/51-qcom-sdm845.lua" }} "$out/main.lua.d/51-qcom-sdm845.lua"
''; '';
systemd.services.wireplumber.environment.WIREPLUMBER_CONFIG_DIR = config.systemd.user.services.wireplumber.environment.WIREPLUMBER_CONFIG_DIR; systemd.services.wireplumber.environment.WIREPLUMBER_CONFIG_DIR = config.systemd.user.services.wireplumber.environment.WIREPLUMBER_CONFIG_DIR;*/
networking.modemmanager.enable = !config.networking.networkmanager.enable; networking.modemmanager.enable = !config.networking.networkmanager.enable;
services.udev.extraRules = '' services.udev.extraRules = ''
SUBSYSTEM=="input", KERNEL=="event*", ENV{ID_INPUT}=="1", SUBSYSTEMS=="input", ATTRS{name}=="spmi_haptics", TAG+="uaccess", ENV{FEEDBACKD_TYPE}="vibra" SUBSYSTEM=="input", KERNEL=="event*", ENV{ID_INPUT}=="1", SUBSYSTEMS=="input", ATTRS{name}=="spmi_haptics", TAG+="uaccess", ENV{FEEDBACKD_TYPE}="vibra"

View file

@ -124,8 +124,8 @@ in {
# ignoreConfigErrors = false; # ignoreConfigErrors = false;
kernelPatches = [ kernelPatches = [
{ {
name = "linux_6_7"; name = "linux_6_8";
patch = ./linux_6_7.patch; patch = ./linux_6_8.patch;
} }
{ {
name = "config_fixes"; name = "config_fixes";

View file

@ -8,7 +8,7 @@
"phy-rockchip-naneng-combphy" "phy-rockchip-naneng-combphy"
]; ];
boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_6_7; boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
boot.kernelParams = [ "dtb=/${config.hardware.deviceTree.name}" ]; boot.kernelParams = [ "dtb=/${config.hardware.deviceTree.name}" ];
hardware.deviceTree.enable = true; hardware.deviceTree.enable = true;

View file

@ -171,7 +171,7 @@
pkgs.android-udev-rules pkgs.android-udev-rules
]; ];
services.avahi.enable = true; services.avahi.enable = true;
services.avahi.nssmdns = true; services.avahi.nssmdns4 = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
comma comma
neovim neovim

View file

@ -582,11 +582,11 @@ in {
[(is.eq ip.saddr "@force_unvpn4") (mangle meta.mark wan_table)] [(is.eq ip.saddr "@force_unvpn4") (mangle meta.mark wan_table)]
[(is.eq ip6.saddr "@force_unvpn6") (mangle meta.mark wan_table)] [(is.eq ip6.saddr "@force_unvpn6") (mangle meta.mark wan_table)]
# ...force vpn to/from force_vpn4/force_vpn6 # ...force vpn to/from force_vpn4/force_vpn6
# (temporarily disable this because it breaks codeforces.org) # (disable this if it breaks some sites)
# [(is.eq ip.daddr "@force_vpn4") (mangle meta.mark vpn_table)] [(is.eq ip.daddr "@force_vpn4") (mangle meta.mark vpn_table)]
# [(is.eq ip6.daddr "@force_vpn6") (mangle meta.mark vpn_table)] [(is.eq ip6.daddr "@force_vpn6") (mangle meta.mark vpn_table)]
# [(is.eq ip.saddr "@force_vpn4") (mangle meta.mark vpn_table)] [(is.eq ip.saddr "@force_vpn4") (mangle meta.mark vpn_table)]
# [(is.eq ip6.saddr "@force_vpn6") (mangle meta.mark vpn_table)] [(is.eq ip6.saddr "@force_vpn6") (mangle meta.mark vpn_table)]
# block requests to port 25 from hosts other than the server so they can't send mail pretending to originate from my domain # block requests to port 25 from hosts other than the server so they can't send mail pretending to originate from my domain
# only do this for lans since traffic from other interfaces isn't forwarded to wan # only do this for lans since traffic from other interfaces isn't forwarded to wan
[(is.eq meta.iifname lanSet) (is.ne ether.saddr cfg.serverMac) (is.eq meta.l4proto (f: f.tcp)) (is.eq tcp.dport 25) (log "smtp ") drop] [(is.eq meta.iifname lanSet) (is.ne ether.saddr cfg.serverMac) (is.eq meta.l4proto (f: f.tcp)) (is.eq tcp.dport 25) (log "smtp ") drop]
@ -948,6 +948,6 @@ in {
{ directory = /secrets; mode = "0000"; } { directory = /secrets; mode = "0000"; }
# my custom impermanence module doesnt detect it # my custom impermanence module doesnt detect it
{ directory = /var/db/dhcpcd; mode = "0755"; } { directory = /var/db/dhcpcd; mode = "0755"; }
{ directory = /var/lib/private/kea; mode = "0750"; parentDirectory.mode = "0700"; } { directory = /var/lib/private/kea; mode = "0750"; defaultPerms.mode = "0700"; }
]; ];
} }

View file

@ -82,7 +82,7 @@ in {
dbtype = "pgsql"; dbtype = "pgsql";
dbhost = "/run/postgresql"; dbhost = "/run/postgresql";
}; };
extraOptions.overwriteprotocol = "https"; settings.overwriteprotocol = "https";
hostName = "cloud.${cfg.domainName}"; hostName = "cloud.${cfg.domainName}";
https = true; https = true;
}; };

View file

@ -114,7 +114,7 @@ in {
"https://api.github.com/repos/FAForever/" "https://api.github.com/repos/FAForever/"
"https://github.com/nix-community/nix-index-database/releases/download/" "https://github.com/nix-community/nix-index-database/releases/download/"
# required for server (I suppose since nvfetcher uses fetchTarball here...) # required for server (I suppose since nvfetcher uses fetchTarball here...)
"https://github.com/searxng/searxng/releases/download/" "https://github.com/searxng/searxng/"
# for nginx CF-Connecting-IP config generation # for nginx CF-Connecting-IP config generation
"https://www.cloudflare.com/ips-v4" "https://www.cloudflare.com/ips-v4"
"https://www.cloudflare.com/ips-v6" "https://www.cloudflare.com/ips-v6"

View file

@ -31,7 +31,7 @@ in {
}; };
systemd.services.gitea.after = [ "keycloak.service" ]; systemd.services.gitea.after = [ "keycloak.service" ];
services.nextcloud.extraOptions.allow_local_remote_servers = true; services.nextcloud.settings.allow_local_remote_servers = true;
systemd.services.nextcloud.after = [ "keycloak.service" ]; systemd.services.nextcloud.after = [ "keycloak.service" ];
# a crude way to make some python packages available for synapse # a crude way to make some python packages available for synapse

View file

@ -70,14 +70,14 @@ in {
] ++ lib.optionals config.services.akkoma.enable [ ] ++ lib.optionals config.services.akkoma.enable [
{ directory = /var/lib/akkoma; user = "akkoma"; group = "akkoma"; mode = "0700"; } { directory = /var/lib/akkoma; user = "akkoma"; group = "akkoma"; mode = "0700"; }
] ++ lib.optionals config.services.botamusique.enable [ ] ++ lib.optionals config.services.botamusique.enable [
{ directory = /var/lib/private/botamusique; user = "root"; group = "root"; mode = "0750"; parentDirectory.mode = "0700"; } { directory = /var/lib/private/botamusique; user = "root"; group = "root"; mode = "0750"; defaultPerms.mode = "0700"; }
] ++ lib.optionals config.programs.ccache.enable [ ] ++ lib.optionals config.programs.ccache.enable [
{ directory = config.programs.ccache.cacheDir; user = "root"; group = "nixbld"; mode = "0770"; } { directory = config.programs.ccache.cacheDir; user = "root"; group = "nixbld"; mode = "0770"; }
{ directory = /var/cache/sccache; user = "root"; group = "nixbld"; mode = "0770"; } { directory = /var/cache/sccache; user = "root"; group = "nixbld"; mode = "0770"; }
] ++ lib.optionals config.services.certspotter.enable [ ] ++ lib.optionals config.services.certspotter.enable [
{ directory = /var/lib/certspotter; user = "certspotter"; group = "certspotter"; mode = "0755"; } { directory = /var/lib/certspotter; user = "certspotter"; group = "certspotter"; mode = "0755"; }
] ++ lib.optionals (config.services.coop-ofd.enable or false) [ ] ++ lib.optionals (config.services.coop-ofd.enable or false) [
{ directory = /var/lib/private/coop-ofd; mode = "0750"; parentDirectory.mode = "0700"; } { directory = /var/lib/private/coop-ofd; mode = "0750"; defaultPerms.mode = "0700"; }
] ++ lib.optionals config.services.dovecot2.enable [ ] ++ lib.optionals config.services.dovecot2.enable [
{ directory = /var/lib/dhparams; user = "root"; group = "root"; mode = "0755"; } { directory = /var/lib/dhparams; user = "root"; group = "root"; mode = "0755"; }
{ directory = /var/lib/dovecot; user = "root"; group = "root"; mode = "0755"; } { directory = /var/lib/dovecot; user = "root"; group = "root"; mode = "0755"; }