feat: Add host sydpc
My, this is a lot TwT. Much work was batched as part of the transition from guix-rebound to nixos-testbed/sydpc. - Discord/Vesktop module & config. - Syncthing setup. - Assorted Emacs changes. - Waybar config. - Niri config. - Steam config. - Some MPD. - Stylix config. - Files/Impermanence things. - Enable Ghostty. - God knows what else.
This commit is contained in:
744
flake.lock
generated
744
flake.lock
generated
@@ -1,10 +1,77 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"base16": {
|
||||||
|
"inputs": {
|
||||||
|
"fromYaml": "fromYaml"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732200724,
|
||||||
|
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "base16.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-fish": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1622559957,
|
||||||
|
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tomyun",
|
||||||
|
"repo": "base16-fish",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-helix": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736852337,
|
||||||
|
"narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base16-vim": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732806396,
|
||||||
|
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-vim",
|
||||||
|
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"clj-nix": {
|
"clj-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devshell": "devshell",
|
"devshell": "devshell",
|
||||||
"nix-fetcher-data": "nix-fetcher-data",
|
"nix-fetcher-data": "nix-fetcher-data",
|
||||||
"nixpkgs": "nixpkgs_7"
|
"nixpkgs": "nixpkgs_11"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1732920288,
|
"lastModified": 1732920288,
|
||||||
@@ -98,6 +165,51 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"firefox-gnome-theme": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1741628778,
|
||||||
|
"narHash": "sha256-RsvHGNTmO2e/eVfgYK7g+eYEdwwh7SbZa+gZkT24MEA=",
|
||||||
|
"owner": "rafaelmardojai",
|
||||||
|
"repo": "firefox-gnome-theme",
|
||||||
|
"rev": "5a81d390bb64afd4e81221749ec4bffcbeb5fa80",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "rafaelmardojai",
|
||||||
|
"repo": "firefox-gnome-theme",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733328505,
|
||||||
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
|
"revCount": 69,
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733328505,
|
||||||
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
@@ -120,6 +232,28 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_2": {
|
"flake-parts_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"stylix",
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733312601,
|
||||||
|
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
@@ -154,7 +288,10 @@
|
|||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": [
|
||||||
|
"stylix",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731533236,
|
"lastModified": 1731533236,
|
||||||
@@ -170,6 +307,105 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils_3": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_3"
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fromYaml": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731966426,
|
||||||
|
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "SenchoPens",
|
||||||
|
"repo": "fromYaml",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"git-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"stylix",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1741379162,
|
||||||
|
"narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=",
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "cachix",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"git-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gnome-shell": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732369855,
|
||||||
|
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
|
||||||
|
"owner": "GNOME",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "GNOME",
|
||||||
|
"ref": "47.2",
|
||||||
|
"repo": "gnome-shell",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_4"
|
||||||
@@ -189,6 +425,27 @@
|
|||||||
"type": "github"
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
"impermanence": {
|
"impermanence": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737831083,
|
"lastModified": 1737831083,
|
||||||
@@ -204,9 +461,65 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"niri": {
|
||||||
|
"inputs": {
|
||||||
|
"niri-stable": "niri-stable",
|
||||||
|
"niri-unstable": "niri-unstable",
|
||||||
|
"nixpkgs": "nixpkgs_5",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||||
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742280890,
|
||||||
|
"narHash": "sha256-Kluc8ORAYjyPA5gD4HfXiv7bxmGftGAQ5eFAJ7uJwiE=",
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"rev": "808d8bf8cd9adb4bd20ba9411346d42ece5de4ca",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1740117926,
|
||||||
|
"narHash": "sha256-mTTHA0RAaQcdYe+9A3Jx77cmmyLFHmRoZdd8RpWa+m8=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "b94a5db8790339cf9134873d8b490be69e02ac71",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"ref": "v25.02",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742276600,
|
||||||
|
"narHash": "sha256-muceB5DW++WPqrGKpX3Hkii/DNSMmFs2oQrYRYHmPiU=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "e251ca7340bc71870c3a81a7ffc3d9bde58e685a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nix-fetcher-data": {
|
"nix-fetcher-data": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"sydnix-cli",
|
"sydnix-cli",
|
||||||
"clj-nix",
|
"clj-nix",
|
||||||
@@ -227,6 +540,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixcord": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"nixpkgs": "nixpkgs_6",
|
||||||
|
"systems": "systems",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742438553,
|
||||||
|
"narHash": "sha256-4RYuXu2q+fgu+lDIAPEZW/C5+OMbfyOgoJ+S3OQMhcQ=",
|
||||||
|
"owner": "msyds",
|
||||||
|
"repo": "nixcord",
|
||||||
|
"rev": "8fa8852efb57d79cf1c2304a24889a413f79faec",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "msyds",
|
||||||
|
"ref": "irc-colours",
|
||||||
|
"repo": "nixcord",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1680334310,
|
"lastModified": 1680334310,
|
||||||
@@ -270,6 +605,70 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-stable_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742136038,
|
||||||
|
"narHash": "sha256-DDe16FJk18sadknQKKG/9FbwEro7A57tg9vB5kxZ8kY=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a1185f4064c18a5db37c5c84e5638c78b46e3341",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_10": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1741513245,
|
||||||
|
"narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_11": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728492678,
|
||||||
|
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_12": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737632463,
|
||||||
|
"narHash": "sha256-38J9QfeGSej341ouwzqf77WIHAScihAKCt8PQJ+NH28=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0aa475546ed21629c4f5bbf90e38c846a99ec9e9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1737879851,
|
"lastModified": 1737879851,
|
||||||
@@ -319,6 +718,54 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742069588,
|
||||||
|
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_6": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742169275,
|
||||||
|
"narHash": "sha256-nkH2Edu9rClcsQp2PYBe8E6fp8LDPi2uDBQ6wyMdeXI=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5d9b5431f967007b3952c057fc92af49a4c5f3b2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_7": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735554305,
|
||||||
|
"narHash": "sha256-zExSA1i/b+1NMRhGGLtNfFGXgLtgo+dcuzHzaWA6w3Q=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "0e82ab234249d8eee3e8c91437802b32c74bb3fd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_8": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738517419,
|
"lastModified": 1738517419,
|
||||||
"narHash": "sha256-tttEXgKimgbtPvxFl+Avos4P4lssIqxHhxpLbbvNekk=",
|
"narHash": "sha256-tttEXgKimgbtPvxFl+Avos4P4lssIqxHhxpLbbvNekk=",
|
||||||
@@ -334,7 +781,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_9": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731763621,
|
"lastModified": 1731763621,
|
||||||
"narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=",
|
"narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=",
|
||||||
@@ -350,45 +797,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1728492678,
|
|
||||||
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_8": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1737632463,
|
|
||||||
"narHash": "sha256-38J9QfeGSej341ouwzqf77WIHAScihAKCt8PQJ+NH28=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "0aa475546ed21629c4f5bbf90e38c846a99ec9e9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1741373419,
|
"lastModified": 1741373419,
|
||||||
@@ -404,6 +819,29 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nur_2": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
|
"nixpkgs": [
|
||||||
|
"stylix",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"treefmt-nix": "treefmt-nix_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1741693509,
|
||||||
|
"narHash": "sha256-emkxnsZstiJWmGACimyAYqIKz2Qz5We5h1oBVDyQjLw=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"rev": "5479646b2574837f1899da78bdf9a48b75a9fb27",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"copyparty": "copyparty",
|
"copyparty": "copyparty",
|
||||||
@@ -411,15 +849,18 @@
|
|||||||
"emacs-overlay": "emacs-overlay",
|
"emacs-overlay": "emacs-overlay",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"impermanence": "impermanence",
|
"impermanence": "impermanence",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"niri": "niri",
|
||||||
|
"nixcord": "nixcord",
|
||||||
|
"nixpkgs": "nixpkgs_8",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
|
"stylix": "stylix",
|
||||||
"sydnix-cli": "sydnix-cli"
|
"sydnix-cli": "sydnix-cli"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sops-nix": {
|
"sops-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_6"
|
"nixpkgs": "nixpkgs_9"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1738291974,
|
"lastModified": 1738291974,
|
||||||
@@ -435,14 +876,49 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"stylix": {
|
||||||
|
"inputs": {
|
||||||
|
"base16": "base16",
|
||||||
|
"base16-fish": "base16-fish",
|
||||||
|
"base16-helix": "base16-helix",
|
||||||
|
"base16-vim": "base16-vim",
|
||||||
|
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"flake-utils": "flake-utils_2",
|
||||||
|
"git-hooks": "git-hooks",
|
||||||
|
"gnome-shell": "gnome-shell",
|
||||||
|
"home-manager": "home-manager_2",
|
||||||
|
"nixpkgs": "nixpkgs_10",
|
||||||
|
"nur": "nur_2",
|
||||||
|
"systems": "systems_2",
|
||||||
|
"tinted-foot": "tinted-foot",
|
||||||
|
"tinted-kitty": "tinted-kitty",
|
||||||
|
"tinted-schemes": "tinted-schemes",
|
||||||
|
"tinted-tmux": "tinted-tmux",
|
||||||
|
"tinted-zed": "tinted-zed"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742234510,
|
||||||
|
"narHash": "sha256-dQoo4XivjZuJiSi8ePv9CuP0ncE64RLyz2vb46blRx0=",
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"rev": "fa288c0dc695b49c9af38614af8da981371fe92a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "danth",
|
||||||
|
"repo": "stylix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"sydnix-cli": {
|
"sydnix-cli": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"clj-nix": "clj-nix",
|
"clj-nix": "clj-nix",
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_3",
|
||||||
"nixpkgs": "nixpkgs_8"
|
"nixpkgs": "nixpkgs_12"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1739936838,
|
"lastModified": 1742246510,
|
||||||
"narHash": "sha256-h19Bg+BTV/51MiCnKa3rN3QbRC74cBWjBHhDrpVgdXM=",
|
"narHash": "sha256-h19Bg+BTV/51MiCnKa3rN3QbRC74cBWjBHhDrpVgdXM=",
|
||||||
"path": "/persist/dots/scripts/sydnix-cli",
|
"path": "/persist/dots/scripts/sydnix-cli",
|
||||||
"type": "path"
|
"type": "path"
|
||||||
@@ -453,6 +929,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "systems",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
@@ -467,7 +957,122 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726913040,
|
||||||
|
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1716423189,
|
||||||
|
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-schemes": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1741468895,
|
||||||
|
"narHash": "sha256-YKM1RJbL68Yp2vESBqeZQBjTETXo8mCTTzLZyckCfZk=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "schemes",
|
||||||
|
"rev": "47c8c7726e98069cade5827e5fb2bfee02ce6991",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "schemes",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1740877430,
|
||||||
|
"narHash": "sha256-zWcCXgdC4/owfH/eEXx26y5BLzTrefjtSLFHWVD5KxU=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"rev": "d48ee86394cbe45b112ba23ab63e33656090edb4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-zed": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1725758778,
|
||||||
|
"narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-zed",
|
||||||
|
"rev": "122c9e5c0e6f27211361a04fae92df97940eccf9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "base16-zed",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_7"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1739829690,
|
||||||
|
"narHash": "sha256-mL1szCeIsjh6Khn3nH2cYtwO5YXG6gBiTw1A30iGeDU=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "3d0579f5cc93436052d94b73925b48973a104204",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nur",
|
"nur",
|
||||||
@@ -487,6 +1092,61 @@
|
|||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix_3": {
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1739246919,
|
||||||
|
"narHash": "sha256-/hBM43/Gd0/tW+egrhlWgOIISeJxEs2uAOIYVpfDKeU=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "44590a416d4a3e8220e19e29e0b6efe64a80315d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"ref": "v0.5.1",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1742249030,
|
||||||
|
"narHash": "sha256-YZ+axsuNsgIKWfnRkt6Qa9UoKfUOIWf42vNUonXxmxM=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "cca74a5f6b23742d77dc5db4312dfc40fd4a0fcc",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
sydnix-cli.url = "path:///persist/dots/scripts/sydnix-cli";
|
sydnix-cli.url = "path:///persist/dots/scripts/sydnix-cli";
|
||||||
copyparty.url = "github:9001/copyparty";
|
copyparty.url = "github:9001/copyparty";
|
||||||
emacs-overlay.url = "github:nix-community/emacs-overlay";
|
emacs-overlay.url = "github:nix-community/emacs-overlay";
|
||||||
|
niri.url = "github:sodiboo/niri-flake";
|
||||||
|
stylix.url = "github:danth/stylix";
|
||||||
|
# nixcord.url = "github:kaylorben/nixcord";
|
||||||
|
nixcord.url = "github:msyds/nixcord/irc-colours";
|
||||||
# Used for Firefox extensions/addons.
|
# Used for Firefox extensions/addons.
|
||||||
nur = {
|
nur = {
|
||||||
url = "github:nix-community/NUR";
|
url = "github:nix-community/NUR";
|
||||||
@@ -61,9 +65,11 @@
|
|||||||
nixConfig = {
|
nixConfig = {
|
||||||
extra-substituters = [
|
extra-substituters = [
|
||||||
"https://nix-community.cachix.org"
|
"https://nix-community.cachix.org"
|
||||||
|
"https://niri.cachix.org" # WAIT4NIRI
|
||||||
];
|
];
|
||||||
extra-trusted-public-keys = [
|
extra-trusted-public-keys = [
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964=" # WAIT4NIRI
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
160
hosts/sydpc/configuration.nix
Normal file
160
hosts/sydpc/configuration.nix
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
{ config, pkgs, lib, disko, sydnix-cli, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware.nix
|
||||||
|
./disks.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
sydnix = {
|
||||||
|
filesystemType = "btrfs";
|
||||||
|
|
||||||
|
steam.enable = true;
|
||||||
|
niri.enable = true;
|
||||||
|
stylix.enable = true;
|
||||||
|
|
||||||
|
users.users = [
|
||||||
|
"crumb"
|
||||||
|
];
|
||||||
|
|
||||||
|
impermanence = {
|
||||||
|
enable = true;
|
||||||
|
directories = [
|
||||||
|
# "Warning: Neither /var/lib/nixos nor any of its parents are persisted.
|
||||||
|
# This means all users/groups without specified uids/gids will have them
|
||||||
|
# reassigned on reboot."
|
||||||
|
"/var/lib/nixos"
|
||||||
|
# We don't want to have different ssh keys on reboot, because ssh keys
|
||||||
|
# are expected to consistently identify machines... I think. I mostly
|
||||||
|
# just think it's annoying to edit ~/.ssh/known_hosts all the time.
|
||||||
|
"/etc/ssh"
|
||||||
|
];
|
||||||
|
rollback = {
|
||||||
|
enable = true;
|
||||||
|
device = "/dev/disk/by-partlabel/disk-bootroot-root";
|
||||||
|
subvolume = "rootfs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Disable systemd-sleep. Let KDE or whatever dim the screen without
|
||||||
|
# suspending the computer.
|
||||||
|
systemd.sleep.extraConfig = ''
|
||||||
|
AllowSuspend=no
|
||||||
|
AllowHibernation=no
|
||||||
|
AllowHybridSleep=no
|
||||||
|
AllowSuspendThenHibernate=no
|
||||||
|
'';
|
||||||
|
|
||||||
|
boot.loader = {
|
||||||
|
grub.enable = false;
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "America/Denver";
|
||||||
|
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
console = {
|
||||||
|
font = "Lat2-Terminus16";
|
||||||
|
useXkbConfig = true; # Use xkb.options in tty.
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.nvidia.open = false;
|
||||||
|
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
videoDrivers = [ "nvidia" ];
|
||||||
|
xkb = {
|
||||||
|
layout = "us";
|
||||||
|
options = "ctrl:swapcaps";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.displayManager.sddm.enable = true; # WAIT4NIRI
|
||||||
|
services.desktopManager.plasma6.enable = true; # WAIT4NIRI
|
||||||
|
|
||||||
|
services.libinput = {
|
||||||
|
enable = true;
|
||||||
|
# Disable mouse acceleration.
|
||||||
|
mouse.accelProfile = "flat";
|
||||||
|
# Sensitivity.
|
||||||
|
mouse.accelSpeed = "-0.5";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
wireplumber.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.pulseaudio.package = pkgs.pulseaudioFull;
|
||||||
|
|
||||||
|
# Usually we try to delegate declarations of globally-available packages to
|
||||||
|
# separate modules. These are some exceptional essentials.
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.neovim
|
||||||
|
pkgs.git
|
||||||
|
sydnix-cli.packages.x86_64-linux.default
|
||||||
|
(import ../../scripts/port-tools { inherit pkgs; })
|
||||||
|
|
||||||
|
# Waypipe provides the equivalent of X11 forwarding for Wayland. When
|
||||||
|
# connecting to a remote, it is required that `waypipe` is on the remote's
|
||||||
|
# PATH, thus we include it globally here.
|
||||||
|
pkgs.waypipe
|
||||||
|
pkgs.cachix
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.xwayland.enable = true;
|
||||||
|
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
settings.PermitRootLogin = "yes";
|
||||||
|
settings.X11Forwarding = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# TODO: Move to defaults.
|
||||||
|
users.mutableUsers = false;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
trusted-users = [
|
||||||
|
"@wheel"
|
||||||
|
];
|
||||||
|
substituters = [
|
||||||
|
"https://cache.deertopia.net"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
"https://cache.nixos.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
(builtins.readFile ../../public-keys/deertopia-cache.pub.pem)
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this
|
||||||
|
# particular machine, and is used to maintain compatibility with application
|
||||||
|
# data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any
|
||||||
|
# reason, even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are
|
||||||
|
# pulled from, so changing it will NOT upgrade your system - see
|
||||||
|
# https://nixos.org/manual/nixos/stable/#sec-upgrading for how to actually do
|
||||||
|
# that.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your
|
||||||
|
# system is out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes
|
||||||
|
# it would make to your configuration, and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or
|
||||||
|
# https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
|
}
|
||||||
73
hosts/sydpc/disks.nix
Executable file
73
hosts/sydpc/disks.nix
Executable file
@@ -0,0 +1,73 @@
|
|||||||
|
# sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode disko /persist/dots/hosts/nixos-testbed/disko-config.nix
|
||||||
|
# time sudo nixos-install --flake /persist/dots#nixos-testbed
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
# imports = [ disko.nixosModules.disko ];
|
||||||
|
boot.initrd.supportedFilesystems.btrfs = true;
|
||||||
|
boot.supportedFilesystems.btrfs = true;
|
||||||
|
|
||||||
|
# From Impermanence's README: "Important note: Make sure your persistent
|
||||||
|
# volumes are marked with neededForBoot, otherwise you will run into
|
||||||
|
# problems."
|
||||||
|
fileSystems."/persist".neededForBoot = true;
|
||||||
|
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
bootroot = {
|
||||||
|
type = "disk";
|
||||||
|
device = "/dev/disk/by-id/ata-Samsung_SSD_870_EVO_1TB_S75BNL0WA33853H";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
ESP = {
|
||||||
|
size = "512M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
mountOptions = [ "umask=0077" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "btrfs";
|
||||||
|
|
||||||
|
mountpoint = "/partition-root";
|
||||||
|
swap.swapfile.size = "4G";
|
||||||
|
|
||||||
|
# Override existing partitions.
|
||||||
|
extraArgs = [ "-f" ];
|
||||||
|
|
||||||
|
# Subvolumes must set a mountpoint in order to be mounted,
|
||||||
|
# *unless their parent is mounted*.
|
||||||
|
subvolumes = {
|
||||||
|
# Subvolume names do not necessarily correspond to
|
||||||
|
# mountpoints, despite the structural resemblance to a file
|
||||||
|
# path.
|
||||||
|
"/rootfs" = {
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
"/nix" = {
|
||||||
|
mountpoint = "/nix";
|
||||||
|
};
|
||||||
|
"/persist" = {
|
||||||
|
mountpoint = "/persist";
|
||||||
|
};
|
||||||
|
"/persist/home" = {
|
||||||
|
mountpoint = "/persist/home";
|
||||||
|
};
|
||||||
|
"/swap" = {
|
||||||
|
mountpoint = "/.swapvol";
|
||||||
|
swap.swapfile.size = "4G";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
25
hosts/sydpc/hardware.nix
Executable file
25
hosts/sydpc/hardware.nix
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
1
hosts/sydpc/system.nix
Executable file
1
hosts/sydpc/system.nix
Executable file
@@ -0,0 +1 @@
|
|||||||
|
"x86_64-linux"
|
||||||
63
modules/home/discord.nix
Normal file
63
modules/home/discord.nix
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let cfg = config.sydnix.discord;
|
||||||
|
in {
|
||||||
|
options.sydnix.discord = {
|
||||||
|
enable = lib.mkEnableOption "Discord";
|
||||||
|
fixWayland = lib.mkOption {
|
||||||
|
description = ''
|
||||||
|
Fix flickering on Wayland.
|
||||||
|
'';
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable
|
||||||
|
(let
|
||||||
|
# Fixes flickering and platform detection on Wayland.
|
||||||
|
vesktop-wayland-wrapper =
|
||||||
|
pkgs.symlinkJoin {
|
||||||
|
name = "vesktop-wayland-wrapper";
|
||||||
|
paths = [ pkgs.callPackage pkgs.vesktop ];
|
||||||
|
buildInputs = [ pkgs.makeWrapper ];
|
||||||
|
postBuild = ''
|
||||||
|
wrapProgram $out/bin/vesktop \
|
||||||
|
--add-flags "--disable-gpu-compositing"
|
||||||
|
# --add-flags "--disable-gpu-compositing --ozone-platform-hint=auto"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
sydnix.impermanence.directories =
|
||||||
|
let xdg-config-home =
|
||||||
|
config.home.confighome
|
||||||
|
or "${config.home.homeDirectory}/.config";
|
||||||
|
in [
|
||||||
|
# This directory should really be written in terms of
|
||||||
|
# `config.programs.nixcord.vesktopConfigDir`, but it defaults to null
|
||||||
|
# for unknown reasons. This is in conflict with the docs, which claim
|
||||||
|
# it should be the path used here.
|
||||||
|
(lib.removePrefix
|
||||||
|
config.home.homeDirectory
|
||||||
|
"${xdg-config-home}/vesktop/sessionData")
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.nixcord = {
|
||||||
|
enable = true;
|
||||||
|
discord = {
|
||||||
|
# Install Vesktop without Discord.
|
||||||
|
enable = false;
|
||||||
|
# openASAR.enable = true;
|
||||||
|
vencord.enable = false;
|
||||||
|
vencord.package = pkgs.vencord;
|
||||||
|
};
|
||||||
|
vesktop = {
|
||||||
|
enable = true;
|
||||||
|
# package =
|
||||||
|
# if cfg.fixWayland
|
||||||
|
# then vesktop-wayland-wrapper
|
||||||
|
# else pkgs.vesktop;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
25
modules/home/steam.nix
Normal file
25
modules/home/steam.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{ config, pkgs, lib, inputs, system, ... }:
|
||||||
|
|
||||||
|
let cfg = config.sydnix.steam;
|
||||||
|
in {
|
||||||
|
options.sydnix.steam = {
|
||||||
|
enable = lib.mkEnableOption "Steam";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
sydnix.impermanence.directories = [
|
||||||
|
# Steam has a number of mysterious issues when its state directories are
|
||||||
|
# symlinks. Most bizarrely, I've experienced complementory issues;
|
||||||
|
# everything breaks when I use bind-mounts, but not
|
||||||
|
# symlinks. Thanks, Valve!
|
||||||
|
#
|
||||||
|
# https://github.com/ValveSoftware/steam-for-linux/issues/10552
|
||||||
|
{ directory = ".local/share/Steam"; method = "symlink"; }
|
||||||
|
{ directory = ".steam"; method = "symlink"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
pkgs.protonup-qt
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -40,6 +40,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
# TODO: sydnix.syncthing module
|
# TODO: sydnix.syncthing module
|
||||||
sydnix.impermanence.directories =
|
sydnix.impermanence.directories =
|
||||||
let xdg-state-dir =
|
let xdg-state-dir =
|
||||||
|
|||||||
@@ -8,6 +8,10 @@ in {
|
|||||||
programs.bash = {
|
programs.bash = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.shellAliases = {
|
||||||
|
nix2json = "nix eval --impure --json --file -";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
33
modules/home/users/crumb/discord.nix
Normal file
33
modules/home/users/crumb/discord.nix
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let cfg = config.sydnix.users.crumb.discord;
|
||||||
|
in {
|
||||||
|
options.sydnix.users.crumb.discord = {
|
||||||
|
enable = lib.mkEnableOption "Discord";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
sydnix.discord.enable = true;
|
||||||
|
|
||||||
|
programs.nixcord = {
|
||||||
|
config = {
|
||||||
|
themeLinks = [
|
||||||
|
# Compact++ (Default) — Themes Discord to look more like a typical IRC
|
||||||
|
# client.
|
||||||
|
"https://gitlab.com/api/v4/projects/52800868/snippets/3628352/files/main/compactplusplus-default.theme.css/raw"
|
||||||
|
];
|
||||||
|
plugins = {
|
||||||
|
ircColors.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
vesktop = {
|
||||||
|
state.firstLaunch = false;
|
||||||
|
settings = {
|
||||||
|
discordBranch = "stable";
|
||||||
|
minimizeToTray = false;
|
||||||
|
arRPC = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,12 +4,12 @@ let cfg = config.sydnix.users.crumb.emacs;
|
|||||||
in {
|
in {
|
||||||
options.sydnix.users.crumb.emacs.enable =
|
options.sydnix.users.crumb.emacs.enable =
|
||||||
lib.mkEnableOption ''Emacs, à la crumb'';
|
lib.mkEnableOption ''Emacs, à la crumb'';
|
||||||
config = lib.mkIf cfg.enable
|
config = lib.mkIf cfg.enable
|
||||||
(let
|
(let
|
||||||
emacsBasePackage = pkgs'.emacs-unstable-pgtk;
|
emacsBasePackage = pkgs'.emacs-unstable-pgtk;
|
||||||
# Hard-coded path. }:\
|
# Hard-coded path. }:\
|
||||||
emacsConfigDir =
|
emacsConfigDir =
|
||||||
"/persist/dots/modules/home/users/${config.home.username}/emacs";
|
"/persist/dots/modules/home/users/${config.home.username}/emacs";
|
||||||
|
|
||||||
# Create a new instance of nixpkgs with emacs-overlay applied. This is a
|
# Create a new instance of nixpkgs with emacs-overlay applied. This is a
|
||||||
# little unorthodox, but we do it
|
# little unorthodox, but we do it
|
||||||
@@ -17,116 +17,119 @@ in {
|
|||||||
# codebase, I want everything Emacs to stay in this file;
|
# codebase, I want everything Emacs to stay in this file;
|
||||||
# 2. and, there's simply no need to leak emacs-overlay's packages into the
|
# 2. and, there's simply no need to leak emacs-overlay's packages into the
|
||||||
# global nixpkgs instance when nothing else is using it!
|
# global nixpkgs instance when nothing else is using it!
|
||||||
pkgs' = import inputs.nixpkgs {
|
pkgs' = import inputs.nixpkgs {
|
||||||
system = args.system;
|
system = args.system;
|
||||||
overlays = [ inputs.emacs-overlay.overlays.emacs ];
|
overlays = [ inputs.emacs-overlay.overlays.emacs ];
|
||||||
};
|
};
|
||||||
|
|
||||||
emacsDataDir = "${config.xdg.dataHome}/emacs";
|
emacsDataDir = "${config.xdg.dataHome}/emacs";
|
||||||
emacsCacheDir = "${emacsDataDir}/cache";
|
emacsCacheDir = "${emacsDataDir}/cache";
|
||||||
straightBaseDir = "${emacsDataDir}/straight";
|
straightBaseDir = "${emacsDataDir}/straight";
|
||||||
|
|
||||||
fontPackages = [
|
fontPackages = [
|
||||||
pkgs.julia-mono
|
pkgs.julia-mono
|
||||||
pkgs.nerd-fonts.victor-mono
|
pkgs.nerd-fonts.victor-mono
|
||||||
pkgs.ibm-plex
|
pkgs.ibm-plex
|
||||||
];
|
];
|
||||||
|
|
||||||
my-aspell = pkgs.aspellWithDicts
|
my-aspell = pkgs.aspellWithDicts
|
||||||
(dicts: with dicts; [
|
(dicts: with dicts; [
|
||||||
en en-computers en-science
|
en en-computers en-science
|
||||||
]);
|
]);
|
||||||
|
|
||||||
my-emacs =
|
my-emacs =
|
||||||
let ewp = (pkgs.emacsPackagesFor emacsBasePackage).emacsWithPackages
|
let ewp = (pkgs.emacsPackagesFor emacsBasePackage).emacsWithPackages
|
||||||
(epkgs: with epkgs; [
|
(epkgs: with epkgs; [
|
||||||
jinx
|
jinx
|
||||||
pdf-tools
|
pdf-tools
|
||||||
treesit-grammars.with-all-grammars
|
treesit-grammars.with-all-grammars
|
||||||
]);
|
]);
|
||||||
in pkgs.symlinkJoin {
|
in pkgs.symlinkJoin {
|
||||||
name = "sydmacs";
|
name = "sydmacs";
|
||||||
paths = [ ewp ];
|
paths = [ ewp ];
|
||||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
pkgs.git # Dependency of Straight.el.
|
pkgs.git # Dependency of Straight.el.
|
||||||
my-aspell
|
my-aspell
|
||||||
pkgs.direnv
|
pkgs.direnv
|
||||||
];
|
];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
find "$out/bin" -name emacs -or -name "emacs-*" \
|
find "$out/bin" -name emacs -or -name "emacs-*" \
|
||||||
| while IFS= read -r emacs; do
|
| while IFS= read -r emacs; do
|
||||||
echo "emacs: $emacs"
|
echo "emacs: $emacs"
|
||||||
wrapProgram "$emacs" \
|
wrapProgram "$emacs" \
|
||||||
--add-flags "--init-directory \"${emacsConfigDir}\"" \
|
--add-flags "--init-directory \"${emacsConfigDir}\"" \
|
||||||
--set EMACS_STRAIGHT_BASE_DIR "${straightBaseDir}" \
|
--set EMACS_STRAIGHT_BASE_DIR "${straightBaseDir}" \
|
||||||
--set EMACS_CACHE_DIR "${emacsCacheDir}" \
|
--set EMACS_CACHE_DIR "${emacsCacheDir}" \
|
||||||
--set EMACS_DATA_DIR "${emacsDataDir}" \
|
--set EMACS_DATA_DIR "${emacsDataDir}" \
|
||||||
--prefix PATH : "${pkgs.git}/bin" \
|
--prefix PATH : "${pkgs.git}/bin" \
|
||||||
--prefix PATH : "${my-aspell}/bin" \
|
--prefix PATH : "${my-aspell}/bin" \
|
||||||
--prefix PATH : "${pkgs.direnv}/bin" \
|
--prefix PATH : "${pkgs.direnv}/bin" \
|
||||||
--prefix PATH : "${pkgs.texliveFull}/bin" \
|
--prefix PATH : "${pkgs.texliveFull}/bin" \
|
||||||
--set ASPELL_CONF "dict-dir ${my-aspell}/lib/aspell"
|
--set ASPELL_CONF "dict-dir ${my-aspell}/lib/aspell"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
meta = emacsBasePackage.meta;
|
meta = emacsBasePackage.meta;
|
||||||
version = emacsBasePackage.version;
|
version = emacsBasePackage.version;
|
||||||
};
|
};
|
||||||
|
|
||||||
emacsclient-or-emacs = pkgs.writeShellScriptBin "emacsclient-or-emacs" ''
|
emacsclient-or-emacs = pkgs.writeShellScriptBin "emacsclient-or-emacs" ''
|
||||||
emacsclient --alternate-editor=${config.programs.emacs.finalPackage}/bin/emacs "$@"
|
emacsclient --alternate-editor=${config.programs.emacs.finalPackage}/bin/emacs "$@"
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
programs.emacs = {
|
programs.emacs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = my-emacs;
|
package = my-emacs;
|
||||||
};
|
};
|
||||||
|
|
||||||
sydnix.impermanence.cache.directories =
|
sydnix.impermanence.cache.directories =
|
||||||
# Impermanence expects the path to be relative to ~.
|
# Impermanence expects the path to be relative to ~.
|
||||||
map (lib.removePrefix config.home.homeDirectory) [
|
map (lib.removePrefix config.home.homeDirectory) [
|
||||||
straightBaseDir
|
straightBaseDir
|
||||||
emacsCacheDir
|
emacsCacheDir
|
||||||
emacsDataDir
|
emacsDataDir
|
||||||
];
|
];
|
||||||
|
|
||||||
# Set emacsclient as the default editor for the time being.
|
# Set emacsclient as the default editor for the time being.
|
||||||
home.sessionVariables =
|
home.sessionVariables =
|
||||||
let e = "${emacsclient-or-emacs}/bin/emacsclient-or-emacs";
|
let e = "${emacsclient-or-emacs}/bin/emacsclient-or-emacs";
|
||||||
in {
|
in {
|
||||||
"EDITOR" = e;
|
"EDITOR" = e;
|
||||||
"VISUAL" = e;
|
"VISUAL" = e;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file =
|
home.file =
|
||||||
let default =
|
let default =
|
||||||
lib.removePrefix "${config.home.homeDirectory}/"
|
lib.removePrefix "${config.home.homeDirectory}/"
|
||||||
"${straightBaseDir}/straight/versions/default.el";
|
"${straightBaseDir}/straight/versions/default.el";
|
||||||
in {
|
in {
|
||||||
${default}.source =
|
${default}.source =
|
||||||
config.lib.file.mkOutOfStoreSymlink
|
config.lib.file.mkOutOfStoreSymlink
|
||||||
"${emacsConfigDir}/straight-lockfile.el";
|
"${emacsConfigDir}/straight-lockfile.el";
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
emacsclient-or-emacs
|
emacsclient-or-emacs
|
||||||
] ++ fontPackages;
|
] ++ fontPackages;
|
||||||
|
|
||||||
# There's probably a better place to put this, but the current setup demands
|
# There's probably a better place to put this, but the current setup demands
|
||||||
# Fontconfig for Emacs to find my fonts.
|
# Fontconfig for Emacs to find my fonts.
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
# TODO: Make sure this is using the right package for Emacs...
|
# TODO: Make sure this is using the right package for Emacs...
|
||||||
services.emacs = {
|
services.emacs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# Generate a desktop entry for emacsclient.
|
# Generate a desktop entry for emacsclient.
|
||||||
client.enable = true;
|
client.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# We do this ourselves.
|
||||||
|
stylix.targets.emacs.enable = false;
|
||||||
|
|
||||||
home.shellAliases = {
|
home.shellAliases = {
|
||||||
e = "emacsclient-or-emacs";
|
e = "emacsclient-or-emacs";
|
||||||
ec = "emacsclient";
|
ec = "emacsclient";
|
||||||
em = "emacs";
|
em = "emacs";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
1
modules/home/users/crumb/emacs/cool-deer.org
Normal file
1
modules/home/users/crumb/emacs/cool-deer.org
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[cool-deer goes here]
|
||||||
@@ -10,8 +10,11 @@
|
|||||||
(setq use-package-compute-statistics t)
|
(setq use-package-compute-statistics t)
|
||||||
|
|
||||||
(setq gc-cons-threshold
|
(setq gc-cons-threshold
|
||||||
;; (6 gibibytes)
|
;; (8 gibibytes)
|
||||||
(* 6 (expt 1024 3)))
|
(* 8 (expt 1024 3)))
|
||||||
|
|
||||||
|
(set-frame-parameter nil 'drag-with-header-line t)
|
||||||
|
(set-frame-parameter nil 'undecorated t)
|
||||||
|
|
||||||
;; By default, Emacs will cache compilation artifacts in my personal config
|
;; By default, Emacs will cache compilation artifacts in my personal config
|
||||||
;; directory — I'm not keen on that! Redirect it to a dedicated cache directory.
|
;; directory — I'm not keen on that! Redirect it to a dedicated cache directory.
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
;;; syd-lang-kdl.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
|
(use-package kdl-ts-mode
|
||||||
|
:mode "\\.kdl\\'"
|
||||||
|
:straight (:type git
|
||||||
|
:host github
|
||||||
|
:repo "dataphract/kdl-ts-mode"))
|
||||||
|
|
||||||
|
(provide 'syd-lang-kdl)
|
||||||
@@ -13,8 +13,16 @@
|
|||||||
(nix-repl)
|
(nix-repl)
|
||||||
(current-buffer))
|
(current-buffer))
|
||||||
|
|
||||||
|
(evil-define-text-object syd-nix-obj-outer-binding (count _beg _end _type)
|
||||||
|
"TODO"
|
||||||
|
:type 'inclusive
|
||||||
|
(let* ((cleanup-p (memq evil-this-operator '(evil-delete)))
|
||||||
|
(node (treesit-thing-at-point "binding" "nested")))
|
||||||
|
(list (treesit-node-start node)
|
||||||
|
(treesit-node-end node))))
|
||||||
|
|
||||||
(use-package nix-mode
|
(use-package nix-mode
|
||||||
:mode "\\.nix\\'"
|
;; :mode "\\.nix\\'"
|
||||||
:init
|
:init
|
||||||
(add-to-list 'auto-mode-alist
|
(add-to-list 'auto-mode-alist
|
||||||
(cons (rx "/flake.lock'")
|
(cons (rx "/flake.lock'")
|
||||||
@@ -24,17 +32,30 @@
|
|||||||
:config
|
:config
|
||||||
(add-hook 'nix-mode-hook #'lsp)
|
(add-hook 'nix-mode-hook #'lsp)
|
||||||
(set-popup-rule! (rx bol "*nixos-options-doc*" eol) :ttl 0 :quit t)
|
(set-popup-rule! (rx bol "*nixos-options-doc*" eol) :ttl 0 :quit t)
|
||||||
(set-repl-handler! 'nix-mode #'syd-nix-open-nix-repl)
|
(set-repl-handler! '(nix-mode nix-ts-mode) #'syd-nix-open-nix-repl)
|
||||||
(dolist (c '(?- ?_))
|
(dolist (c '(?- ?_))
|
||||||
(modify-syntax-entry c "w" nix-mode-syntax-table))
|
(modify-syntax-entry c "w" nix-mode-syntax-table))
|
||||||
|
|
||||||
;; Inform Smartparens and Evil-surround of Nix's alternative string syntax.
|
;; Inform Smartparens and Evil-surround of Nix's alternative string syntax.
|
||||||
(with-eval-after-load 'smartparens
|
(with-eval-after-load 'smartparens
|
||||||
(sp-local-pair 'nix-mode "''" "''"))
|
(sp-local-pair '(nix-mode nix-ts-mode) "''" "''"))
|
||||||
(syd-add-hook 'nix-mode-hook
|
(syd-add-hook '(nix-mode-hook nix-ts-mode-hook)
|
||||||
(defun syd-nix--configure-evil-surround-h ()
|
(defun syd-nix--configure-evil-surround-h ()
|
||||||
(with-eval-after-load 'evil-surround
|
(with-eval-after-load 'evil-surround
|
||||||
(push '(?Q . ("''" . "''"))
|
(push '(?Q . ("''" . "''"))
|
||||||
evil-surround-pairs-alist)))))
|
evil-surround-pairs-alist)))))
|
||||||
|
|
||||||
|
(use-package nix-ts-mode
|
||||||
|
:mode "\\.nix\\'"
|
||||||
|
:config
|
||||||
|
(require 'nix-mode)
|
||||||
|
(general-def
|
||||||
|
:keymaps 'nix-ts-mode-map
|
||||||
|
:states '(visual operator)
|
||||||
|
"ad" #'syd-nix-obj-outer-binding)
|
||||||
|
(syd-add-hook 'nix-ts-mode-hook
|
||||||
|
(defun syd-nix-set-syntax-table-h ()
|
||||||
|
"Set the syntax table in `nix-ts-mode' buffers to `nix-mode-syntax-table'."
|
||||||
|
(set-syntax-table nix-mode-syntax-table))))
|
||||||
|
|
||||||
(provide 'syd-lang-nix)
|
(provide 'syd-lang-nix)
|
||||||
|
|||||||
@@ -352,14 +352,14 @@ interactive call to `eval-expression' is stored.")
|
|||||||
(advice-add #'evil-indent
|
(advice-add #'evil-indent
|
||||||
:around #'syd-evil-dont-move-point-a))
|
:around #'syd-evil-dont-move-point-a))
|
||||||
|
|
||||||
(use-package evil-leap
|
;(use-package evil-leap
|
||||||
:hook (on-first-input . evil-leap-mode)
|
; :hook (on-first-input . evil-leap-mode)
|
||||||
:load-path "/home/crumb/src/evil-leap"
|
; :load-path "/home/crumb/src/evil-leap"
|
||||||
:straight nil
|
; :straight nil
|
||||||
;; :straight (:type git
|
; ;; :straight (:type git
|
||||||
;; :host gitlab
|
; ;; :host gitlab
|
||||||
;; :repo "msyds/evil-leap")
|
; ;; :repo "msyds/evil-leap")
|
||||||
:config
|
; :config
|
||||||
(evil-leap-install-default-keybindings))
|
; (evil-leap-install-default-keybindings))
|
||||||
|
|
||||||
(provide 'syd-evil)
|
(provide 'syd-evil)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
(file-name-concat user-emacs-directory "modules" "lang"))
|
(file-name-concat user-emacs-directory "modules" "lang"))
|
||||||
|
|
||||||
(require 'syd-lang-agda)
|
(require 'syd-lang-agda)
|
||||||
|
(require 'syd-lang-kdl)
|
||||||
(require 'syd-lang-emacs-lisp)
|
(require 'syd-lang-emacs-lisp)
|
||||||
(require 'syd-lang-clojure)
|
(require 'syd-lang-clojure)
|
||||||
(require 'syd-lang-nix)
|
(require 'syd-lang-nix)
|
||||||
|
|||||||
@@ -30,7 +30,8 @@
|
|||||||
(use-package emacs
|
(use-package emacs
|
||||||
:custom ((initial-scratch-message
|
:custom ((initial-scratch-message
|
||||||
(with-temp-buffer
|
(with-temp-buffer
|
||||||
(insert-file-contents "/persist/vault/crumb/cool-deer.org")
|
(insert-file-contents (file-name-concat user-emacs-directory
|
||||||
|
"cool-deer.org"))
|
||||||
(buffer-string)))
|
(buffer-string)))
|
||||||
;; Initial major mode for scratch buffer.
|
;; Initial major mode for scratch buffer.
|
||||||
(initial-major-mode 'fundamental-mode)
|
(initial-major-mode 'fundamental-mode)
|
||||||
|
|||||||
@@ -7,6 +7,38 @@ in {
|
|||||||
lib.mkEnableOption "Firefox, à la crumb";
|
lib.mkEnableOption "Firefox, à la crumb";
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
# We are very granular about which Firefox files are persisted. While there
|
||||||
|
# is a lot of mutable state (e.g. search history), it is mixed with less
|
||||||
|
# mutable configuration that we force ourselves to manage declaratively.
|
||||||
|
#
|
||||||
|
# For an overview of important files in the profile directory, see
|
||||||
|
# https://support.mozilla.org/en-US/kb/recovering-important-data-from-an-old-profile.
|
||||||
|
sydnix.impermanence =
|
||||||
|
{ directories = [ ".mozilla/firefox/msyds" ]; };
|
||||||
|
# let p = ".mozilla/firefox/msyds";
|
||||||
|
# in {
|
||||||
|
# files = [
|
||||||
|
# # Passwords
|
||||||
|
# "${p}/key4.db"
|
||||||
|
# "${p}/logins.json"
|
||||||
|
# "${p}/logins-backup.json"
|
||||||
|
# # Site-specific permissions
|
||||||
|
# "${p}/permissions.sqlite"
|
||||||
|
# # Bookmarks, downloads and browsing history
|
||||||
|
# "${p}/places.sqlite"
|
||||||
|
# # Cached favicons for use in the history menu.
|
||||||
|
# "${p}/favicons.sqlite"
|
||||||
|
# # Cookies
|
||||||
|
# "${p}/cookies.sqlite"
|
||||||
|
# # Security certificate settings
|
||||||
|
# "${p}/cert9.db"
|
||||||
|
# # Form history (for completions)
|
||||||
|
# "${p}/formhistory.sqlite"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
|
||||||
|
stylix.targets.firefox.profileNames = [ "msyds" ];
|
||||||
|
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -80,6 +112,7 @@ in {
|
|||||||
overlays = [ inputs.nur.overlays.default ];
|
overlays = [ inputs.nur.overlays.default ];
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
# https://nur.nix-community.org/repos/rycee/
|
||||||
with pkgs'.nur.repos.rycee.firefox-addons; [
|
with pkgs'.nur.repos.rycee.firefox-addons; [
|
||||||
ublock-origin
|
ublock-origin
|
||||||
darkreader
|
darkreader
|
||||||
@@ -87,12 +120,68 @@ in {
|
|||||||
vimium
|
vimium
|
||||||
kagi-search
|
kagi-search
|
||||||
duckduckgo-privacy-essentials
|
duckduckgo-privacy-essentials
|
||||||
edit-with-emacs
|
textern
|
||||||
copy-as-org-mode
|
copy-as-org-mode
|
||||||
clearurls
|
clearurls
|
||||||
|
sidebery
|
||||||
|
adaptive-tab-bar-colour
|
||||||
|
adnauseam
|
||||||
|
# tree-style-tab
|
||||||
|
# tab-unload-for-tree-style-tab
|
||||||
|
# tst-tab-search
|
||||||
|
# tst-more-tree-commands
|
||||||
|
# tst-lock-tree-collapsed
|
||||||
|
# tst-fade-old-tabs
|
||||||
|
# tst-bookmarks-subpanel
|
||||||
|
# move-unloaded-tabs-for-tst
|
||||||
|
tab-stash
|
||||||
|
unpaywall
|
||||||
|
sourcegraph
|
||||||
|
sponsorblock
|
||||||
|
cookies-txt
|
||||||
|
copy-selected-tabs-to-clipboard
|
||||||
|
copy-link-text
|
||||||
|
df-youtube
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# https://github.com/mbnuqw/sidebery/wiki/Firefox-Styles-Snippets-(via-userChrome.css)
|
||||||
|
userChrome = ''
|
||||||
|
/* Hide the tab bar in favour of that provided by the tree-style tabs
|
||||||
|
* addon */
|
||||||
|
/**
|
||||||
|
* Dynamic Horizontal Tabs Toolbar (with animations)
|
||||||
|
* sidebar.verticalTabs: false (with native horizontal tabs)
|
||||||
|
*/
|
||||||
|
#main-window #TabsToolbar > .toolbar-items {
|
||||||
|
overflow: hidden;
|
||||||
|
transition: height 0.3s 0.3s !important;
|
||||||
|
}
|
||||||
|
/* Default state: Set initial height to enable animation */
|
||||||
|
#main-window #TabsToolbar > .toolbar-items { height: 3em !important; }
|
||||||
|
#main-window[uidensity="touch"] #TabsToolbar > .toolbar-items { height: 3.35em !important; }
|
||||||
|
#main-window[uidensity="compact"] #TabsToolbar > .toolbar-items { height: 2.7em !important; }
|
||||||
|
/* Hidden state: Hide native tabs strip */
|
||||||
|
#main-window[titlepreface*="\200b"] #TabsToolbar > .toolbar-items { height: 0 !important; }
|
||||||
|
/* Hidden state: Fix z-index of active pinned tabs */
|
||||||
|
#main-window[titlepreface*="\200b"] #tabbrowser-tabs { z-index: 0 !important; }
|
||||||
|
/* Hidden state: Hide window buttons in tabs-toolbar */
|
||||||
|
#main-window[titlepreface*="\200b"] #TabsToolbar .titlebar-spacer,
|
||||||
|
#main-window[titlepreface*="\200b"] #TabsToolbar .titlebar-buttonbox-container {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
/* [Optional] Uncomment block below to show window buttons in nav-bar
|
||||||
|
* (maybe, I didn't test it on non-linux-i3wm env) */
|
||||||
|
/* #main-window[titlepreface*="\200b"] #nav-bar > .titlebar-buttonbox-container,
|
||||||
|
#main-window[titlepreface*="\200b"] #nav-bar > .titlebar-buttonbox-container > .titlebar-buttonbox {
|
||||||
|
display: flex !important;
|
||||||
|
} */
|
||||||
|
/* [Optional] Uncomment one of the line below if you need space near
|
||||||
|
* window buttons */
|
||||||
|
/* #main-window[titlepreface*="\200b"] #nav-bar > .titlebar-spacer[type="pre-tabs"] { display: flex !important; } */
|
||||||
|
/* #main-window[titlepreface*="\200b"] #nav-bar > .titlebar-spacer[type="post-tabs"] { display: flex !important; } */
|
||||||
|
'';
|
||||||
|
|
||||||
search = {
|
search = {
|
||||||
# Override non-declared settings.
|
# Override non-declared settings.
|
||||||
force = true;
|
force = true;
|
||||||
@@ -101,6 +190,14 @@ in {
|
|||||||
default = "Kagi";
|
default = "Kagi";
|
||||||
privateDefault = "DuckDuckGo";
|
privateDefault = "DuckDuckGo";
|
||||||
engines = {
|
engines = {
|
||||||
|
"Kagi" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://kagi.com/search";
|
||||||
|
params = [
|
||||||
|
{ name = "q"; value = "{searchTerms}"; }
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
};
|
||||||
"Nixpkgs" = {
|
"Nixpkgs" = {
|
||||||
urls = [{
|
urls = [{
|
||||||
template = "https://search.nixos.org/packages";
|
template = "https://search.nixos.org/packages";
|
||||||
@@ -132,9 +229,13 @@ in {
|
|||||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||||
"browser.urlbar.sponsoredTopSites" = false;
|
"browser.urlbar.sponsoredTopSites" = false;
|
||||||
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored"
|
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsored"
|
||||||
= false;
|
= false;
|
||||||
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSites"
|
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSites"
|
||||||
= false;
|
= false;
|
||||||
|
"browser.sessionstore.persist_closed_tabs_between_sessions" = true;
|
||||||
|
"browser.download.always_ask_before_handling_new_types" = true;
|
||||||
|
# Enable userChrome.css.
|
||||||
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
13
modules/home/users/crumb/ghostty.nix
Normal file
13
modules/home/users/crumb/ghostty.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.sydnix.users.crumb.ghostty;
|
||||||
|
in {
|
||||||
|
options.sydnix.users.crumb.ghostty.enable =
|
||||||
|
lib.mkEnableOption "Ghostty, à la crumb";
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.ghostty.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -30,7 +30,10 @@ in {
|
|||||||
|
|
||||||
# mpdscribble uses our password files, so it is imperative that the service
|
# mpdscribble uses our password files, so it is imperative that the service
|
||||||
# runs only after said password files are brought into existence. }:)
|
# runs only after said password files are brought into existence. }:)
|
||||||
systemd.user.services.mpdscribble.Unit.After = [ "sops-nix.service" ];
|
systemd.user.services.mpdscribble.Unit = {
|
||||||
|
After = [ "sops-nix.service" ];
|
||||||
|
WantedBy = [ "mpd.service" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
209
modules/home/users/crumb/niri.nix
Normal file
209
modules/home/users/crumb/niri.nix
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.sydnix.users.crumb.niri;
|
||||||
|
in {
|
||||||
|
options.sydnix.users.crumb.niri = {
|
||||||
|
enable = lib.mkEnableOption "Niri, à la crumb";
|
||||||
|
wallpaper = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.path;
|
||||||
|
default = config.stylix.image;
|
||||||
|
};
|
||||||
|
# xwayland-satellite implements rootless Xwayland in a separate application,
|
||||||
|
# without the host compositor's involvement. It makes X11 windows appear as
|
||||||
|
# normal windows, just like a native Xwayland integration. While it is still
|
||||||
|
# somewhat experimental, it handles a lot of applications correctly, like
|
||||||
|
# Steam, games and Discord.
|
||||||
|
xwayland-satellite.enable =
|
||||||
|
lib.mkEnableOption "xwayland-satellite starting with Niri"
|
||||||
|
// { default = true; };
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
stylix.targets.swaylock.enable = true;
|
||||||
|
|
||||||
|
programs.niri = {
|
||||||
|
# Activates some Nixpkgs patches to help run Electron applications under
|
||||||
|
# Wayland.
|
||||||
|
settings = {
|
||||||
|
environment."NIXOS_OZONE_WL" = "1";
|
||||||
|
environment."DISPLAY" = ":0";
|
||||||
|
|
||||||
|
spawn-at-startup =
|
||||||
|
[{ command = [ "${pkgs.swaynotificationcenter}/bin/swaync" ]; }]
|
||||||
|
++ lib.optional
|
||||||
|
cfg.xwayland-satellite.enable
|
||||||
|
{ command = [ "${pkgs.xwayland-satellite}/bin/xwayland-satellite" ]; }
|
||||||
|
++ lib.optional
|
||||||
|
(! builtins.isNull cfg.wallpaper)
|
||||||
|
{ command = [ "${pkgs.wbg}/bin/wbg" "${cfg.wallpaper}" ]; };
|
||||||
|
input = {
|
||||||
|
keyboard.xkb = {
|
||||||
|
layout = "us";
|
||||||
|
options = "ctrl:swapcaps,compose:menu";
|
||||||
|
};
|
||||||
|
mouse = {
|
||||||
|
accel-speed = -0.5;
|
||||||
|
accel-profile = "flat";
|
||||||
|
};
|
||||||
|
focus-follows-mouse.enable = true;
|
||||||
|
};
|
||||||
|
outputs."DP-1" = {
|
||||||
|
mode.width = 2560;
|
||||||
|
mode.height = 1440;
|
||||||
|
mode.refresh = 144.0;
|
||||||
|
scale = 1;
|
||||||
|
};
|
||||||
|
layout = {
|
||||||
|
gaps = 8;
|
||||||
|
# center-focused-column = "always";
|
||||||
|
center-focused-column = "on-overflow";
|
||||||
|
preset-column-widths = [
|
||||||
|
{ proportion = 1.0 / 3.0; }
|
||||||
|
{ proportion = 1.0 / 2.0; }
|
||||||
|
{ proportion = 2.0 / 3.0; }
|
||||||
|
];
|
||||||
|
default-column-width.proportion = 0.5;
|
||||||
|
# default-column-width.proportion = {};
|
||||||
|
focus-ring = {
|
||||||
|
enable = false;
|
||||||
|
width = 2;
|
||||||
|
};
|
||||||
|
border = {
|
||||||
|
enable = true;
|
||||||
|
width = 2;
|
||||||
|
# Override Niri's Stylix integration. Default uses Crystal Blue; we
|
||||||
|
# override it with Old White.
|
||||||
|
active.color = config.lib.stylix.colors.withHashtag.base06;
|
||||||
|
};
|
||||||
|
shadow = {
|
||||||
|
enable = true;
|
||||||
|
softness = 30;
|
||||||
|
spread = 5;
|
||||||
|
offset.x = 5;
|
||||||
|
offset.y = 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
prefer-no-csd = true;
|
||||||
|
screenshot-path = "~/Pictures/Screenshots/%Y-%m-%d %H-%M-%S.png";
|
||||||
|
cursor = {
|
||||||
|
theme = "default";
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
window-rules = [
|
||||||
|
{
|
||||||
|
# This regular expression is intentionally made as specific as
|
||||||
|
# possible, since this is the default config, and we want no false
|
||||||
|
# positives. You can get away with just app-id="wezterm" if you
|
||||||
|
# want.
|
||||||
|
matches = [
|
||||||
|
{ app-id = "^org\\.wezfurlong\\.wezterm$"; }
|
||||||
|
];
|
||||||
|
default-column-width = {};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# Open the Firefox picture-in-picture player as floating by default.
|
||||||
|
matches = [
|
||||||
|
{ app-id = "firefox$"; title = "^Picture-in-Picture$"; }
|
||||||
|
];
|
||||||
|
open-floating = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# Enable rounded corners for all windows.
|
||||||
|
geometry-corner-radius =
|
||||||
|
let r = 8.0;
|
||||||
|
in {
|
||||||
|
bottom-left = r;
|
||||||
|
top-left = r;
|
||||||
|
bottom-right = r;
|
||||||
|
top-right = r;
|
||||||
|
};
|
||||||
|
clip-to-geometry = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
binds = with config.lib.niri.actions; {
|
||||||
|
"Mod+Q".action.close-window = [];
|
||||||
|
"Mod+Shift+Q".action.quit = [];
|
||||||
|
"Mod+Ctrl+L".action.spawn = ["${pkgs.swaylock}/bin/swaylock"];
|
||||||
|
"Mod+D".action.spawn = ["${pkgs.fuzzel}/bin/fuzzel"];
|
||||||
|
"Mod+Shift+Slash".action.show-hotkey-overlay = [];
|
||||||
|
|
||||||
|
# Powers off the monitors. To turn them back on, do any input like
|
||||||
|
# moving the mouse or pressing any other key.
|
||||||
|
"Mod+Shift+P".action.power-off-monitors = [];
|
||||||
|
|
||||||
|
"Mod+BracketLeft".action.consume-or-expel-window-left = [];
|
||||||
|
"Mod+BracketRight".action.consume-or-expel-window-right = [];
|
||||||
|
"Mod+Comma".action.consume-window-into-column = [];
|
||||||
|
"Mod+Period".action.expel-window-from-column = [];
|
||||||
|
|
||||||
|
"Mod+Minus".action.set-column-width = ["-10%"];
|
||||||
|
"Mod+Equal".action.set-column-width = ["+10%"];
|
||||||
|
|
||||||
|
"Mod+Shift+Minus".action.set-window-height = ["-10%"];
|
||||||
|
"Mod+Shift+Equal".action.set-window-height = ["+10%"];
|
||||||
|
|
||||||
|
"Mod+C".action.center-column = [];
|
||||||
|
"Mod+M".action.maximize-column = [];
|
||||||
|
"Mod+Shift+M".action.fullscreen-window = [];
|
||||||
|
# Currently unreleased }:(.
|
||||||
|
# "Mod+Ctrl+M".action.toggle-windowed-fullscreen = [];
|
||||||
|
|
||||||
|
"Mod+Shift+S".action.screenshot = [];
|
||||||
|
"Print".action.screenshot-screen = [];
|
||||||
|
"Mod+Print".action.screenshot-window = [];
|
||||||
|
|
||||||
|
"Mod+X".action.spawn = [
|
||||||
|
"emacsclient-or-emacs"
|
||||||
|
"-ce"
|
||||||
|
"(eshell t)"
|
||||||
|
];
|
||||||
|
|
||||||
|
"Mod+Shift+F".action.toggle-window-floating = [];
|
||||||
|
"Mod+F".action.switch-focus-between-floating-and-tiling = [];
|
||||||
|
"Mod+Shift+T".action.toggle-column-tabbed-display = [];
|
||||||
|
|
||||||
|
"Alt+Tab".action.focus-window-previous = [];
|
||||||
|
|
||||||
|
"Mod+H".action.focus-column-left = [];
|
||||||
|
"Mod+J".action.focus-window-down = [];
|
||||||
|
"Mod+K".action.focus-window-up = [];
|
||||||
|
"Mod+L".action.focus-column-right = [];
|
||||||
|
|
||||||
|
"Mod+Shift+H".action.move-column-left = [];
|
||||||
|
"Mod+Shift+J".action.move-window-down = [];
|
||||||
|
"Mod+Shift+K".action.move-window-up = [];
|
||||||
|
"Mod+Shift+L".action.move-column-right = [];
|
||||||
|
|
||||||
|
"Mod+1".action.focus-workspace = [1];
|
||||||
|
"Mod+2".action.focus-workspace = [2];
|
||||||
|
"Mod+3".action.focus-workspace = [3];
|
||||||
|
"Mod+4".action.focus-workspace = [4];
|
||||||
|
"Mod+5".action.focus-workspace = [5];
|
||||||
|
"Mod+6".action.focus-workspace = [6];
|
||||||
|
"Mod+7".action.focus-workspace = [7];
|
||||||
|
"Mod+8".action.focus-workspace = [8];
|
||||||
|
"Mod+9".action.focus-workspace = [9];
|
||||||
|
"Mod+Shift+1".action.move-column-to-workspace = [1];
|
||||||
|
"Mod+Shift+2".action.move-column-to-workspace = [2];
|
||||||
|
"Mod+Shift+3".action.move-column-to-workspace = [3];
|
||||||
|
"Mod+Shift+4".action.move-column-to-workspace = [4];
|
||||||
|
"Mod+Shift+5".action.move-column-to-workspace = [5];
|
||||||
|
"Mod+Shift+6".action.move-column-to-workspace = [6];
|
||||||
|
"Mod+Shift+7".action.move-column-to-workspace = [7];
|
||||||
|
"Mod+Shift+8".action.move-column-to-workspace = [8];
|
||||||
|
"Mod+Shift+9".action.move-column-to-workspace = [9];
|
||||||
|
|
||||||
|
"Mod+Shift+R".action.switch-preset-window-height = [];
|
||||||
|
"Mod+Ctrl+R".action.reset-window-height = [];
|
||||||
|
|
||||||
|
"XF86AudioRaiseVolume".action =
|
||||||
|
spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+";
|
||||||
|
"XF86AudioLowerVolume".action =
|
||||||
|
spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
27
modules/home/users/crumb/waybar.nix
Normal file
27
modules/home/users/crumb/waybar.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let cfg = config.sydnix.users.crumb.waybar;
|
||||||
|
in {
|
||||||
|
options.sydnix.users.crumb.waybar = {
|
||||||
|
enable = lib.mkEnableOption "Waybar, à la crumb";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = [
|
||||||
|
pkgs.martian-mono
|
||||||
|
pkgs.nerd-fonts.symbols-only
|
||||||
|
];
|
||||||
|
|
||||||
|
stylix.targets.waybar.enable = false;
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
style = ./waybar/src/waybar.css;
|
||||||
|
systemd.enable = true;
|
||||||
|
systemd.target = "niri.service";
|
||||||
|
settings.sydbar = import ./waybar/src/waybar.nix {
|
||||||
|
niri-gaps = config.programs.niri.settings.layout.gaps;
|
||||||
|
inherit pkgs lib;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
1
modules/home/users/crumb/waybar/.envrc
Normal file
1
modules/home/users/crumb/waybar/.envrc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
use nix
|
||||||
40
modules/home/users/crumb/waybar/dev.sh
Executable file
40
modules/home/users/crumb/waybar/dev.sh
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash -p inotify-tools waybar mako swaynotificationcenter libnotify pavucontrol
|
||||||
|
|
||||||
|
# This script will watch waybar.nix and compile it to /tmp/waybar.json. Offers
|
||||||
|
# a much tighter feedback loop than that offered by the Nix module.
|
||||||
|
|
||||||
|
# Inotify will sometimes double-fire events. We avoid unnecessary recompilation
|
||||||
|
# by putting a cooldown on builds.
|
||||||
|
last_build=0
|
||||||
|
waybar_pid=""
|
||||||
|
|
||||||
|
update () {
|
||||||
|
last_build="$(date +%s)"
|
||||||
|
|
||||||
|
if [ ! -z "$waybar_pid" ]; then
|
||||||
|
kill "$waybar_pid"
|
||||||
|
echo >&2 "Killed waybar..."
|
||||||
|
waybar_pid=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo >&2 "Building waybar.json..."
|
||||||
|
nix eval --impure --json --expr "import ./waybar.nix {}" \
|
||||||
|
> /tmp/waybar.json \
|
||||||
|
&& echo >&2 "Built waybar.json!"
|
||||||
|
waybar -c waybar.json -b sydbar -s waybar.css 2>&1 >/dev/null &
|
||||||
|
waybar_pid=$!
|
||||||
|
echo >&2 "Started Waybar [$waybar_pid]"
|
||||||
|
}
|
||||||
|
|
||||||
|
update
|
||||||
|
|
||||||
|
inotifywait -me modify waybar.nix waybar.css cycle_notifications.clj |
|
||||||
|
while read _ _ file_name; do
|
||||||
|
ct="$(date +%s)"
|
||||||
|
if (( ct - last_build < 1 )); then
|
||||||
|
echo >&2 "Ignoring event (on cooldown)"
|
||||||
|
else
|
||||||
|
update
|
||||||
|
fi
|
||||||
|
done
|
||||||
14
modules/home/users/crumb/waybar/shell.nix
Normal file
14
modules/home/users/crumb/waybar/shell.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ pkgs ? import <nixpkgs> {}
|
||||||
|
}:
|
||||||
|
|
||||||
|
pkgs.mkShell {
|
||||||
|
packages = with pkgs; [
|
||||||
|
inotify-tools
|
||||||
|
waybar
|
||||||
|
mako
|
||||||
|
swaynotificationcenter
|
||||||
|
libnotify
|
||||||
|
babashka
|
||||||
|
pavucontrol
|
||||||
|
];
|
||||||
|
}
|
||||||
45
modules/home/users/crumb/waybar/src/cputemp
Executable file
45
modules/home/users/crumb/waybar/src/cputemp
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
check() {
|
||||||
|
command -v "$1" 1>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
check sensors || exit
|
||||||
|
|
||||||
|
data="$(sensors coretemp-isa-0000 | sed 's/+//g')"
|
||||||
|
package="$(echo "$data" | awk -e '/Package/ {print $4}')"
|
||||||
|
coretemp="$(echo "$data" | awk -e '/Core/ {print $3}')"
|
||||||
|
|
||||||
|
tooltip="<b>Core Temp: $package </b>\n"
|
||||||
|
|
||||||
|
# "format-icons" : [ "", "", "", "", "" ] ,
|
||||||
|
tempint=''${package%.*}
|
||||||
|
temp="<b>''${tempint}</b>"
|
||||||
|
# icon=""
|
||||||
|
class="cool"
|
||||||
|
[ "$tempint" -gt 50 ] && {
|
||||||
|
# icon=""
|
||||||
|
class="normal"
|
||||||
|
}
|
||||||
|
[ "$tempint" -gt 70 ] && {
|
||||||
|
# icon=" "
|
||||||
|
class="warm"
|
||||||
|
}
|
||||||
|
[ "$tempint" -gt 85 ] && {
|
||||||
|
# icon=" "
|
||||||
|
class="warn"
|
||||||
|
}
|
||||||
|
[ "$tempint" -gt 95 ] && {
|
||||||
|
# icon=" "
|
||||||
|
class="critical"
|
||||||
|
}
|
||||||
|
|
||||||
|
j=0
|
||||||
|
for i in $coretemp; do
|
||||||
|
tooltip+="Core $j: $i\n"
|
||||||
|
((j = j + 1))
|
||||||
|
done
|
||||||
|
tooltip="''${tooltip::-2}"
|
||||||
|
cat <<EOF
|
||||||
|
{"text":"$temp","tooltip":"$tooltip", "class": "$class"}
|
||||||
|
EOF
|
||||||
31
modules/home/users/crumb/waybar/src/cycle_notifications.clj
Normal file
31
modules/home/users/crumb/waybar/src/cycle_notifications.clj
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bb
|
||||||
|
|
||||||
|
(ns cycle-notifications
|
||||||
|
(:require [babashka.process :as p]
|
||||||
|
[clojure.string :as str]
|
||||||
|
[cheshire.core :as json]))
|
||||||
|
|
||||||
|
(defn get-mode []
|
||||||
|
(case (:out (p/shell {:out :string} "swaync-client -D"))
|
||||||
|
"true" :dnd
|
||||||
|
"false" :default))
|
||||||
|
|
||||||
|
#_
|
||||||
|
(get-mode)
|
||||||
|
|
||||||
|
(defn toggle! []
|
||||||
|
(p/shell {:out nil} "swaync-client -d")
|
||||||
|
;; Update Waybar.
|
||||||
|
(p/shell "pkill -SIGRTMIN+2 waybar"))
|
||||||
|
|
||||||
|
(defn status []
|
||||||
|
(-> (case (:out (p/shell {:out :string} "swaync-client -D"))
|
||||||
|
"false" {:text "" :tooltip "Notify"}
|
||||||
|
"true" {:text "" :tooltip "Do not disturb"})
|
||||||
|
json/generate-string
|
||||||
|
println))
|
||||||
|
|
||||||
|
(defn -main [& args]
|
||||||
|
(case (first args)
|
||||||
|
"toggle" (toggle!)
|
||||||
|
nil (status)))
|
||||||
312
modules/home/users/crumb/waybar/src/waybar.css
Normal file
312
modules/home/users/crumb/waybar/src/waybar.css
Normal file
@@ -0,0 +1,312 @@
|
|||||||
|
/* !!!!!!! Shamelessly stolen from Niksingh710 */
|
||||||
|
/* https://github.com/niksingh710/gdots/blob/d97c544a9d73a34d12770ba20b6b80d14e964aa1/.config/waybar/style.css */
|
||||||
|
@define-color fuji-white #DCD7BA;
|
||||||
|
@define-color old-white #C8C093;
|
||||||
|
@define-color sumi-ink-0 #16161D;
|
||||||
|
@define-color sumi-ink-1 #1F1F28;
|
||||||
|
@define-color sumi-ink-2 #2A2A37;
|
||||||
|
@define-color sumi-ink-3 #363646;
|
||||||
|
@define-color sumi-ink-4 #54546D;
|
||||||
|
@define-color wave-blue-1 #223249;
|
||||||
|
@define-color wave-blue-2 #2D4F67;
|
||||||
|
@define-color winter-green #2B3328;
|
||||||
|
@define-color winter-yellow #49443C;
|
||||||
|
@define-color winter-red #43242B;
|
||||||
|
@define-color winter-blue #252535;
|
||||||
|
@define-color autumn-green #76946A;
|
||||||
|
@define-color autumn-red #C34043;
|
||||||
|
@define-color autumn-yellow #DCA561;
|
||||||
|
@define-color samurai-red #E82424;
|
||||||
|
@define-color ronin-yellow #FF9E3B;
|
||||||
|
@define-color wave-aqua-1 #6A9589;
|
||||||
|
@define-color dragon-blue #658594;
|
||||||
|
@define-color fuji-gray #727169;
|
||||||
|
@define-color spring-violet-1 #938AA9;
|
||||||
|
@define-color oni-violet #957FB8;
|
||||||
|
@define-color crystal-blue #7E9CD8;
|
||||||
|
@define-color spring-violet-2 #9CABCA;
|
||||||
|
@define-color spring-blue #7FB4CA;
|
||||||
|
@define-color light-blue #A3D4D5;
|
||||||
|
@define-color wave-aqua-2 #7AA89F;
|
||||||
|
@define-color spring-green #98BB6C;
|
||||||
|
@define-color boat-yellow-1 #938056;
|
||||||
|
@define-color boat-yellow-2 #C0A36E;
|
||||||
|
@define-color carp-yellow #E6C384;
|
||||||
|
@define-color sakura-pink #D27E99;
|
||||||
|
@define-color wave-red #E46876;
|
||||||
|
@define-color peach-red #FF5D62;
|
||||||
|
@define-color surimi-orange #FFA066;
|
||||||
|
|
||||||
|
@define-color background @sumi-ink-1;
|
||||||
|
@define-color foreground @fuji-white;
|
||||||
|
@define-color border @sumi-ink-4;
|
||||||
|
@define-color active @old-white;
|
||||||
|
|
||||||
|
*
|
||||||
|
{ font-size: 16px
|
||||||
|
; font-family: "Symbols Nerd Font"
|
||||||
|
; min-width: 8px
|
||||||
|
; min-height: 0px
|
||||||
|
; border: none
|
||||||
|
; border-radius: 0
|
||||||
|
; box-shadow: none
|
||||||
|
; text-shadow: none
|
||||||
|
; padding: 0px
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar
|
||||||
|
{ transition-property: background-color
|
||||||
|
; transition-duration: 0.5s
|
||||||
|
; border-radius: 8px
|
||||||
|
; border: 2px solid @active
|
||||||
|
; background: @background
|
||||||
|
; background: alpha(@background, 0.7)
|
||||||
|
; color: lighter(@active)
|
||||||
|
}
|
||||||
|
|
||||||
|
menu,
|
||||||
|
tooltip
|
||||||
|
{ border-radius: 8px
|
||||||
|
; padding: 2px
|
||||||
|
; border: 1px solid lighter(@active)
|
||||||
|
; background: alpha(@background, 0.6)
|
||||||
|
; color: lighter(@active)
|
||||||
|
}
|
||||||
|
|
||||||
|
menu label,
|
||||||
|
tooltip label
|
||||||
|
{ font-size: 14px
|
||||||
|
; color: lighter(@active)
|
||||||
|
}
|
||||||
|
|
||||||
|
#submap,
|
||||||
|
#tray>.needs-attention
|
||||||
|
{ animation-name: blink-active
|
||||||
|
; animation-duration: 1s
|
||||||
|
; animation-timing-function: linear
|
||||||
|
; animation-iteration-count: infinite
|
||||||
|
; animation-direction: alternate
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-right
|
||||||
|
{ margin: 0px 6px 6px 6px
|
||||||
|
; border-radius: 4px
|
||||||
|
; background: alpha(@background, 0.4)
|
||||||
|
; color: lighter(@active)
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left
|
||||||
|
{ transition-property: background-color
|
||||||
|
; transition-duration: 0.5s
|
||||||
|
; margin: 6px 6px 6px 6px
|
||||||
|
; border-radius: 4px
|
||||||
|
; background: alpha(@background, 0.4)
|
||||||
|
; color: lighter(@active)
|
||||||
|
}
|
||||||
|
|
||||||
|
#gcpu,
|
||||||
|
#custom-github,
|
||||||
|
#memory,
|
||||||
|
#disk,
|
||||||
|
#together,
|
||||||
|
#submap,
|
||||||
|
#custom-weather,
|
||||||
|
#custom-recorder,
|
||||||
|
#connection,
|
||||||
|
#cnoti,
|
||||||
|
#brightness,
|
||||||
|
#power,
|
||||||
|
#custom-updates,
|
||||||
|
#tray,
|
||||||
|
#audio,
|
||||||
|
#privacy,
|
||||||
|
#sound
|
||||||
|
{ border-radius: 4px
|
||||||
|
; margin: 2px 2px 4px 2px
|
||||||
|
; background: alpha(darker(@active), 0.3)
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-notifications
|
||||||
|
{ padding-left: 4px
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-hotspot,
|
||||||
|
#custom-github,
|
||||||
|
#custom-notifications
|
||||||
|
{ font-size: 14px
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-hotspot
|
||||||
|
{ padding-right: 2px
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-vpn,
|
||||||
|
#custom-hotspot
|
||||||
|
{ background: alpha(darker(@active), 0.3)
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy-item
|
||||||
|
{ padding: 6px 0px 6px 6px
|
||||||
|
}
|
||||||
|
|
||||||
|
#gcpu
|
||||||
|
{ padding: 8px 0px 8px 0px
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-cpu-icon
|
||||||
|
{ font-size: 25px
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-cputemp,
|
||||||
|
#disk,
|
||||||
|
#memory,
|
||||||
|
#cpu
|
||||||
|
{ font-size: 14px
|
||||||
|
; font-weight: bold
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-github
|
||||||
|
{ padding-top: 2px
|
||||||
|
; padding-right: 4px
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-dmark
|
||||||
|
{ color: alpha(@foreground, 0.3)
|
||||||
|
}
|
||||||
|
|
||||||
|
#submap
|
||||||
|
{ margin-bottom: 0px
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces
|
||||||
|
{ margin: 0px 2px
|
||||||
|
; padding: 4px 0px 0px 0px
|
||||||
|
; border-radius: 8px
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button
|
||||||
|
{ transition-property: background-color
|
||||||
|
; transition-duration: 0.5s
|
||||||
|
; color: @foreground
|
||||||
|
; background: transparent
|
||||||
|
; border-radius: 4px
|
||||||
|
; color: alpha(@foreground, 0.3)
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent
|
||||||
|
{ font-weight: bold
|
||||||
|
; color: @foreground
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active
|
||||||
|
{ padding: 4px 2px
|
||||||
|
; background: alpha(@active, 0.4)
|
||||||
|
; color: lighter(@active)
|
||||||
|
; border-radius: 4px
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.wifi
|
||||||
|
{ padding-right: 4px
|
||||||
|
}
|
||||||
|
|
||||||
|
#submap
|
||||||
|
{ min-width: 0px
|
||||||
|
; margin: 4px 6px 4px 6px
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-weather,
|
||||||
|
#tray
|
||||||
|
{ padding: 4px 0px 4px 0px
|
||||||
|
}
|
||||||
|
|
||||||
|
#bluetooth
|
||||||
|
{ padding-top: 2px
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery
|
||||||
|
{ border-radius: 8px
|
||||||
|
; padding: 4px 0px
|
||||||
|
; margin: 4px 2px 4px 2px
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.discharging.warning
|
||||||
|
{ animation-name: blink-yellow
|
||||||
|
; animation-duration: 1s
|
||||||
|
; animation-timing-function: linear
|
||||||
|
; animation-iteration-count: infinite
|
||||||
|
; animation-direction: alternate
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.discharging.critical
|
||||||
|
{ animation-name: blink-red
|
||||||
|
; animation-duration: 1s
|
||||||
|
; animation-timing-function: linear
|
||||||
|
; animation-iteration-count: infinite
|
||||||
|
; animation-direction: alternate
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock
|
||||||
|
{ font-weight: bold
|
||||||
|
; padding: 4px 2px 2px 2px
|
||||||
|
; font-family: "MartianMono"
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.mic
|
||||||
|
{ border-radius: 4px
|
||||||
|
; color: @background
|
||||||
|
; background: alpha(darker(@foreground), 0.6)
|
||||||
|
; padding-left: 4px
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight-slider slider,
|
||||||
|
#pulseaudio-slider slider
|
||||||
|
{ background-color: transparent
|
||||||
|
; box-shadow: none
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight-slider trough,
|
||||||
|
#pulseaudio-slider trough
|
||||||
|
{ margin-top: 4px
|
||||||
|
; min-width: 6px
|
||||||
|
; min-height: 60px
|
||||||
|
; border-radius: 8px
|
||||||
|
; background-color: alpha(@background, 0.6)
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight-slider highlight,
|
||||||
|
#pulseaudio-slider highlight
|
||||||
|
{ border-radius: 8px
|
||||||
|
; background-color: lighter(@active)
|
||||||
|
}
|
||||||
|
|
||||||
|
#bluetooth.discoverable,
|
||||||
|
#bluetooth.discovering,
|
||||||
|
#bluetooth.pairable
|
||||||
|
{ border-radius: 8px
|
||||||
|
; animation-name: blink-active
|
||||||
|
; animation-duration: 1s
|
||||||
|
; animation-timing-function: linear
|
||||||
|
; animation-iteration-count: infinite
|
||||||
|
; animation-direction: alternate
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink-active
|
||||||
|
{ to
|
||||||
|
{ background-color: @active
|
||||||
|
; color: @foreground
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink-red
|
||||||
|
{ to
|
||||||
|
{ background-color: @samurai-red
|
||||||
|
; color: @foreground
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink-yellow
|
||||||
|
{ to
|
||||||
|
{ background-color: @autumn-yellow
|
||||||
|
; color: @foreground
|
||||||
|
}
|
||||||
|
}
|
||||||
485
modules/home/users/crumb/waybar/src/waybar.nix
Normal file
485
modules/home/users/crumb/waybar/src/waybar.nix
Normal file
@@ -0,0 +1,485 @@
|
|||||||
|
# !!!!!! Shamelessly stolen from Niksingh710's config!
|
||||||
|
# https://github.com/niksingh710/gdots/blob/d97c544a9d73a34d12770ba20b6b80d14e964aa1/.config/waybar/bars/top.jsonc
|
||||||
|
{ niri-gaps ? 8
|
||||||
|
, pkgs ? import <nixpkgs> {}
|
||||||
|
, lib ? pkgs.lib
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cputemp = pkgs.writeShellApplication {
|
||||||
|
name = "cputemp";
|
||||||
|
runtimeInputs = with pkgs; [
|
||||||
|
lm_sensors
|
||||||
|
];
|
||||||
|
text = builtins.readFile ./cputemp;
|
||||||
|
};
|
||||||
|
cycle-notifications = pkgs.writeShellApplication {
|
||||||
|
name = "cycle-notifications";
|
||||||
|
runtimeInputs = with pkgs; [
|
||||||
|
swaynotificationcenter
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
${pkgs.babashka}/bin/bb -cp ${./.} -m cycle-notifications -- "$@"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
layer = "top";
|
||||||
|
# Left margin will be provided by Niri's gaps.
|
||||||
|
margin =
|
||||||
|
let i = builtins.toString niri-gaps;
|
||||||
|
in "${i} ${i} ${i} 0";
|
||||||
|
|
||||||
|
modules-left = [
|
||||||
|
# "custom/updates"
|
||||||
|
"niri/workspaces"
|
||||||
|
"group/info"
|
||||||
|
];
|
||||||
|
modules-right = [
|
||||||
|
"custom/recorder"
|
||||||
|
"privacy"
|
||||||
|
"group/brightness"
|
||||||
|
"group/sound"
|
||||||
|
"group/together"
|
||||||
|
# "group/cnoti"
|
||||||
|
"tray"
|
||||||
|
# "group/power"
|
||||||
|
];
|
||||||
|
|
||||||
|
backlight = {
|
||||||
|
device = "intel_backlight";
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons =
|
||||||
|
[ "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ];
|
||||||
|
on-scroll-down = "brightnessctl s 5%-";
|
||||||
|
on-scroll-up = "brightnessctl s +5%";
|
||||||
|
smooth-scrolling-threshold = 1;
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "Brightness: {percent}% ";
|
||||||
|
};
|
||||||
|
"backlight/slider" = {
|
||||||
|
device = "intel_backlight";
|
||||||
|
max = 100;
|
||||||
|
min = 5;
|
||||||
|
orientation = "vertical";
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-charging = "<b>{icon} </b>";
|
||||||
|
format-full = "<span color='#82A55F'><b>{icon}</b></span>";
|
||||||
|
format-icons = [ "" "" "" "" "" "" ];
|
||||||
|
rotate = 270;
|
||||||
|
states = {
|
||||||
|
critical = 15;
|
||||||
|
good = 95;
|
||||||
|
warning = 30;
|
||||||
|
};
|
||||||
|
tooltip-format = "{timeTo} {capacity} % | {power} W";
|
||||||
|
};
|
||||||
|
bluetooth = {
|
||||||
|
format-connected = "<b></b>";
|
||||||
|
format-disabled = "";
|
||||||
|
format-off = "";
|
||||||
|
format-on = "";
|
||||||
|
on-click = "rofi-bluetooth -config ~/.config/rofi/menu.d/network.rasi -i";
|
||||||
|
tooltip-format = ''
|
||||||
|
{controller_alias} {controller_address}
|
||||||
|
|
||||||
|
{num_connections} connected'';
|
||||||
|
tooltip-format-connected = ''
|
||||||
|
{controller_alias} {controller_address}
|
||||||
|
|
||||||
|
{num_connections} connected
|
||||||
|
|
||||||
|
{device_enumerate}'';
|
||||||
|
tooltip-format-enumerate-connected = "{device_alias} {device_address}";
|
||||||
|
tooltip-format-enumerate-connected-battery =
|
||||||
|
"{device_alias} {device_address} {device_battery_percentage}%";
|
||||||
|
};
|
||||||
|
"bluetooth#status" = {
|
||||||
|
format-connected = "<b>{num_connections}</b>";
|
||||||
|
format-connected-battery =
|
||||||
|
"<small><b>{device_battery_percentage}%</b></small>";
|
||||||
|
format-disabled = "";
|
||||||
|
format-off = "";
|
||||||
|
format-on = "";
|
||||||
|
on-click = "rofi-bluetooth -config ~/.config/rofi/menu.d/network.rasi -i";
|
||||||
|
tooltip-format = ''
|
||||||
|
{controller_alias} {controller_address}
|
||||||
|
|
||||||
|
{num_connections} connected'';
|
||||||
|
tooltip-format-connected = ''
|
||||||
|
{controller_alias} {controller_address}
|
||||||
|
|
||||||
|
{num_connections} connected
|
||||||
|
|
||||||
|
{device_enumerate}'';
|
||||||
|
tooltip-format-enumerate-connected = "{device_alias} {device_address}";
|
||||||
|
tooltip-format-enumerate-connected-battery =
|
||||||
|
"{device_alias} {device_address} {device_battery_percentage}%";
|
||||||
|
};
|
||||||
|
clock = {
|
||||||
|
calendar = {
|
||||||
|
format = { today = "<span color='#a6e3a1'><b><u>{}</u></b></span>"; };
|
||||||
|
mode = "month";
|
||||||
|
mode-mon-col = 3;
|
||||||
|
on-click-right = "mode";
|
||||||
|
on-scroll = 1;
|
||||||
|
weeks-pos = "right";
|
||||||
|
};
|
||||||
|
format = ''
|
||||||
|
{:%H
|
||||||
|
%M}'';
|
||||||
|
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||||
|
};
|
||||||
|
cpu = {
|
||||||
|
format = "<b>{usage}</b>";
|
||||||
|
on-click = "foot btop";
|
||||||
|
};
|
||||||
|
"custom/colorpicker" = {
|
||||||
|
exec = "colorpicker -j";
|
||||||
|
format = "{}";
|
||||||
|
interval = "once";
|
||||||
|
on-click = "sleep 1 && colorpicker";
|
||||||
|
return-type = "json";
|
||||||
|
signal = 1;
|
||||||
|
};
|
||||||
|
"custom/cpu-icon" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/cputemp" = {
|
||||||
|
exec = "${cputemp}/bin/cputemp";
|
||||||
|
format = "{}";
|
||||||
|
interval = 10;
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
"custom/dmark" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/github" = {
|
||||||
|
exec = "$HOME/.config/waybar/bin/github.sh";
|
||||||
|
format = "{}";
|
||||||
|
interval = 3600;
|
||||||
|
on-click =
|
||||||
|
"xdg-open https://github.com/notifications;pkill -RTMIN+9 waybar";
|
||||||
|
return-type = "json";
|
||||||
|
signal = 9;
|
||||||
|
};
|
||||||
|
"custom/hotspot" = {
|
||||||
|
exec = "~/.config/waybar/bin/hotspot";
|
||||||
|
format = "{} ";
|
||||||
|
interval = 5;
|
||||||
|
on-click = "hash wihotspot && wihotspot";
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
"custom/hyprkill" = {
|
||||||
|
exec = ''
|
||||||
|
echo '
|
||||||
|
Kill clients using hyrpctl kill'
|
||||||
|
'';
|
||||||
|
format = "{}";
|
||||||
|
interval = "once";
|
||||||
|
on-click = "sleep 1 && hyprctl kill";
|
||||||
|
};
|
||||||
|
"custom/hyprshade" = {
|
||||||
|
exec = "toggle-hyprshade status";
|
||||||
|
format = "{}";
|
||||||
|
on-click = "toggle-hyprshade";
|
||||||
|
return-type = "json";
|
||||||
|
signal = 11;
|
||||||
|
tooltip = true;
|
||||||
|
};
|
||||||
|
"custom/mark" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"custom/notifications" = {
|
||||||
|
exec = "${cycle-notifications}/bin/cycle-notifications";
|
||||||
|
format = "<b>{}</b> ";
|
||||||
|
interval = "once";
|
||||||
|
on-click = "swaync-client -t";
|
||||||
|
on-click-right = "~/scratch/waybar/cycle-notifications toggle";
|
||||||
|
return-type = "json";
|
||||||
|
signal = 2;
|
||||||
|
};
|
||||||
|
"custom/recorder" = {
|
||||||
|
exec = "echo ''";
|
||||||
|
exec-if = "pgrep 'wl-screenrec'";
|
||||||
|
format = "{}";
|
||||||
|
interval = "once";
|
||||||
|
on-click = "recorder";
|
||||||
|
signal = 4;
|
||||||
|
tooltip = "false";
|
||||||
|
};
|
||||||
|
"custom/updates" = {
|
||||||
|
exec = "~/.config/waybar/bin/updatecheck";
|
||||||
|
exec-if = "exit 0";
|
||||||
|
format = "{}";
|
||||||
|
interval = 10800;
|
||||||
|
return-type = "json";
|
||||||
|
signal = 8;
|
||||||
|
};
|
||||||
|
"custom/vpn" = {
|
||||||
|
exec = "~/.config/waybar/bin/vpn";
|
||||||
|
format = "{} ";
|
||||||
|
interval = 5;
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
"custom/weather" = {
|
||||||
|
exec = ''
|
||||||
|
wttrbar --custom-indicator '{ICON}
|
||||||
|
<b>{temp_C}</b>' --location noida
|
||||||
|
'';
|
||||||
|
format = "{}";
|
||||||
|
interval = 3600;
|
||||||
|
return-type = "json";
|
||||||
|
tooltip = true;
|
||||||
|
};
|
||||||
|
disk = {
|
||||||
|
format = ''
|
||||||
|
<b>
|
||||||
|
{percentage_used}</b>
|
||||||
|
'';
|
||||||
|
interval = 600;
|
||||||
|
path = "/";
|
||||||
|
};
|
||||||
|
"group/audio" = {
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = [ "pulseaudio" "pulseaudio#mic" "pulseaudio/slider" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/bluetooth" = {
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = true;
|
||||||
|
};
|
||||||
|
modules = [ "bluetooth" "bluetooth#status" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/brightness" = {
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
"backlight"
|
||||||
|
"backlight/slider"
|
||||||
|
];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/cnoti" = {
|
||||||
|
modules = [ "custom/github" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/connection" = {
|
||||||
|
modules =
|
||||||
|
[ "custom/vpn" "custom/hotspot" "group/network" "group/bluetooth" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/gcpu" = {
|
||||||
|
modules = [ "custom/cpu-icon" "custom/cputemp" "cpu" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/info" = {
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = [ "custom/dmark" "group/gcpu" "memory" "disk" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/network" = {
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = true;
|
||||||
|
};
|
||||||
|
modules = [ "network" "network#speed" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/power" = {
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = false;
|
||||||
|
};
|
||||||
|
modules = [ "battery" "power-profiles-daemon" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/sound" = {
|
||||||
|
modules = [ "group/audio" "custom/notifications" ];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/together" = {
|
||||||
|
modules = [
|
||||||
|
"group/utils"
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"group/utils" = {
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 500;
|
||||||
|
transition-left-to-right = true;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
"custom/mark"
|
||||||
|
# "custom/weather"
|
||||||
|
# "custom/colorpicker"
|
||||||
|
# "custom/hyprshade"
|
||||||
|
"idle_inhibitor"
|
||||||
|
"custom/hyprkill"
|
||||||
|
];
|
||||||
|
orientation = "inherit";
|
||||||
|
};
|
||||||
|
"hyprland/submap" = {
|
||||||
|
format = "<b></b>";
|
||||||
|
max-length = 8;
|
||||||
|
tooltip = true;
|
||||||
|
};
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
all-outputs = true;
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
"1" = "१";
|
||||||
|
"10" = "०";
|
||||||
|
"2" = "२";
|
||||||
|
"3" = "३";
|
||||||
|
"4" = "४";
|
||||||
|
"5" = "५";
|
||||||
|
"6" = "६";
|
||||||
|
"7" = "७";
|
||||||
|
"8" = "८";
|
||||||
|
"9" = "९";
|
||||||
|
};
|
||||||
|
on-click = "activate";
|
||||||
|
};
|
||||||
|
idle_inhibitor = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
activated = "";
|
||||||
|
deactivated = "";
|
||||||
|
};
|
||||||
|
tooltip-format-activated = "Idle Inhibitor is active";
|
||||||
|
tooltip-format-deactivated = "Idle Inhibitor is not active";
|
||||||
|
};
|
||||||
|
memory = {
|
||||||
|
format = ''
|
||||||
|
<b>
|
||||||
|
{:2}</b>'';
|
||||||
|
};
|
||||||
|
network = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-disconnected = "";
|
||||||
|
format-ethernet = "";
|
||||||
|
format-icons = {
|
||||||
|
disconnected = [ "" ];
|
||||||
|
ethernet = [ "" ];
|
||||||
|
wifi = [ "" ];
|
||||||
|
};
|
||||||
|
format-linked = "";
|
||||||
|
format-wifi = "";
|
||||||
|
on-click =
|
||||||
|
"pgrep -x rofi &>/dev/null && notify-send rofi || networkmanager_dmenu";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"network#speed" = {
|
||||||
|
format = " {bandwidthDownBits} ";
|
||||||
|
interval = 5;
|
||||||
|
on-click =
|
||||||
|
"pgrep -x rofi &>/dev/null && notify-send rofi || networkmanager_dmenu";
|
||||||
|
rotate = 90;
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = "{ipaddr}";
|
||||||
|
tooltip-format-disconnected = "Not Connected to any type of Network";
|
||||||
|
tooltip-format-ethernet = ''
|
||||||
|
{ifname}
|
||||||
|
{ipaddr} | {frequency} MHz{icon} '';
|
||||||
|
tooltip-format-wifi = ''
|
||||||
|
{essid} ({signalStrength}%)
|
||||||
|
{ipaddr} | {frequency} MHz{icon} '';
|
||||||
|
};
|
||||||
|
"niri/workspaces" = {
|
||||||
|
all-outputs = true;
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
"1" = "१";
|
||||||
|
"10" = "०";
|
||||||
|
"2" = "२";
|
||||||
|
"3" = "३";
|
||||||
|
"4" = "४";
|
||||||
|
"5" = "५";
|
||||||
|
"6" = "६";
|
||||||
|
"7" = "७";
|
||||||
|
"8" = "८";
|
||||||
|
"9" = "९";
|
||||||
|
};
|
||||||
|
on-click = "activate";
|
||||||
|
};
|
||||||
|
position = "right";
|
||||||
|
power-profiles-daemon = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
balanced = "<span><small> </small></span>";
|
||||||
|
default = "";
|
||||||
|
performance = "<span color='#B37F34'><small></small></span>";
|
||||||
|
power-saver = "<span color='#a6e3a1'><small></small></span>";
|
||||||
|
};
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-format = ''
|
||||||
|
Power profile: {profile}
|
||||||
|
Driver: {driver}'';
|
||||||
|
};
|
||||||
|
privacy = {
|
||||||
|
icon-size = 14;
|
||||||
|
icon-spacing = 4;
|
||||||
|
modules = [{
|
||||||
|
tooltip = true;
|
||||||
|
tooltip-icon-size = 24;
|
||||||
|
type = "screenshare";
|
||||||
|
}];
|
||||||
|
orientation = "vertical";
|
||||||
|
transition-duration = 250;
|
||||||
|
};
|
||||||
|
pulseaudio = {
|
||||||
|
format = "{icon}";
|
||||||
|
format-bluetooth = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
car = " ";
|
||||||
|
default = [ "" "" "" ];
|
||||||
|
handsfree = "";
|
||||||
|
headphones = "";
|
||||||
|
headset = "";
|
||||||
|
phone = "";
|
||||||
|
portable = "";
|
||||||
|
};
|
||||||
|
format-muted = "";
|
||||||
|
on-click = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||||
|
on-click-right = "volume mute";
|
||||||
|
on-scroll-down = "pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
||||||
|
on-scroll-up = "pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
||||||
|
smooth-scrolling-threshold = 1;
|
||||||
|
tooltip-format = "{volume}% {icon} | {desc}";
|
||||||
|
};
|
||||||
|
"pulseaudio#mic" = {
|
||||||
|
format = "{format_source}";
|
||||||
|
format-source = "";
|
||||||
|
format-source-muted = "";
|
||||||
|
on-click = "pactl set-source-mute 0 toggle";
|
||||||
|
on-scroll-down = "pactl set-source-volume 0 -1%";
|
||||||
|
on-scroll-up = "pactl set-source-volume 0 +1%";
|
||||||
|
tooltip-format = "{volume}% {format_source} ";
|
||||||
|
};
|
||||||
|
"pulseaudio/slider" = {
|
||||||
|
max = 140;
|
||||||
|
min = 0;
|
||||||
|
orientation = "vertical";
|
||||||
|
};
|
||||||
|
reload_style_on_change = true;
|
||||||
|
tray = {
|
||||||
|
icon-size = 18;
|
||||||
|
spacing = 10;
|
||||||
|
};
|
||||||
|
}
|
||||||
13
modules/nixos/niri.nix
Normal file
13
modules/nixos/niri.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.sydnix.niri;
|
||||||
|
in {
|
||||||
|
options.sydnix.niri.enable =
|
||||||
|
lib.mkEnableOption "Niri";
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.niri.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
32
modules/nixos/steam.nix
Normal file
32
modules/nixos/steam.nix
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{ config, pkgs, lib, inputs, system, ... }:
|
||||||
|
|
||||||
|
let cfg = config.sydnix.steam;
|
||||||
|
in {
|
||||||
|
options.sydnix.steam = {
|
||||||
|
enable = lib.mkEnableOption "Steam";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
dedicatedServer.openFirewall = true;
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
mono gtk3 gtk3-x11 libgdiplus zlib
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.gamemode = {
|
||||||
|
enable = true;
|
||||||
|
enableRenice = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# This fixes the "glXChooseVisual failed" bug, see:
|
||||||
|
# https://github.com/NixOS/nixpkgs/issues/47932.
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
35
modules/nixos/stylix.nix
Normal file
35
modules/nixos/stylix.nix
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.sydnix.stylix;
|
||||||
|
in {
|
||||||
|
options.sydnix.stylix.enable =
|
||||||
|
lib.mkEnableOption "Stylix";
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/kanagawa.yaml";
|
||||||
|
image = ./stylix/kanagawa.jpg;
|
||||||
|
# fonts = {
|
||||||
|
# serif = {
|
||||||
|
# package = pkgs.ibm-plex;
|
||||||
|
# name = "IBM Plex";
|
||||||
|
# };
|
||||||
|
# sansSerif = {
|
||||||
|
# package = pkgs.dejavu_fonts;
|
||||||
|
# name = "DejaVu Sans";
|
||||||
|
# };
|
||||||
|
# monospace = {
|
||||||
|
# package = pkgs.nerd-fonts.victor-mono;
|
||||||
|
# name = "VictorMono";
|
||||||
|
# };
|
||||||
|
# emoji = {
|
||||||
|
# package = pkgs.twemoji-color-font;
|
||||||
|
# name = "Noto Color Emoji";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
BIN
modules/nixos/stylix/kanagawa.jpg
Normal file
BIN
modules/nixos/stylix/kanagawa.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.8 MiB |
@@ -9,6 +9,7 @@ let users = builtins.readDir ../users;
|
|||||||
|
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
inputs.impermanence.homeManagerModules.impermanence
|
inputs.impermanence.homeManagerModules.impermanence
|
||||||
|
inputs.nixcord.homeManagerModules.nixcord
|
||||||
|
|
||||||
# Directory name should always match username.
|
# Directory name should always match username.
|
||||||
({ ... }: { home.username = username; })
|
({ ... }: { home.username = username; })
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ let
|
|||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
inputs.impermanence.nixosModules.impermanence
|
inputs.impermanence.nixosModules.impermanence
|
||||||
inputs.copyparty.nixosModules.default
|
inputs.copyparty.nixosModules.default
|
||||||
|
inputs.niri.nixosModules.niri
|
||||||
|
inputs.stylix.nixosModules.stylix
|
||||||
|
|
||||||
# Directory name should always match host name.
|
# Directory name should always match host name.
|
||||||
({ ... }: { networking.hostName = hostName; })
|
({ ... }: { networking.hostName = hostName; })
|
||||||
|
|||||||
1
result
1
result
@@ -1 +0,0 @@
|
|||||||
/nix/store/pg4zdcr9ylpydl15k3h78crp84gifzvq-nixos-minimal-25.05.20250202.8532db2-x86_64-linux.iso
|
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
homeConfiguration = { config, lib, pkgs, ... }: {
|
homeConfiguration = { config, lib, pkgs, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
# ./programs.nix
|
|
||||||
./files.nix
|
./files.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -22,8 +21,8 @@
|
|||||||
xdg.enable = true;
|
xdg.enable = true;
|
||||||
# Not yet in my version of HM.
|
# Not yet in my version of HM.
|
||||||
# xdg.preferXdgDirectories = true;
|
# xdg.preferXdgDirectories = true;
|
||||||
qt.style.name = "breeze-dark";
|
# qt.style.name = "breeze-dark";
|
||||||
qt.style.package = pkgs.libsForQt5.breeze-qt5;
|
# qt.style.package = pkgs.libsForQt5.breeze-qt5;
|
||||||
|
|
||||||
sydnix = {
|
sydnix = {
|
||||||
gpg.enable = true;
|
gpg.enable = true;
|
||||||
@@ -42,7 +41,12 @@
|
|||||||
mpd.enable = true;
|
mpd.enable = true;
|
||||||
nvim.enable = true;
|
nvim.enable = true;
|
||||||
emacs.enable = true;
|
emacs.enable = true;
|
||||||
|
niri.enable = true;
|
||||||
|
waybar.enable = true;
|
||||||
|
discord.enable = true;
|
||||||
|
ghostty.enable = true;
|
||||||
};
|
};
|
||||||
|
steam.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Don't touch!
|
# Don't touch!
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ in lib.mkMerge [
|
|||||||
"Videos"
|
"Videos"
|
||||||
"src" # My projects.
|
"src" # My projects.
|
||||||
"scratch" # My playgrounds.
|
"scratch" # My playgrounds.
|
||||||
|
"git" # Other peoples' projects.
|
||||||
# Should "org" be declared in emacs.nix? I don't think so. I
|
# Should "org" be declared in emacs.nix? I don't think so. I
|
||||||
# conjecture that my org files are extremely valuable with or without
|
# conjecture that my org files are extremely valuable with or without
|
||||||
# Emacs.
|
# Emacs.
|
||||||
@@ -40,27 +41,15 @@ in lib.mkMerge [
|
|||||||
# REVIEW: I think it may be preferable to persist a few individual files
|
# REVIEW: I think it may be preferable to persist a few individual files
|
||||||
# under ~/.ssh, rather than the whole directory.
|
# under ~/.ssh, rather than the whole directory.
|
||||||
".ssh"
|
".ssh"
|
||||||
{
|
# FIXME: This is only temporary. KDE Plasma can be a PITA,
|
||||||
directory = ".local/share/Steam";
|
# unpredictably scattering configuration files all about the file
|
||||||
method = "symlink";
|
# system. Until we switch to Niri, we'll just persist the whole
|
||||||
}
|
# directory. WAIT4NIRI
|
||||||
".passage"
|
# ".config"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
# ~/git — other peoples' code
|
|
||||||
systemd.user.tmpfiles.rules = [
|
|
||||||
"v ${config.home.homeDirectory}/git 755 ${config.home.username} users - -"
|
|
||||||
];
|
|
||||||
|
|
||||||
sydnix.impermanence.directories = [
|
|
||||||
"git/doomemacs"
|
|
||||||
"git/publish-org-roam-ui"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
### Syncthing
|
### Syncthing
|
||||||
|
|
||||||
@@ -79,6 +68,13 @@ in lib.mkMerge [
|
|||||||
];
|
];
|
||||||
ignorePerms = true;
|
ignorePerms = true;
|
||||||
};
|
};
|
||||||
|
"Music" = {
|
||||||
|
path = "~/Music";
|
||||||
|
devices = [
|
||||||
|
"deertopia"
|
||||||
|
];
|
||||||
|
ignorePerms = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user