Compare commits

..

68 Commits

Author SHA1 Message Date
98c27ce238 ssh: Fix issues with trying different keys 2023-12-27 00:54:00 +01:00
86ce0ed9e6 nishimiya: Changes 2023-09-18 13:10:15 +02:00
91910ec46e Commits 2023-09-17 13:35:43 +02:00
d2426b4291 gaming: Allow gamescope to run with CAPSYSNICE 2023-09-17 13:35:25 +02:00
7c1113cd09 flake: Expose the sandboxed prismlauncher 2023-08-11 17:43:15 +02:00
4b6290c3c7 git: Use the GPG key on my Yubikey for signing commits 2023-07-23 21:06:10 +02:00
650d566f8d packages: Remove the patched Gajim 2023-07-21 20:11:38 +02:00
45e93b353c miku: Enable YubiKey 2023-07-21 20:03:01 +02:00
dd43d48900 miku: Remove some packages 2023-07-19 16:23:24 +02:00
5e17268044 lib: Add nerdfonts for nvim 2023-07-19 16:23:24 +02:00
6699d5488a yubikey: New module 2023-07-19 16:23:10 +02:00
e429bdb946 cups: Fix scanning on hplip printers 2023-07-19 14:01:58 +02:00
5d868ad1f8 l 2023-07-19 14:01:24 +02:00
0a36b0acb5 lol 2023-07-19 14:01:24 +02:00
dffafa8973 nishimiya: Changes 2023-07-19 14:01:24 +02:00
d0bd1ca8fa nvim: Configure it with everything needed for LazyVim 2023-07-18 21:46:28 +02:00
1346cb93af retroatch: Add pcsx2 2023-04-30 15:23:18 +02:00
1e24a7d6bc nishimiya: Load aesni-intel 2023-04-30 15:23:04 +02:00
b58d5eb12f miku: Disable keypad lights with gamemode 2023-04-30 15:22:52 +02:00
a193b02ce0 base: Fix renamed option 2023-04-15 19:09:57 +02:00
c252c831b5 Update gajim 2023-04-15 19:09:05 +02:00
30bb872ed9 miku: Update 2023-04-08 17:30:39 +02:00
b716c8a288 Changes 2023-04-01 00:12:40 +02:00
1de2a362d7 base: Re-enable timesyncd 2023-03-01 13:36:16 +01:00
d5262b0a7f gamemode: "Pause" fcitx while gaming 2023-02-22 13:35:28 +01:00
111b999b0a Update system 2023-02-17 15:07:55 +01:00
f5ccc92e4e miku(mpv): Also play on DP-2 2023-01-26 16:26:49 +01:00
dc03ca2b72 sandbox: Give lutris access to UPlay's directory 2023-01-19 15:18:23 +01:00
81ed9c5b20 gaming: Try to wrap gamescope 2023-01-19 15:18:01 +01:00
53ed01e019 firefox: Remove HTTPS Everywhere 2023-01-19 15:17:44 +01:00
6931e1dde0 Switch fcitx with fcitx5 2023-01-19 15:17:31 +01:00
7b463d06ff Switch SDDM to greetd 2023-01-19 15:17:15 +01:00
6f0028d75e Update flake 2022-12-31 13:01:38 +01:00
1f4af9c3ba steam: Fix issue with steam-run 2022-11-12 22:00:10 +01:00
524f2bdc9d flake: Update 2022-11-12 21:59:48 +01:00
3ad54e380d android: Set ANDROID_HOME 2022-11-12 21:59:36 +01:00
06e334c973 flake: Update 2022-11-11 19:26:03 +01:00
13576dd70e obs: Update pipewire-audio-capture 2022-10-28 16:45:14 +02:00
faa16e68bb plasma: Remove bismuth 2022-10-28 16:44:58 +02:00
d2bfda8ab2 plasma: Add ark and kcalc 2022-10-21 16:14:45 +02:00
7816818f0c flake: Update for Plasma 5.26 2022-10-16 00:41:11 +02:00
ff05ad7e21 Update flake 2022-10-15 16:25:00 +02:00
62af5ec3c5 lol 2022-10-15 12:06:07 +02:00
16dc290cfa gnome: Add gnome-console, geary, calendar and gedit 2022-09-14 17:26:04 +02:00
52b5079e30 flake: Update 2022-09-13 08:39:12 +02:00
5f2172f2a5 plasma: Attempt to use ksshaskpass 2022-08-06 14:10:47 +02:00
8a459476ac flake: Update 2022-08-06 14:10:24 +02:00
885fb6feae miku: Disable mitigations 2022-08-05 21:17:22 +02:00
5de5e206d2 miku: Fix abi.vsyscall32 2022-07-17 16:54:59 +02:00
406a144bd5 miku: Add abi.vsyscall32=0 to the kernel commandline 2022-07-16 22:03:00 +02:00
79de594c6c packages: Add a hacky apparmor-utils 2022-07-16 22:02:37 +02:00
8f646f9161 plasma: Remove kde-rounded-corners 2022-07-15 12:50:38 +02:00
d3a8d6de4c gaming: Enable gamescope 2022-07-15 12:50:15 +02:00
4f848d384c plasma: Re-add kde-rounded-corners 2022-07-13 22:20:37 +02:00
a27748f63b plasma: Add sddm-sugar-dark as a theme 2022-07-13 20:19:53 +02:00
4ffded8c0b plasma: move to desktop 2022-07-13 19:37:41 +02:00
65c9e0babc miku: Enable Plasma 2022-07-13 19:35:32 +02:00
df1043ee38 Changes 2022-07-09 18:18:15 +02:00
fe60c609e6 changes 2022-06-30 19:59:45 +02:00
5df4e2c43d lapce: Fix 2022-06-17 10:11:39 +02:00
f6ab3c0b60 plasma: Restructure 2022-06-17 10:11:31 +02:00
ea5a54e7b3 zsh: syntax-highlighting causes issues 2022-06-15 19:45:58 +02:00
d8126257f5 packages: Remove gamescope 2022-06-15 19:44:01 +02:00
eb8670c04f meta: Dump changes 2022-06-15 19:44:01 +02:00
136c3a2340 users: Add SSH key 2022-06-12 22:29:43 +02:00
695b96ecfe virtualisation: Install virt-manager 2022-06-12 22:29:43 +02:00
4c82f65024 nishimyia: Enable direnv 2022-06-12 22:29:43 +02:00
218ef66c4e alacritty: Fix deprecation 2022-06-05 13:45:01 +02:00
57 changed files with 1459 additions and 567 deletions

386
flake.lock generated
View File

@@ -21,14 +21,15 @@
"emacs": { "emacs": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1653736770, "lastModified": 1693879203,
"narHash": "sha256-Vp8fWSGTEeuWc71rVXsh+ofsHHUPhKunc8aQLGN0ETc=", "narHash": "sha256-0CGMa3MxeG3YsVetUtxg6eZumQIe8FJ+WHVfR2ko9zM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "emacs-overlay", "repo": "emacs-overlay",
"rev": "ff629e757452d010b7c91fdd2597aeca370bcf68", "rev": "3adaef3b1bebdc244a03ee19f705f5a3190a33d9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -47,7 +48,7 @@
"locked": { "locked": {
"lastModified": 1649622552, "lastModified": 1649622552,
"narHash": "sha256-KT5CPoqkB9HZqw/pqynczRzsH/PQTImfaY5Oyyy871I=", "narHash": "sha256-KT5CPoqkB9HZqw/pqynczRzsH/PQTImfaY5Oyyy871I=",
"ref": "master", "ref": "refs/heads/master",
"rev": "3d7c14e55cb8374de6fcd40fcc889aa377131ac2", "rev": "3d7c14e55cb8374de6fcd40fcc889aa377131ac2",
"revCount": 6, "revCount": 6,
"type": "git", "type": "git",
@@ -59,12 +60,15 @@
} }
}, },
"flake-utils": { "flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": { "locked": {
"lastModified": 1652776076, "lastModified": 1692799911,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -74,12 +78,15 @@
} }
}, },
"flake-utils_2": { "flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": { "locked": {
"lastModified": 1652776076, "lastModified": 1692799911,
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -120,11 +127,11 @@
}, },
"flake-utils_5": { "flake-utils_5": {
"locked": { "locked": {
"lastModified": 1644229661, "lastModified": 1667395993,
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -134,6 +141,21 @@
} }
}, },
"flake-utils_6": { "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": { "locked": {
"lastModified": 1644229661, "lastModified": 1644229661,
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
@@ -153,11 +175,11 @@
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1653518057, "lastModified": 1693859358,
"narHash": "sha256-cam3Nfae5ADeEs6mRPzr0jXB7+DhyMIXz0/0Q13r/yk=", "narHash": "sha256-r3Pak/ao3p8weTzR+Ry3qQrfRsmSOwWW5sAe73mrYKs=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "64831f938bd413cefde0b0cf871febc494afaa4f", "rev": "886ea1d213efd1082f419d066e89ef37635dc970",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -194,19 +216,20 @@
"nixpkgs": [ "nixpkgs": [
"ostylk-home", "ostylk-home",
"pkg-stable" "pkg-stable"
] ],
"utils": "utils_2"
}, },
"locked": { "locked": {
"lastModified": 1647175256, "lastModified": 1679067101,
"narHash": "sha256-7H+veXPM7IwdN1DoZqliwb9sghlN56koV5dnCu1kpsc=", "narHash": "sha256-tMI1inGT9u4KWQml0w30dhWqQPlth1e9K/68sfDkEQA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a8d00f5c038cf7ec54e7dac9c57b171c1217f008", "rev": "9154cd519a8942728038819682d6b3ff33f321bb",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-21.11", "ref": "release-22.11",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@@ -216,14 +239,15 @@
"nixpkgs": [ "nixpkgs": [
"ostylk-home", "ostylk-home",
"pkg-unstable" "pkg-unstable"
] ],
"utils": "utils_3"
}, },
"locked": { "locked": {
"lastModified": 1650478719, "lastModified": 1680597706,
"narHash": "sha256-308c2cM4hW9AW6dSQ080ycXGyEJGkG/OwOINkYL9Mnw=", "narHash": "sha256-ZqJ3T+BxzjPH9TnmeUwS4Uu9ZQPeBXAFC9sUWlharT4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "93a69d07389311ffd6ce1f4d01836bbc2faec644", "rev": "ec06f419af79207b33d797064dfb3fc9dbe1df4a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -248,14 +272,47 @@
"type": "github" "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": { "linux-surface": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1648391001, "lastModified": 1672934175,
"narHash": "sha256-vi7aCcIcki+ZKXarU5ITKtViaRQyG1rcrbOJyxFnaV0=", "narHash": "sha256-HTIuRBZk0prhUPd2KnsXGo+ZyBsMwERN7P8WJH1RG3M=",
"owner": "linux-surface", "owner": "linux-surface",
"repo": "linux-surface", "repo": "linux-surface",
"rev": "4789818ac6bfff23619ee4d590e02e58107be2ea", "rev": "487e64047ca047dde9a062909a87410e7bb86845",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -285,14 +342,18 @@
}, },
"naersk_2": { "naersk_2": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_8" "nixpkgs": [
"ostylk-home",
"rnix-lsp",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1639947939, "lastModified": 1655042882,
"narHash": "sha256-pGsM8haJadVP80GFq4xhnSpNitYNQpaXk4cnA796Cso=", "narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
"owner": "nix-community", "owner": "nix-community",
"repo": "naersk", "repo": "naersk",
"rev": "2fc8ce9d3c025d59fee349c1f80be9785049d653", "rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -301,13 +362,36 @@
"type": "github" "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": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1653463224, "lastModified": 1693718952,
"narHash": "sha256-bUxKhqZhki2vPzFTl8HOo1m7pagF7WzY1MZiso8U5ws=", "narHash": "sha256-+nGdJlgTk0MPN7NygopipmyylVuAVi7OItIwTlwtGnw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "39a7bfc496d2ddfce73fe9542af1f2029ba4fe39", "rev": "793de77d9f83418b428e8ba70d1e42c6507d0d35",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -335,14 +419,34 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 0, "lastModified": 1693663421,
"narHash": "sha256-kfRusllRumpt33J1hPV+CeCCylCXEU7e0gn2/cIM7cY=", "narHash": "sha256-ImMIlWE/idjcZAfxKK8sQA7A1Gi/O58u5/CJA+mxvl8=",
"path": "/nix/store/a3i6cnnswvdg4k38jmibnjms65rjvyi7-source", "owner": "NixOS",
"type": "path" "repo": "nixpkgs",
"rev": "e56990880811a451abd32515698c712788be5720",
"type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "owner": "NixOS",
"type": "indirect" "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": { "nixpkgs-unstable": {
@@ -361,41 +465,29 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_10": {
"locked": {
"lastModified": 1645373091,
"narHash": "sha256-eRbiakFKdxtjrqOtErp4BgOJlLN5VEBymldfxy+ZKzI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d0ae0897999e7ba4615e02ca1770df6065099daf",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable-small",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 0, "lastModified": 1693565476,
"narHash": "sha256-kfRusllRumpt33J1hPV+CeCCylCXEU7e0gn2/cIM7cY=", "narHash": "sha256-ya00zHt7YbPo3ve/wNZ/6nts61xt7wK/APa6aZAfey0=",
"path": "/nix/store/a3i6cnnswvdg4k38jmibnjms65rjvyi7-source", "owner": "NixOS",
"type": "path" "repo": "nixpkgs",
"rev": "aa8aa7e2ea35ce655297e8322dc82bf77a31d04b",
"type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "owner": "NixOS",
"type": "indirect" "ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1653581809, "lastModified": 1693663421,
"narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "narHash": "sha256-ImMIlWE/idjcZAfxKK8sQA7A1Gi/O58u5/CJA+mxvl8=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "rev": "e56990880811a451abd32515698c712788be5720",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -465,40 +557,43 @@
}, },
"nixpkgs_8": { "nixpkgs_8": {
"locked": { "locked": {
"lastModified": 1645010845, "lastModified": 1656753965,
"narHash": "sha256-hO9X4PvxkSLMQnGGB7tOrKPwufhLMiNQMNXNwzLqneo=", "narHash": "sha256-BCrB3l0qpJokOnIVc3g2lHiGhnjUi0MoXiw6t1o8H1E=",
"path": "/nix/store/hkl03hpzvq0pj2qkc56485dd8fm27nng-source",
"rev": "2128d0aa28edef51fd8fef38b132ffc0155595df",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_9": {
"locked": {
"lastModified": 1642190797,
"narHash": "sha256-cxeEEAtfIACnm8sV1oz0xlNp9IVk10Fxcc09ggoEZuo=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3ddd960a3b575bf3230d0e59f42614b71f9e0db9", "rev": "0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-21.11", "ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_9": {
"locked": {
"lastModified": 1645373091,
"narHash": "sha256-eRbiakFKdxtjrqOtErp4BgOJlLN5VEBymldfxy+ZKzI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d0ae0897999e7ba4615e02ca1770df6065099daf",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable-small",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1653744184, "lastModified": 1693907142,
"narHash": "sha256-YzM0ldFW0OtxDOBgCJ7PBTL+NVRLi6SHy2m9U2gDTvw=", "narHash": "sha256-U3yzshaxSUAC6Hy5xGmlX1TySHoWjH++Y2cC9ujEmZc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nur", "repo": "nur",
"rev": "b6ad2a66f383a92b67f760e63c6fd3c63557e5ef", "rev": "283964d2452632c9b0ccc8eff08d242a073b022f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -539,18 +634,21 @@
"flake-utils": "flake-utils_5", "flake-utils": "flake-utils_5",
"home-stable": "home-stable", "home-stable": "home-stable",
"home-unstable": "home-unstable", "home-unstable": "home-unstable",
"impermanence": "impermanence_2",
"libwacom-surface": "libwacom-surface",
"linux-surface": "linux-surface", "linux-surface": "linux-surface",
"nixgl": "nixgl",
"pkg-compile": "pkg-compile", "pkg-compile": "pkg-compile",
"pkg-stable": "pkg-stable", "pkg-stable": "pkg-stable",
"pkg-unstable": "pkg-unstable", "pkg-unstable": "pkg-unstable",
"rnix-lsp": "rnix-lsp_2" "rnix-lsp": "rnix-lsp_2"
}, },
"locked": { "locked": {
"lastModified": 1653514768, "lastModified": 1683784900,
"narHash": "sha256-TF+BUKHpugRmEG5Fg2PNKBZuP65KBz+27s06oaKZPwM=", "narHash": "sha256-h+n0rS4nBFBqlMd1ktn+8UypNP3gQ91e+i/e1zHhbTg=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "3f355e8ac0e11bdbb5ab498e12c10c990e578caa", "rev": "3a0f186fca0a88e0a2fd002eabedb418cf9a6f6a",
"revCount": 67, "revCount": 124,
"type": "git", "type": "git",
"url": "https://destiny.ostylk.de/gitea/NixDistro/Home.git" "url": "https://destiny.ostylk.de/gitea/NixDistro/Home.git"
}, },
@@ -561,11 +659,11 @@
}, },
"pkg-compile": { "pkg-compile": {
"locked": { "locked": {
"lastModified": 1650161686, "lastModified": 1672791794,
"narHash": "sha256-BXzQV8p/RR440EB9qY0ULYfTH0zSW1stjUCYeP4SF+E=", "narHash": "sha256-mqGPpGmwap0Wfsf3o2b6qHJW1w2kk/I6cGCGIU+3t6o=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1d08ea2bd83abef174fb43cbfb8a856b8ef2ce26", "rev": "9813adc7f7c0edd738c6bdd8431439688bb0cb3d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -577,27 +675,27 @@
}, },
"pkg-stable": { "pkg-stable": {
"locked": { "locked": {
"lastModified": 1647992509, "lastModified": 1679139072,
"narHash": "sha256-AG40Nt5OWz0LBs5p457emOuwLKOvTtcv/2fUdnEN3Ws=", "narHash": "sha256-Gtw2Yj8DfETie3u7iHv1y5Wt+plGRmp6nTQ0EEfaPho=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "d2caa9377539e3b5ff1272ac3aa2d15f3081069f", "rev": "08ef7dc8334521605a5c8b7086cc248e74ee338b",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-21.11", "ref": "nixos-22.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"pkg-unstable": { "pkg-unstable": {
"locked": { "locked": {
"lastModified": 1650161686, "lastModified": 1680487167,
"narHash": "sha256-70ZWAlOQ9nAZ08OU6WY7n4Ij2kOO199dLfNlvO/+pf8=", "narHash": "sha256-9FNIqrxDZgSliGGN2XJJSvcDYmQbgOANaZA4UWnTdg4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1ffba9f2f683063c2b14c9f4d12c55ad5f4ed887", "rev": "53dad94e874c9586e71decf82d972dfb640ef044",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -634,15 +732,15 @@
"rnix-lsp_2": { "rnix-lsp_2": {
"inputs": { "inputs": {
"naersk": "naersk_2", "naersk": "naersk_2",
"nixpkgs": "nixpkgs_9", "nixpkgs": "nixpkgs_8",
"utils": "utils_2" "utils": "utils_4"
}, },
"locked": { "locked": {
"lastModified": 1643586450, "lastModified": 1669555118,
"narHash": "sha256-BRIAc3+zavSlJPYSbov2n1W9/a4Iuh2swFPYRWjCm1g=", "narHash": "sha256-F0s0m62S5bHNVWNHLZD6SeHiLrsDx98VQbRjDyIu+qQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "rnix-lsp", "repo": "rnix-lsp",
"rev": "41eb2f3366e3f351bf2563c2a7c46fd17e78dfe0", "rev": "95d40673fe43642e2e1144341e86d0036abd95d9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -668,11 +766,11 @@
}, },
"stable": { "stable": {
"locked": { "locked": {
"lastModified": 1645296114, "lastModified": 1659914493,
"narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -682,6 +780,36 @@
"type": "github" "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": { "tablet-mode": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_4", "flake-utils": "flake-utils_4",
@@ -703,8 +831,8 @@
}, },
"tablet-mode_2": { "tablet-mode_2": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_6", "flake-utils": "flake-utils_7",
"nixpkgs": "nixpkgs_10" "nixpkgs": "nixpkgs_9"
}, },
"locked": { "locked": {
"lastModified": 1645816436, "lastModified": 1645816436,
@@ -737,11 +865,41 @@
}, },
"utils_2": { "utils_2": {
"locked": { "locked": {
"lastModified": 1638122382, "lastModified": 1667395993,
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "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" "type": "github"
}, },
"original": { "original": {

View File

@@ -53,11 +53,12 @@
overlays = [ overlays = [
self.overlay self.overlay
(import ./overlays/sandbox.nix)
]; ];
}; };
in { in {
# key-mapper only runs on linux inherit (pkgs) wayqt dfl-ipc dfl-applications dfl-utils qtgreet xwaylandvideobridge obs-cli rgb_keyboard prismlauncher-wrapped anime4k;
inherit (pkgs) key-mapper;
}; };
}); });
} }

View File

@@ -26,69 +26,65 @@
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
gajim-mainwindow gajim
virt-manager qemu scream virt-manager qemu scream
replaysorcery # Custom package #replaysorcery # Custom package
vfio-isolate # Custom Package #vfio-isolate # Custom Package
mumble mumble
piper trackma # Custom package piper trackma # Custom package
anime-dl # Custom package anime-dl # Custom package
thunderbird thunderbird
#nwg-launchers
gnome-podcasts
cantata
newsflash
sublime-music
anki anki
gnome-podcasts
gimp gimp
xwaylandvideobridge
#psst #psst
evolution #lapce
# Proprietary stuff (yikes)
discord-wrapped discord-app-wrapped
spotify-wrapped
vortex-wrapped
zoom-vm
]; ];
ptw = { ptw = {
programs = { programs = {
bluray.enable = true; #bluray.enable = true;
mpv = { mpv = {
primaryScreen = "C27F398"; primaryScreen = "DP-1";
enable = true; enable = true;
}; };
sway.enable = true; sway.enable = false;
alacritty.enable = true; alacritty.enable = true;
emacs.enable = true; #emacs.enable = true;
firefox.enable = true; firefox.enable = true;
git.enable = true; #gnome-terminal.enable = true; git.enable = true;
#gnome-terminal.enable = true;
tmux.enable = true; tmux.enable = true;
waybar = { waybar = {
enable = true; enable = true;
output = "DP-2"; output = "DP-2";
}; };
neovim.enable = true;
#xournalpp.enable = true; #xournalpp.enable = true;
zsh.enable = true; zsh.enable = true;
direnv.enable = true; direnv.enable = true;
office.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; gaming.enable = true;
obs.enable = true; obs.enable = true;
android.enable = true;
}; };
services = { services = {
yubikey.enable = true;
gamemode.enable = true; gamemode.enable = true;
gnome.enable = true; gnome.enable = false;
logiops.enable = true; logiops.enable = true;
input-remapper = {
enable = true;
postStartCommand = "${pkgs.input-remapper}/bin/input-remapper-control --command start --preset NOOP --device \"Razer Razer Tartarus V2\"";
};
gdm = { gdm = {
enable = true; enable = false;
monitors = ../data/miku/monitors.xml;
}; };
}; };
system = { system = {
@@ -100,7 +96,7 @@
}; };
virtualisation = { virtualisation = {
enable = true; enable = true;
gaming.enable = true; gaming.enable = false;
}; };
}; };
programs = { programs = {
@@ -110,27 +106,34 @@
}; };
virtualisation = { virtualisation = {
#podman = { docker = {
# enable = true; enable = true;
# dockerCompat = true; storageDriver = "btrfs";
#}; };
docker.enable = true;
}; };
boot = let boot = let
kernel = pkgs.linuxPackages_xanmod; kernel = pkgs.linuxPackages_xanmod_latest;
in { in {
extraModprobeConfig = '' extraModprobeConfig = ''
options kvm_amd nested=1 options kvm_amd nested=1
options vfio-pci ids=1002:67df,1002:aaf0
''; '';
initrd = { initrd = {
availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" "amdgpu" "vendor-reset" ]; availableKernelModules = [
"xhci_pci"
"ahci"
"usbhid"
"sd_mod"
"amdgpu"
"vendor-reset"
"winesync"
];
kernelModules = [ kernelModules = [
"amdgpu" # GPU (duh) "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 "uinput" # key-mapper
"vendor-reset" "vendor-reset"
"winesync"
]; ];
}; };
kernelParams = [ kernelParams = [
@@ -141,20 +144,35 @@
"kvm.report_ignored_msrs=N" "kvm.report_ignored_msrs=N"
"fbcon=rotate:3" "fbcon=rotate:3"
"quiet" "quiet"
"nopti"
"nospectre_v2"
"nospec"
"clocksource=tsc" "clocksource=tsc"
"tsc=reliable" "tsc=reliable"
"pci=noaer" "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 = [ kernel.vendor-reset ]; extraModulePackages = [ kernel.vendor-reset ];
# 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 = kernel; kernelPackages = kernel;
binfmt = {
emulatedSystems = [ "aarch64-linux" ];
registrations.aarch64-linux.fixBinary = true;
};
}; };
services = { services = {
ratbagd.enable = true; ratbagd.enable = true;
@@ -169,6 +187,28 @@
libinput.enable = true; libinput.enable = true;
}; };
earlyoom.enable = lib.mkForce false; 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 = { hardware = {
@@ -178,9 +218,14 @@
devicesOffOnScreensaver = true; devicesOffOnScreensaver = true;
users = [ "alexander" ]; users = [ "alexander" ];
}; };
bluetooth = {
enable = true;
powerOnBoot = true;
};
}; };
# TODO: Move into modules # TODO: Move into modules
/*
systemd = { systemd = {
services = { services = {
enable-vendor-reset = { enable-vendor-reset = {
@@ -215,4 +260,5 @@
}; };
}; };
}; };
*/
} }

View File

@@ -19,10 +19,11 @@
boot = { boot = {
initrd = { initrd = {
availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" 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 # NOTE: See https://github.com/NixOS/nixos-hardware/blob/master/common/pc/laptop/acpi_call.nix
#"acpi_call" ]; #"acpi_call" ];
]; ];
kernelModules = [ "dm-snapshot" ]; kernelModules = [ "dm-snapshot" "aesni-intel" ];
luks.devices = { luks.devices = {
cryptroot = { cryptroot = {
device = "/dev/disk/by-uuid/e1011c40-e1a9-4ce6-b89f-f14b046639c1"; device = "/dev/disk/by-uuid/e1011c40-e1a9-4ce6-b89f-f14b046639c1";
@@ -35,12 +36,14 @@
extraModulePackages = [ ]; extraModulePackages = [ ];
# NOTE: See https://github.com/NixOS/nixos-hardware/blob/master/lenovo/thinkpad/e495/default.nix#L12 # NOTE: See https://github.com/NixOS/nixos-hardware/blob/master/lenovo/thinkpad/e495/default.nix#L12
kernelParams = [ "acpi_backlight=native" ]; kernelParams = [ "acpi_backlight=native" ];
binfmt.emulatedSystems = ["aarch64-linux"];
}; };
ptw = { ptw = {
programs = { programs = {
alacritty.enable = true; alacritty.enable = true;
sway.enable = true; sway.enable = false;
emacs.enable = true; emacs.enable = true;
firefox.enable = true; firefox.enable = true;
tmux.enable = true; tmux.enable = true;
@@ -52,10 +55,12 @@
git.enable = true; git.enable = true;
office.enable = true; office.enable = true;
plasma.enable = true; plasma.enable = true;
direnv.enable = true;
}; };
services = { services = {
yubikey.enable = true;
cups.enable = true; cups.enable = true;
gnome.enable = true; gnome.enable = false;
kanshi = let kanshi = let
horizontal = "Samsung Electric Company C27F398 H4ZR101145"; horizontal = "Samsung Electric Company C27F398 H4ZR101145";
@@ -121,12 +126,30 @@
}; };
}; };
virtualisation = {
podman = {
enable = true;
dockerCompat = true;
dockerSocket.enable = true;
};
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
ansible ansible
gnumake gnumake
wireguard-tools
(pkgs.callPackage ./wrapper.nix {
inherit (pkgs) retroarch;
cores = with pkgs.libretro; [
mgba mupen64plus melonds desmume dolphin
];
})
]; ];
programs = { programs = {
gnupg.agent.pinentryFlavor = "qt"; gnupg.agent = {
pinentryFlavor = "qt";
};
}; };
} }

37
hosts/wrapper.nix Normal file
View 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)
+ ".";
};
}

View File

@@ -8,7 +8,7 @@ let
in { in {
time.timeZone = "Europe/Berlin"; time.timeZone = "Europe/Berlin";
ostylk.nftables = { ostylk.nftables = {
enable = true; enable = false;
tables.firewall = { tables.firewall = {
family = "inet"; family = "inet";
@@ -33,7 +33,14 @@ in {
}; };
networking = { networking = {
useDHCP = false; # Done by the network manager 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; #interfaces.*.useDHCP = false;
@@ -101,18 +108,20 @@ in {
nerdfonts nerdfonts
]; ];
# For home-manager
programs.dconf.enable = true;
# We don't tolerate non-free software, except for Steam and Linux firmware # We don't tolerate non-free software, except for Steam and Linux firmware
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
"firmwareLinuxNonfree" "microcodeAmd" "microcodeIntel" "firmwareLinuxNonfree" "microcodeAmd" "microcodeIntel"
"steam" "steam-original" "steam-runtime" "steam" "steam-original" "steam-runtime" "steam-run"
"discord" "discord-canary" "discord" "discord-canary"
"minecraft" "minecraft"
"spotify" "spotify-unwrapped" "spotify" "spotify-unwrapped"
]; ];
services = { services = {
# TODO: Is this correct? Maybe run once timesyncd.enable = true;
timesyncd.enable = false;
# Everyone needs sound # Everyone needs sound
pipewire = { pipewire = {
@@ -235,7 +244,10 @@ in {
}; };
# Don't wait for a network connection # 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 = '' security.sudo.extraConfig = ''
Defaults env_keep += "NIXOS_CONFIG" Defaults env_keep += "NIXOS_CONFIG"
@@ -280,7 +292,7 @@ in {
}; };
boot = { boot = {
cleanTmpDir = true; tmp.cleanOnBoot = true;
loader = { loader = {
systemd-boot.enable = true; systemd-boot.enable = true;
efi.canTouchEfiVariables = true; efi.canTouchEfiVariables = true;

View File

@@ -38,12 +38,15 @@ in inputs.nixpkgs.lib.nixosSystem {
# Overlays # Overlays
(util.mkOverlayFromInput "stable" inputs.stable) (util.mkOverlayFromInput "stable" inputs.stable)
(util.mkOverlayFromInput "unstable" inputs.nixpkgs) (util.mkOverlayFromInput "unstable" inputs.nixpkgs)
{ {
nixpkgs.overlays = [ nixpkgs.overlays = [
nur.overlay nur.overlay
emacs.overlay emacs.overlay
(import ../packages) (import ../packages)
(import ../overlays/simple.nix) (import ../overlays/simple.nix)
(import ../overlays/phosh.nix)
] ]
++ lib.optional bluray (import ../overlays/bluray.nix) ++ lib.optional bluray (import ../overlays/bluray.nix)
++ [ ++ [

Binary file not shown.

View File

@@ -3,7 +3,6 @@
# Hardware modules # Hardware modules
./hardware/mobile.nix ./hardware/mobile.nix
./hardware/surface-pro6.nix ./hardware/surface-pro6.nix
./hardware/wifi.nix
# Programs # Programs
./programs/alacritty ./programs/alacritty
@@ -11,8 +10,10 @@
./programs/firefox ./programs/firefox
./programs/gnome ./programs/gnome
./programs/gdm ./programs/gdm
./programs/sddm
./programs/gnome-terminal ./programs/gnome-terminal
./programs/mpv ./programs/mpv
./programs/neovim
./programs/git ./programs/git
./programs/sway ./programs/sway
./programs/swaync ./programs/swaync
@@ -20,12 +21,12 @@
./programs/waybar ./programs/waybar
./programs/zsh ./programs/zsh
./programs/xournalpp ./programs/xournalpp
./programs/plasma
./programs/office ./programs/office
./programs/gaming ./programs/gaming
./programs/bluray ./programs/bluray
./programs/direnv ./programs/direnv
./programs/obs ./programs/obs
./programs/android
# Services # Services
./services/kanshi ./services/kanshi
@@ -35,6 +36,7 @@
./services/greetd ./services/greetd
./services/cups ./services/cups
./services/logiops ./services/logiops
./services/yubikey
# User # User
#./users/default.nix #./users/default.nix
@@ -54,5 +56,9 @@
# Pure options # Pure options
./base.nix ./base.nix
# Desktop
./desktop/phosh.nix
./desktop/plasma.nix
]; ];
} }

29
modules/desktop/phosh.nix Normal file
View 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
View 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.

View File

@@ -30,6 +30,7 @@ in {
dynamic_title = true; dynamic_title = true;
decorations = "full"; decorations = "full";
startup_mode = "Windowed"; startup_mode = "Windowed";
#opacity = 0.7;
}; };
scrolling = { scrolling = {
@@ -47,7 +48,6 @@ in {
x = 0; x = 0;
y = 0; y = 0;
}; };
use_thin_strokes = true;
}; };
debug = { debug = {
render_timer = false; render_timer = false;
@@ -83,7 +83,6 @@ in {
}; };
}; };
background_opacity = 0.7;
mouse_bindings = [ { mouse_bindings = [ {
mouse = "Middle"; mouse = "Middle";
action = "PasteSelection"; action = "PasteSelection";
@@ -111,7 +110,6 @@ in {
live_config_reload = true; live_config_reload = true;
enable_experimental_conpty_backend = false; enable_experimental_conpty_backend = false;
alt_send_esc = true;
key_bindings = [ key_bindings = [
{ {

View 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";
};
};
}

View File

@@ -9,6 +9,9 @@
(setq fast-but-imprecise-scrolling t) (setq fast-but-imprecise-scrolling t)
(setq make-backup-files nil) (setq create-lockfiles nil) (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 ;; 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 ;;; See: https://github.com/nilcons/emacs-use-package-fast#a-trick-less-gc-during-startup
(setq gc-cons-threshold 64000000) (setq gc-cons-threshold 64000000)

View File

@@ -24,17 +24,18 @@ in {
home-manager.users."${config.ptw.system.singleUser}".programs.firefox = { home-manager.users."${config.ptw.system.singleUser}".programs.firefox = {
enable = true; enable = true;
profiles.default = {
id = 0; # NOTE: This is important
isDefault = true;
name = "Default Profile";
extensions = with pkgs.nur.repos.rycee.firefox-addons; [ extensions = with pkgs.nur.repos.rycee.firefox-addons; [
https-everywhere #https-everywhere
ublock-origin ublock-origin
umatrix umatrix
decentraleyes decentraleyes
privacy-redirect privacy-redirect
]; ];
profiles.default = {
id = 0; # NOTE: This is important
isDefault = true;
name = "Default Profile";
settings = { settings = {
"browser.search.suggest.enabled" = false; "browser.search.suggest.enabled" = false;
"browser.tabs.drawInTitlebar" = true; "browser.tabs.drawInTitlebar" = true;

View File

@@ -8,25 +8,52 @@ in {
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# General wine
wineWowPackages.staging winetricks wineWowPackages.staging winetricks
protontricks protontricks
# Lutris for League
lutris-free-wrapped lutris-free-wrapped
# prismlauncher-wrapped
# retroarch for retro games
(pkgs.callPackage ./wrapper.nix { (pkgs.callPackage ./wrapper.nix {
inherit (pkgs) retroarch; inherit (pkgs) retroarch;
cores = with pkgs.libretro; [ cores = with pkgs.libretro; [
mgba mupen64plus melonds desmume dolphin mgba mupen64plus melonds desmume dolphin pcsx2
]; ];
}) })
steam-wrapped # Custom package #steam-wrapped # Custom package
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 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; hardware.steam-hardware.enable = true;
}; };
} }

View File

@@ -12,6 +12,9 @@ in {
enable = true; enable = true;
userEmail = "papatutuwawa@polynom.me"; userEmail = "papatutuwawa@polynom.me";
userName = "Alexander \"PapaTutuWawa\""; userName = "Alexander \"PapaTutuWawa\"";
# The key on my Yubikey
signing.key = "B688F70D0EC87D5A8A9D3D7A56C749835F3CE824";
extraConfig = { extraConfig = {
init = { init = {
defaultBranch = "master"; defaultBranch = "master";

View File

@@ -27,19 +27,24 @@ in {
gnomeExtensions.gsconnect gnomeExtensions.gsconnect
gnomeExtensions.blur-my-shell gnomeExtensions.blur-my-shell
gnomeExtensions.forge gnomeExtensions.forge
gnomeExtensions.dash-to-dock
gnomeExtensions.sound-output-device-chooser
# Programs # Programs
gnome.eog gnome.eog
gnome.nautilus gnome.nautilus
gnome.evince gnome.evince
gnome.gnome-terminal gnome.gnome-terminal
gnome-console
pinentry-gnome pinentry-gnome
mousai mousai
gnome.geary
gnome.gnome-calendar
gnome.gedit
# For config # For config
dconf # For home-manager dconf # For home-manager
]; ];
gnome.excludePackages = pkgs.gnome.optionalPackages;
}; };
services = { services = {
@@ -72,17 +77,13 @@ in {
libinput.enable = true; libinput.enable = true;
desktopManager.gnome.enable = true; desktopManager.gnome.enable = true;
displayManager.gdm = {
enable = true;
wayland = true;
};
}; };
}; };
xdg.portal = { xdg.portal = {
enable = true; enable = true;
#extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; #extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
gtkUsePortal = true; #gtkUsePortal = true;
}; };
qt5 = { qt5 = {

View File

@@ -1,10 +1,10 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let 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}"; mkDefaultShader = shader: "${pkgs.mpv-shader-pack}/usr/share/shaders/${shader}";
makeMpvProfile = { shader, gpuContext ? "waylandvk", additional ? {} }: { makeMpvProfile = { shader ? null, gpuContext ? "waylandvk", additional ? {} }: {
glsl-shaders = shader; glsl-shaders = lib.mkIf (shader != null) shader;
scale = "ewa_lanczossharp"; scale = "ewa_lanczossharp";
cscale = "ewa_lanczossharp"; cscale = "ewa_lanczossharp";
gpu-context = gpuContext; gpu-context = gpuContext;
@@ -41,13 +41,13 @@ in {
defaultProfiles = [ "anime" ]; defaultProfiles = [ "anime" ];
profiles = { profiles = {
anime = (makeMpvProfile { anime = (makeMpvProfile {
shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl"; #shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
additional = { additional = {
fullscreen = ""; fullscreen = "";
}; };
}); });
anime-denoise = (makeMpvProfile { anime-denoise = (makeMpvProfile {
shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl"; #shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
}); });
non-anime = (makeMpvProfile { non-anime = (makeMpvProfile {
shader = mkDefaultShader "FSRCNNX_x2_8-0-4-1.glsl"; shader = mkDefaultShader "FSRCNNX_x2_8-0-4-1.glsl";

View 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
];
};
};
};
}

View File

@@ -12,6 +12,15 @@ in {
enable = true; enable = true;
plugins = with pkgs.obs-studio-plugins; [ plugins = with pkgs.obs-studio-plugins; [
wlrobs obs-vkcapture wlrobs obs-vkcapture
(obs-pipewire-audio-capture.overrideAttrs (old: {
source = pkgs.fetchFromGitHub {
owner = "dimtpap";
repo = "obs-pipewire-audio-capture";
rev = "dd0cfa9581481c862cddd725e23423cd975265d9";
sha256 = "1kwdlvpvvx6fgnbn3scx5yg8vgxqy0blrbdxnwqdizzwm2m412ls";
};
}))
]; ];
}; };
}; };

View File

@@ -7,7 +7,9 @@ in {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
libreoffice texlive.combined.scheme-basic /*libreoffice*/
texlive.combined.scheme-basic
thunderbird
]; ];
}; };
} }

View File

@@ -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
];
};
}

View 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;
};
};
}

View File

@@ -18,6 +18,7 @@ in {
programs.waybar = { programs.waybar = {
enable = true; enable = true;
style = builtins.readFile ./style.css; style = builtins.readFile ./style.css;
/*
settings = [ settings = [
{ {
output = [ "${cfg.output}" ]; output = [ "${cfg.output}" ];
@@ -62,6 +63,7 @@ in {
}; };
} }
]; ];
*/
}; };
}; };
}; };

View File

@@ -101,6 +101,7 @@ in {
sha256 = "1y8wkmhgkkyfz91y1f8crh6cg912n87gmcchc8xhnwji11n1mqrq"; sha256 = "1y8wkmhgkkyfz91y1f8crh6cg912n87gmcchc8xhnwji11n1mqrq";
}; };
} }
/*
{ {
name = "zsh-syntax-highlighting"; name = "zsh-syntax-highlighting";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@@ -110,6 +111,7 @@ in {
sha256 = "sha256-UqeK+xFcKMwdM62syL2xkV8jwkf/NWfubxOTtczWEwA="; sha256 = "sha256-UqeK+xFcKMwdM62syL2xkV8jwkf/NWfubxOTtczWEwA=";
}; };
} }
*/
]; ];
}; };
}; };

View File

@@ -15,6 +15,10 @@ in {
drivers = with pkgs; [ hplip ]; drivers = with pkgs; [ hplip ];
}; };
services.avahi = {
enable = lib.mkForce true;
nssmdns = true;
};
hardware.sane = { hardware.sane = {
enable = true; enable = true;
extraBackends = with pkgs; [ sane-airscan hplip ]; extraBackends = with pkgs; [ sane-airscan hplip ];

View File

@@ -7,7 +7,15 @@ in {
enable = lib.mkEnableOption "Enable and configure gamemode"; 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 = { programs.gamemode = {
enable = true; enable = true;
enableRenice = true; enableRenice = true;
@@ -29,17 +37,28 @@ in {
}; };
custom = let custom = let
razerBrightnessStartScript = pkgs.writeShellScriptBin "razer-brightness-start.sh" '' switchScript = groupName: "${pkgs.dbus}/bin/dbus-send --print-reply --dest=org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.SwitchInputMethodGroup string:'${groupName}'";
${pkgs.razer-cli}/bin/razer-cli -d "Razer BlackWidow Ultimate 2013" -b 1 pauseFcitx = switchScript "Group 2";
${pkgs.razer-cli}/bin/razer-cli -d "Razer Tartarus V2" -b 50 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
''; '';
razerBrightnessStopScript = pkgs.writeShellScriptBin "razer-brightness-stop.sh" '' end = pkgs.writeShellScript "gamemode-end.sh" ''
${pkgs.razer-cli}/bin/razer-cli -d "Razer BlackWidow Ultimate 2013" -b 0 # Resume Fcitx's IME
${pkgs.razer-cli}/bin/razer-cli -d "Razer Tartarus V2" -b 0 ${resumeFcitx}
# Turn off the keyboard lights
${config.security.wrapperDir}/sudo ${keyboardBrightnessScript} 0
''; '';
in { in {
start = ''${razerBrightnessStartScript}/bin/razer-brightness-start.sh''; start = "${start}";
end = ''${razerBrightnessStopScript}/bin/razer-brightness-stop.sh''; end = "${end}";
}; };
}; };
}; };

View File

@@ -10,8 +10,8 @@ in {
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
# TODO: mozc cannot be configured for some reason # TODO: mozc cannot be configured for some reason
i18n.inputMethod = { i18n.inputMethod = {
enabled = "fcitx"; enabled = "fcitx5";
fcitx.engines = with pkgs.fcitx-engines; [ mozc ]; fcitx5.addons = with pkgs; [ fcitx5-mozc ];
}; };
environment.systemPackages = with pkgs; [ fcitx5-configtool fcitx5-gtk ]; environment.systemPackages = with pkgs; [ fcitx5-configtool fcitx5-gtk ];

View File

@@ -16,26 +16,32 @@ in {
}; };
config = lib.mkIf true { config = lib.mkIf true {
environment.etc."logid.cfg".text = '' systemd.services.logiops = {
description = "An unofficial userspace driver for HID++ Logitech devices";
wantedBy = [ "default.target" ];
serviceConfig = let
logiopsConfig = pkgs.writeText "logiops.cfg" ''
devices: ( devices: (
{ {
name: "Wireless Mouse MX Master 3"; name: "Wireless Mouse MX Master 3";
hiresscroll: { hiresscroll: {
hires: true; hires: true;
target: false;
};
smartshift: {
on: true;
threshold: 30;
default_threshold: 30;
}; };
dpi: 800; dpi: 800;
} }
); );
''; '';
in {
systemd.services.logiops = {
description = "An unofficial userspace driver for HID++ Logitech devices";
wantedBy = [ "default.target" ];
serviceConfig = {
Type = "simple"; Type = "simple";
ExecStart = let ExecStart = let
renice = lib.optionalString cfg.renice "${pkgs.coreutils-full}/bin/nice -n ${builtins.toString cfg.reniceValue}"; renice = lib.optionalString cfg.renice "${pkgs.coreutils-full}/bin/nice -n ${builtins.toString cfg.reniceValue}";
in "${renice} ${pkgs.logiops}/bin/logid"; in "${renice} ${pkgs.logiops}/bin/logid -c ${logiopsConfig}";
}; };
}; };
}; };

View 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;
};
};
};
}

View File

@@ -4,13 +4,14 @@
config = lib.mkIf (config.ptw.system.singleUser == "alexander") { config = lib.mkIf (config.ptw.system.singleUser == "alexander") {
users.users.alexander = { users.users.alexander = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "audio" "video" "kvm" "input" "libvirtd" "scanner" "lp" ]; extraGroups = [ "wheel" "audio" "video" "kvm" "input" "libvirtd" "scanner" "lp" "alexander" "cdrom" ];
hashedPassword = "$5$i4aZuQ/WXP.rFOc$lCzDqbrVsqBQt5954O.3bFPknD0jn27MmqzmE4DIAEC"; hashedPassword = "$y$j9T$xhnK648hF0yzDnRy0rTT/.$HbDKvNetiGeY3Xjt6/YPIzoxSmdQ0SzhXengOT1Ga01";
shell = pkgs.zsh; shell = pkgs.zsh;
useDefaultShell = false; useDefaultShell = false;
uid = 1000; uid = 1000;
isSystemUser = false; isSystemUser = false;
}; };
users.groups.alexander = {};
# Activate gpg # Activate gpg
programs.gnupg.agent.enable = true; programs.gnupg.agent.enable = true;
@@ -18,19 +19,19 @@
# No need to use users."${system.singleUser}" as we already know it # No need to use users."${system.singleUser}" as we already know it
home-manager.users.alexander = { home-manager.users.alexander = {
programs.home-manager.enable = true; programs.home-manager.enable = true;
home.stateVersion = "22.11";
programs.ssh = { programs.ssh = {
enable = true; enable = true;
extraConfig = ''
IdentitiesOnly yes
'';
includes = [
"config.d/*"
];
matchBlocks = let matchBlocks = let
sshPort = (import ../../lib/ports.nix).sshPort; sshPort = 1847;
in { in {
ayame = {
port = sshPort;
hostname = "78.46.184.48";
user = "alexander";
identityFile = "~/.ssh/polynom.me_ayame";
identitiesOnly = true;
};
"git.polynom.me" = { "git.polynom.me" = {
port = 2222; port = 2222;
user = "gitea"; user = "gitea";
@@ -47,13 +48,18 @@
hostname = "codeberg.org"; hostname = "codeberg.org";
identityFile = "~/.ssh/codeberg_papatutuwawa"; identityFile = "~/.ssh/codeberg_papatutuwawa";
}; };
"collaborating.tuhh.de" = {
user = "git";
hostname = "collaborating.tuhh.de";
identityFile = "~/.ssh/gitlab_tuhh";
};
}; };
}; };
# TODO: Maybe move this somewhere else # TODO: Maybe move this somewhere else
services.gpg-agent = { services.gpg-agent = {
enable = true; enable = true;
pinentryFlavor = "gnome3"; pinentryFlavor = "qt";
}; };
}; };
}; };

View File

@@ -8,7 +8,7 @@ in {
}; };
config = lib.mkIf cfg.enable { 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; services.spice-vdagentd.enable = true;
virtualisation.libvirtd = { virtualisation.libvirtd = {

View File

@@ -36,39 +36,39 @@ in {
[[device.Simple.selector]] [[device.Simple.selector]]
USBIDClass = {vendor=0x1532, model=0x011a, class="Keyboard"} USBIDClass = {vendor=0x1532, model=0x011a, class="Keyboard"}
''; '';
"libvirt/hooks/qemu".source = let # "libvirt/hooks/qemu".source = let
vfio-isolate-state = "/tmp/vfio-isolate-state"; # vfio-isolate-state = "/tmp/vfio-isolate-state";
in pkgs.writeScript "qemu" '' # in pkgs.writeScript "qemu" ''
#!${pkgs.stdenv.shell} # #!${pkgs.stdenv.shell}
guest=$1 # guest=$1
action=$2 # action=$2
phase=$3 # phase=$3
extra=$4 # extra=$4
echo "called with $1 $2 $3 $4" > /dev/stderr # echo "called with $1 $2 $3 $4" > /dev/stderr
if [[ "$guest" = "win10-gaming" ]]; then # if [[ "$guest" = "win10-gaming" ]]; then
case "$action" in # case "$action" in
prepare) # prepare)
# Only do this while in preparation # # Only do this while in preparation
[[ ! "$phase" = "prepare" ]] && exit 0 # [[ ! "$phase" = "prepare" ]] && exit 0
GUEST_CORES="C1-3,5-7" # GUEST_CORES="C1-3,5-7"
${pkgs.vfio-isolate}/bin/vfio-isolate \ # ${pkgs.vfio-isolate}/bin/vfio-isolate \
-u ${vfio-isolate-state} \ # -u ${vfio-isolate-state} \
cpu-governor performance "$GUEST_CORES" \ # cpu-governor performance "$GUEST_CORES" \
cpuset-create --cpus "$GUEST_CORES" /guest.slice \ # cpuset-create --cpus "$GUEST_CORES" /guest.slice \
cpuset-create --cpus C0,4 /host.slice \ # cpuset-create --cpus C0,4 /host.slice \
move-tasks / /host.slice \ # move-tasks / /host.slice \
irq-affinity mask "$GUEST_CORES" # irq-affinity mask "$GUEST_CORES"
;; # ;;
stopped) # stopped)
# Only run when the VM is fully stopped # # Only run when the VM is fully stopped
[[ ! "$phase" = "end" ]] && exit 0 # [[ ! "$phase" = "end" ]] && exit 0
${pkgs.vfio-isolate}/bin/vfio-isolate \ # ${pkgs.vfio-isolate}/bin/vfio-isolate \
restore ${vfio-isolate-state} # restore ${vfio-isolate-state}
esac # esac
fi # fi
''; # '';
}; };
# NOTE: Workaround for libvirt's SYSCONFDIR being set to /var/lib # NOTE: Workaround for libvirt's SYSCONFDIR being set to /var/lib
@@ -81,7 +81,7 @@ in {
systemd = { systemd = {
services = { services = {
libvirtd.path = with pkgs; [ vfio-isolate systemd bash ]; libvirtd.path = with pkgs; [ /*vfio-isolate*/ systemd bash ];
}; };
user.services.evdev-proxy = { user.services.evdev-proxy = {

View File

@@ -2,6 +2,6 @@
{ {
simple = import ./simple.nix; simple = import ./simple.nix;
surface = import ./surface.nix pkgs; #surface = import ./surface.nix pkgs;
sandbox = import ./sandbox.nix; sandbox = import ./sandbox.nix;
} }

46
overlays/phosh.nix Normal file
View 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/
'';
});
}

View File

@@ -26,14 +26,22 @@ in {
enableDesktopFile = true; enableDesktopFile = true;
}; };
/*minecraft-wrapped = wrapInSandbox { prismlauncher-wrapped = wrapInSandbox {
name = "minecraft-launcher"; name = "prismlauncher";
package = prev.minecraft; binary = let
binaryName = "minecraft-launcher"; script = prev.writeShellScript "prismlauncher-zink.sh" ''
mountInHome = [ ".local/share/minecraft" ".minecraft" ]; 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" ]; additionalBlacklist = [ "/mnt" ];
chdirTo = "/home/$USER"; chdirTo = "/home/$USER";
};*/ };
steam-wrapped = wrapInSandbox { steam-wrapped = wrapInSandbox {
name = "steam-wrapped"; name = "steam-wrapped";
@@ -85,6 +93,10 @@ in {
additionalBlacklist = [ "/mnt" ]; additionalBlacklist = [ "/mnt" ];
additionalMounts = [ additionalMounts = [
"/mnt/Storage/Games/LeagueOfLegends" "/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" ]; mountInHome = [ ".local/share/lutris" ".config/lutris" "Games" ];
chdirTo = "/home/$USER"; chdirTo = "/home/$USER";
@@ -125,51 +137,4 @@ in {
}; };
enableDesktopFile = true; enableDesktopFile = true;
}; };
vortex-wrapped = let
# The path to the wine prefix Vortex is installed in
prefixPath = "/mnt/Storage/Games/NewVortex";
vortexStartScript = prev.writeShellScriptBin "start-vortex.sh" ''
WINEARCH=win64 \
WINEPREFIX=${prefixPath} \
${prev.wineWowPackages.staging}/bin/wine "C:\Program Files\Black Tree Gaming Ltd\Vortex\Vortex.exe"
'';
vortexIcon = builtins.fetchurl {
url = "https://www.nexusmods.com/bootstrap/images/vortex/vortex-logomark.svg";
sha256 = "0237wbbyvgapmmjsq5xab0izzaciqjx1si163r75wa2g7xvz4s22";
};
in wrapInSandbox {
name = "vortex-wrapped";
launchScriptName = "vortex";
binary = "${vortexStartScript}/bin/start-vortex.sh";
chdirTo = "/mnt/Storage/Games/";
additionalBlacklist = [ "/mnt" ];
additionalMounts = [
# TODO: It doesn't work if we restrict it more
"/mnt/Storage"
# Wine prefix
#"/mnt/Storage/Games/NewVortex"
# Mod cache
#"/mnt/Storage/Vortex Mods"
# Only access Skyrim: SE
#"/mnt/Storage/Games/SteamLibrary/SteamLibrary/steamapps/common/Skyrim\ Special\ Edition/"
];
mountInHome = [
# Mod downloads
"Downloads/Skyrim Mods"
];
preDesktopFilePhase = ''
mkdir -p $out/share/icons
cp ${vortexIcon} $out/share/icons/vortex.svg
'';
desktopFileAttributes = {
name = "vortex-wrapped";
icon = "vortex";
desktopName = "Vortex Mod Manager (wrapped)";
};
enableDesktopFile = true;
};
} }

View File

@@ -1,11 +1,4 @@
final: prev: final: prev: {
{
gajim = prev.gajim.overrideAttrs (old: {
# Enable notification sounds
propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.gsound ];
});
animedl = prev.animedl.overrideAttrs (old: { animedl = prev.animedl.overrideAttrs (old: {
extraPkgs = pkgs: with final; [ mpv ]; extraPkgs = pkgs: with final; [ mpv ];
}); });
@@ -45,24 +38,6 @@ final: prev:
cargoPatches = [ ../patches/myxer/0000-1.2.1-set-gio-version.patch ]; 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: { xournalpp-git = prev.xournalpp.overrideAttrs (old: {
version = "1.1.1"; version = "1.1.1";
src = prev.fetchFromGitHub { src = prev.fetchFromGitHub {
@@ -73,19 +48,32 @@ final: prev:
}; };
}); });
/* discord = prev.discord.overrideAttrs (old: rec {
discord = prev.discord.overrideAttrs (old: { version = "0.0.18";
version = "0.0.17";
src = prev.fetchurl { src = prev.fetchurl {
url = "https://dl.discordapp.net/apps/linux/0.0.17/discord-0.0.17.tar.gz"; url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
sha256 = "sha256-NGJzLl1dm7dfkB98pQR3gv4vlldrII6lOMWTuioDExU="; sha256 = "sha256-BBc4n6Q3xuBE13JS3gz/6EcwdOWW57NLp2saOlwOgMI=";
}; };
}); });
*/
tor-browser-bundle-bin = prev.tor-browser-bundle-bin.override { tor-browser-bundle-bin = prev.tor-browser-bundle-bin.override {
useHardenedMalloc = false; useHardenedMalloc = false;
}; };
discord-app = prev.discord-app.override { chromium = prev.ungoogled-chromium; }; 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
];
});
} }

View 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 ];
}

View 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/
'';
}

View File

@@ -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 ];
}

View File

@@ -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 packaging
] ++ 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;
};
}

View File

@@ -37,8 +37,25 @@ let
})).override { })).override {
wf-config = wf-config_0_8; 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 { in {
inherit discord-system-electron; inherit discord-system-electron dfl-ipc dfl-applications dfl-utils wayqt;
vfio-isolate = prev.callPackage ./tools/virtualisation/vfio-isolate {}; vfio-isolate = prev.callPackage ./tools/virtualisation/vfio-isolate {};
mopidy-funkwhale = prev.callPackage ./applications/audio/mopidy/funkwhale.nix {}; mopidy-funkwhale = prev.callPackage ./applications/audio/mopidy/funkwhale.nix {};
@@ -56,25 +73,12 @@ in {
pySmartDL = pySmartDL; pySmartDL = pySmartDL;
cfscrape = cfscrape; cfscrape = cfscrape;
}; };
animdl = prev.callPackage ./misc/video/animdl {};
sddm-sugar-dark = prev.callPackage ./sddm-sugar-dark {};
surface-control = prev.callPackage ./tools/system/surface-control {}; surface-control = prev.callPackage ./tools/system/surface-control {};
trackma = prev.callPackage ./tools/video/trackma {}; 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 {}; swaync = prev.callPackage ./tools/desktop/swaync {};
sound-gambit = prev.callPackage tools/audio/sound-gambit {}; sound-gambit = prev.callPackage tools/audio/sound-gambit {};
@@ -85,9 +89,8 @@ in {
psst = prev.callPackage tools/audio/psst {}; psst = prev.callPackage tools/audio/psst {};
wlrootsqt = prev.libsForQt5.callPackage ./wlrootsqt.nix {}; 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 { discord-app = prev.callPackage applications/networking/instant-messengers/discord-app {
chromium = prev.ungoogled-chromium; chromium = prev.ungoogled-chromium;
@@ -97,9 +100,25 @@ in {
razer-cli = prev.callPackage tools/hardware/razer-cli {}; razer-cli = prev.callPackage tools/hardware/razer-cli {};
gamescope = prev.callPackage tools/games/gamescope {};
wayfire-firedecor = prev.callPackage applications/wayfire/firedecor { wayfire-firedecor = prev.callPackage applications/wayfire/firedecor {
wayfire = wayfire-master; 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 {};
} }

View 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 ];
}

View 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 ];
}

View 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 ];
}

View 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 ];
}

View 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 ];
}

View 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;
};
}

View 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; [ ];
};
}

View 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" ];
};
}

View 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";
}

View 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
'';
}

View File

@@ -1,60 +0,0 @@
{ lib, stdenv, fetchFromGitHub, meson, pkgconfig, libdrm, xorg
, wayland, wayland-protocols, libxkbcommon, libcap
, SDL2, mesa, libinput, pixman, xcbutilerrors, xcbutilwm, glslang
, ninja, makeWrapper, xwayland, libuuid, xcbutilrenderutil
, pipewire, stb, writeText, wlroots, vulkan-loader, vulkan-headers }:
let
stbpc = writeText "stbpc" ''
prefix=${stb}
includedir=''${prefix}/include/stb
Cflags: -I''${includedir}
Name: stb
Version: ${stb.version}
Description: stb
'';
stb_ = stb.overrideAttrs (oldAttrs: rec {
installPhase = ''
${oldAttrs.installPhase}
install -Dm644 ${stbpc} $out/lib/pkgconfig/stb.pc
'';
});
in stdenv.mkDerivation rec {
pname = "gamescope";
version = "3.9.1";
src = fetchFromGitHub {
owner = "Plagman";
repo = "gamescope";
rev = version;
sha256 = "05a1sj1fl9wpb9jys515m96958cxmgim8i7zc5mn44rjijkfbfcb";
fetchSubmodules = true;
};
preConfigure = ''
substituteInPlace meson.build \
--replace "'examples=false'" "'examples=false', 'logind-provider=systemd', 'libseat=disabled'"
'';
postInstall = ''
wrapProgram $out/bin/gamescope \
--prefix PATH : "${lib.makeBinPath [ xwayland ]}"
'';
buildInputs = with xorg; [
libX11 libXdamage libXcomposite libXrender libXext libXxf86vm
libXtst libdrm vulkan-loader wayland wayland-protocols
libxkbcommon libcap SDL2 mesa libinput pixman xcbutilerrors
xcbutilwm libXi libXres libuuid xcbutilrenderutil xwayland
pipewire wlroots
];
nativeBuildInputs = [ meson pkgconfig glslang ninja makeWrapper stb_ ];
meta = with lib; {
description = "The micro-compositor formerly known as steamcompmgr";
license = licenses.bsd2;
homepage = src.meta.homepage;
platforms = platforms.linux;
maintainers = with maintainers; [ ];
};
}

View File

@@ -1,5 +1,5 @@
{ stdenv, lib, { stdenv, lib,
pkgconfig, cmake, ffmpeg, libdrm, libpulseaudio, xorg, libnotify, pkg-config, cmake, ffmpeg, libdrm, libpulseaudio, xorg, libnotify,
fetchgit }: fetchgit }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
}; };
nativeBuildInputs = [ nativeBuildInputs = [
pkgconfig cmake pkg-config cmake
]; ];
buildInputs = [ buildInputs = [

View File

@@ -1,7 +1,7 @@
{ {
lib lib
, rustPlatform , rustPlatform
, pkgconfig, udev , pkg-config, udev
, fetchFromGitHub , fetchFromGitHub
}: }:
@@ -20,7 +20,7 @@ rustPlatform.buildRustPackage rec {
patches = [ ./add-evdev-selector.patch ]; patches = [ ./add-evdev-selector.patch ];
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkg-config ];
buildInputs = [ udev ]; buildInputs = [ udev ];