Compare commits

..

18 commits

Author SHA1 Message Date
b1490ec9a8
small update 2025-07-16 22:15:41 +02:00
c4f6785845
temperance: configuration: disable uwsm and greetd 2025-07-13 22:51:33 +02:00
6be7300827
temperance: configuration: enable system76-scheduler 2025-07-13 22:51:33 +02:00
253ba3719e
temperance: configuration: switch to linuxPackages_latest 2025-07-13 22:51:29 +02:00
23bdd9c99f
temperance: configuration: cleanup 2025-07-13 22:50:44 +02:00
3a868edf78
niri: config: drop spawn-at-startup of swww-daemon 2025-07-13 22:50:19 +02:00
024e08e1a2
wholefoods: fix image size 2025-07-13 22:49:13 +02:00
d5dfa36b6d
quickshell: add Background module
This allows me to set my background image using
Quickshell. No need for swww or any other wallpaper
daemon :D
2025-07-13 22:48:11 +02:00
a2e77e2498
niri: remove new-swww 2025-07-13 21:15:05 +02:00
7f5c2c7875
brave: fix brave-wrapped name arg 2025-07-13 21:13:04 +02:00
e6eb20be3a
temperance: programs: add various programs
Add:
 - carapace
 - mergiraf
 - starship
 - vivid
2025-07-13 21:12:09 +02:00
b2b50d298f
flake.lock: bump inputs 2025-07-13 13:13:47 +02:00
4492a17574
helix: set colorscheme to gruvbox_dark_hard 2025-07-12 10:38:15 +02:00
23c3b8572e
hermit: configuration: drop zsh 2025-07-11 22:44:54 +02:00
81e4a09f04
users: drop zsh 2025-07-11 22:44:33 +02:00
e84221e414
helix: bump version 2025-07-11 22:43:40 +02:00
f04da35bca
flake.lock: bump inputs 2025-07-11 22:43:28 +02:00
54123d393f
flake.lock: bump inputs 2025-07-11 18:11:01 +02:00
105 changed files with 264 additions and 1792 deletions

710
flake.lock generated
View file

@ -1,60 +1,12 @@
{ {
"nodes": { "nodes": {
"aquamarine": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751740947,
"narHash": "sha256-35040CHH7P3JGmhGVfEb2oJHL/A5mI2IXumhkxrBnao=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "dfc1db15a08c4cd234288f66e1199c653495301f",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"type": "github"
}
},
"crane": { "crane": {
"locked": { "locked": {
"lastModified": 1750266157, "lastModified": 1751562746,
"narHash": "sha256-tL42YoNg9y30u7zAqtoGDNdTyXTi8EALDeCB13FtbQA=", "narHash": "sha256-smpugNIkmDeicNz301Ll1bD7nFOty97T79m4GUMUczA=",
"owner": "ipetkov", "owner": "ipetkov",
"repo": "crane", "repo": "crane",
"rev": "e37c943371b73ed87faf33f7583860f81f1d5a48", "rev": "aed2020fd3dc26e1e857d4107a5a67a33ab6c1fd",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"crane_2": {
"locked": {
"lastModified": 1736032295,
"narHash": "sha256-QNRlMxQTT3rdgsQb3QxljO14kE8xxdDXNJ/4jIm4u3Q=",
"owner": "ipetkov",
"repo": "crane",
"rev": "9fa361afe873c740d5ca10ff526463d5807eab88",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -78,11 +30,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751571582, "lastModified": 1752331782,
"narHash": "sha256-px4+H0VI5H+kzHgfoyAD0haTNiAXhiVgXqCAgAjT16A=", "narHash": "sha256-eRDO93C2dXNVoLbnNECWwGcMErDKVAXNWWy6hFMPoE8=",
"owner": "determinatesystems", "owner": "determinatesystems",
"repo": "determinate", "repo": "determinate",
"rev": "e3f21c62aee2ccd25811be574c09e1de8a57a687", "rev": "33ffc091037908049e9897dc8258efae81709cfd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -94,37 +46,37 @@
"determinate-nixd-aarch64-darwin": { "determinate-nixd-aarch64-darwin": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-+O3K2pZRWkbL0DEh5HyV0+pyAkRmJ0z6NjYTvetrTtk=", "narHash": "sha256-T/kTCi8rrh1r5XMGQBymB4Hnk/KNNGkgtgma6bXXKy0=",
"type": "file", "type": "file",
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.7.0/macOS" "url": "https://install.determinate.systems/determinate-nixd/tag/v3.8.2/macOS"
}, },
"original": { "original": {
"type": "file", "type": "file",
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.7.0/macOS" "url": "https://install.determinate.systems/determinate-nixd/tag/v3.8.2/macOS"
} }
}, },
"determinate-nixd-aarch64-linux": { "determinate-nixd-aarch64-linux": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-r8BSSNXss3EoCUV4gYJwAS18OO7fceWXCL2SPLwls50=", "narHash": "sha256-C+KvOykOIoXCWSsPBM2Hzy1skk2lgiKXQyb9fJdwSdQ=",
"type": "file", "type": "file",
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.7.0/aarch64-linux" "url": "https://install.determinate.systems/determinate-nixd/tag/v3.8.2/aarch64-linux"
}, },
"original": { "original": {
"type": "file", "type": "file",
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.7.0/aarch64-linux" "url": "https://install.determinate.systems/determinate-nixd/tag/v3.8.2/aarch64-linux"
} }
}, },
"determinate-nixd-x86_64-linux": { "determinate-nixd-x86_64-linux": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-hSauxThw5pfDiiqdVeFv3QeL4e3DRI09hFYuGhTKQWU=", "narHash": "sha256-cENobOVn0+FtON9bmr/QoUEpNGEyxW4YpFXkLyBTYDs=",
"type": "file", "type": "file",
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.7.0/x86_64-linux" "url": "https://install.determinate.systems/determinate-nixd/tag/v3.8.2/x86_64-linux"
}, },
"original": { "original": {
"type": "file", "type": "file",
"url": "https://install.determinate.systems/determinate-nixd/tag/v3.7.0/x86_64-linux" "url": "https://install.determinate.systems/determinate-nixd/tag/v3.8.2/x86_64-linux"
} }
}, },
"flake-compat": { "flake-compat": {
@ -144,22 +96,6 @@
} }
}, },
"flake-compat_2": { "flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1747046372,
@ -175,22 +111,6 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat_4": {
"flake": false,
"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": [
@ -220,50 +140,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749398372, "lastModified": 1751413152,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"schizofox",
"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_4": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1735774679,
"narHash": "sha256-soePLBazJk0qQdDVhdbM98vYdssfs3WFedcq+raipRI=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f2f7418ce0ab4a5309a4596161d154cfc877af66",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -299,28 +180,6 @@
} }
}, },
"gitignore": { "gitignore": {
"inputs": {
"nixpkgs": [
"hyprland",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gitignore_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
@ -342,317 +201,6 @@
"type": "github" "type": "github"
} }
}, },
"hercules-ci-effects": {
"inputs": {
"flake-parts": [
"schizofox",
"nixpak",
"flake-parts"
],
"nixpkgs": [
"schizofox",
"nixpak",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733333617,
"narHash": "sha256-nMMQXREGvLOLvUa0ByhYFdaL0Jov0t1wzLbKjr05P2w=",
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"rev": "56f8ea8d502c87cf62444bec4ee04512e8ea24ea",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "hercules-ci-effects",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"schizofox",
"nixpkgs"
]
},
"locked": {
"lastModified": 1734344598,
"narHash": "sha256-wNX3hsScqDdqKWOO87wETUEi7a/QlPVgpC/Lh5rFOuA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "83ecd50915a09dca928971139d3a102377a8d242",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"hyprcursor": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1749155331,
"narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprcursor",
"type": "github"
}
},
"hyprgraphics": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751808145,
"narHash": "sha256-OXgL0XaKMmfX2rRQkt9SkJw+QNfv0jExlySt1D6O72g=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "b841473a0bd4a1a74a0b64f1ec2ab199035c349f",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprgraphics",
"type": "github"
}
},
"hyprland": {
"inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprgraphics": "hyprgraphics",
"hyprland-protocols": "hyprland-protocols",
"hyprland-qtutils": "hyprland-qtutils",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks",
"systems": [
"systems"
],
"xdph": "xdph"
},
"locked": {
"lastModified": 1751904574,
"narHash": "sha256-jXkava/9BRiY2JEVmB68mpkFd+JU3BnNbh2RtRBXfTA=",
"owner": "hyprwm",
"repo": "hyprland",
"rev": "bb958a9e139d6ae90d45fe360287d33e229f971e",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland",
"type": "github"
}
},
"hyprland-protocols": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1749046714,
"narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-qt-support": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprland-qtutils",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"hyprland-qtutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-qtutils",
"systems"
]
},
"locked": {
"lastModified": 1749154592,
"narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=",
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"type": "github"
}
},
"hyprland-qtutils": {
"inputs": {
"hyprland-qt-support": "hyprland-qt-support",
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-qtutils",
"hyprlang",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1750371812,
"narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "b13c7481e37856f322177010bdf75fccacd1adc8",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1750371198,
"narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751888065,
"narHash": "sha256-F2SV9WGqgtRsXIdUrl3sRe0wXlQD+kRRZcSfbepjPJY=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "a8229739cf36d159001cfc203871917b83fdf917",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprutils",
"type": "github"
}
},
"hyprwayland-scanner": {
"inputs": {
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751881472,
"narHash": "sha256-meB0SnXbwIe2trD041MLKEv6R7NZ759QwBcVIhlSBfE=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "8fb426b3e5452fd9169453fd6c10f8c14ca37120",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"type": "github"
}
},
"impermanence": { "impermanence": {
"locked": { "locked": {
"lastModified": 1737831083, "lastModified": 1737831083,
@ -671,7 +219,7 @@
"lanzaboote": { "lanzaboote": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_2",
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts_2",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
@ -680,11 +228,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1751381593, "lastModified": 1752673703,
"narHash": "sha256-js1XwtJpYhvQrrTaVzViybpztkHJVZ63aXOlFAcTENM=", "narHash": "sha256-9Cc0YqL9ZUpaybJsrRJfXex91QlPmQNqpTLgw/KvJGA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "lanzaboote", "repo": "lanzaboote",
"rev": "f4eb75540307c2b33521322c04b7fea74e48a66f", "rev": "5a776450d904b7ccd377c2a759703152b2553e98",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -702,44 +250,18 @@
"nixpkgs-regression": "nixpkgs-regression" "nixpkgs-regression": "nixpkgs-regression"
}, },
"locked": { "locked": {
"lastModified": 1751568315, "lastModified": 1752329813,
"narHash": "sha256-52rbPxatlf/8BA3plVc87W8kyXdBr6iab+nQHe4QeJg=", "narHash": "sha256-+PLMYzOLXmYtGUcUxIbJZpadAV/gO73EAhISc1kgvJM=",
"rev": "81672fee2a84385d052c20982307bbd86fd031c4", "rev": "04045d5add7915ea9209a09833fae1aa3a3a9be1",
"revCount": 21102, "revCount": 21488,
"type": "tarball", "type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.7.0/0197d1ca-253f-75ae-9f36-38c46bd107f4/source.tar.gz" "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.8.2/0197ff19-42da-7beb-b8cf-902b39687ccf/source.tar.gz"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/nix-src/%2A" "url": "https://flakehub.com/f/DeterminateSystems/nix-src/%2A"
} }
}, },
"nixpak": {
"inputs": {
"flake-parts": [
"schizofox",
"flake-parts"
],
"hercules-ci-effects": "hercules-ci-effects",
"nixpkgs": [
"schizofox",
"nixpkgs"
]
},
"locked": {
"lastModified": 1733970147,
"narHash": "sha256-63SguTBGenmU4jx7j44PVXlZMsWsALjaNPpRg9xlljs=",
"owner": "nixpak",
"repo": "nixpak",
"rev": "fbbb572e595decf5e749d7fbeb27e1ff09484ff8",
"type": "github"
},
"original": {
"owner": "nixpak",
"repo": "nixpak",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1747179050, "lastModified": 1747179050,
@ -770,18 +292,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-lib": {
"locked": {
"lastModified": 1735774519,
"narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
}
},
"nixpkgs-regression": { "nixpkgs-regression": {
"locked": { "locked": {
"lastModified": 1643052045, "lastModified": 1643052045,
@ -801,62 +311,23 @@
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 315532800, "lastModified": 315532800,
"narHash": "sha256-5EzvWAMTAf6m6Ynab7EnYz9OfJO2wHCb/yhtP8ACQQQ=", "narHash": "sha256-X5WIcIkFxPhw7mS219TbEOgrugbMx/2cin09OlWobT8=",
"rev": "9b008d60392981ad674e04016d25619281550a9d", "rev": "dab3a6e781554f965bde3def0aa2fda4eb8f1708",
"type": "tarball", "type": "tarball",
"url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre826760.9b008d603929/nixexprs.tar.xz" "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre830668.dab3a6e78155/nixexprs.tar.xz"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
"url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"
} }
}, },
"nixpkgs_3": {
"locked": {
"lastModified": 1736429638,
"narHash": "sha256-dDWqQqSgMQXw5eFtcyoVijv7HbYJZOIo+jWQdJtsxn4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f81eabd5dd7c9213516fa2d3fc1d108a751340d4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable-small",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [
"hyprland",
"nixpkgs"
]
},
"locked": {
"lastModified": 1750779888,
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"pre-commit-hooks-nix": { "pre-commit-hooks-nix": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": [
"lanzaboote", "lanzaboote",
"flake-compat" "flake-compat"
], ],
"gitignore": "gitignore_2", "gitignore": "gitignore",
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
"nixpkgs" "nixpkgs"
@ -879,13 +350,11 @@
"root": { "root": {
"inputs": { "inputs": {
"determinate": "determinate", "determinate": "determinate",
"hyprland": "hyprland",
"impermanence": "impermanence", "impermanence": "impermanence",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay_2", "rust-overlay": "rust-overlay_2",
"schizofox": "schizofox", "systems": "systems",
"systems": "systems_2",
"watt": "watt" "watt": "watt"
} }
}, },
@ -897,11 +366,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751165203, "lastModified": 1751769931,
"narHash": "sha256-3QhlpAk2yn+ExwvRLtaixWsVW1q3OX3KXXe0l8VMLl4=", "narHash": "sha256-QR2Rp/41NkA5YxcpvZEKD1S2QE1Pb9U415aK8M/4tJc=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "90f547b90e73d3c6025e66c5b742d6db51c418c3", "rev": "3ac4f630e375177ea8317e22f5c804156de177e8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -917,11 +386,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1751856221, "lastModified": 1752633862,
"narHash": "sha256-/QE1eV0ckFvgRMcKjZqgdJDoXFNwSMepwRoBjaw2MCk=", "narHash": "sha256-Bj7ozT1+5P7NmvDcuAXJvj56txcXuAhk3Vd9FdWFQzk=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "34cae4b56929c5b340e1c5b10d9a98a425b2a51e", "rev": "8668ca94858206ac3db0860a9dec471de0d995f8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -930,53 +399,6 @@
"type": "github" "type": "github"
} }
}, },
"schizofox": {
"inputs": {
"flake-compat": "flake-compat_4",
"flake-parts": "flake-parts_3",
"home-manager": "home-manager",
"nixpak": "nixpak",
"nixpkgs": "nixpkgs_3",
"searx-randomizer": "searx-randomizer",
"systems": "systems"
},
"locked": {
"lastModified": 1744892989,
"narHash": "sha256-SwJiKlZSYSQhXQR4xxaItURuD+NTRbUxtoLNQFzgvUI=",
"owner": "schizofox",
"repo": "schizofox",
"rev": "e2702bd7a09fc9d6089901adb4e7ae4a9aeef5ef",
"type": "github"
},
"original": {
"owner": "schizofox",
"repo": "schizofox",
"type": "github"
}
},
"searx-randomizer": {
"inputs": {
"crane": "crane_2",
"flake-parts": "flake-parts_4",
"nixpkgs": [
"schizofox",
"nixpkgs"
]
},
"locked": {
"lastModified": 1736054833,
"narHash": "sha256-fSvHee00LQpndvJ0N4ZahRuoAQd06g8ecdUzfNPLvLk=",
"owner": "schizofox",
"repo": "searx-randomizer",
"rev": "63d6fed21ae5a6608bac71665887a432781161c6",
"type": "github"
},
"original": {
"owner": "schizofox",
"repo": "searx-randomizer",
"type": "github"
}
},
"systems": { "systems": {
"locked": { "locked": {
"lastModified": 1689347949, "lastModified": 1689347949,
@ -992,21 +414,6 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"watt": { "watt": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -1026,47 +433,6 @@
"repo": "watt", "repo": "watt",
"type": "github" "type": "github"
} }
},
"xdph": {
"inputs": {
"hyprland-protocols": [
"hyprland",
"hyprland-protocols"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1751300244,
"narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -48,8 +48,6 @@
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
schizofox.url = "github:schizofox/schizofox";
watt = { watt = {
url = "github:notashelf/watt"; url = "github:notashelf/watt";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@ -61,12 +59,6 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
hyprland = {
url = "github:hyprwm/hyprland";
inputs.nixpkgs.follows = "nixpkgs";
inputs.systems.follows = "systems";
};
# The things rust is making me do... # The things rust is making me do...
rust-overlay = { rust-overlay = {
url = "github:oxalica/rust-overlay"; url = "github:oxalica/rust-overlay";

View file

@ -42,6 +42,10 @@ inputs: let
map toString (listFilesRecursive ../modules) map toString (listFilesRecursive ../modules)
|> filter (hasSuffix "module.nix") |> filter (hasSuffix "module.nix")
) )
(
map toString (listFilesRecursive ../modules)
|> filter (hasSuffix ".mod.nix")
)
] ]
|> flatten |> flatten
) )

View file

@ -16,10 +16,6 @@
}; };
programs = { programs = {
nix-ld.enable = false; nix-ld.enable = false;
zsh = {
enable = true;
enableBashCompletion = true;
};
gnupg.agent = { gnupg.agent = {
enable = true; enable = true;
pinentryPackage = pkgs.pinentry-qt; pinentryPackage = pkgs.pinentry-qt;

View file

@ -3,24 +3,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: let }: {
inherit
(
pkgs.callPackage ./kernel/xanmod.nix {
inherit lib;
inherit
(pkgs)
stdenv
fetchFromGitHub
kernelPatches
buildLinux
variant
;
}
)
xanmod_blox
;
in {
# Time Zone # Time Zone
time.timeZone = "Europe/Zurich"; time.timeZone = "Europe/Zurich";
# Select internationalisation properties. # Select internationalisation properties.
@ -29,13 +12,18 @@ in {
security.polkit.enable = true; security.polkit.enable = true;
# boot.kernelPackages = pkgs.linuxPackagesFor xanmod_blox; # boot.kernelPackages = pkgs.linuxPackagesFor xanmod_blox;
boot.kernelPackages = pkgs.linuxPackages_xanmod_latest; boot.kernelPackages = pkgs.linuxPackages_latest;
programs.nix-ld.enable = true; programs.nix-ld.enable = true;
services = { services = {
fstrim.enable = lib.mkDefault true; fstrim.enable = lib.mkDefault true;
udisks2.enable = true; udisks2.enable = true;
system76-scheduler = {
enable = true;
};
gnome.gnome-keyring.enable = true;
}; };
security.pam.services.login.enableGnomeKeyring = true;
environment.systemPackages = [pkgs.seahorse];
meta = { meta = {
mainUser.gitSigningKey = ""; mainUser.gitSigningKey = "";
}; };
@ -63,7 +51,6 @@ in {
}; };
}; };
desktops.niri.enable = true; desktops.niri.enable = true;
desktops.hyprland.enable = true;
theming = { theming = {
gtk.enable = true; gtk.enable = true;
@ -79,8 +66,8 @@ in {
enable = true; enable = true;
musicDirectory = "/home/${config.modules.other.system.username}/cloud/media/Music"; musicDirectory = "/home/${config.modules.other.system.username}/cloud/media/Music";
}; };
uwsm.enable = true; # uwsm.enable = true;
greetd.enable = true; # greetd.enable = true;
}; };
other = { other = {
system = { system = {

View file

@ -6,10 +6,13 @@
anki anki
asciinema asciinema
beets beets
bitwarden-cli
bitwarden-desktop
bubblewrap bubblewrap
cachix cachix
calc calc
calibre calibre
carapace
comma comma
digikam digikam
difftastic difftastic
@ -37,6 +40,7 @@
librewolf librewolf
libtool libtool
logiops logiops
mergiraf
mpv mpv
nautilus nautilus
nicotine-plus nicotine-plus
@ -58,15 +62,17 @@
ruby_3_2 ruby_3_2
signal-desktop signal-desktop
spotify spotify
strawberry starship
telegram-desktop telegram-desktop
texliveFull texliveFull
thunderbird thunderbird
topiary
tor-browser tor-browser
trash-cli trash-cli
tutanota-desktop tutanota-desktop
typst typst
vesktop vesktop
vivid
walker walker
wayneko wayneko
wireguard-tools wireguard-tools
@ -76,6 +82,13 @@
zathura zathura
zotero zotero
zoxide zoxide
# coreutils-full # All of the GNU coreutils
curl # I sometimes need to curl stuff
git # take a guess
wget
unzip # zipping and unzipping stuff
zip
util-linux
; ;
inherit inherit
(pkgs.wineWowPackages) (pkgs.wineWowPackages)

View file

@ -1,7 +0,0 @@
{lib, ...}: let
inherit (lib.options) mkEnableOption;
in {
options.modules.system.networking = {
nftbles.enable = mkEnableOption "Nftables firewall";
};
}

View file

@ -5,35 +5,11 @@
}: let }: let
inherit (builtins) elemAt; inherit (builtins) elemAt;
inherit (lib.options) mkOption mkEnableOption; inherit (lib.options) mkOption mkEnableOption;
inherit (lib.types) enum listOf str nullOr bool oneOf; inherit (lib.types) enum listOf str nullOr bool;
inherit (lib.lists) elem; inherit (lib.lists) elem;
inherit (config.modules.system) systemType; inherit (config.modules.system) systemType;
in { in {
imports = [
# configuration options for nixos activation scripts
# ./activation.nix
# boot/impermanence mounts
# ./boot.nix
# ./impermanence.nix
# network and overall hardening
./networking
# ./security.nix
# ./encryption.nix
# filesystems
# ./fs.nix
# package and program related options
# ./services
./programs
# monitor configuration
./monitors.nix
];
options.modules.system = { options.modules.system = {
mainUser = mkOption { mainUser = mkOption {
type = enum config.modules.system.users; type = enum config.modules.system.users;

View file

@ -1,8 +0,0 @@
_: {
imports = [
./system.nix
./xdg.nix
./git.nix
./users.nix
];
}

View file

@ -55,10 +55,6 @@ in {
}; };
}; };
config = { config = {
programs.zsh = {
enable = true;
enableBashCompletion = true;
};
users = { users = {
mutableUsers = true; mutableUsers = true;
users = { users = {

View file

@ -1,7 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
}

View file

@ -1,22 +0,0 @@
{pkgs, ...}: {
imports = [
./hardware.nix
./wayland.nix
# ./media.nix
];
# These are some standard packages I want to have installed on every system, regardless of type or use case.
environment.systemPackages = builtins.attrValues {
inherit
(pkgs)
calc # Calculator device
# coreutils-full # All of the GNU coreutils
curl # I sometimes need to curl stuff
git # take a guess
inetutils # internet stuff I need/want on every system.
wget
unzip # zipping and unzipping stuff
zip
util-linux
;
};
}

View file

@ -1,15 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
# These are packages I only need in wayland environments, nowhere else.
environment.systemPackages = builtins.attrValues {
inherit
(pkgs)
wl-clipboard
grimblast
;
};
}

View file

@ -1,6 +0,0 @@
_: {
imports = [
./nh.nix
# ./beets.nix
];
}

View file

@ -0,0 +1,7 @@
_: {
programs.zoxide = {
enable = true;
enableFishIntegration = true;
enableBashIntegration = true;
};
}

View file

@ -20,7 +20,7 @@
"--use-angle=vulkan" "--use-angle=vulkan"
]; ];
brave-wrapped = pkgs.symlinkJoin { brave-wrapped = pkgs.symlinkJoin {
name = "fish"; name = "brave";
paths = [ paths = [
( (
pkgs.brave.override {vulkanSupport = true;} pkgs.brave.override {vulkanSupport = true;}
@ -201,7 +201,9 @@ in {
# NoScript # NoScript
"doojmbjmlfjjnbmnoijecmcbfeoakpjm" "doojmbjmlfjjnbmnoijecmcbfeoakpjm"
# KeePassXC-Browser # KeePassXC-Browser
"oboonakemofpalcgghocfoadofidjkkk" # "oboonakemofpalcgghocfoadofidjkkk"
# Bitwarden Password Manager
"nngceckbapebfimnlniiiahkandclblb"
# Catppuccin Mocha # Catppuccin Mocha
"bkkmolkhemgaeaeggcmfbghljjjoofoh" "bkkmolkhemgaeaeggcmfbghljjjoofoh"
# Dark Reader # Dark Reader

View file

@ -1,10 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
environment.systemPackages = builtins.attrValues {
inherit (pkgs) fuzzel;
};
}

View file

@ -20,55 +20,44 @@
else "none"; else "none";
ghostty-settings = { ghostty-settings = {
font-family = "JetBrainsMonoNerdFont";
font-family-bold = "JetBrainsMonoNerdFontBold";
font-family-italic = "JetBrainsMonoNerdFontItalic";
font-family-bold-italic = "JetBrainsMonoNerdFontBoldItalic";
font-size = 14; font-size = 14;
font-family = "JetBrainsMonoNerdFont";
# font-style-bold = JetBrainsMono NF Regular;
# font-style-bold-italic = JetBrainsMono NF Italic;
window-padding-x = 8; app-notifications = "no-clipboard-copy";
window-padding-y = 8; background-opacity = 0.75;
background-opacity = 0.85; bold-is-bright = "true";
confirm-close-surface = "false";
cursor-style-blink = "false";
gtk-single-instance = "true"; gtk-single-instance = "true";
gtk-tabs-location = "bottom"; gtk-tabs-location = "bottom";
gtk-wide-tabs = false; gtk-wide-tabs = false;
window-padding-balance = true;
window-decoration = "none";
theme = slug;
resize-overlay-duration = "0s";
cursor-style-blink = "false";
confirm-close-surface = "false";
mouse-hide-while-typing = "true"; mouse-hide-while-typing = "true";
resize-overlay-duration = "0s";
window-theme = "ghostty";
bold-is-bright = "true";
term = "xterm-256color";
app-notifications = "no-clipboard-copy";
shell-integration-features = "cursor,sudo,no-title"; shell-integration-features = "cursor,sudo,no-title";
# window-padding-y = 10; term = "xterm-256color";
theme = slug;
window-decoration = "none";
window-padding-balance = true;
window-padding-x = 8;
window-padding-y = 8;
window-theme = "ghostty";
cursor-style = "block"; cursor-style = "block";
# Whether to automatically copy selected text to the clipboard. true will prefer to copy to the selection clipboard, otherwise it will copy to the system clipboard. # Whether to automatically copy selected text to the clipboard. true will prefer to copy to the selection clipboard, otherwise it will copy to the system clipboard.
# The value clipboard will always copy text to the selection clipboard as well as the system clipboard. # The value clipboard will always copy text to the selection clipboard as well as the system clipboard.
copy-on-select = "clipboard"; copy-on-select = "clipboard";
inherit shell-integration; inherit shell-integration;
command = getExe package; command = getExe package;
}; };
settingsFile = pkgs.writeText "config" <| concatStringsSep "\n" <| mapAttrsToList (name: value: "${name} = ${toString value}") ghostty-settings; settingsFile = pkgs.writeText "config" <| concatStringsSep "\n" <| mapAttrsToList (name: value: "${name} = ${toString value}") ghostty-settings;
ghostty = pkgs.ghostty.overrideAttrs (_: {
preBuild = ''
shopt -s globstar
sed -i 's/^const xev = @import("xev");$/const xev = @import("xev").Epoll;/' **/*.zig
shopt -u globstar
'';
});
ghostty-wrapped = pkgs.symlinkJoin { ghostty-wrapped = pkgs.symlinkJoin {
name = "ghostty-wrapped"; name = "ghostty-wrapped";
paths = [ghostty]; paths = [pkgs.ghostty];
nativeBuildInputs = [pkgs.makeWrapper]; nativeBuildInputs = [pkgs.makeWrapper];
postBuild = '' postBuild = ''
wrapProgram $out/bin/ghostty --add-flags "--config-file=${settingsFile}" wrapProgram $out/bin/ghostty --add-flags "--config-file=${settingsFile}"

View file

@ -1,9 +0,0 @@
_: {
imports = [
./foot.nix
./steam.nix
# ./schizofox.nix
./minecraft.nix
./miniflux.nix
];
}

View file

@ -1,117 +0,0 @@
{
config,
inputs,
lib,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption;
inherit (builtins) listToAttrs;
cfg = config.modules.programs.schizofox;
in {
options.modules.programs.schizofox.enable = mkEnableOption "Schizofox browser";
imports = [
inputs.schizofox.nixosModules.default
];
config = mkIf cfg.enable {
programs.schizofox = {
enable = true;
theme = {
font = "Lexend";
colors = {
background-darker = "181825";
background = "1e1e2e";
foreground = "cdd6f4";
};
};
security = {
sanitizeOnShutdown.enable = true;
sandbox.enable = true;
noSessionRestore = true;
userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0";
};
misc = {
drm.enable = true;
disableWebgl = false;
bookmarks = [
{
Title = "Noogle";
URL = "https://noogle.dev";
Placement = "toolbar";
}
{
Title = "Nixpkgs Manual";
URL = "https://nixos.org/manual/nixpkgs/stable";
Placement = "toolbar";
}
];
};
extensions = {
simplefox.enable = true;
darkreader.enable = true;
enableDefaultExtensions = true;
enableExtraExtensions = true;
extraExtensions = let
extensions = [
{
id = "{c2c003ee-bd69-42a2-b0e9-6f34222cb046}";
name = "auto-tab-discard";
}
{
id = "{a4c4eda4-fb84-4a84-b4a1-f7c1cbf2a1ad}";
name = "refined-github-";
}
{
id = "sponsorBlocker@ajay.app";
name = "sponsorblock";
}
{
id = "{446900e4-71c2-419f-a6a7-df9c091e268b}";
name = "bitwarden-password-manager";
}
{
id = "{74145f27-f039-47ce-a470-a662b129930a}";
name = "clearurls";
}
{
id = "{b86e4813-687a-43e6-ab65-0bde4ab75758}";
name = "localcdn-fork-of-decentraleyes";
}
{
id = "smart-referer@meh.paranoid.pk";
name = "smart-referer";
}
{
id = "skipredirect@sblask";
name = "skip-redirect";
}
{
id = "7esoorv3@alefvanoon.anonaddy.me";
name = "libredirect";
}
{
id = "DontFuckWithPaste@raim.ist";
name = "dont-fuck-with-paste";
}
];
mappedExtensions =
map (extension: {
name = extension.id;
value = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/${extension.name}/latest.xpi";
};
})
extensions;
in
listToAttrs mappedExtensions;
};
};
};
}

View file

@ -10,8 +10,8 @@
# We want direnv to load in our nix dev shells # We want direnv to load in our nix dev shells
loadInNixShell = true; loadInNixShell = true;
enableBashIntegration = true; enableBashIntegration = false;
enableFishIntegration = true; enableFishIntegration = false;
}; };
}; };
} }

View file

@ -1,3 +0,0 @@
_: {
imports = [./direnv.nix ./nix-index.nix];
}

View file

@ -1,3 +0,0 @@
_: {
imports = [./btop.nix];
}

View file

@ -1,22 +0,0 @@
--- a/zellij-server/src/panes/grid.rs
+++ b/zellij-server/src/panes/grid.rs
@@ -271,7 +271,7 @@ fn subtract_isize_from_usize(u: usize, i: isize) -> usize {
macro_rules! dump_screen {
($lines:expr) => {{
let mut is_first = true;
- let mut buf = "".to_owned();
+ let mut buf = String::with_capacity($lines.iter().map(|l| l.len()).sum());
for line in &$lines {
if line.is_canonical && !is_first {
@@ -280,8 +280,7 @@ macro_rules! dump_screen {
let s: String = (&line.columns).into_iter().map(|x| x.character).collect();
// Replace the spaces at the end of the line. Sometimes, the lines are
// collected with spaces until the end of the panel.
- let re = Regex::new("([^ ])[ ]*$").unwrap();
- buf.push_str(&(re.replace(&s, "${1}")));
+ buf.push_str(&s.trim_end_matches(' '));
is_first = false;
}
buf

View file

@ -26,23 +26,6 @@ in {
ExecStart = "${getExe' pkgs.owncloud-client "owncloud"}"; ExecStart = "${getExe' pkgs.owncloud-client "owncloud"}";
Restart = "always"; Restart = "always";
RestartSec = 30; RestartSec = 30;
# User = "cr";
# Group = "cr";
# Keyringmode = "shared";
# DevicePolicy = "closed";
# PrivateDevices = true;
# PrivateTmp = true;
# ProtectClock = true;
# ProtectControlGroups = true;
# ProtectControlGroup = true;
# ProtectKernelLogs = true;
# ProtectKernelModules = true;
# ProtectKernelTunables = true;
# ProtectSystem = "strict";
# SystemCallFilter = "~@clock @cpu-emulation @debug @obsolete @module @mount @raw-io @reboot @swap @privileged";
}; };
}; };
}; };

View file

@ -1,39 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption;
cfg = config.modules.system.services.plausible;
port = 4030;
domain = "analytics.copeberg.org";
in {
options.modules.system.services.plausible.enable = mkEnableOption "Plausible, an analytics service";
config = mkIf cfg.enable {
services.plausible = {
enable = true;
server = {
baseUrl = "http://${domain}";
secretKeybaseFile = "/run/secrets/plausible-secret-key-base";
disableRegistration = false;
};
database.postgres = {
dbname = "plausible";
};
};
services.nginx = {
enable = true;
virtualHosts.${domain} = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://localhost:${toString port}";
};
};
};
};
}

View file

@ -1,119 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib.options) mkEnableOption;
inherit (lib.modules) mkIf;
inherit (builtins) toString;
cfg = config.modules.services.searxng;
port = 4021;
in {
options.modules.services.searxng.enable = mkEnableOption "SearXNG, a private search engine";
config = mkIf cfg.enable {
networking.firewall.allowedTCPPorts = [port];
services = {
nginx.enable = true;
searx = {
enable = true;
package = pkgs.searxng;
environmentFile = "/srv/data/searxng/super_secret_file";
settings = {
general = {
name = "Copesearch";
privacypolicy_url = false;
debug = false;
enable_metrics = false;
};
search = {
safe_search = 1;
formats = ["html" "json" "rss"];
autocomplete = "google"; # "dbpedia", "duckduckgo", "google", "startpage", "swisscows", "qwant", "wikipedia" - leave blank to turn it off by default
default_lang = "en";
};
ui = {
query_in_title = true;
theme_args.simple_style = "dark"; # auto, dark, light
results_on_new_tab = false;
};
server = {
inherit port;
limiter = false;
image_proxy = false;
# taken from https://github.com/searx/searx/issues/715
default_http_headers = {
X-Content-Type-Options = "nosniff";
X-XSS-Protection = "1; mode=block";
X-Download-Options = "noopen";
X-Robots-Tag = "noindex, nofollow";
Referrer-Policy = "no-referrer";
};
};
# shamelessly stolen from NotAShelf
engines = [
{
name = "wikipedia";
engine = "wikipedia";
shortcut = "w";
base_url = "https://wikipedia.org/";
}
{
name = "duckduckgo";
engine = "duckduckgo";
shortcut = "ddg";
}
{
name = "google";
engine = "google";
shortcut = "g";
use_mobile_ui = false;
}
{
name = "archwiki";
engine = "archlinux";
shortcut = "aw";
}
{
name = "github";
engine = "github";
categories = "it";
shortcut = "gh";
}
{
name = "nixpkgs";
shortcut = "nx";
engine = "elasticsearch";
categories = "dev,nix";
base_url = "https://nixos-search-5886075189.us-east-1.bonsaisearch.net:443";
index = "latest-31-nixos-unstable";
query_type = "match";
}
];
};
};
nginx.virtualHosts."search.copeberg.org" = {
locations."/".proxyPass = "http://127.0.0.1:${toString port}";
extraConfig = ''
access_log /dev/null;
error_log /dev/null;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
'';
quic = true;
forceSSL = true;
enableACME = true;
};
};
};
}

View file

@ -0,0 +1,17 @@
{
config,
lib,
...
}: let
inherit (lib.modules) mkIf;
inherit (config.modules.system) isGraphical;
in {
# TODO: setup
services.spotifyd = mkIf isGraphical {
enable = true;
settings = {
};
config = {
};
};
}

View file

@ -96,7 +96,7 @@ in {
symbols-only symbols-only
; ;
inherit fancy-iosevka; # inherit fancy-iosevka;
}; };
fontDir = { fontDir = {
# Whether to create a directory with links to all fonts in # Whether to create a directory with links to all fonts in

View file

@ -1,7 +0,0 @@
_: {
imports = [
./colors.nix
./fonts.nix
./gtk.nix
];
}

View file

@ -20,9 +20,9 @@ Singleton {
} }
readonly property QtObject border: QtObject { readonly property QtObject border: QtObject {
readonly property int thickness: 8 readonly property int thickness: 0
readonly property color color: "#1e1e2e" readonly property color color: "#1e1e2e"
readonly property int rounding: 25 readonly property int rounding: 0
} }
readonly property QtObject catppuccin: QtObject { readonly property QtObject catppuccin: QtObject {

View file

@ -0,0 +1,28 @@
import QtQuick
import Quickshell
import Quickshell.Wayland
PanelWindow {
id: root
exclusionMode: ExclusionMode.Ignore
WlrLayershell.layer: WlrLayer.Background
WlrLayershell.namespace: "shell:background"
anchors {
top: true
bottom: true
left: true
right: true
}
Item {
id: background
anchors.fill: parent
Image {
id: image
asynchronous: true
source: "../../../wholefoods.png"
}
}
}

View file

@ -2,16 +2,13 @@ pragma ComponentBehavior: Bound
import Quickshell import Quickshell
import Quickshell.Wayland import Quickshell.Wayland
import Quickshell.Services.Notifications
import QtQuick import QtQuick
import QtQuick.Effects import QtQuick.Effects
import "../bar" import "../bar"
import "../volume"
import "../notifications"
import "../../services"
import "../../config" import "../../config"
import "../"
Variants { Variants {
model: Quickshell.screens model: Quickshell.screens
@ -49,10 +46,10 @@ Variants {
// Setting the intersection mode to Xor will invert the mask and make everything in the mask region not clickable and pass through clicks inside it through the window. // Setting the intersection mode to Xor will invert the mask and make everything in the mask region not clickable and pass through clicks inside it through the window.
intersection: Intersection.Xor intersection: Intersection.Xor
Region { // Region {
item: volume // item: volume
intersection: Intersection.Subtract // intersection: Intersection.Subtract
} // }
} }
anchors { anchors {
@ -88,17 +85,16 @@ Variants {
id: bar id: bar
screen: scope.modelData screen: scope.modelData
} }
}
BackgroundImage {
id: backgroundimage
screen: scope.modelData
}
BackgroundImage {
id: background_overview
screen: scope.modelData
// VolumeSlider { WlrLayershell.namespace: "shell:background-overview"
// id: volume
// screen: scope.modelData
// }
// Hover {
// id: hover
// screen: scope.modelData
// bar: bar
// }
} }
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

Before After
Before After

View file

@ -1,3 +0,0 @@
_: {
imports = [./intel.nix];
}

View file

@ -0,0 +1,3 @@
_: {
services.irqbalance.enable = true;
}

View file

@ -1,10 +0,0 @@
_: {
imports = [
./bluetooth.nix
./keyboard
./graphics.nix
./power.nix
];
services.irqbalance.enable = true;
}

View file

@ -1,14 +0,0 @@
{config, ...}: let
machine-id = builtins.substring 0 23 (builtins.hashString "sha256" config.networking.hostName);
in {
system = {
# faster rebuilds
# switch = {
# enable = false;
# };
# My state version.
stateVersion = "23.11";
};
environment.etc."machine-id".text = "${machine-id}\n";
}

View file

@ -10,8 +10,6 @@
inherit (lib.modules) mkForce; inherit (lib.modules) mkForce;
in { in {
imports = [ imports = [
./documentation.nix # nixos documentation
./nixpkgs.nix # global nixpkgs configuration
inputs.determinate.nixosModules.default inputs.determinate.nixosModules.default
]; ];

View file

@ -1,11 +1,6 @@
{config, ...}: let {config, ...}: let
inherit (config.modules.other.system) username; inherit (config.modules.other.system) username;
in { in {
imports = [
./networkmanager.nix
./dns.nix
./firewall.nix
];
networking = { networking = {
enableIPv6 = true; enableIPv6 = true;

View file

@ -1,8 +1,4 @@
{pkgs, ...}: { {pkgs, ...}: {
imports = [
./sudo.nix
];
security = { security = {
polkit = { polkit = {
enable = true; enable = true;

View file

@ -66,6 +66,7 @@ layout {
default-column-width { default-column-width {
proportion 0.5 proportion 0.5
} }
background-color "transparent"
} }
// xwayland stuff // xwayland stuff
spawn-at-startup "xwayland-satellite" spawn-at-startup "xwayland-satellite"
@ -73,8 +74,6 @@ spawn-at-startup "avizo-service"
spawn-at-startup "keepassxc" spawn-at-startup "keepassxc"
spawn-at-startup "startxfce4" spawn-at-startup "startxfce4"
spawn-at-startup "bash" "-c" "quickshell --path ~/repos/projects/nichts/modules/style/quickshell/shell" spawn-at-startup "bash" "-c" "quickshell --path ~/repos/projects/nichts/modules/style/quickshell/shell"
spawn-at-startup "swww-daemon"
spawn-at-startup "swww-daemon" "--namespace" "overview"
environment { environment {
DISPLAY ":0" DISPLAY ":0"
} }
@ -93,27 +92,8 @@ overview {
zoom 0.65 zoom 0.65
backdrop-color "#777777" backdrop-color "#777777"
} }
workspace "main"
workspace "scratch"
workspace "browser"
workspace "social"
workspace "keepassxc"
workspace "infra"
workspace "multimedia"
animations { animations {
// off // off
}
// Open the Firefox picture-in-picture player as floating by default.
window-rule {
match app-id="librewolf$" title="^Picture-in-Picture$"
open-floating true
open-on-workspace "browser"
}
window-rule {
match app-id="org.keepassxc.KeePassXC"
block-out-from "screen-capture"
open-on-workspace "keepassxc"
} }
window-rule { window-rule {
match app-id="unset" match app-id="unset"
@ -127,20 +107,14 @@ window-rule {
match app-id="org.freedesktop.impl.portal.desktop.kde" match app-id="org.freedesktop.impl.portal.desktop.kde"
open-floating true open-floating true
} }
window-rule {
draw-border-with-background false
}
// Fix discord screencasting // Fix discord screencasting
debug { debug {
wait-for-frame-completion-in-pipewire wait-for-frame-completion-in-pipewire
} }
// Always focus the KeePassXC-Browser unlock dialog.
//
// This dialog opens parented to the KeePassXC window rather than the browser,
// so it doesn't get auto-focused by default.
window-rule {
match app-id="^org\\.keepassxc\\.KeePassXC$" title="^KeePassXC - Browser Access Request$"
match app-id="^org\\.keepassxc\\.KeePassXC$" title="^Unlock Database - KeePassXC$"
open-focused true
}
hotkey-overlay { hotkey-overlay {
skip-at-startup skip-at-startup
} }
@ -153,9 +127,6 @@ binds {
Mod+Shift+Slash { Mod+Shift+Slash {
show-hotkey-overlay show-hotkey-overlay
} }
// Mod+Return {
// spawn "foot"
// }
Mod+Return { Mod+Return {
spawn "ghostty" spawn "ghostty"
} }
@ -404,9 +375,6 @@ binds {
Mod+C { Mod+C {
center-column center-column
} }
Mod+X {
focus-workspace "keepassxc"
}
Mod+Minus { Mod+Minus {
set-column-width "-10%" set-column-width "-10%"
} }
@ -439,9 +407,13 @@ binds {
Ctrl+Print { Ctrl+Print {
screenshot-screen screenshot-screen
} }
Alt+Print { // Alt+Print {
// spawn "sh" "-c" ""
// }
Mod+T {
screenshot screenshot
} }
// "$mainMod, T, exec, ${getExe pkgs.grimblast} save area - | ${getExe pkgs.tesseract} - - | ${getExe' pkgs.wl-clipboard "wl-copy"}"
Mod+Escape allow-inhibiting=false { Mod+Escape allow-inhibiting=false {
toggle-keyboard-shortcuts-inhibit toggle-keyboard-shortcuts-inhibit
} }

View file

@ -1,37 +1,15 @@
{ {
config, config,
inputs,
lib, lib,
pkgs, pkgs,
... ...
}: let }: let
inherit (lib.modules) mkForce mkIf; inherit (lib.modules) mkForce mkIf;
inherit (lib.options) mkEnableOption; inherit (lib.options) mkEnableOption;
inherit (config.modules.system) isGraphical; inherit (config.modules.system) isGraphical;
cfg = config.modules.desktops.niri; cfg = config.modules.desktops.niri;
latestNightly = (inputs.rust-overlay.lib.mkRustBin {} pkgs).nightly.latest.default;
rustPlatform = pkgs.makeRustPlatform {
rustc = latestNightly;
cargo = latestNightly;
stdenv = pkgs.clangStdenv;
};
new-swww = (pkgs.swww.override {inherit rustPlatform;}).overrideAttrs (prev: {
src = pkgs.fetchFromGitHub {
inherit (prev.src) owner repo;
rev = "805a355da574fed46e664606660e2499f02e2174";
hash = "sha256-+sdV7NFueCeBLrsl7lrqzlG5tPNqDe/zlcIb8TYxQl8=";
};
doInstallCheck = false;
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
inherit (new-swww) src;
hash = "sha256-YH2gcy/8EtUmTHzwt38bBOFX3saN1wHIGQ5/eWqvSeM=";
};
});
patched-niri = pkgs.niri.overrideAttrs (prev: { patched-niri = pkgs.niri.overrideAttrs (prev: {
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
inherit (prev.src) owner repo; inherit (prev.src) owner repo;
@ -67,8 +45,13 @@ in {
environment.etc."niri/config.kdl".source = ./config.kdl; environment.etc."niri/config.kdl".source = ./config.kdl;
environment.systemPackages = builtins.attrValues { environment.systemPackages = builtins.attrValues {
inherit (pkgs) xwayland-satellite avizo playerctl; inherit
inherit new-swww; (pkgs)
xwayland-satellite
avizo
playerctl
wl-clipboard
;
}; };
}; };
} }

View file

@ -4,14 +4,9 @@
pkgs, pkgs,
... ...
}: let }: let
inherit (lib.modules) mkForce mkIf; inherit (lib.modules) mkIf;
inherit (lib.options) mkEnableOption;
inherit (lib.lists) optional; inherit (lib.lists) optional;
in { in {
imports = [
./variables.nix
];
xdg.portal = { xdg.portal = {
enable = true; enable = true;
# Sets environment variable NIXOS_XDG_OPEN_USE_PORTAL to 1. # Sets environment variable NIXOS_XDG_OPEN_USE_PORTAL to 1.
@ -48,8 +43,7 @@ in {
"org.freedesktop.impl.portal.FileChooser" = ["kde"]; "org.freedesktop.impl.portal.FileChooser" = ["kde"];
}; };
}; };
configPackages = [ };
# pkgs.niri environment.variables = {
];
}; };
} }

View file

@ -9,7 +9,7 @@
cfg = config.modules.wms.wayland; cfg = config.modules.wms.wayland;
in { in {
options.modules.wms.wayland.enable = mkEnableOption "wayland"; options.modules.wms.wayland.enable = mkEnableOption "wayland";
config = mkIf cfg.enable { config = mkIf true {
environment.variables = { environment.variables = {
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
__GL_GSYNC_ALLOWED = "0"; __GL_GSYNC_ALLOWED = "0";

View file

@ -1,125 +0,0 @@
{
inputs,
lib,
pkgs,
...
}: let
inherit (builtins) map genList toString;
inherit (lib.meta) getExe getExe';
in {
programs.hyprland.settings = {
# Keybinds
bind =
# workspaces
# split-workspace is because of the split-workspace plugin
map (
i: let
mod = a: b: a - (b * (a / b));
key = toString (mod i 10);
workspace = toString i;
in "$mainMod, ${key}, split:workspace, ${workspace}"
) (genList (i: i + 1) 10)
# split-movetoworkspacesilent
++ map (
i: let
mod = a: b: a - (b * (a / b));
key = toString (mod i 10);
workspace = toString i;
in "$mainMod SHIFT, ${key}, split:movetoworkspacesilent, ${workspace}"
) (genList (i: i + 1) 10)
++ [
"$mainMod, RETURN, exec, foot"
"$mainMod, Q, killactive"
"$mainMod, F, fullscreen, 0"
"$mainMod, D, exec, ${getExe' inputs.quickshell.packages.${pkgs.stdenv.system}.default "quickshell"} msg launcher open"
"$mainMod, SPACE, togglefloating, active"
"$mainMod ALT, L, exec, ${getExe pkgs.hyprlock}"
# Screenshotting
"$mainMod, S, exec, ${getExe pkgs.grimblast} copy area" # only copy
"$mainMod SHIFT, S, exec, ${getExe pkgs.grimblast} save area - | ${getExe pkgs.satty} -f -" # edit with satty
# Extract text from screen
"$mainMod, T, exec, ${getExe pkgs.grimblast} save area - | ${getExe pkgs.tesseract} - - | ${getExe' pkgs.wl-clipboard "wl-copy"}"
# File manager
"$mainMod, E, exec, ${pkgs.xfce.thunar}/bin/thunar"
# Toggle the three different special workspaces.
"$mainMod, N, togglespecialworkspace, nixos"
"$mainMod, X, togglespecialworkspace, keepassxc"
"$mainMod, V, togglespecialworkspace, audio"
# Reload hyprland
"$mainMod, R, exec, ${getExe' pkgs.hyprland "hyprctl"} reload"
# Grab rouge windows, which may persist after disconnecting a monitor.
"$mainMod, G, split:grabroguewindows"
# Restart waybar
"$mainMod CONTROL, B, exec, ${pkgs.procps}/bin/pkill waybar || ${getExe pkgs.waybar}"
"$mainMod CONTROL, Q, exec, ${pkgs.procps}/bin/pkill quickshell || ${getExe' inputs.quickshell.packages.${pkgs.stdenv.system}.default "quickshell"}"
];
binde = [
# window focus
"$mainMod, H, movefocus, l"
"$mainMod, J, movefocus, d"
"$mainMod, K, movefocus, u"
"$mainMod, L, movefocus, r"
# Move Windows
"$mainMod SHIFT, H, movewindow, l"
"$mainMod SHIFT, J, movewindow, d"
"$mainMod SHIFT, K, movewindow, u"
"$mainMod SHIFT, L, movewindow, r"
];
# Media controls
bindl = let
volumectl = getExe' pkgs.avizo "volumectl";
playerctl = getExe pkgs.playerctl;
play-pause = "${playerctl} play-pause";
stop = "${playerctl} stop";
prev = "${playerctl} previous";
next = "${playerctl} next";
toggle-mute = "${volumectl} toggle-mute";
toggle-mic-mute = "${volumectl} toggle-mute";
in [
", XF86AudioMedia, exec, ${play-pause}"
", XF86AudioPlay, exec, ${play-pause}"
", XF86AudioStop, exec, ${stop}"
", XF86AudioPrev, exec, ${prev}"
", XF86AudioNext, exec, ${next}"
", XF86AudioMute, exec, ${toggle-mute}"
", XF86AudioMicMute, exec, ${toggle-mic-mute}"
];
# locked + repeat
bindle = let
volumectl = getExe' pkgs.avizo "volumectl";
lightctl = getExe' pkgs.avizo "lightctl";
volume_up = "${volumectl} -u up";
volume_down = "${volumectl} -u down";
brightness_up = "${lightctl} up";
brightness_down = "${lightctl} down";
in [
", XF86AudioRaiseVolume, exec, ${volume_up}"
", XF86AudioLowerVolume, exec, ${volume_down}"
", XF86MonBrightnessUp, exec, ${brightness_up}"
", XF86MonBrightnessDown, exec, ${brightness_down}"
];
# Mouse settings
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
# Some more movement-related settings
binds = {
pass_mouse_when_bound = false;
movefocus_cycles_fullscreen = false;
};
};
}

View file

@ -1,70 +0,0 @@
_: {
programs.hyprland.settings = {
#Decoration settings
decoration = {
rounding = 10;
rounding_power = 3;
blur = {
enabled = true;
xray = true;
size = 3;
passes = 2;
};
};
# Bezier curves for aninmations.
# Generate your own at https://www.cssportal.com/css-cubic-bezier-generator/
bezier = [
"dupa, 0.1, 0.9, 0.1, 1.05"
];
# Hyprland anomations, using the above bezier curves
animations = {
enabled = true;
};
animation = [
"windows, 1, 4, dupa, popin"
"windowsOut, 1, 4, dupa, slide"
"border, 1, 15, default"
"fade, 1, 10, default"
"workspaces, 1, 5, dupa, slidevert"
];
cursor = {
hide_on_key_press = true;
no_hardware_cursors = true;
};
misc = {
enable_swallow = true;
swallow_regex = "foot";
focus_on_activate = true;
vrr = 1;
vfr = true;
animate_manual_resizes = false;
animate_mouse_windowdragging = false;
force_default_wallpaper = 0;
};
# Window rules for some programs.
windowrulev2 = [
"float, class:^(Tor Browser)$"
"float, class:^(mpv)$"
"float, class:^(imv)$"
"float, title:^(Picture-in-Picture)$"
"float, title:^(.*)(Choose User Profile)(.*)$"
"float, title:^(blob:null/)(.*)$"
"float, class:^(xdg-desktop-portal-gtk)$"
"float, class:^(code), title: ^(Open*)"
"size 70% 70%, class:^(code), title: ^(Open*)"
"center, class: ^(code), title: ^(Open*)"
"float, class:^(org.keepassxc.KeePassXC)$"
];
layerrule = [
"blur, shell:launcher"
"ignorezero, shell:launcher"
"animation popin 90%, shell:launcher"
];
};
}

View file

@ -1,36 +0,0 @@
{
config,
inputs,
lib,
pkgs,
...
}: let
# inherit (config.modules.style) cursor;
inherit (lib.meta) getExe getExe';
in {
programs.hyprland.settings = {
# Hyprland settings
# Programs which get executed at Hyprland start.
exec-once = [
"uwsm finalize"
"hyprctl setcursor BreezeX-RosePine-Linux 32"
"hyprctl seterror disable"
"[workspace special:keepassxc; silent;tile] ${pkgs.keepassxc}/bin/keepassxc"
"[workspace special:audio; silent;tile] ${pkgs.pwvucontrol}/bin/pwvucontrol"
"${pkgs.swww}/bin/swww-daemon"
"${pkgs.avizo}/bin/avizo-service"
"${pkgs.wlsunset}/bin/wlsunset -S 06:00 -s 20:00"
"${pkgs.lxqt.lxqt-policykit}/bin/lxqt-policykit-agent"
"hyprctl dispatch split-workspace 1"
"${getExe pkgs.hyprlock}"
"${getExe' inputs.quickshell.packages.${pkgs.stdenv.system}.default "quickshell"}"
];
};
}

View file

@ -1,58 +0,0 @@
{
config,
inputs,
lib,
pkgs,
...
}: let
inherit (lib.modules) mkIf;
inherit (lib.options) mkOption;
inherit (lib.types) bool;
cfg = config.modules.desktops.hyprland;
in {
imports = [
./binds.nix
./decorations.nix
./exec.nix
./settings.nix
./workspaces.nix
inputs.hyprland.nixosModules.default
];
options.modules.desktops.hyprland = {
enable = mkOption {
type = bool;
default = false;
description = ''
Whether to enable Hyprland wayland compositor.
'';
};
};
config = mkIf cfg.enable {
programs.hyprland = {
enable = true;
xwayland.enable = true;
package = pkgs.hyprland;
portalPackage = pkgs.xdg-desktop-portal-hyprland;
plugins = [
pkgs.hyprlandPlugins.hyprsplit
];
withUWSM = true;
};
# xdg Portal
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = [
pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-hyprland
];
config = {
common.default = ["*"];
hyprland.default = ["gtk" "hyprland"];
};
};
};
}

View file

@ -1,89 +0,0 @@
{
config,
lib,
...
}: let
inherit (builtins) toString;
inherit (lib.attrsets) mapAttrsToList;
inherit (config.modules.style.colorScheme) colors;
inherit (config.modules.system.hardware) monitors;
in {
config = {
programs.hyprland = {
settings = {
# Hyprland settings
"$mainMod" = "SUPER";
# Monitor config
# Thanks Poz for inspiration, using an attrSet is actually much smarter
# than using a normal list.
monitor =
mapAttrsToList (
name: m: let
w = toString m.resolution.x;
h = toString m.resolution.y;
refreshRate = toString m.refreshRate;
x = toString m.position.x;
y = toString m.position.y;
scale = toString m.scale;
in "${name},${w}x${h}@${refreshRate},${x}x${y},${scale}"
)
monitors;
# Input settings
input = {
kb_layout = "us,ru";
kb_variant = ",phonetic_winkeys";
kb_options = "grp:rctrl_rshift_toggle, compose:102";
follow_mouse = true;
repeat_rate = 60;
repeat_delay = 200;
touchpad = {
disable_while_typing = true;
};
};
gestures = {
workspace_swipe = true;
};
general = {
layout = "dwindle";
gaps_in = 0;
gaps_out = 0;
border_size = 2;
"col.active_border" = "0xff${colors.base07}";
no_border_on_floating = true;
};
# No annoying startup errors
debug.suppress_errors = true;
ecosystem.no_update_news = true;
plugin = {
hyprsplit = {
num_workspaces = 10;
persistent_workspaces = true;
};
dynamic-cursors = {
enabled = true;
mode = "rotate";
rotate = {
length = 20;
offset = 0.0;
};
threshhold = 2;
shake.enabled = false;
};
};
};
};
};
}

View file

@ -1,48 +0,0 @@
{
config,
lib,
...
}: let
inherit (builtins) map genList attrNames toString;
inherit (lib.lists) imap0 flatten;
inherit (lib.strings) optionalString;
inherit (config.modules.system.hardware) monitors;
in {
programs.hyprland.settings = {
# INFO: This is a custom function to map all of my monitors to workspaces.
# Since I use split-monitor-workspaces, I map 10 workspaces to each monitor
# and set the first one to be the default one.
# To be able to use this for a varying amount of monitors we do some nasty trickery.
# This was inspired by jacekpoz, whose configuration is linked in this project's README.md.
workspace =
(
# We use imap0 insted of map because imap0 starts indexing at zero as oppsed to one with map.
(imap0 (monitorIndex: monitorName: (
map (
i: let
# we define our own modulo operation for this,
# since only the first workspace on each monitor is the default workspace.
mod = a: b: a - (b * (a / b));
workspace = toString i;
isDefault = (mod i 10) == 1; # 11, 21, 31, ...
in "${workspace}, monitor:${monitorName}${optionalString isDefault ", default:true"}"
)
# we generate a list of 10 elements for each monitor. We have to add 1 each time since genList starts indexing at 0.
# also, we add the monitorIndex * 10 to get 10 workspaces for each individual monitor.
(genList (i: i + 1 + (10 * monitorIndex)) 10)
))
# our attrSet of different monitors
(attrNames monitors))
# We're creating several lists of workspace assignments, one for each monitor,
# and have to merge them into one big list.
|> flatten
)
# These are my two special workspaces
++ [
"special:nixos, decorate:false"
"special:keepassxc, decorate:false"
"special:audio, decorate:false"
];
};
}

View file

@ -1,7 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
}

Some files were not shown because too many files have changed in this diff Show more