Compare commits
93 Commits
961278b2fe
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 98c27ce238 | |||
| 86ce0ed9e6 | |||
| 91910ec46e | |||
| d2426b4291 | |||
| 7c1113cd09 | |||
| 4b6290c3c7 | |||
| 650d566f8d | |||
| 45e93b353c | |||
| dd43d48900 | |||
| 5e17268044 | |||
| 6699d5488a | |||
| e429bdb946 | |||
| 5d868ad1f8 | |||
| 0a36b0acb5 | |||
| dffafa8973 | |||
| d0bd1ca8fa | |||
| 1346cb93af | |||
| 1e24a7d6bc | |||
| b58d5eb12f | |||
| a193b02ce0 | |||
| c252c831b5 | |||
| 30bb872ed9 | |||
| b716c8a288 | |||
| 1de2a362d7 | |||
| d5262b0a7f | |||
| 111b999b0a | |||
| f5ccc92e4e | |||
| dc03ca2b72 | |||
| 81ed9c5b20 | |||
| 53ed01e019 | |||
| 6931e1dde0 | |||
| 7b463d06ff | |||
| 6f0028d75e | |||
| 1f4af9c3ba | |||
| 524f2bdc9d | |||
| 3ad54e380d | |||
| 06e334c973 | |||
| 13576dd70e | |||
| faa16e68bb | |||
| d2bfda8ab2 | |||
| 7816818f0c | |||
| ff05ad7e21 | |||
| 62af5ec3c5 | |||
| 16dc290cfa | |||
| 52b5079e30 | |||
| 5f2172f2a5 | |||
| 8a459476ac | |||
| 885fb6feae | |||
| 5de5e206d2 | |||
| 406a144bd5 | |||
| 79de594c6c | |||
| 8f646f9161 | |||
| d3a8d6de4c | |||
| 4f848d384c | |||
| a27748f63b | |||
| 4ffded8c0b | |||
| 65c9e0babc | |||
| df1043ee38 | |||
| fe60c609e6 | |||
| 5df4e2c43d | |||
| f6ab3c0b60 | |||
| ea5a54e7b3 | |||
| d8126257f5 | |||
| eb8670c04f | |||
| 136c3a2340 | |||
| 695b96ecfe | |||
| 4c82f65024 | |||
| 218ef66c4e | |||
| 22cbe83779 | |||
| b0edd2e270 | |||
| d60892df98 | |||
| 1d630ebc57 | |||
| 0e806bab3a | |||
| a23ed5c7bb | |||
| ef61d0d30b | |||
| 06bd99cf68 | |||
| 70ec18666d | |||
| 32ab8d5ab2 | |||
| 55dcc4e3dc | |||
| 230335431c | |||
| b8d71e5127 | |||
| 0b01d1b6f7 | |||
| 1925169852 | |||
| ffaf192563 | |||
| 648da7e05a | |||
| 1361348bf1 | |||
| 59f061711a | |||
| 30e3d53918 | |||
| b81e9537c0 | |||
| b63b2e0d9c | |||
| a34bf2d319 | |||
| 5be8612163 | |||
| 4ccbed71a8 |
414
flake.lock
generated
414
flake.lock
generated
@@ -2,7 +2,7 @@
|
||||
"nodes": {
|
||||
"agenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1640802000,
|
||||
@@ -19,12 +19,17 @@
|
||||
}
|
||||
},
|
||||
"emacs": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1650684053,
|
||||
"narHash": "sha256-t+EH8O3a+Aajv+uYGzUrF1R1w/6GD4retFAxb23yz90=",
|
||||
"lastModified": 1693879203,
|
||||
"narHash": "sha256-0CGMa3MxeG3YsVetUtxg6eZumQIe8FJ+WHVfR2ko9zM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "46041a0711e643c8911845878fa4604dc8669a66",
|
||||
"rev": "3adaef3b1bebdc244a03ee19f705f5a3190a33d9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -43,7 +48,7 @@
|
||||
"locked": {
|
||||
"lastModified": 1649622552,
|
||||
"narHash": "sha256-KT5CPoqkB9HZqw/pqynczRzsH/PQTImfaY5Oyyy871I=",
|
||||
"ref": "master",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "3d7c14e55cb8374de6fcd40fcc889aa377131ac2",
|
||||
"revCount": 6,
|
||||
"type": "git",
|
||||
@@ -55,12 +60,15 @@
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1649676176,
|
||||
"narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
|
||||
"lastModified": 1692799911,
|
||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
|
||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -70,12 +78,15 @@
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1638122382,
|
||||
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
|
||||
"lastModified": 1692799911,
|
||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
|
||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -86,11 +97,11 @@
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1644229661,
|
||||
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
|
||||
"lastModified": 1638122382,
|
||||
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
|
||||
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -115,6 +126,36 @@
|
||||
}
|
||||
},
|
||||
"flake-utils_5": {
|
||||
"locked": {
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_6": {
|
||||
"locked": {
|
||||
"lastModified": 1659877975,
|
||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_7": {
|
||||
"locked": {
|
||||
"lastModified": 1644229661,
|
||||
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
|
||||
@@ -131,14 +172,14 @@
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1650478719,
|
||||
"narHash": "sha256-308c2cM4hW9AW6dSQ080ycXGyEJGkG/OwOINkYL9Mnw=",
|
||||
"lastModified": 1693859358,
|
||||
"narHash": "sha256-r3Pak/ao3p8weTzR+Ry3qQrfRsmSOwWW5sAe73mrYKs=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "93a69d07389311ffd6ce1f4d01836bbc2faec644",
|
||||
"rev": "886ea1d213efd1082f419d066e89ef37635dc970",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -175,19 +216,20 @@
|
||||
"nixpkgs": [
|
||||
"ostylk-home",
|
||||
"pkg-stable"
|
||||
]
|
||||
],
|
||||
"utils": "utils_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1647175256,
|
||||
"narHash": "sha256-7H+veXPM7IwdN1DoZqliwb9sghlN56koV5dnCu1kpsc=",
|
||||
"lastModified": 1679067101,
|
||||
"narHash": "sha256-tMI1inGT9u4KWQml0w30dhWqQPlth1e9K/68sfDkEQA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "a8d00f5c038cf7ec54e7dac9c57b171c1217f008",
|
||||
"rev": "9154cd519a8942728038819682d6b3ff33f321bb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-21.11",
|
||||
"ref": "release-22.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -197,14 +239,15 @@
|
||||
"nixpkgs": [
|
||||
"ostylk-home",
|
||||
"pkg-unstable"
|
||||
]
|
||||
],
|
||||
"utils": "utils_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1650478719,
|
||||
"narHash": "sha256-308c2cM4hW9AW6dSQ080ycXGyEJGkG/OwOINkYL9Mnw=",
|
||||
"lastModified": 1680597706,
|
||||
"narHash": "sha256-ZqJ3T+BxzjPH9TnmeUwS4Uu9ZQPeBXAFC9sUWlharT4=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "93a69d07389311ffd6ce1f4d01836bbc2faec644",
|
||||
"rev": "ec06f419af79207b33d797064dfb3fc9dbe1df4a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -229,14 +272,47 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"impermanence_2": {
|
||||
"locked": {
|
||||
"lastModified": 1668668915,
|
||||
"narHash": "sha256-QjY4ZZbs9shwO4LaLpvlU2bO9J1juYhO9NtV3nrbnYQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"rev": "5df9108b346f8a42021bf99e50de89c9caa251c3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "master",
|
||||
"repo": "impermanence",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"libwacom-surface": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1665772749,
|
||||
"narHash": "sha256-UddKdTgEyz43ymr8O/CjT6aTnMtd1Q8OEHj49TGzN5k=",
|
||||
"owner": "linux-surface",
|
||||
"repo": "libwacom-surface",
|
||||
"rev": "0f068fcaa16a6e0450a3324e50632cfdc6a4cf83",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "linux-surface",
|
||||
"ref": "master",
|
||||
"repo": "libwacom-surface",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"linux-surface": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1648391001,
|
||||
"narHash": "sha256-vi7aCcIcki+ZKXarU5ITKtViaRQyG1rcrbOJyxFnaV0=",
|
||||
"lastModified": 1672934175,
|
||||
"narHash": "sha256-HTIuRBZk0prhUPd2KnsXGo+ZyBsMwERN7P8WJH1RG3M=",
|
||||
"owner": "linux-surface",
|
||||
"repo": "linux-surface",
|
||||
"rev": "4789818ac6bfff23619ee4d590e02e58107be2ea",
|
||||
"rev": "487e64047ca047dde9a062909a87410e7bb86845",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -248,7 +324,7 @@
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1639947939,
|
||||
@@ -266,14 +342,18 @@
|
||||
},
|
||||
"naersk_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_7"
|
||||
"nixpkgs": [
|
||||
"ostylk-home",
|
||||
"rnix-lsp",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1639947939,
|
||||
"narHash": "sha256-pGsM8haJadVP80GFq4xhnSpNitYNQpaXk4cnA796Cso=",
|
||||
"lastModified": 1655042882,
|
||||
"narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "2fc8ce9d3c025d59fee349c1f80be9785049d653",
|
||||
"rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -282,13 +362,36 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixgl": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_6",
|
||||
"nixpkgs": [
|
||||
"ostylk-home",
|
||||
"pkg-unstable"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1661367362,
|
||||
"narHash": "sha256-Qc8MXcV+YCPREu8kk6oggk23ZBKLqeQRAIsLbHEviPE=",
|
||||
"owner": "guibou",
|
||||
"repo": "nixGL",
|
||||
"rev": "7165ffbccbd2cf4379b6cd6d2edd1620a427e5ae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "guibou",
|
||||
"ref": "main",
|
||||
"repo": "nixGL",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1650522846,
|
||||
"narHash": "sha256-SxWHXRI3qJwswyXAtzsi6PKVY3KLNNnb072KaJthII8=",
|
||||
"lastModified": 1693718952,
|
||||
"narHash": "sha256-+nGdJlgTk0MPN7NygopipmyylVuAVi7OItIwTlwtGnw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "6b4ebea9093c997c5f275c820e679108de4871ab",
|
||||
"rev": "793de77d9f83418b428e8ba70d1e42c6507d0d35",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -316,14 +419,34 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 0,
|
||||
"narHash": "sha256-kCmnDeiaMsdhfnNKjxdOzwRh2H6eQb8yWAL+nNabC/Y=",
|
||||
"path": "/nix/store/dir0rn9a585sjc5aw78xs744yvd7ks7n-source",
|
||||
"type": "path"
|
||||
"lastModified": 1693663421,
|
||||
"narHash": "sha256-ImMIlWE/idjcZAfxKK8sQA7A1Gi/O58u5/CJA+mxvl8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e56990880811a451abd32515698c712788be5720",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1693771906,
|
||||
"narHash": "sha256-32EnPCaVjOiEERZ+o/2Ir7JH9pkfwJZJ27SKHNvt4yk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "da5adce0ffaff10f6d0fee72a02a5ed9d01b52fc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
@@ -344,11 +467,27 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1650161686,
|
||||
"narHash": "sha256-70ZWAlOQ9nAZ08OU6WY7n4Ij2kOO199dLfNlvO/+pf8=",
|
||||
"lastModified": 1693565476,
|
||||
"narHash": "sha256-ya00zHt7YbPo3ve/wNZ/6nts61xt7wK/APa6aZAfey0=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "aa8aa7e2ea35ce655297e8322dc82bf77a31d04b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1693663421,
|
||||
"narHash": "sha256-ImMIlWE/idjcZAfxKK8sQA7A1Gi/O58u5/CJA+mxvl8=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1ffba9f2f683063c2b14c9f4d12c55ad5f4ed887",
|
||||
"rev": "e56990880811a451abd32515698c712788be5720",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -358,7 +497,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1618628710,
|
||||
"narHash": "sha256-9xIoU+BrCpjs5nfWcd/GlU7XCVdnNKJPffoNTxgGfhs=",
|
||||
@@ -371,7 +510,7 @@
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1649490789,
|
||||
"narHash": "sha256-YrhVxwoofZSx/wLZ4GYET//8vS+uqWX572zvdmP/Etg=",
|
||||
@@ -387,7 +526,7 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1640233012,
|
||||
"narHash": "sha256-DNKMmWZ/RLoh5IVJLAa5HYOy4IW28mBBYDMgMxzzom8=",
|
||||
@@ -400,7 +539,7 @@
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1645373091,
|
||||
"narHash": "sha256-eRbiakFKdxtjrqOtErp4BgOJlLN5VEBymldfxy+ZKzI=",
|
||||
@@ -416,31 +555,18 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_7": {
|
||||
"locked": {
|
||||
"lastModified": 1645010845,
|
||||
"narHash": "sha256-hO9X4PvxkSLMQnGGB7tOrKPwufhLMiNQMNXNwzLqneo=",
|
||||
"path": "/nix/store/hkl03hpzvq0pj2qkc56485dd8fm27nng-source",
|
||||
"rev": "2128d0aa28edef51fd8fef38b132ffc0155595df",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_8": {
|
||||
"locked": {
|
||||
"lastModified": 1642190797,
|
||||
"narHash": "sha256-cxeEEAtfIACnm8sV1oz0xlNp9IVk10Fxcc09ggoEZuo=",
|
||||
"lastModified": 1656753965,
|
||||
"narHash": "sha256-BCrB3l0qpJokOnIVc3g2lHiGhnjUi0MoXiw6t1o8H1E=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3ddd960a3b575bf3230d0e59f42614b71f9e0db9",
|
||||
"rev": "0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-21.11",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -463,11 +589,11 @@
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1650681389,
|
||||
"narHash": "sha256-76az6Z4umzHZcMi2N9cdL5gJkxagsJEHveO4+l7wAdU=",
|
||||
"lastModified": 1693907142,
|
||||
"narHash": "sha256-U3yzshaxSUAC6Hy5xGmlX1TySHoWjH++Y2cC9ujEmZc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nur",
|
||||
"rev": "bd3cf2bcbd62f3bc66e90c1dd5a00fa933cb861e",
|
||||
"rev": "283964d2452632c9b0ccc8eff08d242a073b022f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -479,11 +605,11 @@
|
||||
"ostylk": {
|
||||
"inputs": {
|
||||
"agenix": "agenix",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"home-manager": "home-manager_2",
|
||||
"impermanence": "impermanence",
|
||||
"nixos-hardware": "nixos-hardware_2",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"rnix-lsp": "rnix-lsp",
|
||||
"tablet-mode": "tablet-mode"
|
||||
@@ -491,7 +617,7 @@
|
||||
"locked": {
|
||||
"lastModified": 1649593958,
|
||||
"narHash": "sha256-bxslOpHYGXEDZ91plgMjGls5g8++YtSuuDKhIuStUA0=",
|
||||
"ref": "master",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "04e73c894cf20c4ac1bf6116546c1dab53d6d4e9",
|
||||
"revCount": 171,
|
||||
"type": "git",
|
||||
@@ -505,20 +631,24 @@
|
||||
"ostylk-home": {
|
||||
"inputs": {
|
||||
"flake-helper": "flake-helper",
|
||||
"flake-utils": "flake-utils_4",
|
||||
"flake-utils": "flake-utils_5",
|
||||
"home-stable": "home-stable",
|
||||
"home-unstable": "home-unstable",
|
||||
"impermanence": "impermanence_2",
|
||||
"libwacom-surface": "libwacom-surface",
|
||||
"linux-surface": "linux-surface",
|
||||
"nixgl": "nixgl",
|
||||
"pkg-compile": "pkg-compile",
|
||||
"pkg-stable": "pkg-stable",
|
||||
"pkg-unstable": "pkg-unstable",
|
||||
"rnix-lsp": "rnix-lsp_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1650633525,
|
||||
"narHash": "sha256-QJSUeNn56J1PEa211GorvkTMOeNiN55DceeVIhLoVnY=",
|
||||
"ref": "master",
|
||||
"rev": "8620fb21d8fb74352ca289c145a8db868e087e75",
|
||||
"revCount": 61,
|
||||
"lastModified": 1683784900,
|
||||
"narHash": "sha256-h+n0rS4nBFBqlMd1ktn+8UypNP3gQ91e+i/e1zHhbTg=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "3a0f186fca0a88e0a2fd002eabedb418cf9a6f6a",
|
||||
"revCount": 124,
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/Home.git"
|
||||
},
|
||||
@@ -527,29 +657,45 @@
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/Home.git"
|
||||
}
|
||||
},
|
||||
"pkg-stable": {
|
||||
"pkg-compile": {
|
||||
"locked": {
|
||||
"lastModified": 1647992509,
|
||||
"narHash": "sha256-AG40Nt5OWz0LBs5p457emOuwLKOvTtcv/2fUdnEN3Ws=",
|
||||
"lastModified": 1672791794,
|
||||
"narHash": "sha256-mqGPpGmwap0Wfsf3o2b6qHJW1w2kk/I6cGCGIU+3t6o=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d2caa9377539e3b5ff1272ac3aa2d15f3081069f",
|
||||
"rev": "9813adc7f7c0edd738c6bdd8431439688bb0cb3d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-21.11",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pkg-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1679139072,
|
||||
"narHash": "sha256-Gtw2Yj8DfETie3u7iHv1y5Wt+plGRmp6nTQ0EEfaPho=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "08ef7dc8334521605a5c8b7086cc248e74ee338b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-22.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pkg-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1650161686,
|
||||
"narHash": "sha256-70ZWAlOQ9nAZ08OU6WY7n4Ij2kOO199dLfNlvO/+pf8=",
|
||||
"lastModified": 1680487167,
|
||||
"narHash": "sha256-9FNIqrxDZgSliGGN2XJJSvcDYmQbgOANaZA4UWnTdg4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1ffba9f2f683063c2b14c9f4d12c55ad5f4ed887",
|
||||
"rev": "53dad94e874c9586e71decf82d972dfb640ef044",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -587,14 +733,14 @@
|
||||
"inputs": {
|
||||
"naersk": "naersk_2",
|
||||
"nixpkgs": "nixpkgs_8",
|
||||
"utils": "utils_2"
|
||||
"utils": "utils_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1643586450,
|
||||
"narHash": "sha256-BRIAc3+zavSlJPYSbov2n1W9/a4Iuh2swFPYRWjCm1g=",
|
||||
"lastModified": 1669555118,
|
||||
"narHash": "sha256-F0s0m62S5bHNVWNHLZD6SeHiLrsDx98VQbRjDyIu+qQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "rnix-lsp",
|
||||
"rev": "41eb2f3366e3f351bf2563c2a7c46fd17e78dfe0",
|
||||
"rev": "95d40673fe43642e2e1144341e86d0036abd95d9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -607,10 +753,10 @@
|
||||
"root": {
|
||||
"inputs": {
|
||||
"emacs": "emacs",
|
||||
"flake-utils": "flake-utils",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"home-manager": "home-manager",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nur": "nur",
|
||||
"ostylk": "ostylk",
|
||||
"ostylk-home": "ostylk-home",
|
||||
@@ -620,11 +766,11 @@
|
||||
},
|
||||
"stable": {
|
||||
"locked": {
|
||||
"lastModified": 1645296114,
|
||||
"narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=",
|
||||
"lastModified": 1659914493,
|
||||
"narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1",
|
||||
"rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -634,10 +780,40 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tablet-mode": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
"flake-utils": "flake-utils_4",
|
||||
"nixpkgs": "nixpkgs_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1645816436,
|
||||
@@ -655,13 +831,13 @@
|
||||
},
|
||||
"tablet-mode_2": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_5",
|
||||
"flake-utils": "flake-utils_7",
|
||||
"nixpkgs": "nixpkgs_9"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1645816436,
|
||||
"narHash": "sha256-lK69qpgDWE92aQgvG502bU+pGMaHI+y7O3A/AgsUfxI=",
|
||||
"ref": "master",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "eeafcf0d0cc3713727697f6a2badc5eea706c81c",
|
||||
"revCount": 19,
|
||||
"type": "git",
|
||||
@@ -689,11 +865,41 @@
|
||||
},
|
||||
"utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1638122382,
|
||||
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
|
||||
"lastModified": 1667395993,
|
||||
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
|
||||
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1678901627,
|
||||
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils_4": {
|
||||
"locked": {
|
||||
"lastModified": 1656928814,
|
||||
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -53,11 +53,12 @@
|
||||
|
||||
overlays = [
|
||||
self.overlay
|
||||
|
||||
(import ./overlays/sandbox.nix)
|
||||
];
|
||||
};
|
||||
in {
|
||||
# key-mapper only runs on linux
|
||||
inherit (pkgs) key-mapper;
|
||||
inherit (pkgs) wayqt dfl-ipc dfl-applications dfl-utils qtgreet xwaylandvideobridge obs-cli rgb_keyboard prismlauncher-wrapped anime4k;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
@@ -38,11 +38,10 @@
|
||||
xournalpp.enable = true;
|
||||
alacritty.enable = true;
|
||||
# TODO: Nextcloud client
|
||||
plasma.enable = true;
|
||||
plasma.mobile = true;
|
||||
};
|
||||
services = {
|
||||
gdm.enable = true;
|
||||
gnome.enable = true;
|
||||
};
|
||||
system = {
|
||||
i18n.enable = true;
|
||||
|
||||
147
hosts/miku.nix
147
hosts/miku.nix
@@ -26,62 +26,65 @@
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
gajim-mainwindow
|
||||
gajim
|
||||
virt-manager qemu scream
|
||||
replaysorcery # Custom package
|
||||
vfio-isolate # Custom Package
|
||||
#replaysorcery # Custom package
|
||||
#vfio-isolate # Custom Package
|
||||
mumble
|
||||
piper trackma # Custom package
|
||||
anime-dl # Custom package
|
||||
thunderbird
|
||||
#nwg-launchers
|
||||
gnome-podcasts
|
||||
cantata
|
||||
newsflash
|
||||
sublime-music
|
||||
anki
|
||||
gnome-podcasts
|
||||
gimp
|
||||
xwaylandvideobridge
|
||||
#psst
|
||||
|
||||
evolution
|
||||
|
||||
# Proprietary stuff (yikes)
|
||||
discord-wrapped discord-app-wrapped spotify-wrapped
|
||||
#lapce
|
||||
];
|
||||
|
||||
ptw = {
|
||||
programs = {
|
||||
bluray.enable = true;
|
||||
#bluray.enable = true;
|
||||
mpv = {
|
||||
primaryScreen = "C27F398";
|
||||
primaryScreen = "DP-1";
|
||||
enable = true;
|
||||
};
|
||||
#sway.enable = true;
|
||||
sway.enable = false;
|
||||
alacritty.enable = true;
|
||||
emacs.enable = true;
|
||||
#emacs.enable = true;
|
||||
firefox.enable = true;
|
||||
git.enable = true; #gnome-terminal.enable = true;
|
||||
git.enable = true;
|
||||
#gnome-terminal.enable = true;
|
||||
tmux.enable = true;
|
||||
waybar = {
|
||||
enable = true;
|
||||
output = "DP-2";
|
||||
};
|
||||
neovim.enable = true;
|
||||
#xournalpp.enable = true;
|
||||
zsh.enable = true;
|
||||
direnv.enable = true;
|
||||
office.enable = true;
|
||||
plasma.enable = true;
|
||||
plasma = {
|
||||
enable = true;
|
||||
/*sddm = {
|
||||
backgroundImage = pkgs.fetchurl {
|
||||
url = "https://cdn.donmai.us/original/d3/1b/__manjuu_prinz_eugen_roon_bismarck_friedrich_der_grosse_and_3_more_azur_lane_drawn_by_zaphn__d31bf4ac564d60f8787818842c369e7f.jpg";
|
||||
sha256 = "sha256-likoJuEaGzGH0RqjPsBE9o5ATwgnOo97PREh3oZBax8=";
|
||||
};
|
||||
};*/
|
||||
};
|
||||
gaming.enable = true;
|
||||
obs.enable = true;
|
||||
android.enable = true;
|
||||
};
|
||||
services = {
|
||||
yubikey.enable = true;
|
||||
gamemode.enable = true;
|
||||
gnome.enable = true;
|
||||
input-remapper = {
|
||||
enable = false;
|
||||
postStartCommand = "${pkgs.input-remapper}/bin/input-remapper-control --command start --preset NOOP --device \"Razer Razer Tartarus V2\"";
|
||||
};
|
||||
gnome.enable = false;
|
||||
logiops.enable = true;
|
||||
gdm = {
|
||||
enable = true;
|
||||
monitors = ../data/miku/monitors.xml;
|
||||
enable = false;
|
||||
};
|
||||
};
|
||||
system = {
|
||||
@@ -93,7 +96,7 @@
|
||||
};
|
||||
virtualisation = {
|
||||
enable = true;
|
||||
gaming.enable = true;
|
||||
gaming.enable = false;
|
||||
};
|
||||
};
|
||||
programs = {
|
||||
@@ -103,24 +106,34 @@
|
||||
};
|
||||
|
||||
virtualisation = {
|
||||
#podman = {
|
||||
# enable = true;
|
||||
# dockerCompat = true;
|
||||
#};
|
||||
docker = {
|
||||
enable = true;
|
||||
storageDriver = "btrfs";
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
boot = let
|
||||
kernel = pkgs.linuxPackages_xanmod_latest;
|
||||
in {
|
||||
extraModprobeConfig = ''
|
||||
options kvm_amd nested=1
|
||||
options vfio-pci ids=1002:67df,1002:aaf0
|
||||
'';
|
||||
initrd = {
|
||||
availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" "amdgpu" "vendor-reset" ];
|
||||
availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
"amdgpu"
|
||||
"vendor-reset"
|
||||
"winesync"
|
||||
];
|
||||
kernelModules = [
|
||||
"amdgpu" # GPU (duh)
|
||||
"kvm-amd" "vfio_virqfd" "vfio_pci" "vfio_iommu_type1" "vfio" # Virt
|
||||
"kvm-amd" /*"vfio_virqfd"*/ "vfio_pci" "vfio_iommu_type1" "vfio" # Virt
|
||||
"uinput" # key-mapper
|
||||
"vendor-reset"
|
||||
"winesync"
|
||||
];
|
||||
};
|
||||
kernelParams = [
|
||||
@@ -131,20 +144,35 @@
|
||||
"kvm.report_ignored_msrs=N"
|
||||
"fbcon=rotate:3"
|
||||
"quiet"
|
||||
"nopti"
|
||||
"nospectre_v2"
|
||||
"nospec"
|
||||
"clocksource=tsc"
|
||||
"tsc=reliable"
|
||||
"pci=noaer"
|
||||
# Disable mitigations
|
||||
"mitigations=off"
|
||||
"rhgb"
|
||||
# Enable ZSwap
|
||||
#"zswap.enabled=1"
|
||||
# Enable Apparmor
|
||||
"lsm=landlock,lockdown,yama,integrity,apparmor,bpf"
|
||||
# Prevent sequential probing
|
||||
"libahci.ignore_sss=1"
|
||||
# Make the system less ready to swap
|
||||
"sysctl.vm.swappiness=0"
|
||||
];
|
||||
kernel.sysctl = {
|
||||
# League of Legends under Linux
|
||||
"abi.vsyscall32" = 0;
|
||||
# Fedora 39
|
||||
"vm.max_map_count" = 2147483642;
|
||||
};
|
||||
|
||||
extraModulePackages = [ pkgs.linuxPackages_xanmod.vendor-reset ];
|
||||
extraModulePackages = [ kernel.vendor-reset ];
|
||||
kernelPackages = kernel;
|
||||
|
||||
# NOTE: A regression appears to have happend between 5.10 and 5.12
|
||||
# which leads to the RX590 to have the fence fallback timer on
|
||||
# sdma0 time out (whatever this means). Maybe bisect?
|
||||
kernelPackages = pkgs.linuxPackages_xanmod;
|
||||
binfmt = {
|
||||
emulatedSystems = [ "aarch64-linux" ];
|
||||
registrations.aarch64-linux.fixBinary = true;
|
||||
};
|
||||
};
|
||||
services = {
|
||||
ratbagd.enable = true;
|
||||
@@ -159,13 +187,45 @@
|
||||
libinput.enable = true;
|
||||
};
|
||||
earlyoom.enable = lib.mkForce false;
|
||||
|
||||
udev.extraRules = ''
|
||||
ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c52b", ATTR{power/wakeup}="disabled", ATTR{driver/1-7/power/wakeup}="disabled"
|
||||
'';
|
||||
|
||||
hardware = {
|
||||
openrgb = {
|
||||
enable = true;
|
||||
motherboard = "amd";
|
||||
};
|
||||
};
|
||||
|
||||
system76-scheduler = {
|
||||
enable = false;
|
||||
useStockConfig = true;
|
||||
};
|
||||
};
|
||||
programs = {
|
||||
cdemu = {
|
||||
enable = true;
|
||||
gui = true;
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
opentabletdriver.enable = true;
|
||||
openrazer = {
|
||||
enable = true;
|
||||
devicesOffOnScreensaver = true;
|
||||
users = [ "alexander" ];
|
||||
};
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
};
|
||||
|
||||
# TODO: Move into modules
|
||||
/*
|
||||
systemd = {
|
||||
services = {
|
||||
enable-vendor-reset = {
|
||||
@@ -200,4 +260,5 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -19,10 +19,11 @@
|
||||
boot = {
|
||||
initrd = {
|
||||
availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "sdhci_pci"
|
||||
"aesni-intel"
|
||||
# NOTE: See https://github.com/NixOS/nixos-hardware/blob/master/common/pc/laptop/acpi_call.nix
|
||||
#"acpi_call" ];
|
||||
];
|
||||
kernelModules = [ "dm-snapshot" ];
|
||||
kernelModules = [ "dm-snapshot" "aesni-intel" ];
|
||||
luks.devices = {
|
||||
cryptroot = {
|
||||
device = "/dev/disk/by-uuid/e1011c40-e1a9-4ce6-b89f-f14b046639c1";
|
||||
@@ -35,12 +36,14 @@
|
||||
extraModulePackages = [ ];
|
||||
# NOTE: See https://github.com/NixOS/nixos-hardware/blob/master/lenovo/thinkpad/e495/default.nix#L12
|
||||
kernelParams = [ "acpi_backlight=native" ];
|
||||
|
||||
binfmt.emulatedSystems = ["aarch64-linux"];
|
||||
};
|
||||
|
||||
ptw = {
|
||||
programs = {
|
||||
alacritty.enable = true;
|
||||
sway.enable = true;
|
||||
sway.enable = false;
|
||||
emacs.enable = true;
|
||||
firefox.enable = true;
|
||||
tmux.enable = true;
|
||||
@@ -51,9 +54,13 @@
|
||||
zsh.enable = true;
|
||||
git.enable = true;
|
||||
office.enable = true;
|
||||
plasma.enable = true;
|
||||
direnv.enable = true;
|
||||
};
|
||||
services = {
|
||||
gdm.enable = true;
|
||||
yubikey.enable = true;
|
||||
cups.enable = true;
|
||||
gnome.enable = false;
|
||||
kanshi = let
|
||||
horizontal = "Samsung Electric Company C27F398 H4ZR101145";
|
||||
|
||||
@@ -119,12 +126,30 @@
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation = {
|
||||
podman = {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
dockerSocket.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
ansible
|
||||
gnumake
|
||||
wireguard-tools
|
||||
|
||||
(pkgs.callPackage ./wrapper.nix {
|
||||
inherit (pkgs) retroarch;
|
||||
cores = with pkgs.libretro; [
|
||||
mgba mupen64plus melonds desmume dolphin
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
programs = {
|
||||
gnupg.agent.pinentryFlavor = "qt";
|
||||
gnupg.agent = {
|
||||
pinentryFlavor = "qt";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
37
hosts/wrapper.nix
Normal file
37
hosts/wrapper.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{ stdenv, lib, makeWrapper, retroarch, cores ? [ ] }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "retroarch";
|
||||
version = lib.getVersion retroarch;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
buildCommand = ''
|
||||
mkdir -p $out/lib
|
||||
for coreDir in $cores
|
||||
do
|
||||
ln -s $coreDir/* $out/lib/.
|
||||
done
|
||||
|
||||
ln -s -t $out ${retroarch}/share
|
||||
|
||||
if [ -d ${retroarch}/Applications ]; then
|
||||
ln -s -t $out ${retroarch}/Applications
|
||||
fi
|
||||
|
||||
makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch \
|
||||
--suffix-each LD_LIBRARY_PATH ':' "$cores" \
|
||||
--add-flags "-L $out/lib/" \
|
||||
'';
|
||||
|
||||
cores = map (x: x + x.libretroCore) cores;
|
||||
preferLocalBuild = true;
|
||||
|
||||
meta = with retroarch.meta; {
|
||||
inherit changelog description homepage license maintainers platforms;
|
||||
longDescription =
|
||||
"RetroArch is the reference frontend for the libretro API. The following cores are included: "
|
||||
+ lib.concatStringsSep ", " (map (x: "${x.name}") cores)
|
||||
+ ".";
|
||||
};
|
||||
}
|
||||
@@ -8,7 +8,7 @@ let
|
||||
in {
|
||||
time.timeZone = "Europe/Berlin";
|
||||
ostylk.nftables = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
|
||||
tables.firewall = {
|
||||
family = "inet";
|
||||
@@ -33,7 +33,14 @@ in {
|
||||
};
|
||||
networking = {
|
||||
useDHCP = false; # Done by the network manager
|
||||
networkmanager.enable = true;
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
plugins = with pkgs; [
|
||||
networkmanager-vpnc
|
||||
networkmanager-openvpn
|
||||
networkmanager-openconnect
|
||||
];
|
||||
};
|
||||
|
||||
#interfaces.*.useDHCP = false;
|
||||
|
||||
@@ -101,18 +108,20 @@ in {
|
||||
nerdfonts
|
||||
];
|
||||
|
||||
# For home-manager
|
||||
programs.dconf.enable = true;
|
||||
|
||||
# We don't tolerate non-free software, except for Steam and Linux firmware
|
||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
|
||||
"firmwareLinuxNonfree" "microcodeAmd" "microcodeIntel"
|
||||
"steam" "steam-original" "steam-runtime"
|
||||
"steam" "steam-original" "steam-runtime" "steam-run"
|
||||
"discord" "discord-canary"
|
||||
"minecraft"
|
||||
"spotify" "spotify-unwrapped"
|
||||
];
|
||||
|
||||
services = {
|
||||
# TODO: Is this correct? Maybe run once
|
||||
timesyncd.enable = false;
|
||||
timesyncd.enable = true;
|
||||
|
||||
# Everyone needs sound
|
||||
pipewire = {
|
||||
@@ -235,7 +244,10 @@ in {
|
||||
};
|
||||
|
||||
# Don't wait for a network connection
|
||||
systemd.services.NetworkManager-wait-online.enable = false;
|
||||
systemd = {
|
||||
services.NetworkManager-wait-online.enable = false;
|
||||
coredump.enable = false;
|
||||
};
|
||||
|
||||
security.sudo.extraConfig = ''
|
||||
Defaults env_keep += "NIXOS_CONFIG"
|
||||
@@ -280,7 +292,7 @@ in {
|
||||
};
|
||||
|
||||
boot = {
|
||||
cleanTmpDir = true;
|
||||
tmp.cleanOnBoot = true;
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
|
||||
@@ -38,12 +38,15 @@ in inputs.nixpkgs.lib.nixosSystem {
|
||||
# Overlays
|
||||
(util.mkOverlayFromInput "stable" inputs.stable)
|
||||
(util.mkOverlayFromInput "unstable" inputs.nixpkgs)
|
||||
|
||||
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
nur.overlay
|
||||
emacs.overlay
|
||||
(import ../packages)
|
||||
(import ../overlays/simple.nix)
|
||||
(import ../overlays/phosh.nix)
|
||||
]
|
||||
++ lib.optional bluray (import ../overlays/bluray.nix)
|
||||
++ [
|
||||
|
||||
BIN
lib/ports.nix
BIN
lib/ports.nix
Binary file not shown.
132
lib/sandbox.nix
132
lib/sandbox.nix
@@ -5,38 +5,38 @@
|
||||
}:
|
||||
|
||||
{
|
||||
name
|
||||
, package
|
||||
, binaryName
|
||||
, version ? "1.0.0"
|
||||
, desktopFileArgs ? null
|
||||
, copyIntoSandbox ? null
|
||||
name # Name of the sandboxed package, e.g. "package-wrapped"
|
||||
, launchScriptName # Name of the script that will be placed in $out/bin
|
||||
, binary # The binary to execute inside the sandbox
|
||||
, extraArgs ? [] # Extra arguments to add to the argv
|
||||
, desktopFileAttributes ? {} # Arguments to apply to the desktop file
|
||||
, preDesktopFilePhase ? "" # Code to run during the install phase before building the desktop file
|
||||
, enableDesktopFile ? false # Whether to build a desktop file
|
||||
, copyIntoSandbox ? {} # Source -> destination relative to $out
|
||||
, unshareUser ? true
|
||||
, unshareIpc ? true
|
||||
, unsharePid ? true
|
||||
, unshareNet ? false
|
||||
, unshareUts ? true
|
||||
, unshareCgroup ? true
|
||||
, dieWithParent ? true
|
||||
, mountInHome ? []
|
||||
, chdirTo ? "\"$(pwd)\""
|
||||
, additionalBlacklist ? []
|
||||
, additionalMounts ? []
|
||||
, extraEnv ? {}
|
||||
, dieWithParent ? true # Should bubblewrap exit when the parents exits
|
||||
, mountInHome ? [] # Files, directories to mount inside the sandbox
|
||||
, chdirTo ? "\"$(pwd)\"" # What should be the CWD when entering the sandbox
|
||||
, additionalBlacklist ? [] # Root directories that should not be mounted
|
||||
, additionalMounts ? [] # Files, directories outside the home directory to mount inside the sandbox
|
||||
, extraEnv ? {} # Extra environment variables to set inside the sandbox
|
||||
, enableAlsa ? true # Mount ALSA files from /etc/
|
||||
, enableSudo ? true # Mount sudo files from /etc/
|
||||
, enableShells ? true # Mount shell related files from /etc/
|
||||
, enableNix ? true # Mount nix related files from /etc/
|
||||
, enableOsInfo ? true # Mount /etc/{machine-id,os-release}
|
||||
}:
|
||||
|
||||
let
|
||||
mountHome = mountInHome == [];
|
||||
|
||||
etcBindFlags = let
|
||||
files = [
|
||||
# NixOS Compatibility
|
||||
"static"
|
||||
"nix" # mainly for nixUnstable users, but also for access to nix/netrc
|
||||
# Shells
|
||||
"bashrc"
|
||||
"zshenv"
|
||||
"zshrc"
|
||||
"zinputrc"
|
||||
"zprofile"
|
||||
# Users, Groups, NSS
|
||||
"passwd"
|
||||
"group"
|
||||
@@ -46,29 +46,22 @@ let
|
||||
"nsswitch.conf"
|
||||
# User profiles
|
||||
"profiles"
|
||||
# Sudo & Su
|
||||
"login.defs"
|
||||
"sudoers"
|
||||
"sudoers.d"
|
||||
# Time
|
||||
"localtime"
|
||||
"zoneinfo"
|
||||
# Other Core Stuff
|
||||
"machine-id"
|
||||
"os-release"
|
||||
# PAM
|
||||
"pam.d"
|
||||
# Fonts
|
||||
"fonts"
|
||||
# ALSA
|
||||
"alsa"
|
||||
"asound.conf"
|
||||
# SSL
|
||||
"ssl/certs"
|
||||
"pki"
|
||||
];
|
||||
in builtins.concatStringsSep "\n "
|
||||
(map (file: "--ro-bind-try /etc/${file} /etc/${file}") files);
|
||||
]
|
||||
++ (lib.optionals enableNix [ "static" "nix" ])
|
||||
++ (lib.optionals enableShells [ "bashrc" "zshenv" "zshrc" "zinputrc" "zprofile" ])
|
||||
++ (lib.optionals enableSudo [ "login.defs" "sudoers" "sudoers.d" ])
|
||||
++ (lib.optionals enableAlsa [ "alsa" "asound.conf" ])
|
||||
++ (lib.optionals enableOsInfo [ "machine-id" "os-release" ])
|
||||
# Only add SSL stuff when we have networking enabled
|
||||
++ (lib.optionals (!unshareNet) [ "ssl/certs" "pki" ]);
|
||||
in builtins.concatStringsSep "\n " (map (file: "--ro-bind-try /etc/${file} /etc/${file}") files);
|
||||
|
||||
# Create this on the fly instead of linking from /nix
|
||||
# The container might have to modify it and re-run ldconfig if there are
|
||||
@@ -88,15 +81,21 @@ let
|
||||
EOF
|
||||
ldconfig &> /dev/null
|
||||
'';
|
||||
init = run: writeShellScriptBin "${binaryName}-init" ''
|
||||
sandboxInitScriptName = "${name}-wrapped-init.sh";
|
||||
sandboxInitScript = writeShellScriptBin sandboxInitScriptName ''
|
||||
source /etc/profile
|
||||
${createLdConfCache}
|
||||
exec ${run} "$@"
|
||||
exec ${binary} "$@"
|
||||
'';
|
||||
extraEnvString = lib.foldl (acc: val: acc + val + "\n") "" (lib.mapAttrsToList (name: value: "--setenv ${name} \"${value}\"") extraEnv);
|
||||
mountHome = mountInHome == [];
|
||||
initStr = init "${package}/bin/${binaryName}";
|
||||
bwrapCmd = { initArgs ? "" }: ''
|
||||
|
||||
|
||||
sandboxScriptName = "${name}-wrapped.sh";
|
||||
sandboxScript = let
|
||||
extraEnvString = lib.foldl (acc: val: acc + val + "\n") "" (lib.mapAttrsToList (name: value: "--setenv ${name} \"${value}\"") extraEnv);
|
||||
stringify = x: "\"${x}\"";
|
||||
safeAdditionalMounts = map stringify additionalMounts;
|
||||
safeMountInHome = map stringify mountInHome;
|
||||
in writeShellScriptBin sandboxScriptName ''
|
||||
blacklist=(/nix /dev /proc /etc ${lib.optionalString (!mountHome) "/home"} ${builtins.toString additionalBlacklist})
|
||||
ro_mounts=()
|
||||
symlinks=()
|
||||
@@ -112,13 +111,13 @@ let
|
||||
done
|
||||
|
||||
if [[ "${lib.optionalString (!mountHome) "1"}" = "1" ]]; then
|
||||
for entry in ${builtins.toString mountInHome}; do
|
||||
for entry in ${builtins.toString safeMountInHome}; do
|
||||
auto_mounts+=(--bind "/home/$USER/$entry" "/home/$USER/$entry")
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ ! -z "${builtins.toString additionalMounts}" ]]; then
|
||||
for entry in ${builtins.toString additionalMounts}; do
|
||||
for entry in ${builtins.toString safeAdditionalMounts}; do
|
||||
auto_mounts+=(--bind "$entry" "$entry")
|
||||
done
|
||||
fi
|
||||
@@ -158,27 +157,40 @@ let
|
||||
"''${symlinks[@]}"
|
||||
"''${auto_mounts[@]}"
|
||||
${extraEnvString}
|
||||
${initStr}/bin/${name}-init ${initArgs}
|
||||
${sandboxInitScript}/bin/${sandboxInitScriptName}
|
||||
)
|
||||
exec "''${cmd[@]}"
|
||||
exec "''${cmd[@]}" $@
|
||||
'';
|
||||
bin = writeShellScriptBin name (bwrapCmd { initArgs = ''"$@"''; });
|
||||
desktopItem = makeDesktopItem (desktopFileArgs // {
|
||||
exec = "${bin}/bin/${name}";
|
||||
});
|
||||
copyIntoSandboxString = lib.concatStrings (map (x: "cp -Lr ${package}/${x} $out/${x}\n") copyIntoSandbox);
|
||||
in stdenv.mkDerivation {
|
||||
pname = "${name}-sandboxed";
|
||||
version = version;
|
||||
pname = name;
|
||||
version = "1.0.0";
|
||||
|
||||
unpackPhase = ":";
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
installPhase = let
|
||||
desktopFilePhase = let
|
||||
desktopFile = makeDesktopItem (desktopFileAttributes // {
|
||||
exec = "${sandboxScript}/bin/${sandboxScriptName}";
|
||||
});
|
||||
in ''
|
||||
cp -r ${desktopFile}/share/applications $out/share
|
||||
'';
|
||||
copyIntoSandboxPhase = let
|
||||
attrs = builtins.attrNames copyIntoSandbox;
|
||||
cps = map (x: "cp -Lr ${x} $out/${copyIntoSandbox."${x}"}\n") attrs;
|
||||
in lib.concatStrings cps;
|
||||
in ''
|
||||
mkdir -p $out/bin
|
||||
ln -s ${bin}/bin/${name} $out/bin/${name}
|
||||
'' + lib.strings.optionalString (!(builtins.isNull desktopFileArgs)) ''
|
||||
mkdir -p $out/share/
|
||||
cp -r ${desktopItem}/share/applications $out/share
|
||||
'' + lib.strings.optionalString (!(builtins.isNull copyIntoSandbox)) copyIntoSandboxString;
|
||||
ln -s ${sandboxScript}/bin/${sandboxScriptName} $out/bin/${launchScriptName}
|
||||
|
||||
|
||||
# Generate the desktop file, if enabled
|
||||
${lib.optionalString enableDesktopFile "mkdir -p $out/share"}
|
||||
${lib.optionalString enableDesktopFile preDesktopFilePhase}
|
||||
${lib.optionalString enableDesktopFile desktopFilePhase}
|
||||
|
||||
# Copy extra files if they are specified
|
||||
${lib.optionalString (copyIntoSandbox != {}) copyIntoSandboxPhase}
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
# Hardware modules
|
||||
./hardware/mobile.nix
|
||||
./hardware/surface-pro6.nix
|
||||
./hardware/wifi.nix
|
||||
|
||||
# Programs
|
||||
./programs/alacritty
|
||||
@@ -11,8 +10,10 @@
|
||||
./programs/firefox
|
||||
./programs/gnome
|
||||
./programs/gdm
|
||||
./programs/sddm
|
||||
./programs/gnome-terminal
|
||||
./programs/mpv
|
||||
./programs/neovim
|
||||
./programs/git
|
||||
./programs/sway
|
||||
./programs/swaync
|
||||
@@ -20,10 +21,12 @@
|
||||
./programs/waybar
|
||||
./programs/zsh
|
||||
./programs/xournalpp
|
||||
./programs/plasma
|
||||
./programs/office
|
||||
./programs/gaming
|
||||
./programs/bluray
|
||||
./programs/direnv
|
||||
./programs/obs
|
||||
./programs/android
|
||||
|
||||
# Services
|
||||
./services/kanshi
|
||||
@@ -31,6 +34,9 @@
|
||||
./services/gamemode
|
||||
./services/i18n
|
||||
./services/greetd
|
||||
./services/cups
|
||||
./services/logiops
|
||||
./services/yubikey
|
||||
|
||||
# User
|
||||
#./users/default.nix
|
||||
@@ -45,7 +51,14 @@
|
||||
./virtualisation/default.nix
|
||||
./virtualisation/gaming.nix
|
||||
|
||||
# Security
|
||||
./security/apparmor.nix
|
||||
|
||||
# Pure options
|
||||
./base.nix
|
||||
|
||||
# Desktop
|
||||
./desktop/phosh.nix
|
||||
./desktop/plasma.nix
|
||||
];
|
||||
}
|
||||
|
||||
29
modules/desktop/phosh.nix
Normal file
29
modules/desktop/phosh.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.desktop.phosh;
|
||||
in {
|
||||
options.ptw.desktop.phosh = {
|
||||
enable = lib.mkEnableOption "Enable Phosh";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = config.ptw.services.gdm.enable == false;
|
||||
message = "Phosh conflicts GDM";
|
||||
}
|
||||
{
|
||||
assertion = config.services.xserver.displayManager.sddm.enable == false;
|
||||
message = "Phosh conflicts SDDM";
|
||||
}
|
||||
];
|
||||
|
||||
services.xserver.desktopManager.phosh = {
|
||||
user = config.ptw.system.singleUser;
|
||||
group = "users";
|
||||
#package = pkgs.phosh;
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
158
modules/desktop/plasma.nix
Normal file
158
modules/desktop/plasma.nix
Normal file
@@ -0,0 +1,158 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.plasma;
|
||||
in {
|
||||
options.ptw.programs.plasma = {
|
||||
enable = lib.mkEnableOption "Enable KDE Plasma";
|
||||
mobile = {
|
||||
enable = lib.mkEnableOption "Enable Plasma Mobile";
|
||||
};
|
||||
wayland = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
description = "Ignore NixOS 'recommendations' and use the Wayland session by default";
|
||||
};
|
||||
};
|
||||
/*sddm = {
|
||||
backgroundImage = lib.mkOption {
|
||||
default = "${pkgs.sddm-sugar-dark}/usr/share/sddm/themes/sugar-dark/Background.jpg";
|
||||
description = "The background image to use with sddm-sugar-dark";
|
||||
};
|
||||
screenWidth = lib.mkOption {
|
||||
default = 1920;
|
||||
description = "Width of the screen";
|
||||
};
|
||||
screenHeight = lib.mkOption {
|
||||
default = 1080;
|
||||
description = "Width of the screen";
|
||||
};
|
||||
};*/
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
security.pam.services = {
|
||||
login.enableKwallet = true;
|
||||
greetd.enableKwallet = true;
|
||||
};
|
||||
services.xserver = {
|
||||
desktopManager.plasma5 = {
|
||||
enable = true;
|
||||
runUsingSystemd = true;
|
||||
mobile.enable = cfg.mobile.enable;
|
||||
|
||||
kdeglobals = lib.mkIf cfg.mobile.enable {
|
||||
KDE = {
|
||||
StartDragDist = "10";
|
||||
LookAndFeelPackage = "org.kde.plasma.phone";
|
||||
};
|
||||
|
||||
Icons = {
|
||||
Theme = "breeze";
|
||||
};
|
||||
|
||||
General = {
|
||||
ColorScheme = "breeze";
|
||||
Name = "breeze";
|
||||
XftHintStyle = "none";
|
||||
XftSubPixel = "none";
|
||||
shadeSortColumn = "true";
|
||||
};
|
||||
};
|
||||
|
||||
kwinrc = lib.mkIf cfg.mobile.enable {
|
||||
Plugins = {
|
||||
"org.kde.phone.multitaskingEnabled" = "false";
|
||||
"kwin4_effect_eyeonscreenEnabled" = "false";
|
||||
"kwin4_effect_windowapertureEnabled" = "false";
|
||||
blurEnabled = "false";
|
||||
contrastEnabled = "false";
|
||||
};
|
||||
|
||||
Windows = {
|
||||
Placement = "Maximizing";
|
||||
};
|
||||
|
||||
TabBox = {
|
||||
TouchBorderActive = "9";
|
||||
TouchBorderAlternativeActive = "9";
|
||||
BorderActivate = "9";
|
||||
};
|
||||
|
||||
"Effect-PresentWindows" = {
|
||||
BorderActivateAll = "9";
|
||||
};
|
||||
|
||||
"org.kde.kdecoration2" = {
|
||||
NoPlugin = "true";
|
||||
};
|
||||
|
||||
TouchEdges = {
|
||||
Left = "None";
|
||||
Right = "None";
|
||||
};
|
||||
|
||||
Wayland = {
|
||||
InputMethod = "${pkgs.maliit-keyboard}/usr/share/applications/com.github.maliit.keyboard.desktop";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# See https://github.com/NixOS/nixpkgs/commit/a506f9c79700255c215dddb53455d5e2bed6c1af
|
||||
displayManager = {
|
||||
sddm = {
|
||||
enable = true;
|
||||
};
|
||||
defaultSession = lib.mkIf cfg.wayland.enable "plasmawayland";
|
||||
#sessionPackages = lib.mkIf cfg.mobile.enable [ pkgs.libsForQt5.plasma5.plasma-mobile ];
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [ xdg-desktop-portal-kde xdg-desktop-portal-gtk ];
|
||||
};
|
||||
|
||||
environment = {
|
||||
systemPackages = let
|
||||
plasmaMobilePackages = with pkgs.libsForQt5; with plasma5; with kdeApplications; with kdeFrameworks; [
|
||||
plasma-mobile
|
||||
plasma-nano
|
||||
pkgs.maliit-framework
|
||||
pkgs.maliit-keyboard
|
||||
];
|
||||
kdePackages = with pkgs.libsForQt5; [
|
||||
okular
|
||||
kdeconnect-kde
|
||||
breeze-gtk
|
||||
#bismuth
|
||||
gwenview
|
||||
yakuake
|
||||
|
||||
kdeplasma-addons
|
||||
plasma-nm
|
||||
] ++ lib.optionals cfg.mobile.enable plasmaMobilePackages;
|
||||
packages = with pkgs; [
|
||||
kde-rounded-corners
|
||||
index-fm
|
||||
rsibreak
|
||||
kalendar
|
||||
kate
|
||||
okular
|
||||
ark
|
||||
kcalc
|
||||
|
||||
# Some Gnome software
|
||||
gnome.totem
|
||||
];
|
||||
in kdePackages ++ packages;
|
||||
sessionVariables = let
|
||||
askPass = "${pkgs.libsForQt5.ksshaskpass}/bin/ksshaskpass";
|
||||
in {
|
||||
SSH_ASKPASS = askPass;
|
||||
SSH_ASKPASS_REQUIRE = "prefer";
|
||||
GIT_ASKPASS = askPass;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Binary file not shown.
@@ -30,6 +30,7 @@ in {
|
||||
dynamic_title = true;
|
||||
decorations = "full";
|
||||
startup_mode = "Windowed";
|
||||
#opacity = 0.7;
|
||||
};
|
||||
|
||||
scrolling = {
|
||||
@@ -47,7 +48,6 @@ in {
|
||||
x = 0;
|
||||
y = 0;
|
||||
};
|
||||
use_thin_strokes = true;
|
||||
};
|
||||
debug = {
|
||||
render_timer = false;
|
||||
@@ -83,7 +83,6 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
background_opacity = 0.7;
|
||||
mouse_bindings = [ {
|
||||
mouse = "Middle";
|
||||
action = "PasteSelection";
|
||||
@@ -111,7 +110,6 @@ in {
|
||||
|
||||
live_config_reload = true;
|
||||
enable_experimental_conpty_backend = false;
|
||||
alt_send_esc = true;
|
||||
|
||||
key_bindings = [
|
||||
{
|
||||
|
||||
15
modules/programs/android/default.nix
Normal file
15
modules/programs/android/default.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{ pkgs, lib, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.android;
|
||||
in {
|
||||
options.ptw.programs.android = {
|
||||
enable = lib.mkEnableOption "Enable Android development options";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.variables = {
|
||||
"ANDROID_HOME" = "/home/alexander/Development/Android/Sdk";
|
||||
};
|
||||
};
|
||||
}
|
||||
19
modules/programs/direnv/default.nix
Normal file
19
modules/programs/direnv/default.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.direnv;
|
||||
in {
|
||||
options.ptw.programs.direnv = {
|
||||
enable = lib.mkEnableOption "Enable direnv";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users."${config.ptw.system.singleUser}".programs.direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -16,13 +16,13 @@ in {
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [ emacsPgtkGcc ];
|
||||
services.emacs.package = pkgs.emacsPgtkGcc;
|
||||
environment.systemPackages = with pkgs; [ emacs28NativeComp ];
|
||||
services.emacs.package = pkgs.emacs28NativeComp;
|
||||
|
||||
home-manager.users."${config.ptw.system.singleUser}" = {
|
||||
home.file = {
|
||||
#".emacs".text = builtins.replaceStrings [ "%%DARTLANG_ANALYSIS_SERVER_PATH%%" "" ] (builtins.readFile ./dotemacs);
|
||||
".emace".source = ./dotemacs;
|
||||
".emacs".source = ./dotemacs;
|
||||
".emacs.d/mu4e.el".source = ./mu4e.el;
|
||||
".emacs.d/themes/weyland-yutani-theme.el".source = "${weyland-yutani}/weyland-yutani-theme.el";
|
||||
};
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
(setq fast-but-imprecise-scrolling t)
|
||||
(setq make-backup-files nil) (setq create-lockfiles nil)
|
||||
|
||||
; Disable the bell sounds
|
||||
(setq ring-bell-function 'ignore)
|
||||
|
||||
;; A trick for faster startup is to just disable GC for the init phase
|
||||
;;; See: https://github.com/nilcons/emacs-use-package-fast#a-trick-less-gc-during-startup
|
||||
(setq gc-cons-threshold 64000000)
|
||||
|
||||
@@ -24,17 +24,18 @@ in {
|
||||
|
||||
home-manager.users."${config.ptw.system.singleUser}".programs.firefox = {
|
||||
enable = true;
|
||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
https-everywhere
|
||||
ublock-origin
|
||||
umatrix
|
||||
decentraleyes
|
||||
privacy-redirect
|
||||
];
|
||||
profiles.default = {
|
||||
id = 0; # NOTE: This is important
|
||||
isDefault = true;
|
||||
name = "Default Profile";
|
||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
#https-everywhere
|
||||
ublock-origin
|
||||
umatrix
|
||||
decentraleyes
|
||||
privacy-redirect
|
||||
];
|
||||
|
||||
settings = {
|
||||
"browser.search.suggest.enabled" = false;
|
||||
"browser.tabs.drawInTitlebar" = true;
|
||||
|
||||
@@ -8,20 +8,52 @@ in {
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
winePackages.stagingFull winetricks lutris-free-wrapped
|
||||
# General wine
|
||||
wineWowPackages.staging winetricks
|
||||
protontricks
|
||||
|
||||
# Lutris for League
|
||||
lutris-free-wrapped
|
||||
# prismlauncher-wrapped
|
||||
|
||||
# retroarch for retro games
|
||||
(pkgs.callPackage ./wrapper.nix {
|
||||
inherit (pkgs) retroarch;
|
||||
cores = with pkgs.libretro; [
|
||||
mgba mupen64plus melonds desmume dolphin
|
||||
mgba mupen64plus melonds desmume dolphin pcsx2
|
||||
];
|
||||
})
|
||||
|
||||
steam-wrapped # Custom package
|
||||
#steam-wrapped # Custom package
|
||||
|
||||
nur.repos.dukzcry.gamescope
|
||||
# Gameplay clip recording
|
||||
(pkgs.wrapOBS {
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
obs-vaapi obs-vkcapture obs-pipewire-audio-capture
|
||||
];
|
||||
})
|
||||
obs-cli
|
||||
|
||||
# Gameplay clip editing
|
||||
kdenlive
|
||||
|
||||
# Performance
|
||||
corectrl
|
||||
];
|
||||
|
||||
programs.gamescope = {
|
||||
enable = true;
|
||||
capSysNice = true;
|
||||
args = ["--rt"];
|
||||
};
|
||||
|
||||
# security.wrappers.gamescope = {
|
||||
# owner = "alexander";
|
||||
# group = "alexander";
|
||||
# source = "${pkgs.gamescope}/bin/gamescope";
|
||||
# capabilities = "CAP_SYS_NICE=eip";
|
||||
# };
|
||||
|
||||
hardware.steam-hardware.enable = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -12,6 +12,9 @@ in {
|
||||
enable = true;
|
||||
userEmail = "papatutuwawa@polynom.me";
|
||||
userName = "Alexander \"PapaTutuWawa\"";
|
||||
|
||||
# The key on my Yubikey
|
||||
signing.key = "B688F70D0EC87D5A8A9D3D7A56C749835F3CE824";
|
||||
extraConfig = {
|
||||
init = {
|
||||
defaultBranch = "master";
|
||||
|
||||
@@ -10,7 +10,11 @@ in {
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
# Themes
|
||||
arc-theme
|
||||
libsForQt5.qtstyleplugin-kvantum
|
||||
|
||||
# Gnome Shell Extensions
|
||||
gnomeExtensions.appindicator
|
||||
gnomeExtensions.caffeine
|
||||
gnomeExtensions.gnome-40-ui-improvements
|
||||
@@ -23,16 +27,24 @@ in {
|
||||
gnomeExtensions.gsconnect
|
||||
gnomeExtensions.blur-my-shell
|
||||
gnomeExtensions.forge
|
||||
gnomeExtensions.dash-to-dock
|
||||
gnomeExtensions.sound-output-device-chooser
|
||||
|
||||
# Programs
|
||||
gnome.eog
|
||||
gnome.nautilus
|
||||
gnome.evince
|
||||
unstable.gnome.gnome-shell
|
||||
gnome.gnome-terminal
|
||||
gnome-console
|
||||
pinentry-gnome
|
||||
mousai
|
||||
gnome.geary
|
||||
gnome.gnome-calendar
|
||||
gnome.gedit
|
||||
|
||||
# For config
|
||||
dconf # For home-manager
|
||||
libsForQt5.qtstyleplugin-kvantum
|
||||
];
|
||||
gnome.excludePackages = pkgs.gnome.optionalPackages;
|
||||
};
|
||||
|
||||
services = {
|
||||
@@ -65,17 +77,13 @@ in {
|
||||
libinput.enable = true;
|
||||
|
||||
desktopManager.gnome.enable = true;
|
||||
displayManager.gdm = {
|
||||
enable = true;
|
||||
wayland = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
#extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||
gtkUsePortal = true;
|
||||
#gtkUsePortal = true;
|
||||
};
|
||||
|
||||
qt5 = {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
mkAnime4kShader = shader: "${pkgs.anime4k}/usr/share/shaders/${shader}";
|
||||
#mkAnime4kShader = shader: "${pkgs.anime4k}/usr/share/shaders/${shader}";
|
||||
mkDefaultShader = shader: "${pkgs.mpv-shader-pack}/usr/share/shaders/${shader}";
|
||||
makeMpvProfile = { shader, gpuContext ? "waylandvk", additional ? {} }: {
|
||||
glsl-shaders = shader;
|
||||
makeMpvProfile = { shader ? null, gpuContext ? "waylandvk", additional ? {} }: {
|
||||
glsl-shaders = lib.mkIf (shader != null) shader;
|
||||
scale = "ewa_lanczossharp";
|
||||
cscale = "ewa_lanczossharp";
|
||||
gpu-context = gpuContext;
|
||||
@@ -41,13 +41,13 @@ in {
|
||||
defaultProfiles = [ "anime" ];
|
||||
profiles = {
|
||||
anime = (makeMpvProfile {
|
||||
shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||
#shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||
additional = {
|
||||
fullscreen = "";
|
||||
};
|
||||
});
|
||||
anime-denoise = (makeMpvProfile {
|
||||
shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||
#shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||
});
|
||||
non-anime = (makeMpvProfile {
|
||||
shader = mkDefaultShader "FSRCNNX_x2_8-0-4-1.glsl";
|
||||
|
||||
28
modules/programs/neovim/default.nix
Normal file
28
modules/programs/neovim/default.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.neovim;
|
||||
in {
|
||||
options.ptw.programs.neovim = {
|
||||
enable = lib.mkEnableOption "Enable and configure neovim using HomeManager";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users."${config.ptw.system.singleUser}" = {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
# For telescope-nvim
|
||||
fd
|
||||
lazygit
|
||||
fish
|
||||
tree-sitter gcc
|
||||
nodejs_20
|
||||
|
||||
# Clipboard
|
||||
wl-clipboard
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
27
modules/programs/obs/default.nix
Normal file
27
modules/programs/obs/default.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.obs;
|
||||
in {
|
||||
options.ptw.programs.obs = {
|
||||
enable = lib.mkEnableOption "Configure OBS Studio";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users.${config.ptw.system.singleUser}.programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
wlrobs obs-vkcapture
|
||||
|
||||
(obs-pipewire-audio-capture.overrideAttrs (old: {
|
||||
source = pkgs.fetchFromGitHub {
|
||||
owner = "dimtpap";
|
||||
repo = "obs-pipewire-audio-capture";
|
||||
rev = "dd0cfa9581481c862cddd725e23423cd975265d9";
|
||||
sha256 = "1kwdlvpvvx6fgnbn3scx5yg8vgxqy0blrbdxnwqdizzwm2m412ls";
|
||||
};
|
||||
}))
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -7,7 +7,9 @@ in {
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
libreoffice texlive.combined.scheme-basic
|
||||
/*libreoffice*/
|
||||
texlive.combined.scheme-basic
|
||||
thunderbird
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.plasma;
|
||||
in {
|
||||
options.ptw.programs.plasma = {
|
||||
enable = lib.mkEnableOption "Enable KDE Plasma";
|
||||
mobile = {
|
||||
enable = lib.mkEnableOption "Enable Plasma Mobile";
|
||||
};
|
||||
wayland = {
|
||||
enable = lib.mkOption {
|
||||
default = true;
|
||||
description = "Ignore NixOS 'recommendations' and use the Wayland session by default";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.xserver = {
|
||||
desktopManager.plasma5 = {
|
||||
enable = true;
|
||||
runUsingSystemd = true;
|
||||
supportDDC = true;
|
||||
mobile.enable = cfg.mobile.enable;
|
||||
};
|
||||
|
||||
# See https://github.com/NixOS/nixpkgs/commit/a506f9c79700255c215dddb53455d5e2bed6c1af
|
||||
displayManager.defaultSession = lib.mkIf cfg.wayland.enable "plasmawayland";
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-kde ];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
#yakuake
|
||||
libsForQt5.okular
|
||||
libsForQt5.kdeconnect-kde
|
||||
libsForQt5.breeze-gtk
|
||||
libsForQt5.bismuth
|
||||
#kde-rounded-corners
|
||||
index-fm
|
||||
rsibreak
|
||||
kalendar
|
||||
kate
|
||||
];
|
||||
};
|
||||
}
|
||||
26
modules/programs/sddm/default.nix
Normal file
26
modules/programs/sddm/default.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
{ pkgs, config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.sddm;
|
||||
in {
|
||||
options.ptw.services.sddm = {
|
||||
enable = lib.mkEnableOption "Enable SDDM as a display manager";
|
||||
monitors = lib.mkOption {
|
||||
description = "The file to use as a monitors.xml";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = config.ptw.services.gdm.enable == false;
|
||||
message = "Having two display managers is a bad idea";
|
||||
}
|
||||
];
|
||||
|
||||
services.xserver.displayManager.sddm = {
|
||||
enable = true;
|
||||
autoNumlock = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -52,7 +52,7 @@ in {
|
||||
qt5.style = "adwaita-dark";
|
||||
|
||||
environment = {
|
||||
systemPackages = with pkgs; [ adwaita-qt ];
|
||||
systemPackages = with pkgs; [ adwaita-qt wdisplays ];
|
||||
sessionVariables = {
|
||||
# sway
|
||||
#"_JAVA_AWT_NONREPARENTING" = 1;
|
||||
|
||||
@@ -18,6 +18,7 @@ in {
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
style = builtins.readFile ./style.css;
|
||||
/*
|
||||
settings = [
|
||||
{
|
||||
output = [ "${cfg.output}" ];
|
||||
@@ -62,6 +63,7 @@ in {
|
||||
};
|
||||
}
|
||||
];
|
||||
*/
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -23,7 +23,7 @@ in {
|
||||
history.ignoreSpace = true;
|
||||
shellAliases = let
|
||||
home = "/home/${config.ptw.system.singleUser}/Development/Personal/nixos-config";
|
||||
nixosSwitch = "nixos-rebuild --flake .#${config.ptw.system.hostName} switch";
|
||||
nixosSwitch = "nixos-rebuild --flake .#${config.ptw.system.hostName} switch --use-remote-sudo";
|
||||
in {
|
||||
ls = "ls --color=always";
|
||||
".." = "cd ..";
|
||||
@@ -36,8 +36,8 @@ in {
|
||||
gds = "git diff --staged";
|
||||
c = "clear";
|
||||
suspend = "systemctl suspend";
|
||||
nixos-rebuild-switch = "pushd; cd ${home}; sudo ${nixosSwitch}; popd";
|
||||
nixos-rebuild-switch-fast = "pushd; cd ${home}; sudo ${nixosSwitch} --fast; popd";
|
||||
nixos-rebuild-switch = "pushd; cd ${home}; ${nixosSwitch}; popd";
|
||||
nixos-rebuild-switch-fast = "pushd; cd ${home}; ${nixosSwitch} --fast; popd";
|
||||
|
||||
waifu2x = "flatpak run com.github.nihui.waifu2x-ncnn-vulkan";
|
||||
};
|
||||
@@ -47,8 +47,14 @@ in {
|
||||
bindkey "\e[3~" delete-char
|
||||
'';
|
||||
history.share = true;
|
||||
initExtraFirst = let
|
||||
enableDirenv = lib.optionalString
|
||||
config.ptw.programs.direnv.enable
|
||||
"eval \"$(${pkgs.direnv}/bin/direnv hook zsh)\"";
|
||||
in ''
|
||||
${enableDirenv}
|
||||
|
||||
# TODO: Maybe move this somewhere else
|
||||
initExtraFirst = ''
|
||||
wcurl() {
|
||||
[[ -z "$1" ]] && echo "Error: No URL specified" && exit 1
|
||||
|
||||
@@ -95,6 +101,7 @@ in {
|
||||
sha256 = "1y8wkmhgkkyfz91y1f8crh6cg912n87gmcchc8xhnwji11n1mqrq";
|
||||
};
|
||||
}
|
||||
/*
|
||||
{
|
||||
name = "zsh-syntax-highlighting";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
@@ -104,6 +111,7 @@ in {
|
||||
sha256 = "sha256-UqeK+xFcKMwdM62syL2xkV8jwkf/NWfubxOTtczWEwA=";
|
||||
};
|
||||
}
|
||||
*/
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
24
modules/security/apparmor.nix
Normal file
24
modules/security/apparmor.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.security.apparmor;
|
||||
in {
|
||||
options.ptw.security.apparmor = {
|
||||
enable = lib.mkEnableOption "Enable AppArmor";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
apparmor-bin-utils
|
||||
];
|
||||
|
||||
services.dbus.apparmor = "enabled";
|
||||
security.apparmor = {
|
||||
enable = true;
|
||||
enableCache = true;
|
||||
includes = {
|
||||
profiles = "${pkgs.apparmor-profiles}/etc/apparmor.d";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
27
modules/services/cups/default.nix
Normal file
27
modules/services/cups/default.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{ lib, config, pkgs, ...}:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.cups;
|
||||
in {
|
||||
options.ptw.services.cups = {
|
||||
enable = lib.mkEnableOption "Enable Cups";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [ gnome.simple-scan ];
|
||||
|
||||
services.printing = {
|
||||
enable = true;
|
||||
drivers = with pkgs; [ hplip ];
|
||||
};
|
||||
|
||||
services.avahi = {
|
||||
enable = lib.mkForce true;
|
||||
nssmdns = true;
|
||||
};
|
||||
hardware.sane = {
|
||||
enable = true;
|
||||
extraBackends = with pkgs; [ sane-airscan hplip ];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, lib, ... }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.gamemode;
|
||||
@@ -7,7 +7,15 @@ in {
|
||||
enable = lib.mkEnableOption "Enable and configure gamemode";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
config = let
|
||||
keyboardBrightnessScript = pkgs.writeShellScript "keyboard-brightness.sh" ''
|
||||
${pkgs.rgb_keyboard}/bin/rgb_keyboard -l ripple -b "$1"
|
||||
'';
|
||||
in lib.mkIf cfg.enable {
|
||||
security.sudo.extraConfig = ''
|
||||
${config.ptw.system.singleUser} ALL = (ALL) NOPASSWD: ${keyboardBrightnessScript}
|
||||
'';
|
||||
|
||||
programs.gamemode = {
|
||||
enable = true;
|
||||
enableRenice = true;
|
||||
@@ -23,6 +31,35 @@ in {
|
||||
ioprio = 0;
|
||||
inhibit_screensaver = 1;
|
||||
};
|
||||
|
||||
gpu = {
|
||||
amd_performance_level = "high";
|
||||
};
|
||||
|
||||
custom = let
|
||||
switchScript = groupName: "${pkgs.dbus}/bin/dbus-send --print-reply --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.SwitchInputMethodGroup string:'${groupName}'";
|
||||
pauseFcitx = switchScript "Group 2";
|
||||
resumeFcitx = switchScript "Group 1";
|
||||
|
||||
# The scripts
|
||||
start = pkgs.writeShellScript "gamemode-start.sh" ''
|
||||
# Disable Fcitx's IME
|
||||
${pauseFcitx}
|
||||
|
||||
# Turn on the keyboard lights
|
||||
${config.security.wrapperDir}/sudo ${keyboardBrightnessScript} 1
|
||||
'';
|
||||
end = pkgs.writeShellScript "gamemode-end.sh" ''
|
||||
# Resume Fcitx's IME
|
||||
${resumeFcitx}
|
||||
|
||||
# Turn off the keyboard lights
|
||||
${config.security.wrapperDir}/sudo ${keyboardBrightnessScript} 0
|
||||
'';
|
||||
in {
|
||||
start = "${start}";
|
||||
end = "${end}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -10,8 +10,8 @@ in {
|
||||
config = lib.mkIf cfg.enable {
|
||||
# TODO: mozc cannot be configured for some reason
|
||||
i18n.inputMethod = {
|
||||
enabled = "fcitx";
|
||||
fcitx.engines = with pkgs.fcitx-engines; [ mozc ];
|
||||
enabled = "fcitx5";
|
||||
fcitx5.addons = with pkgs; [ fcitx5-mozc ];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [ fcitx5-configtool fcitx5-gtk ];
|
||||
|
||||
@@ -14,27 +14,16 @@ in {
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# TODO: Assert that uinput is in kernelModules
|
||||
services.udev = {
|
||||
packages = with pkgs; [ input-remapper ];
|
||||
extraRules = ''
|
||||
KERNEL=="uinput", GROUP="input", MODE="0660"
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.input-remapper # Custom package
|
||||
];
|
||||
|
||||
systemd.user.services.input-remapper = {
|
||||
description = "A tool to change the mapping of your input device buttons";
|
||||
wantedBy = [ "default.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.input-remapper}/bin/input-remapper-service";
|
||||
Restart = "always";
|
||||
# NOTE: The Tartarus may not be connected, so don't fail if we cannot set the preset
|
||||
ExecStartPost = cfg.postStartCommand;
|
||||
};
|
||||
#services.udev = {
|
||||
# packages = with pkgs; [ input-remapper ];
|
||||
# extraRules = ''
|
||||
# KERNEL=="uinput", GROUP="input", MODE="0660"
|
||||
# '';
|
||||
#};
|
||||
services.input-remapper = {
|
||||
enable = true;
|
||||
enableUdevRules = true;
|
||||
serviceWantedBy = [ "default.target" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
48
modules/services/logiops/default.nix
Normal file
48
modules/services/logiops/default.nix
Normal file
@@ -0,0 +1,48 @@
|
||||
{ lib, pkgs, config, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.logiops;
|
||||
in {
|
||||
options.ptw.services.logiops = {
|
||||
enable = lib.mkEnableOption "Enable logiops";
|
||||
renice = lib.mkOption {
|
||||
description = "Set the nice value of the process";
|
||||
default = true;
|
||||
};
|
||||
reniceValue = lib.mkOption {
|
||||
description = "Set the nice value of the process";
|
||||
default = -19;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf true {
|
||||
systemd.services.logiops = {
|
||||
description = "An unofficial userspace driver for HID++ Logitech devices";
|
||||
wantedBy = [ "default.target" ];
|
||||
serviceConfig = let
|
||||
logiopsConfig = pkgs.writeText "logiops.cfg" ''
|
||||
devices: (
|
||||
{
|
||||
name: "Wireless Mouse MX Master 3";
|
||||
hiresscroll: {
|
||||
hires: true;
|
||||
target: false;
|
||||
};
|
||||
smartshift: {
|
||||
on: true;
|
||||
threshold: 30;
|
||||
default_threshold: 30;
|
||||
};
|
||||
dpi: 800;
|
||||
}
|
||||
);
|
||||
'';
|
||||
in {
|
||||
Type = "simple";
|
||||
ExecStart = let
|
||||
renice = lib.optionalString cfg.renice "${pkgs.coreutils-full}/bin/nice -n ${builtins.toString cfg.reniceValue}";
|
||||
in "${renice} ${pkgs.logiops}/bin/logid -c ${logiopsConfig}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
31
modules/services/yubikey/default.nix
Normal file
31
modules/services/yubikey/default.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ lib, config, pkgs, ...}:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.yubikey;
|
||||
in {
|
||||
options.ptw.services.yubikey = {
|
||||
enable = lib.mkEnableOption "Enable everything for using a YubiKey";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services = {
|
||||
# Unprivileged access to the YubiKey
|
||||
udev.packages = [ pkgs.yubikey-personalization ];
|
||||
|
||||
# Allow using the YubiKey as a smart card
|
||||
pcscd.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Management
|
||||
yubikey-manager-qt yubikey-manager yubico-piv-tool
|
||||
];
|
||||
|
||||
programs = {
|
||||
gnupg.agent = {
|
||||
enable = true;
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -4,13 +4,14 @@
|
||||
config = lib.mkIf (config.ptw.system.singleUser == "alexander") {
|
||||
users.users.alexander = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "wheel" "audio" "video" "kvm" "input" "libvirtd" ];
|
||||
hashedPassword = "$5$i4aZuQ/WXP.rFOc$lCzDqbrVsqBQt5954O.3bFPknD0jn27MmqzmE4DIAEC";
|
||||
extraGroups = [ "wheel" "audio" "video" "kvm" "input" "libvirtd" "scanner" "lp" "alexander" "cdrom" ];
|
||||
hashedPassword = "$y$j9T$xhnK648hF0yzDnRy0rTT/.$HbDKvNetiGeY3Xjt6/YPIzoxSmdQ0SzhXengOT1Ga01";
|
||||
shell = pkgs.zsh;
|
||||
useDefaultShell = false;
|
||||
uid = 1000;
|
||||
isSystemUser = false;
|
||||
};
|
||||
users.groups.alexander = {};
|
||||
|
||||
# Activate gpg
|
||||
programs.gnupg.agent.enable = true;
|
||||
@@ -18,19 +19,19 @@
|
||||
# No need to use users."${system.singleUser}" as we already know it
|
||||
home-manager.users.alexander = {
|
||||
programs.home-manager.enable = true;
|
||||
home.stateVersion = "22.11";
|
||||
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
IdentitiesOnly yes
|
||||
'';
|
||||
includes = [
|
||||
"config.d/*"
|
||||
];
|
||||
matchBlocks = let
|
||||
sshPort = (import ../../lib/ports.nix).sshPort;
|
||||
sshPort = 1847;
|
||||
in {
|
||||
ayame = {
|
||||
port = sshPort;
|
||||
hostname = "78.46.184.48";
|
||||
user = "alexander";
|
||||
identityFile = "~/.ssh/polynom.me_ayame";
|
||||
identitiesOnly = true;
|
||||
};
|
||||
"git.polynom.me" = {
|
||||
port = 2222;
|
||||
user = "gitea";
|
||||
@@ -47,13 +48,18 @@
|
||||
hostname = "codeberg.org";
|
||||
identityFile = "~/.ssh/codeberg_papatutuwawa";
|
||||
};
|
||||
"collaborating.tuhh.de" = {
|
||||
user = "git";
|
||||
hostname = "collaborating.tuhh.de";
|
||||
identityFile = "~/.ssh/gitlab_tuhh";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# TODO: Maybe move this somewhere else
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
pinentryFlavor = "gnome3";
|
||||
pinentryFlavor = "qt";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -8,7 +8,7 @@ in {
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [ virglrenderer unstable.qemu ];
|
||||
environment.systemPackages = with pkgs; [ virglrenderer unstable.qemu virt-manager ];
|
||||
services.spice-vdagentd.enable = true;
|
||||
|
||||
virtualisation.libvirtd = {
|
||||
|
||||
@@ -36,39 +36,39 @@ in {
|
||||
[[device.Simple.selector]]
|
||||
USBIDClass = {vendor=0x1532, model=0x011a, class="Keyboard"}
|
||||
'';
|
||||
"libvirt/hooks/qemu".source = let
|
||||
vfio-isolate-state = "/tmp/vfio-isolate-state";
|
||||
in pkgs.writeScript "qemu" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
guest=$1
|
||||
action=$2
|
||||
phase=$3
|
||||
extra=$4
|
||||
# "libvirt/hooks/qemu".source = let
|
||||
# vfio-isolate-state = "/tmp/vfio-isolate-state";
|
||||
# in pkgs.writeScript "qemu" ''
|
||||
# #!${pkgs.stdenv.shell}
|
||||
# guest=$1
|
||||
# action=$2
|
||||
# phase=$3
|
||||
# extra=$4
|
||||
|
||||
echo "called with $1 $2 $3 $4" > /dev/stderr
|
||||
if [[ "$guest" = "win10-gaming" ]]; then
|
||||
case "$action" in
|
||||
prepare)
|
||||
# Only do this while in preparation
|
||||
[[ ! "$phase" = "prepare" ]] && exit 0
|
||||
# echo "called with $1 $2 $3 $4" > /dev/stderr
|
||||
# if [[ "$guest" = "win10-gaming" ]]; then
|
||||
# case "$action" in
|
||||
# prepare)
|
||||
# # Only do this while in preparation
|
||||
# [[ ! "$phase" = "prepare" ]] && exit 0
|
||||
|
||||
GUEST_CORES="C1-3,5-7"
|
||||
${pkgs.vfio-isolate}/bin/vfio-isolate \
|
||||
-u ${vfio-isolate-state} \
|
||||
cpu-governor performance "$GUEST_CORES" \
|
||||
cpuset-create --cpus "$GUEST_CORES" /guest.slice \
|
||||
cpuset-create --cpus C0,4 /host.slice \
|
||||
move-tasks / /host.slice \
|
||||
irq-affinity mask "$GUEST_CORES"
|
||||
;;
|
||||
stopped)
|
||||
# Only run when the VM is fully stopped
|
||||
[[ ! "$phase" = "end" ]] && exit 0
|
||||
${pkgs.vfio-isolate}/bin/vfio-isolate \
|
||||
restore ${vfio-isolate-state}
|
||||
esac
|
||||
fi
|
||||
'';
|
||||
# GUEST_CORES="C1-3,5-7"
|
||||
# ${pkgs.vfio-isolate}/bin/vfio-isolate \
|
||||
# -u ${vfio-isolate-state} \
|
||||
# cpu-governor performance "$GUEST_CORES" \
|
||||
# cpuset-create --cpus "$GUEST_CORES" /guest.slice \
|
||||
# cpuset-create --cpus C0,4 /host.slice \
|
||||
# move-tasks / /host.slice \
|
||||
# irq-affinity mask "$GUEST_CORES"
|
||||
# ;;
|
||||
# stopped)
|
||||
# # Only run when the VM is fully stopped
|
||||
# [[ ! "$phase" = "end" ]] && exit 0
|
||||
# ${pkgs.vfio-isolate}/bin/vfio-isolate \
|
||||
# restore ${vfio-isolate-state}
|
||||
# esac
|
||||
# fi
|
||||
# '';
|
||||
};
|
||||
|
||||
# NOTE: Workaround for libvirt's SYSCONFDIR being set to /var/lib
|
||||
@@ -81,7 +81,7 @@ in {
|
||||
|
||||
systemd = {
|
||||
services = {
|
||||
libvirtd.path = with pkgs; [ vfio-isolate systemd bash ];
|
||||
libvirtd.path = with pkgs; [ /*vfio-isolate*/ systemd bash ];
|
||||
};
|
||||
|
||||
user.services.evdev-proxy = {
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
{
|
||||
simple = import ./simple.nix;
|
||||
surface = import ./surface.nix pkgs;
|
||||
#surface = import ./surface.nix pkgs;
|
||||
sandbox = import ./sandbox.nix;
|
||||
}
|
||||
|
||||
46
overlays/phosh.nix
Normal file
46
overlays/phosh.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
final: prev:
|
||||
|
||||
rec {
|
||||
phoc = prev.phoc.overrideAttrs (old: rec {
|
||||
version = "0.20.0";
|
||||
|
||||
src = prev.fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
group = "World";
|
||||
owner = "Phosh";
|
||||
repo = "phoc";
|
||||
rev = "v${version}";
|
||||
sha256 = "1mm47n5x7kjgrpxbvb0d0yvpxgzyg90mmmafb6fxhsqklf2dhryy";
|
||||
};
|
||||
|
||||
buildInputs = (map
|
||||
(x: if (prev.lib.getName x) == "wlroots"
|
||||
then prev.wlroots_0_15
|
||||
else x
|
||||
) old.buildInputs);
|
||||
});
|
||||
|
||||
phosh = prev.phosh.overrideAttrs (old: rec {
|
||||
version = "0.20.0_beta2";
|
||||
src = prev.fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
group = "World";
|
||||
owner = "Phosh";
|
||||
repo = "phosh";
|
||||
rev = "v${version}";
|
||||
fetchSubmodules = true; # including gvc and libcall-ui which are designated as subprojects
|
||||
sha256 = "sha256-UzOv6ztxYYE4CIzCYKSRfpZzE7oSEKenVX+umkEmFRw=";
|
||||
};
|
||||
|
||||
buildInputs = (map
|
||||
(x: if (prev.lib.getName x) == "phoc"
|
||||
then phoc
|
||||
else x
|
||||
) old.buildInputs);
|
||||
|
||||
postFixup = ''
|
||||
mkdir -p $out/share/wayland-sessions
|
||||
ln -s $out/share/applications/sm.puri.Phosh.desktop $out/share/wayland-sessions/
|
||||
'';
|
||||
});
|
||||
}
|
||||
@@ -3,95 +3,138 @@ final: prev:
|
||||
let
|
||||
wrapInSandbox = prev.callPackage ../lib/sandbox.nix {};
|
||||
in {
|
||||
discord-wrapped = wrapInSandbox {
|
||||
name = "discord";
|
||||
package = prev.discord;
|
||||
#package = discord-system-electron;
|
||||
binaryName = "discord";
|
||||
mountInHome = [ ".config/discord" ".config/BetterDiscord" ];
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
chdirTo = "/home/$USER";
|
||||
|
||||
version = "1.0.1";
|
||||
copyIntoSandbox = [ "share/pixmaps" ];
|
||||
desktopFileArgs = {
|
||||
name = "discord-wrapped";
|
||||
#exec = "discord";
|
||||
icon = "discord";
|
||||
desktopName = "Discord (wrapped)";
|
||||
genericName = "Instant Messenger";
|
||||
categories = [ "Network" "InstantMessaging" ];
|
||||
};
|
||||
};
|
||||
|
||||
discord-app-wrapped = wrapInSandbox {
|
||||
name = "discord-app";
|
||||
package = prev.discord-app;
|
||||
binaryName = "discord-app";
|
||||
name = "discord-app-wrapped";
|
||||
launchScriptName = "discord-app";
|
||||
binary = "${prev.discord-app}/bin/discord-app";
|
||||
mountInHome = [ ".local/share/discord-app" ];
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
chdirTo = "/home/$USER";
|
||||
|
||||
version = "1.0.0";
|
||||
desktopFileArgs = {
|
||||
preDesktopFilePhase = ''
|
||||
mkdir -p $out/share/icons
|
||||
cp -L ${prev.discord}/share/pixmaps/discord.png $out/share/icons/discord.png
|
||||
'';
|
||||
desktopFileAttributes = {
|
||||
name = "discord-app-wrapped";
|
||||
#exec = "discord";
|
||||
icon = "discord";
|
||||
desktopName = "Discord-App (wrapped)";
|
||||
genericName = "Instant Messenger";
|
||||
categories = [ "Network" "InstantMessaging" ];
|
||||
#categories = [ "Network" "InstantMessaging" ];
|
||||
};
|
||||
enableDesktopFile = true;
|
||||
};
|
||||
|
||||
minecraft-wrapped = wrapInSandbox {
|
||||
name = "minecraft-launcher";
|
||||
package = prev.minecraft;
|
||||
binaryName = "minecraft-launcher";
|
||||
mountInHome = [ ".local/share/minecraft" ".minecraft" ];
|
||||
prismlauncher-wrapped = wrapInSandbox {
|
||||
name = "prismlauncher";
|
||||
binary = let
|
||||
script = prev.writeShellScript "prismlauncher-zink.sh" ''
|
||||
export MESA_LOADER_DRIVER_OVERRIDE=zink
|
||||
${prev.prismlauncher}/bin/prismlauncher
|
||||
'';
|
||||
in "${prev.prismlauncher}/bin/prismlauncher";
|
||||
launchScriptName = "prismlauncher-wrapped";
|
||||
mountInHome = [".local/share/PrismLauncher"];
|
||||
additionalMounts = [
|
||||
"/etc/profile"
|
||||
];
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
chdirTo = "/home/$USER";
|
||||
};
|
||||
|
||||
steam-wrapped = wrapInSandbox {
|
||||
name = "steam";
|
||||
package = prev.steam;
|
||||
binaryName = "steam";
|
||||
mountInHome = [ ".steam" ".local/share/Steam" ];
|
||||
name = "steam-wrapped";
|
||||
binary = "${prev.steam}/bin/steam";
|
||||
launchScriptName = "steam";
|
||||
mountInHome = [
|
||||
".steam"
|
||||
".local/share/Steam"
|
||||
"Downloads/Skyrim Mods"
|
||||
];
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
additionalMounts = [ "/mnt/Storage/Games/SteamLibrary" ];
|
||||
chdirTo = "/home/$USER";
|
||||
extraEnv = {
|
||||
DRI_PRIME = "1";
|
||||
|
||||
preDesktopFilePhase = ''
|
||||
cp -Lr ${prev.steam}/share/icons $out/share/icons
|
||||
'';
|
||||
desktopFileAttributes = {
|
||||
name = "steam-wrapped";
|
||||
icon = "steam";
|
||||
desktopName = "Steam (wrapped)";
|
||||
};
|
||||
|
||||
copyIntoSandbox = [ "/share" ];
|
||||
};
|
||||
|
||||
android-studio-wrapped = wrapInSandbox {
|
||||
name = "android-studio";
|
||||
package = prev.android-studio;
|
||||
binaryName = "android-studio";
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
mountInHome = [ "Development/Personal/Android" ".android" ];
|
||||
chdirTo = "/home/$USER";
|
||||
enableDesktopFile = true;
|
||||
};
|
||||
|
||||
spotify-wrapped = wrapInSandbox {
|
||||
name = "spotify";
|
||||
package = prev.spotify;
|
||||
binaryName = "spotify";
|
||||
name = "spotify-wrapped";
|
||||
launchScriptName = "spotify";
|
||||
binary = "${prev.spotify}/bin/spotify";
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
mountInHome = [ ".config/spotify" ];
|
||||
chdirTo = "/home/$USER";
|
||||
|
||||
preDesktopFilePhase = ''
|
||||
cp -Lr ${prev.spotify}/share/icons $out/share/icons
|
||||
'';
|
||||
desktopFileAttributes = {
|
||||
name = "spotify-wrapped";
|
||||
icon = "spotify-client";
|
||||
desktopName = "Spotify (wrapped)";
|
||||
};
|
||||
enableDesktopFile = true;
|
||||
};
|
||||
|
||||
lutris-free-wrapped = wrapInSandbox {
|
||||
name = "lutris-free";
|
||||
package = prev.lutris-free;
|
||||
binaryName = "lutris";
|
||||
name = "lutris-free-wrapped";
|
||||
launchScriptName = "lutris";
|
||||
binary = "${prev.lutris-free}/bin/lutris";
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
additionalMounts = [ "/mnt/Storage/Games/UPlay" ];
|
||||
mountInHome = [ ".local/share/lutris" ".config/lutris" ];
|
||||
additionalMounts = [
|
||||
"/mnt/Storage/Games/LeagueOfLegends"
|
||||
"/mnt/Storage/Games/Origin"
|
||||
"/mnt/Storage/Games/SteamLibrary"
|
||||
"/mnt/Storage/Games/Uplay"
|
||||
"/mnt/tmp"
|
||||
];
|
||||
mountInHome = [ ".local/share/lutris" ".config/lutris" "Games" ];
|
||||
chdirTo = "/home/$USER";
|
||||
|
||||
preDesktopFilePhase = ''
|
||||
mkdir -p $out/share/
|
||||
cp -Lr ${prev.lutris-free}/share/icons $out/share/icons/
|
||||
'';
|
||||
desktopFileAttributes = {
|
||||
name = "lutris-wrapped";
|
||||
icon = "lutris";
|
||||
desktopName = "Lutris (wrapped)";
|
||||
};
|
||||
enableDesktopFile = true;
|
||||
};
|
||||
|
||||
discord-wrapped = let
|
||||
discordPkg = prev.discord;
|
||||
in wrapInSandbox {
|
||||
name = "discord-wrapped";
|
||||
launchScriptName = "discord";
|
||||
binary = "${discordPkg}/bin/discord";
|
||||
mountInHome = [ ".config/discord" ".config/BetterDiscord" ];
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
chdirTo = "/home/$USER";
|
||||
|
||||
preDesktopFilePhase = ''
|
||||
mkdir -p $out/share/icons
|
||||
cp -L ${discordPkg}/share/pixmaps/discord.png $out/share/icons/discord.png
|
||||
'';
|
||||
desktopFileAttributes = {
|
||||
name = "discord-wrapped";
|
||||
#exec = "discord";
|
||||
icon = "discord";
|
||||
desktopName = "Discord (wrapped)";
|
||||
genericName = "Instant Messenger";
|
||||
#categories = [ "Network" "InstantMessaging" ];
|
||||
};
|
||||
enableDesktopFile = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
final: prev:
|
||||
|
||||
{
|
||||
gajim = prev.gajim.overrideAttrs (old: {
|
||||
# Enable notification sounds
|
||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.gsound ];
|
||||
});
|
||||
|
||||
final: prev: {
|
||||
animedl = prev.animedl.overrideAttrs (old: {
|
||||
extraPkgs = pkgs: with final; [ mpv ];
|
||||
});
|
||||
|
||||
lutris-free = prev.lutris-free.override {
|
||||
extraPkgs = ps: with ps; [ openssl ];
|
||||
};
|
||||
|
||||
retroarch = prev.retroarch.override (old: {
|
||||
cores = with prev.libretro; [
|
||||
desmume
|
||||
@@ -41,24 +38,6 @@ final: prev:
|
||||
cargoPatches = [ ../patches/myxer/0000-1.2.1-set-gio-version.patch ];
|
||||
});
|
||||
|
||||
phosh = prev.phosh.overrideAttrs (old: {
|
||||
src = prev.fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
group = "World";
|
||||
owner = "Phosh";
|
||||
repo = "phosh";
|
||||
rev = "v0.14.1";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-FILSNVBYpWSPXeDb1Vc4jZ7zJMg0Gj6EY5yoc81gUr0=";
|
||||
};
|
||||
patches = [
|
||||
(builtins.fetchurl {
|
||||
url = "https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/923.patch";
|
||||
sha256 = "0fad4x8hzpaf7aq6acfz90njjjrvyc9ipndxmh4kqnm03n7300x0";
|
||||
})
|
||||
];
|
||||
});
|
||||
|
||||
xournalpp-git = prev.xournalpp.overrideAttrs (old: {
|
||||
version = "1.1.1";
|
||||
src = prev.fetchFromGitHub {
|
||||
@@ -69,19 +48,32 @@ final: prev:
|
||||
};
|
||||
});
|
||||
|
||||
/*
|
||||
discord = prev.discord.overrideAttrs (old: {
|
||||
version = "0.0.17";
|
||||
discord = prev.discord.overrideAttrs (old: rec {
|
||||
version = "0.0.18";
|
||||
src = prev.fetchurl {
|
||||
url = "https://dl.discordapp.net/apps/linux/0.0.17/discord-0.0.17.tar.gz";
|
||||
sha256 = "sha256-NGJzLl1dm7dfkB98pQR3gv4vlldrII6lOMWTuioDExU=";
|
||||
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
|
||||
sha256 = "sha256-BBc4n6Q3xuBE13JS3gz/6EcwdOWW57NLp2saOlwOgMI=";
|
||||
};
|
||||
});
|
||||
*/
|
||||
|
||||
tor-browser-bundle-bin = prev.tor-browser-bundle-bin.override {
|
||||
useHardenedMalloc = false;
|
||||
};
|
||||
|
||||
discord-app = prev.discord-app.override { chromium = prev.ungoogled-chromium; };
|
||||
|
||||
# Work around https://github.com/NixOS/nixpkgs/issues/216294
|
||||
# pkgsi686Linux = prev.pkgsi686Linux.extend (pfinal: pprev: {
|
||||
# directx-shader-compiler = pprev.directx-shader-compiler.override {stdenv = pfinal.gcc11Stdenv;};
|
||||
# });
|
||||
|
||||
gajim = prev.gajim.overrideAttrs (old: {
|
||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [
|
||||
# Make the tray icon work
|
||||
prev.libappindicator-gtk3
|
||||
|
||||
# Play sounds
|
||||
prev.gsound
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
31
packages/applications/desktop/qtgreet/default.nix
Normal file
31
packages/applications/desktop/qtgreet/default.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
stdenv
|
||||
, lib, fetchFromGitLab
|
||||
, meson, ninja, pkg-config
|
||||
, qtbase, wrapQtAppsHook
|
||||
, wlroots_0_16, wayland, pixman
|
||||
, dfl-applications, dfl-utils, dfl-ipc, wayqt
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "qtgreet";
|
||||
version = "20230117";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "marcusbritanicus";
|
||||
repo = "QtGreet";
|
||||
rev = "666603c38bbc408fd56126f3c8508009edf8dc44";
|
||||
sha256 = "0gigmlg4a0ddzhfnkhbrh67m23g6vhzayfv4gbvqjmkky91qnz93";
|
||||
};
|
||||
|
||||
mesonFlags = [
|
||||
"-Dnodynpath=true"
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
qtbase meson ninja pkg-config
|
||||
wlroots_0_16 wayland pixman
|
||||
wayqt dfl-applications dfl-ipc dfl-utils
|
||||
];
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
}
|
||||
30
packages/applications/desktop/rgb_keyboard/default.nix
Normal file
30
packages/applications/desktop/rgb_keyboard/default.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
stdenv
|
||||
, fetchFromGitHub
|
||||
, gcc, gnumake
|
||||
, libusb
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rgb_keyboard";
|
||||
version = "20230430";
|
||||
src = fetchFromGitHub {
|
||||
owner = "PapaTutuWawa";
|
||||
repo = "rgb_keyboard";
|
||||
rev = "5bbdafea77ef3c3eb47081494f3b58abcd5c4e27";
|
||||
sha256 = "0m5hvlhqncy1qn5v6gpsz9qd2p4cvcjjnma08vb4b2ybq4kfv7qw";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
libusb
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
${gnumake}/bin/make build
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin/
|
||||
cp rgb_keyboard $out/bin/
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
stdenv
|
||||
, lib, fetchFromGitLab
|
||||
, cmake, extra-cmake-modules, pkg-config
|
||||
, qtbase, qtx11extras, wrapQtAppsHook
|
||||
, kpipewire, plasma-framework
|
||||
, xorg
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xwaylandvideobridge";
|
||||
version = "5.27.3";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "davidedmundson";
|
||||
repo = "xwaylandvideobridge";
|
||||
rev = "b9e0c53570f55f4e8289f72ba78f3945e27e1a1a";
|
||||
domain = "invent.kde.org";
|
||||
sha256 = "1ypg2c26r5fy9lr8shif5vqcp06yf7mqqj2ps5g00s7s3ykryxdn";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase qtx11extras plasma-framework xorg.xcbproto kpipewire cmake pkg-config ];
|
||||
nativeBuildInputs = [ wrapQtAppsHook extra-cmake-modules ];
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
{ lib, fetchurl, gettext, wrapGAppsHook
|
||||
|
||||
# Native dependencies
|
||||
, python3, gtk3, gobject-introspection, gnome
|
||||
, glib-networking, gsound, nbxmpp, gtksourceview4
|
||||
|
||||
# Test dependencies
|
||||
, xvfb-run, dbus
|
||||
|
||||
# Optional dependencies
|
||||
, enableE2E ? true
|
||||
, enableSecrets ? true, libsecret
|
||||
, enableRST ? true, docutils
|
||||
, enableSpelling ? true, gspell
|
||||
, enableUPnP ? true, gupnp-igd
|
||||
, enableOmemoPluginDependencies ? true
|
||||
, enableAppIndicator ? true, libappindicator-gtk3
|
||||
, extraPythonPackages ? ps: []
|
||||
}:
|
||||
|
||||
let
|
||||
commit = "2bbd96644828c43def6c95555f33dfb011df1f5f";
|
||||
in python3.pkgs.buildPythonApplication rec {
|
||||
pname = "gajim";
|
||||
version = "1.4.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dev.gajim.org/gajim/gajim/-/archive/${commit}/gajim-${commit}.tar.gz";
|
||||
sha256 = "sha256-8VfV8BU5U9idQ0lP7lZSUUxe8nxXT4X/C2xKegjiHkA=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
gobject-introspection gtk3 gnome.adwaita-icon-theme
|
||||
glib-networking
|
||||
] ++ lib.optional enableSecrets libsecret
|
||||
++ lib.optional enableSpelling gspell
|
||||
++ lib.optional enableUPnP gupnp-igd
|
||||
++ lib.optional enableAppIndicator libappindicator-gtk3;
|
||||
|
||||
nativeBuildInputs = [
|
||||
gettext wrapGAppsHook
|
||||
];
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
nbxmpp pygobject3 dbus-python pillow css-parser precis-i18n keyring setuptools gsound
|
||||
gst-python gtksourceview4
|
||||
] ++ lib.optionals enableE2E [ pycrypto python-gnupg ]
|
||||
++ lib.optional enableRST docutils
|
||||
++ lib.optionals enableOmemoPluginDependencies [ python-axolotl qrcode ]
|
||||
++ extraPythonPackages python3.pkgs;
|
||||
|
||||
checkInputs = [ xvfb-run dbus.daemon ];
|
||||
|
||||
checkPhase = ''
|
||||
# https://dev.gajim.org/gajim/gajim/-/issues/10478
|
||||
rm test/lib/gajim_mocks.py test/unit/test_gui_interface.py
|
||||
|
||||
xvfb-run dbus-run-session \
|
||||
--config-file=${dbus.daemon}/share/dbus-1/session.conf \
|
||||
${python3.interpreter} setup.py test
|
||||
'';
|
||||
doCheck = false;
|
||||
|
||||
# necessary for wrapGAppsHook
|
||||
strictDeps = false;
|
||||
|
||||
meta = {
|
||||
homepage = "http://gajim.org/";
|
||||
description = "Jabber client written in PyGTK";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ raskin abbradar ];
|
||||
downloadPage = "http://gajim.org/downloads.php";
|
||||
updateWalker = true;
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
27
packages/applications/wayfire/firedecor/default.nix
Normal file
27
packages/applications/wayfire/firedecor/default.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
lib, stdenv
|
||||
, fetchFromGitHub
|
||||
, wayfire, wf-config, librsvg, boost, wlroots, pango, wayland, libxkbcommon, systemd, libinput
|
||||
, meson, pkg-config, cmake, ninja
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "firedecor";
|
||||
version = "20220519";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AhoyISki";
|
||||
repo = "Firedecor";
|
||||
rev = "0170c4df209f0226295a9e2aa3cae782d9861908";
|
||||
sha256 = "0a8vc4l3az14l8piwzqgfqsdv16kakcvcznvw6q1dgb2sf97zdlv";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ meson pkg-config cmake ninja ];
|
||||
|
||||
buildInputs = [ wayfire librsvg boost wf-config wlroots pango wayland libxkbcommon systemd libinput ];
|
||||
|
||||
patchPhase = ''
|
||||
sed -e "s|wayfire.get_variable(pkgconfig: 'plugindir')|'$out/usr/lib/wayfire'|" --in-place src/meson.build
|
||||
sed -e "s|wayfire.get_variable(pkgconfig: 'metadatadir')|'$out/usr/lib/wayfire'|" --in-place metadata/meson.build
|
||||
'';
|
||||
}
|
||||
@@ -10,10 +10,53 @@ let
|
||||
extraStartupArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||||
#extraStartupArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-features=WebRTCPipeWireCapturer";
|
||||
};
|
||||
in {
|
||||
inherit discord-system-electron;
|
||||
wf-config_0_8 = prev.wf-config.overrideAttrs (old: {
|
||||
version = "0.8-git";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "wayfirewm";
|
||||
repo = "wf-config";
|
||||
rev = "e42a3870fb194842a505ad5a9671be1aebda0b0b";
|
||||
sha256 = "0n6i3hizbqixxjh33950ya8avwqil5k94jbgff1pimcbh9ahpgrr";
|
||||
};
|
||||
});
|
||||
wayfire-master = (prev.wayfireApplications-unwrapped.wayfire.overrideAttrs (old: {
|
||||
version = "0.8.0-20220526";
|
||||
src = prev.fetchgit {
|
||||
url = "https://github.com/WayfireWM/wayfire.git";
|
||||
rev = "5dbf0d0fd8ec46cf112f05fb63057f5b6d06b10d";
|
||||
sha256 = "sha256-ZeaNSlDHoiLnRlHKk14meDbrizIz+nm3iYl90vvo2Ps=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
buildInputs = (map
|
||||
# Override wlroots with wlroots_0_15
|
||||
(x: if (prev.lib.getName x) == "wlroots"
|
||||
then prev.wlroots_0_15
|
||||
else x
|
||||
) old.buildInputs) ++ [ prev.pango prev.libevdev prev.nlohmann_json ];
|
||||
})).override {
|
||||
wf-config = wf-config_0_8;
|
||||
};
|
||||
|
||||
dfl-ipc = prev.libsForQt5.callPackage development/cpp/dfl-ipc {};
|
||||
wayqt = prev.libsForQt5.callPackage development/cpp/wayqt {};
|
||||
dfl-utils = prev.libsForQt5.callPackage development/cpp/dfl-utils {};
|
||||
dfl-applications = prev.libsForQt5.callPackage development/cpp/dfl-app {
|
||||
inherit dfl-ipc;
|
||||
};
|
||||
|
||||
kpipewire = prev.libsForQt5.kpipewire.overrideAttrs (old: {
|
||||
src = prev.fetchFromGitLab {
|
||||
owner = "plasma";
|
||||
repo = "kpipewire";
|
||||
rev = "ed99b94be40bd8c5b7b2a2f17d0622f11b2ab7fb";
|
||||
domain = "invent.kde.org";
|
||||
sha256 = "sha256-KhmhlH7gaFGrvPaB3voQ57CKutnw5DlLOz7gy/3Mzms=";
|
||||
};
|
||||
});
|
||||
in {
|
||||
inherit discord-system-electron dfl-ipc dfl-applications dfl-utils wayqt;
|
||||
|
||||
input-remapper = prev.callPackage ./tools/games/input-remapper {};
|
||||
vfio-isolate = prev.callPackage ./tools/virtualisation/vfio-isolate {};
|
||||
mopidy-funkwhale = prev.callPackage ./applications/audio/mopidy/funkwhale.nix {};
|
||||
python3Packages = prev.python3Packages // {
|
||||
@@ -30,25 +73,12 @@ in {
|
||||
pySmartDL = pySmartDL;
|
||||
cfscrape = cfscrape;
|
||||
};
|
||||
|
||||
sddm-sugar-dark = prev.callPackage ./sddm-sugar-dark {};
|
||||
animdl = prev.callPackage ./misc/video/animdl {};
|
||||
|
||||
surface-control = prev.callPackage ./tools/system/surface-control {};
|
||||
|
||||
trackma = prev.callPackage ./tools/video/trackma {};
|
||||
|
||||
gajim-mainwindow = prev.callPackage ./applications/networking/instant-messengers/gajim {
|
||||
nbxmpp = prev.python3Packages.nbxmpp.overrideAttrs (old: {
|
||||
src = prev.fetchFromGitLab {
|
||||
domain = "dev.gajim.org";
|
||||
owner = "gajim";
|
||||
repo = "python-nbxmpp";
|
||||
rev = "2c74f928f2ff2573b40c7fadc3cc52eaf936e370";
|
||||
sha256 = "045qj3q497lrdgjd7j0xwjrhfbnafhs2qk2a308a52fmpg702xm7";
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
swaync = prev.callPackage ./tools/desktop/swaync {};
|
||||
|
||||
sound-gambit = prev.callPackage tools/audio/sound-gambit {};
|
||||
@@ -59,11 +89,36 @@ in {
|
||||
psst = prev.callPackage tools/audio/psst {};
|
||||
|
||||
wlrootsqt = prev.libsForQt5.callPackage ./wlrootsqt.nix {};
|
||||
qtgreet = prev.libsForQt5.callPackage ./qtgreet.nix {};
|
||||
|
||||
spice-gtk = prev.callPackage temp/spice-gtk/default.nix {};
|
||||
#spice-gtk = prev.callPackage temp/spice-gtk/default.nix {};
|
||||
|
||||
discord-app = prev.callPackage applications/networking/instant-messengers/discord-app {
|
||||
chromium = prev.ungoogled-chromium;
|
||||
};
|
||||
|
||||
zoom-vm = prev.callPackage scripts/zoom-vm {};
|
||||
|
||||
razer-cli = prev.callPackage tools/hardware/razer-cli {};
|
||||
|
||||
wayfire-firedecor = prev.callPackage applications/wayfire/firedecor {
|
||||
wayfire = wayfire-master;
|
||||
};
|
||||
|
||||
sddm-sugar-dark = prev.callPackage themes/sddm/sugar-dark {};
|
||||
|
||||
custom-apparmor-utils = prev.callPackage temp/apparmor-utils.nix {};
|
||||
|
||||
qtgreet = prev.libsForQt5.callPackage applications/desktop/qtgreet {
|
||||
inherit dfl-applications dfl-utils dfl-ipc wayqt;
|
||||
};
|
||||
|
||||
kpipewire = prev.libsForQt5.callPackage development/cpp/libkpipewire {};
|
||||
xwaylandvideobridge = prev.libsForQt5.callPackage applications/desktop/xwaylandvideobridge {
|
||||
inherit kpipewire;
|
||||
};
|
||||
|
||||
#obs-websocket = prev.libsForQt5.callPackage obs/obs-websocket {};
|
||||
obs-cli = prev.callPackage obs/obs-cli {};
|
||||
|
||||
rgb_keyboard = prev.callPackage ./applications/desktop/rgb_keyboard/default.nix {};
|
||||
}
|
||||
|
||||
22
packages/development/cpp/dfl-app/default.nix
Normal file
22
packages/development/cpp/dfl-app/default.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
stdenv
|
||||
, lib, fetchFromGitLab
|
||||
, meson, ninja, pkg-config
|
||||
, qtbase, wrapQtAppsHook
|
||||
, dfl-ipc
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "dfl-applications";
|
||||
version = "20221012";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "desktop-frameworks";
|
||||
repo = "Applications";
|
||||
rev = "08b6740379d596f40562b37b509705f5c8af0c42";
|
||||
sha256 = "1jiymrg6236572yk6rnbl183fisl4kqr5c2zji910n93zv7lqqiv";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase meson ninja pkg-config dfl-ipc ];
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
}
|
||||
21
packages/development/cpp/dfl-ipc/default.nix
Normal file
21
packages/development/cpp/dfl-ipc/default.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
stdenv
|
||||
, lib, fetchFromGitLab
|
||||
, meson, ninja, pkg-config
|
||||
, qtbase, wrapQtAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "dfl-ipc";
|
||||
version = "20221012";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "desktop-frameworks";
|
||||
repo = "IPC";
|
||||
rev = "7370f8da2601a57d85d0989339f6e2fe700f9813";
|
||||
sha256 = "1iv1kc9i75q56h0zi4fncf0hdf11wjzvjkik14n9nxgbz89w7cyh";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase meson ninja pkg-config ];
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
}
|
||||
21
packages/development/cpp/dfl-utils/default.nix
Normal file
21
packages/development/cpp/dfl-utils/default.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
stdenv
|
||||
, lib, fetchFromGitLab
|
||||
, meson, ninja, pkg-config
|
||||
, qtbase, wrapQtAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "dfl-utils";
|
||||
version = "20221026";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "desktop-frameworks";
|
||||
repo = "Utils";
|
||||
rev = "603f95cae18998e9ff8b205c3801699056549505";
|
||||
sha256 = "0wbiaw6d2n13cpnpnk7089c9jqbwxn0dp9qz4n9cp0ic3z5w0gq4";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase meson ninja pkg-config ];
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
}
|
||||
21
packages/development/cpp/libkpipewire/default.nix
Normal file
21
packages/development/cpp/libkpipewire/default.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
stdenv
|
||||
, lib, fetchFromGitLab
|
||||
, cmake, pkg-config
|
||||
, qtbase, wrapQtAppsHook
|
||||
, kwayland, ki18n, kcoreaddons
|
||||
, pipewire, libepoxy, ffmpeg
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xwaylandvideobridge";
|
||||
version = "5.27.3";
|
||||
|
||||
src = builtins.fetchurl {
|
||||
url = "https://download.kde.org/stable/plasma/${version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256:0b95jjkfpkvc2ld3x6p7nw6kn6fkqba9q7x95ywvgag2b00jdb56";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase kwayland ki18n kcoreaddons pipewire libepoxy ffmpeg cmake pkg-config ];
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
}
|
||||
22
packages/development/cpp/wayqt/default.nix
Normal file
22
packages/development/cpp/wayqt/default.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
stdenv
|
||||
, lib, fetchFromGitLab
|
||||
, meson, ninja, pkg-config
|
||||
, qtbase, wrapQtAppsHook
|
||||
, wayland, wlroots_0_16
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "wayqt";
|
||||
version = "20230112";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "desktop-frameworks";
|
||||
repo = "wayqt";
|
||||
rev = "8604391059da1acd5c5b67f44742af10919bb525";
|
||||
sha256 = "0smbvmgii7f6lsylwg06d7lf83nyiggz8iz7aw3dhf5b8xdhgbaw";
|
||||
};
|
||||
|
||||
buildInputs = [ qtbase wayland wlroots_0_16 meson ninja pkg-config ];
|
||||
nativeBuildInputs = [ wrapQtAppsHook ];
|
||||
}
|
||||
19
packages/misc/video/animdl/default.nix
Normal file
19
packages/misc/video/animdl/default.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ fetchFromGitHub, python, lib, poetry2nix }:
|
||||
|
||||
poetry2nix.mkPoetryApplication rec {
|
||||
inherit python;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "justfoolingaround";
|
||||
repo = "animdl";
|
||||
rev = "9167e03ecb60c21ae1ead90d1472cd7157e1d8b7";
|
||||
sha256 = "1v33kxlxc38awdpxqsb6bfdw0sc45dibg0b4c0qld0pddlppm0qh";
|
||||
};
|
||||
projectDir = src;
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
inherit (python.meta) platforms;
|
||||
};
|
||||
}
|
||||
27
packages/obs/obs-cli/default.nix
Normal file
27
packages/obs/obs-cli/default.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "obs-cli";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "muesli";
|
||||
repo = "obs-cli";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4tjS+PWyP/T0zs4IGE6VQ5c+3tuqxlBwfpPBVEcim6c=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-RGpkqX97zalZv4aDfihJBKO1l2O8tcxn0I1SPL1WIg8=";
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "OBS-cli is a command-line remote control for OBS";
|
||||
homepage = "https://github.com/muesli/obs-cli";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ ];
|
||||
};
|
||||
}
|
||||
39
packages/obs/obs-websocket/default.nix
Normal file
39
packages/obs/obs-websocket/default.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake, ninja, pkg-config
|
||||
, qtbase, wrapQtAppsHook
|
||||
, nlohmann_json, asio, websocketpp
|
||||
, obs-studio
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "obs-websocket";
|
||||
version = "4.9.1-compat";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "obsproject";
|
||||
repo = pname;
|
||||
rev = "${version}";
|
||||
sha256 = "14xhk6d7j2q5swfj0b7jdgmswjdkqjnj3q11qs5vbh93hk30jyvh";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ninja pkg-config wrapQtAppsHook ];
|
||||
buildInputs = [ obs-studio qtbase nlohmann_json asio websocketpp ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLIBOBS_INCLUDE_DIR=${obs-studio.src}/libobs"
|
||||
"-Wno-dev"
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
cp ${obs-studio.src}/cmake/external/ObsPluginHelpers.cmake cmake/FindLibObs.cmake
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Remote-control of OBS Studio through WebSocket";
|
||||
homepage = "https://github.com/obsproject/obs-websocket";
|
||||
license = licenses.gpl2;
|
||||
platforms = [ "x86_64-linux" "i686-linux" ];
|
||||
};
|
||||
}
|
||||
46
packages/scripts/zoom-vm/default.nix
Normal file
46
packages/scripts/zoom-vm/default.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
stdenv, lib
|
||||
, makeDesktopItem, writeShellScriptBin
|
||||
, virt-manager, libvirt, notify-desktop
|
||||
}:
|
||||
|
||||
let
|
||||
zoomVmScript = writeShellScriptBin "start-zoom-vm.sh" ''
|
||||
${notify-desktop}/bin/notify-desktop "Zoom VM" "Starting VM..."
|
||||
output=$(/run/wrappers/bin/pkexec virsh start zoom 2>&1)
|
||||
if [[ ! "$?" = "0" ]]; then
|
||||
${notify-desktop}/bin/notify-desktop -u critical "Zoom VM" "$output"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
${virt-manager}/bin/virt-manager --connect qemu:///system --show-domain-console zoom
|
||||
'';
|
||||
zoomIcon = builtins.fetchurl {
|
||||
url = "https://dl.flathub.org/repo/appstream/x86_64/icons/128x128/us.zoom.Zoom.png";
|
||||
sha256 = "0d94vhjna2196s4wnq0vkga345ad5lpb7b5qp6cymwf1hnpg9lyh";
|
||||
};
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "zoom-vm";
|
||||
version = "1.0.0";
|
||||
|
||||
unpackPhase = ":";
|
||||
dontBuild = true;
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "zoom-vm";
|
||||
desktopName = "Zoom (VM)";
|
||||
exec = "start-zoom-vm";
|
||||
icon = "us.zoom.Zoom";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
# Install the script
|
||||
mkdir -p $out/bin
|
||||
cp ${zoomVmScript}/bin/start-zoom-vm.sh $out/bin/start-zoom-vm
|
||||
|
||||
# Install the desktop file
|
||||
mkdir -p $out/share/icons
|
||||
cp ${zoomIcon} $out/share/icons/us.zoom.Zoom.png
|
||||
cp -r ${desktopItem}/share/applications $out/share
|
||||
'';
|
||||
}
|
||||
101
packages/temp/apparmor-utils.nix
Normal file
101
packages/temp/apparmor-utils.nix
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
fetchFromGitLab
|
||||
, stdenv, lib
|
||||
, makeWrapper, writeShellScript
|
||||
, which, bash, libapparmor, apparmor-parser, libnotify, perl, gawk, python3
|
||||
, coreutils, gnused, gnugrep
|
||||
}:
|
||||
|
||||
let
|
||||
apparmor-version = "3.0.4";
|
||||
apparmor-sources = fetchFromGitLab {
|
||||
owner = "apparmor";
|
||||
repo = "apparmor";
|
||||
rev = "v${apparmor-version}";
|
||||
sha256 = "1a217j28rgfq4lsmpn0wv1xgmdr9ba8iysv9i6q477kj6z77zrb9";
|
||||
};
|
||||
apparmor-meta = component: with lib; {
|
||||
homepage = "https://apparmor.net/";
|
||||
description = "A mandatory access control system - ${component}";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ joachifm julm thoughtpolice ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
aa-teardown = writeShellScript "aa-teardown" ''
|
||||
PATH="${lib.makeBinPath [coreutils gnused gnugrep]}:$PATH"
|
||||
. ${apparmor-parser}/lib/apparmor/rc.apparmor.functions
|
||||
remove_profiles
|
||||
'';
|
||||
|
||||
setupPython = python3.withPackages (ps: with ps; [ setuptools ]);
|
||||
prePatchCommon = ''
|
||||
chmod a+x ./common/list_capabilities.sh ./common/list_af_names.sh
|
||||
patchShebangs ./common/list_capabilities.sh ./common/list_af_names.sh
|
||||
substituteInPlace ./common/Make.rules \
|
||||
--replace "/usr/bin/pod2man" "${perl}/bin/pod2man" \
|
||||
--replace "/usr/bin/pod2html" "${perl}/bin/pod2html" \
|
||||
--replace "/usr/share/man" "share/man"
|
||||
substituteInPlace ./utils/Makefile \
|
||||
--replace "/usr/include/linux/capability.h" "${stdenv.cc.libc.linuxHeaders}/include/linux/capability.h"
|
||||
|
||||
sed --in-place ./utils/Makefile -e 's|''${PYTHON}|${setupPython}/bin/python|g'
|
||||
|
||||
cat ./utils/Makefile
|
||||
'';
|
||||
in stdenv.mkDerivation {
|
||||
pname = "apparmor-utils";
|
||||
version = apparmor-version;
|
||||
|
||||
src = apparmor-sources;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper which python3 ];
|
||||
|
||||
buildInputs = [
|
||||
bash
|
||||
perl
|
||||
python3
|
||||
libapparmor
|
||||
libapparmor.python
|
||||
];
|
||||
|
||||
prePatch = prePatchCommon +
|
||||
# Do not build vim file
|
||||
''
|
||||
sed -i ./utils/Makefile -e "/\<vim\>/d"
|
||||
'' + ''
|
||||
for file in utils/apparmor/easyprof.py utils/apparmor/aa.py utils/logprof.conf; do
|
||||
substituteInPlace $file --replace "/sbin/apparmor_parser" "${apparmor-parser}/bin/apparmor_parser"
|
||||
done
|
||||
'';
|
||||
postPatch = "cd ./utils";
|
||||
makeFlags = [ "LANGS=" ];
|
||||
installFlags = [ "DESTDIR=$(out)" "BINDIR=$(out)/bin" "VIM_INSTALL_PATH=$(out)/share" "PYPREFIX=" ];
|
||||
|
||||
preInstall = ''
|
||||
ls -l
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
sed -i $out/bin/aa-unconfined -e "/my_env\['PATH'\]/d"
|
||||
for prog in aa-audit aa-autodep aa-cleanprof aa-complain aa-disable aa-enforce aa-genprof aa-logprof aa-mergeprof aa-unconfined ; do
|
||||
wrapProgram $out/bin/$prog --prefix PYTHONPATH : "$out/${python3.sitePackages}:$PYTHONPATH"
|
||||
done
|
||||
|
||||
substituteInPlace $out/bin/aa-notify \
|
||||
--replace /usr/bin/notify-send ${libnotify}/bin/notify-send \
|
||||
--replace /usr/bin/perl "${perl}/bin/perl -I ${libapparmor}/${perl.libPrefix}"
|
||||
|
||||
substituteInPlace $out/bin/aa-remove-unknown \
|
||||
--replace "/lib/apparmor/rc.apparmor.functions" "${apparmor-parser}/lib/apparmor/rc.apparmor.functions"
|
||||
wrapProgram $out/bin/aa-remove-unknown \
|
||||
--prefix PATH : ${lib.makeBinPath [ gawk ]}
|
||||
|
||||
ln -s ${aa-teardown} $out/bin/aa-teardown
|
||||
'';
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = apparmor-meta "user-land utilities";
|
||||
}
|
||||
32
packages/themes/sddm/sugar-dark/default.nix
Normal file
32
packages/themes/sddm/sugar-dark/default.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
fetchFromGitHub
|
||||
, stdenv, formats
|
||||
, config ? {}
|
||||
}:
|
||||
|
||||
# This package works a bit differently as the config needs to be inside the package.
|
||||
# Override with config set to the settings you want. See
|
||||
# https://github.com/MarianArlt/sddm-sugar-dark/blob/master/theme.conf
|
||||
let
|
||||
iniFmt = formats.ini {};
|
||||
configFile = iniFmt.generate "theme.conf" config;
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "sddm-sugar-dark";
|
||||
version = "1.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MarianArlt";
|
||||
repo = "sddm-sugar-dark";
|
||||
rev = "v${version}";
|
||||
sha256 = "0gx0am7vq1ywaw2rm1p015x90b75ccqxnb1sz3wy8yjl27v82yhb";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/usr/share/sddm/themes/sugar-dark
|
||||
|
||||
cp -r metadata.desktop Main.qml Background.jpg Components Assets $out/usr/share/sddm/themes/sugar-dark
|
||||
ln -s ${configFile} $out/usr/share/sddm/themes/sugar-dark/theme.conf
|
||||
'';
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 1d50118..fde6119 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -129,6 +129,12 @@ setup(
|
||||
("/usr/bin/", ["bin/key-mapper-service"]),
|
||||
("/usr/bin/", ["bin/key-mapper-control"]),
|
||||
],
|
||||
+ scripts=[
|
||||
+ "bin/input-remapper-gtk",
|
||||
+ "bin/input-remapper-service",
|
||||
+ "bin/input-remapper-control",
|
||||
+ "bin/input-remapper-helper"
|
||||
+ ],
|
||||
install_requires=[
|
||||
"setuptools",
|
||||
"evdev",
|
||||
@@ -1,74 +0,0 @@
|
||||
{
|
||||
pkgs, lib
|
||||
, python3Packages, python3
|
||||
, gtk3, gobject-introspection, git, gnome, gtksourceview4
|
||||
, wrapGAppsHook
|
||||
, makeDesktopItem
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "input-remapper";
|
||||
version = "1.4.0";
|
||||
|
||||
buildInputs = [ gobject-introspection gtk3 gnome.adwaita-icon-theme gtksourceview4 ];
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook ];
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [ setuptools pydbus evdev pygobject3 ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sezanzeb";
|
||||
repo = "input-remapper";
|
||||
rev = version;
|
||||
sha256 = "0h64cblpfz2zk15r2ja1kww1cw54gywmfr1zc16qx7sbjy0yi8px";
|
||||
};
|
||||
|
||||
doCheck = false;
|
||||
strictDeps = false;
|
||||
|
||||
patches = [
|
||||
./add-scripts.patch
|
||||
./hack-data-dir.patch
|
||||
];
|
||||
|
||||
# Fix input-remapper not finding its data files
|
||||
preBuild = ''
|
||||
sed -e "s|@@NIXOS_OUT_PATH@@|$out/usr/share/input-remapper|" --in-place inputremapper/data.py
|
||||
'';
|
||||
|
||||
# Required as we otherwise don't get the dbus policy installed
|
||||
# correctly
|
||||
preInstall = ''
|
||||
# see https://github.com/pypa/setuptools/issues/130
|
||||
${python3}/bin/${python3.executable} setup.py install_data --install-dir=$out --root=$out
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# Install the udev rules
|
||||
mkdir -p $out/lib/udev/rules.d
|
||||
cp data/99-input-remapper.rules $out/lib/udev/rules.d/99-input-remapper.rules
|
||||
sed --in-place -e "s|/bin/input-remapper-control|$out/bin/input-remapper-control|" $out/lib/udev/rules.d/99-input-remapper.rules
|
||||
|
||||
# Install the desktop file
|
||||
mkdir -p $out/share/icons/hicolor/scalable/apps/
|
||||
cp -r ${desktopItem}/share/applications $out/share/
|
||||
cp $out/usr/share/input-remapper/input-remapper.svg $out/share/icons/hicolor/scalable/apps/input-remapper.svg
|
||||
'';
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "input-remapper";
|
||||
exec = "input-remapper-gtk";
|
||||
icon = "input-remapper";
|
||||
desktopName = "input-remapper";
|
||||
genericName = "input-remapper";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/sezanzeb/input-remapper";
|
||||
description = "A tool to change the mapping of your input device buttons";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
diff --git a/inputremapper/data.py b/inputremapper/data.py
|
||||
index d5ec3a8..9fec89f 100644
|
||||
--- a/inputremapper/data.py
|
||||
+++ b/inputremapper/data.py
|
||||
@@ -68,6 +68,7 @@ def get_data_path(filename=""):
|
||||
"/usr/share/input-remapper",
|
||||
"/usr/local/share/input-remapper",
|
||||
os.path.join(site.USER_BASE, "share/input-remapper"),
|
||||
+ "@@NIXOS_OUT_PATH@@",
|
||||
]
|
||||
|
||||
if data is None:
|
||||
@@ -1,5 +1,5 @@
|
||||
{ stdenv, lib,
|
||||
pkgconfig, cmake, ffmpeg, libdrm, libpulseaudio, xorg, libnotify,
|
||||
pkg-config, cmake, ffmpeg, libdrm, libpulseaudio, xorg, libnotify,
|
||||
fetchgit }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkgconfig cmake
|
||||
pkg-config cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
||||
22
packages/tools/hardware/razer-cli/default.nix
Normal file
22
packages/tools/hardware/razer-cli/default.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
python3, xorg
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonPackage rec {
|
||||
pname = "razer-cli";
|
||||
version = "2.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "LoLei";
|
||||
repo = "razer-cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "0vcyssswsw7gzk2xlpvcqc9fgvwxzyivsqmw5r9b391dv3wpr1y7";
|
||||
};
|
||||
|
||||
doCheck = false;
|
||||
|
||||
buildInputs = [ xorg.xrdb ];
|
||||
propagatedBuildInputs = with python3.pkgs; [ setuptools openrazer ];
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
lib
|
||||
, rustPlatform
|
||||
, pkgconfig, udev
|
||||
, pkg-config, udev
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
@@ -20,7 +20,7 @@ rustPlatform.buildRustPackage rec {
|
||||
|
||||
patches = [ ./add-evdev-selector.patch ];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [ udev ];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user