Compare commits
No commits in common. "master" and "9a4cbea5be0f20f9e4c3f31db2d1b83590feeb2e" have entirely different histories.
master
...
9a4cbea5be
flake.lockflake.nixdefault.nix
hosts
lib
modules
default.nix
desktop
hardware
offloading
programs
alacritty
android
bluray
direnv
emacs
firefox
gaming
gdm
git
gnome
mpv
neovim
obs
office
plasma
sddm
sway
waybar
zsh
security
services
cups
gamemode
greetd
i18n
input-remapper
key-mapper
logiops
yubikey
users
virtualisation
overlays
packages
applications
audio/sublime-music
desktop
networking/instant-messengers
wayfire/firedecor
desktop/gnome/extensions
development
cpp
python/keyrings.gopass
misc/video
obs
sandbox.nixscripts/zoom-vm
temp
themes/sddm/sugar-dark
tools
audio
daemons/iptsd
games
key-mapper
replaysorcery
sunshine
hardware/razer-cli
718
flake.lock
718
flake.lock
@ -2,14 +2,14 @@
|
||||
"nodes": {
|
||||
"agenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_4"
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1640802000,
|
||||
"narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=",
|
||||
"lastModified": 1634404028,
|
||||
"narHash": "sha256-JyP2Y6JCCYvUcVz7CXX5pXUfTGTU4GX51Yza82BgMfk=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629",
|
||||
"rev": "53aa91b4170da35a96fab1577c9a34bc0da44e27",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -19,17 +19,12 @@
|
||||
}
|
||||
},
|
||||
"emacs": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1693879203,
|
||||
"narHash": "sha256-0CGMa3MxeG3YsVetUtxg6eZumQIe8FJ+WHVfR2ko9zM=",
|
||||
"lastModified": 1636881202,
|
||||
"narHash": "sha256-XmXmV7ddohRKXcVzVDdw6LB0/53gu+rjQ+vScdakKGM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "3adaef3b1bebdc244a03ee19f705f5a3190a33d9",
|
||||
"rev": "23c8464f4527a2b19f6b4776378dd03b8289aa85",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -38,37 +33,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-helper": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"ostylk-home",
|
||||
"pkg-unstable"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1649622552,
|
||||
"narHash": "sha256-KT5CPoqkB9HZqw/pqynczRzsH/PQTImfaY5Oyyy871I=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "3d7c14e55cb8374de6fcd40fcc889aa377131ac2",
|
||||
"revCount": 6,
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/FlakeHelper.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/FlakeHelper.git"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1692799911,
|
||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||
"lastModified": 1634851050,
|
||||
"narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||
"rev": "c91f3de5adaf1de973b797ef7485e441a65b8935",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -78,90 +49,12 @@
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1692799911,
|
||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||
"lastModified": 1634851050,
|
||||
"narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"locked": {
|
||||
"lastModified": 1638122382,
|
||||
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_4": {
|
||||
"locked": {
|
||||
"lastModified": 1644229661,
|
||||
"narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"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=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797",
|
||||
"rev": "c91f3de5adaf1de973b797ef7485e441a65b8935",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -172,14 +65,14 @@
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1693859358,
|
||||
"narHash": "sha256-r3Pak/ao3p8weTzR+Ry3qQrfRsmSOwWW5sAe73mrYKs=",
|
||||
"lastModified": 1636847964,
|
||||
"narHash": "sha256-hH2lbDgOPwCtlWDwp0wVCcOK7x0mtLf4nrNWfvUWrA8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "886ea1d213efd1082f419d066e89ef37635dc970",
|
||||
"rev": "accfbdf215dbf39eac2fbae67b574dac0be83d51",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -197,73 +90,27 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1643933536,
|
||||
"narHash": "sha256-yRmsWAG4DnLxLIUtlaZsl0kH7rN5xSoyNRlf0YZrcH4=",
|
||||
"lastModified": 1634544068,
|
||||
"narHash": "sha256-RlRQBaAHfdWqfRyHdWuDPMkplBTYwuyDQqDcNbP/Sog=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "2860d7e3bb350f18f7477858f3513f9798896831",
|
||||
"rev": "ff2bed9dac84fb202bbb3c49fdcfe30c29d0b12f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-21.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-stable": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"ostylk-home",
|
||||
"pkg-stable"
|
||||
],
|
||||
"utils": "utils_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1679067101,
|
||||
"narHash": "sha256-tMI1inGT9u4KWQml0w30dhWqQPlth1e9K/68sfDkEQA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "9154cd519a8942728038819682d6b3ff33f321bb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-22.11",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-unstable": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"ostylk-home",
|
||||
"pkg-unstable"
|
||||
],
|
||||
"utils": "utils_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1680597706,
|
||||
"narHash": "sha256-ZqJ3T+BxzjPH9TnmeUwS4Uu9ZQPeBXAFC9sUWlharT4=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "ec06f419af79207b33d797064dfb3fc9dbe1df4a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "master",
|
||||
"ref": "release-21.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"impermanence": {
|
||||
"locked": {
|
||||
"lastModified": 1640808801,
|
||||
"narHash": "sha256-iHo8vyuYyhbk5MGfwn/7IahF8dBAwUYTZga4u0UsqPQ=",
|
||||
"lastModified": 1635517258,
|
||||
"narHash": "sha256-8iV8f9eZ/5cE0DmG7VmNSiCqpe00yL5HbOO7nZJm1Oo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"rev": "29d781b47b0ee6014abd541c132c647d18ab098e",
|
||||
"rev": "ce77ed9bd069e57a7a688d360196e576ca63a842",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -272,142 +119,35 @@
|
||||
"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": 1672934175,
|
||||
"narHash": "sha256-HTIuRBZk0prhUPd2KnsXGo+ZyBsMwERN7P8WJH1RG3M=",
|
||||
"owner": "linux-surface",
|
||||
"repo": "linux-surface",
|
||||
"rev": "487e64047ca047dde9a062909a87410e7bb86845",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "linux-surface",
|
||||
"ref": "master",
|
||||
"repo": "linux-surface",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1639947939,
|
||||
"narHash": "sha256-pGsM8haJadVP80GFq4xhnSpNitYNQpaXk4cnA796Cso=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "2fc8ce9d3c025d59fee349c1f80be9785049d653",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"naersk_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"ostylk-home",
|
||||
"ostylk",
|
||||
"rnix-lsp",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1655042882,
|
||||
"narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=",
|
||||
"owner": "nix-community",
|
||||
"lastModified": 1629707199,
|
||||
"narHash": "sha256-sGxlmfp5eXL5sAMNqHSb04Zq6gPl+JeltIZ226OYN0w=",
|
||||
"owner": "nmattia",
|
||||
"repo": "naersk",
|
||||
"rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f",
|
||||
"rev": "df71f5e4babda41cd919a8684b72218e2e809fa9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"owner": "nmattia",
|
||||
"repo": "naersk",
|
||||
"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": 1693718952,
|
||||
"narHash": "sha256-+nGdJlgTk0MPN7NygopipmyylVuAVi7OItIwTlwtGnw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "793de77d9f83418b428e8ba70d1e42c6507d0d35",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "master",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware_2": {
|
||||
"locked": {
|
||||
"lastModified": 1637957946,
|
||||
"narHash": "sha256-zhAql8UR2R/88VCEjvzoVpcFi3k4gkhJayNuYNZaWMY=",
|
||||
"lastModified": 1636385773,
|
||||
"narHash": "sha256-2uzAbVH/WFWBvxRfapXrTH3QF/bDgzCnBJlfCVYs02E=",
|
||||
"owner": "ostylk",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "bf27ac0017bb06c950f2f59a1213329382cb47c5",
|
||||
"rev": "e660be563819c2be9410fbd20775283f3a2a8d76",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -419,43 +159,25 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1693663421,
|
||||
"narHash": "sha256-ImMIlWE/idjcZAfxKK8sQA7A1Gi/O58u5/CJA+mxvl8=",
|
||||
"lastModified": 1636922351,
|
||||
"narHash": "sha256-x/jCHAVs4P9QGimbU/UcL7jr0OBvhr41z/L/agMTxwY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e56990880811a451abd32515698c712788be5720",
|
||||
"rev": "837604f22c3bd4819f96da7929486d9941d572b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"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"
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1649408932,
|
||||
"narHash": "sha256-JhTW1OtS5fACcRXLqcTTQyYO5vLkO+bceCqeRms13SY=",
|
||||
"lastModified": 1636267212,
|
||||
"narHash": "sha256-KDS173KqmqrYUPY9N4vf750GxIo+S6E0djyq2BsQm8s=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "42948b300670223ca8286aaf916bc381f66a5313",
|
||||
"rev": "c935f5e0add2cf0ae650d072c8357533e21b0c35",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -467,37 +189,21 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1693565476,
|
||||
"narHash": "sha256-ya00zHt7YbPo3ve/wNZ/6nts61xt7wK/APa6aZAfey0=",
|
||||
"owner": "NixOS",
|
||||
"lastModified": 1636800699,
|
||||
"narHash": "sha256-SwbyVxXffu3G2ulJIbTf0iQfqhbGbdml4Dyv5j9BiAI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "aa8aa7e2ea35ce655297e8322dc82bf77a31d04b",
|
||||
"rev": "2fa862644fc15ecb525eb8cd0a60276f1c340c7c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"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": "e56990880811a451abd32515698c712788be5720",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1618628710,
|
||||
"narHash": "sha256-9xIoU+BrCpjs5nfWcd/GlU7XCVdnNKJPffoNTxgGfhs=",
|
||||
@ -510,90 +216,29 @@
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1649490789,
|
||||
"narHash": "sha256-YrhVxwoofZSx/wLZ4GYET//8vS+uqWX572zvdmP/Etg=",
|
||||
"lastModified": 1636333654,
|
||||
"narHash": "sha256-3wh9PtCzcaJQuZrgZ+ygKfhltkDNNqT6zOzGsRbjZEo=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c86185d20d708013caf97a6adaa8dc6d72313c75",
|
||||
"rev": "e74894146a42ba552ebafa19ab2d1df7ccbc1738",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-21.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_6": {
|
||||
"locked": {
|
||||
"lastModified": 1640233012,
|
||||
"narHash": "sha256-DNKMmWZ/RLoh5IVJLAa5HYOy4IW28mBBYDMgMxzzom8=",
|
||||
"path": "/nix/store/gf00nqfl948lq9b8sw2xz3fpirwq5amw-source",
|
||||
"rev": "611f29bedadfb2aa4c9c26c4af65f05dd35f2f3f",
|
||||
"type": "path"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_7": {
|
||||
"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_8": {
|
||||
"locked": {
|
||||
"lastModified": 1656753965,
|
||||
"narHash": "sha256-BCrB3l0qpJokOnIVc3g2lHiGhnjUi0MoXiw6t1o8H1E=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"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",
|
||||
"ref": "nixos-21.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1693907142,
|
||||
"narHash": "sha256-U3yzshaxSUAC6Hy5xGmlX1TySHoWjH++Y2cC9ujEmZc=",
|
||||
"lastModified": 1636920392,
|
||||
"narHash": "sha256-mre/JUUA4168Y4NV1nfULPsAbDhwR1uvYI6rf0qvMV0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nur",
|
||||
"rev": "283964d2452632c9b0ccc8eff08d242a073b022f",
|
||||
"rev": "faf37248a0b31f65353394924ffaf58da3a8445c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -605,104 +250,26 @@
|
||||
"ostylk": {
|
||||
"inputs": {
|
||||
"agenix": "agenix",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"home-manager": "home-manager_2",
|
||||
"impermanence": "impermanence",
|
||||
"nixos-hardware": "nixos-hardware_2",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"rnix-lsp": "rnix-lsp",
|
||||
"tablet-mode": "tablet-mode"
|
||||
"rnix-lsp": "rnix-lsp"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1649593958,
|
||||
"narHash": "sha256-bxslOpHYGXEDZ91plgMjGls5g8++YtSuuDKhIuStUA0=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "04e73c894cf20c4ac1bf6116546c1dab53d6d4e9",
|
||||
"revCount": 171,
|
||||
"lastModified": 1636386099,
|
||||
"narHash": "sha256-81kCDDzJfcYPl+hI/Oa2MVLrt603ipqXRvfXN4RNA3c=",
|
||||
"ref": "master",
|
||||
"rev": "285b4548c52b3c6454186242d6dd9362d80d1545",
|
||||
"revCount": 141,
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/Config.git"
|
||||
"url": "https://dev.ostylk.de/NixDistro/Config"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/Config.git"
|
||||
}
|
||||
},
|
||||
"ostylk-home": {
|
||||
"inputs": {
|
||||
"flake-helper": "flake-helper",
|
||||
"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": 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"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/Home.git"
|
||||
}
|
||||
},
|
||||
"pkg-compile": {
|
||||
"locked": {
|
||||
"lastModified": 1672791794,
|
||||
"narHash": "sha256-mqGPpGmwap0Wfsf3o2b6qHJW1w2kk/I6cGCGIU+3t6o=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9813adc7f7c0edd738c6bdd8431439688bb0cb3d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"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": 1680487167,
|
||||
"narHash": "sha256-9FNIqrxDZgSliGGN2XJJSvcDYmQbgOANaZA4UWnTdg4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "53dad94e874c9586e71decf82d972dfb640ef044",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
"url": "https://dev.ostylk.de/NixDistro/Config"
|
||||
}
|
||||
},
|
||||
"rnix-lsp": {
|
||||
@ -715,32 +282,11 @@
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1640347520,
|
||||
"narHash": "sha256-UkieGBW9ap0pQbumYoG60Ed+BpzMRGuLQ6Zb41u7Fkk=",
|
||||
"lastModified": 1634449716,
|
||||
"narHash": "sha256-JuRCU4KCIA3/pp8BjHqqF9dj1d2xtpkxKKAtSuOzTIY=",
|
||||
"owner": "nix-community",
|
||||
"repo": "rnix-lsp",
|
||||
"rev": "d7cc2887ac9e65dd01715aac472edbf46b93ed31",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "master",
|
||||
"repo": "rnix-lsp",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rnix-lsp_2": {
|
||||
"inputs": {
|
||||
"naersk": "naersk_2",
|
||||
"nixpkgs": "nixpkgs_8",
|
||||
"utils": "utils_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1669555118,
|
||||
"narHash": "sha256-F0s0m62S5bHNVWNHLZD6SeHiLrsDx98VQbRjDyIu+qQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "rnix-lsp",
|
||||
"rev": "95d40673fe43642e2e1144341e86d0036abd95d9",
|
||||
"rev": "a2d06d2d2910cbe35b4f323a54ef484f51d71e20",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -753,24 +299,21 @@
|
||||
"root": {
|
||||
"inputs": {
|
||||
"emacs": "emacs",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"flake-utils": "flake-utils",
|
||||
"home-manager": "home-manager",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nur": "nur",
|
||||
"ostylk": "ostylk",
|
||||
"ostylk-home": "ostylk-home",
|
||||
"stable": "stable",
|
||||
"tablet-mode": "tablet-mode_2"
|
||||
"stable": "stable"
|
||||
}
|
||||
},
|
||||
"stable": {
|
||||
"locked": {
|
||||
"lastModified": 1659914493,
|
||||
"narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=",
|
||||
"lastModified": 1636792033,
|
||||
"narHash": "sha256-5RwKd3+OolhWAPUQG9SNoptr9eks8j2oukKgjAo5NQA=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf",
|
||||
"rev": "68d4f5970b69b0fd0a95c57c8d0ab4b2b68fb9aa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -780,74 +323,6 @@
|
||||
"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_4",
|
||||
"nixpkgs": "nixpkgs_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1645816436,
|
||||
"narHash": "sha256-lK69qpgDWE92aQgvG502bU+pGMaHI+y7O3A/AgsUfxI=",
|
||||
"ref": "master",
|
||||
"rev": "eeafcf0d0cc3713727697f6a2badc5eea706c81c",
|
||||
"revCount": 19,
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/tablet-mode.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/tablet-mode.git"
|
||||
}
|
||||
},
|
||||
"tablet-mode_2": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_7",
|
||||
"nixpkgs": "nixpkgs_9"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1645816436,
|
||||
"narHash": "sha256-lK69qpgDWE92aQgvG502bU+pGMaHI+y7O3A/AgsUfxI=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "eeafcf0d0cc3713727697f6a2badc5eea706c81c",
|
||||
"revCount": 19,
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/tablet-mode.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://destiny.ostylk.de/gitea/NixDistro/tablet-mode.git"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1629481132,
|
||||
@ -862,51 +337,6 @@
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils_2": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
13
flake.nix
13
flake.nix
@ -8,10 +8,7 @@
|
||||
stable.url = "github:nixos/nixpkgs/nixos-21.05";
|
||||
emacs.url = "github:nix-community/emacs-overlay";
|
||||
nur.url = "github:nix-community/nur";
|
||||
ostylk.url = "git+https://destiny.ostylk.de/gitea/NixDistro/Config.git";
|
||||
ostylk-home.url = "git+https://destiny.ostylk.de/gitea/NixDistro/Home.git";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
tablet-mode.url = "git+https://destiny.ostylk.de/gitea/NixDistro/tablet-mode.git";
|
||||
ostylk.url = "git+https://dev.ostylk.de/NixDistro/Config";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
@ -19,7 +16,6 @@
|
||||
, nixpkgs
|
||||
, home-manager
|
||||
, flake-utils
|
||||
, ostylk-home
|
||||
, ...
|
||||
}@inputs: let
|
||||
inherit (import ./lib/flake.nix {
|
||||
@ -28,7 +24,7 @@
|
||||
}) eachDefaultLinuxSystem;
|
||||
mkSystem = import ./lib/mkSystem.nix {
|
||||
inherit inputs;
|
||||
inherit (inputs) nur emacs tablet-mode;
|
||||
inherit (inputs) nur emacs;
|
||||
inherit (nixpkgs) lib config;
|
||||
};
|
||||
in {
|
||||
@ -53,12 +49,11 @@
|
||||
|
||||
overlays = [
|
||||
self.overlay
|
||||
|
||||
(import ./overlays/sandbox.nix)
|
||||
];
|
||||
};
|
||||
in {
|
||||
inherit (pkgs) wayqt dfl-ipc dfl-applications dfl-utils qtgreet xwaylandvideobridge obs-cli rgb_keyboard prismlauncher-wrapped anime4k;
|
||||
# key-mapper only runs on linux
|
||||
inherit (pkgs) key-mapper;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
@ -1,10 +1,6 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = with inputs.nixos-hardware.nixosModules; [
|
||||
common-cpu-intel common-pc-ssd #microsoft-surface
|
||||
];
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/root";
|
||||
@ -21,12 +17,6 @@
|
||||
}
|
||||
];
|
||||
|
||||
programs.phosh.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
rnote
|
||||
];
|
||||
|
||||
ptw = {
|
||||
programs = {
|
||||
mpv.enable = true;
|
||||
@ -36,11 +26,9 @@
|
||||
gnome-terminal.enable = true;
|
||||
firefox.enable = true;
|
||||
xournalpp.enable = true;
|
||||
alacritty.enable = true;
|
||||
# TODO: Nextcloud client
|
||||
};
|
||||
services = {
|
||||
gdm.enable = true;
|
||||
gnome.enable = true;
|
||||
};
|
||||
system = {
|
||||
@ -52,6 +40,7 @@
|
||||
offloading.offload.enable = true;
|
||||
};
|
||||
hardware = {
|
||||
intel.enable = true;
|
||||
mobile.enable = true;
|
||||
surface.enable = true;
|
||||
};
|
||||
@ -59,7 +48,6 @@
|
||||
|
||||
boot = {
|
||||
kernelParams = [ "mem_sleep_default=deep" "kernel.nmi_watchdog=0" "vm.dirty_writeback_centisecs=1500" ];
|
||||
kernelPackages = with pkgs; linuxPackagesFor (ostylk-home.packages.x86_64-linux.surface-kernel.override { kernel = kernel_5_16; });
|
||||
extraModprobeConfig = ''
|
||||
options i915 enable_fbc=1 enable_rc6=1 modeset=1
|
||||
options snd_hda_intel power_save=1
|
||||
|
257
hosts/miku.nix
257
hosts/miku.nix
@ -1,10 +1,6 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = with inputs.nixos-hardware.nixosModules; [
|
||||
common-cpu-amd common-gpu-amd common-pc-ssd
|
||||
];
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/root";
|
||||
@ -16,42 +12,39 @@
|
||||
};
|
||||
"/mnt/Storage" = {
|
||||
device = "/dev/disk/by-label/storage";
|
||||
fsType = "btrfs";
|
||||
options = [
|
||||
"noatime"
|
||||
"nodev"
|
||||
"nosuid"
|
||||
];
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
gajim
|
||||
gajim-mainwindow
|
||||
virt-manager qemu scream
|
||||
#replaysorcery # Custom package
|
||||
#vfio-isolate # Custom Package
|
||||
replaysorcery # Custom package
|
||||
#evdev-proxy # Custom package
|
||||
vfio-isolate # Custom Package
|
||||
steam-wrapped
|
||||
discord-wrapped # Custom package
|
||||
superpaper # Custom package
|
||||
mumble
|
||||
piper trackma # Custom package
|
||||
anime-dl # Custom package
|
||||
piper
|
||||
anime-dl trackma # Custom package
|
||||
thunderbird
|
||||
anki
|
||||
gimp
|
||||
xwaylandvideobridge
|
||||
#psst
|
||||
|
||||
#lapce
|
||||
multimc-wrapped # Custom package
|
||||
nwg-launchers
|
||||
gnome-podcasts
|
||||
cantata
|
||||
newsflash
|
||||
];
|
||||
|
||||
ptw = {
|
||||
programs = {
|
||||
#bluray.enable = true;
|
||||
mpv = {
|
||||
primaryScreen = "DP-1";
|
||||
primaryScreen = "C27F398";
|
||||
enable = true;
|
||||
};
|
||||
sway.enable = false;
|
||||
sway.enable = true;
|
||||
alacritty.enable = true;
|
||||
#emacs.enable = true;
|
||||
emacs.enable = true;
|
||||
firefox.enable = true;
|
||||
git.enable = true;
|
||||
#gnome-terminal.enable = true;
|
||||
@ -60,32 +53,48 @@
|
||||
enable = true;
|
||||
output = "DP-2";
|
||||
};
|
||||
neovim.enable = true;
|
||||
#xournalpp.enable = true;
|
||||
xournalpp.enable = true;
|
||||
zsh.enable = true;
|
||||
direnv.enable = true;
|
||||
office.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 = false;
|
||||
logiops.enable = true;
|
||||
gdm = {
|
||||
enable = false;
|
||||
#gnome.enable = true;
|
||||
kanshi = let
|
||||
horizontal = "Samsung Electric Company C27F398 H4ZR101145";
|
||||
vertical = "Goldstar Company Ltd IPS235 305NDPHKN600";
|
||||
|
||||
helpers = import ../lib/helpers/kanshi.nix;
|
||||
mkProfile = helpers.mkProfile;
|
||||
wallpaperScript = helpers.mkWallpaperScript {
|
||||
inherit pkgs config;
|
||||
};
|
||||
in {
|
||||
enable = true;
|
||||
profiles = {
|
||||
homeMultihead = mkProfile {
|
||||
outputs = [
|
||||
{
|
||||
criteria = vertical;
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
transform = "90";
|
||||
position = "-1080,0";
|
||||
}
|
||||
{
|
||||
criteria = horizontal;
|
||||
status = "enable";
|
||||
mode = "1920x1080";
|
||||
position = "0,0";
|
||||
}
|
||||
];
|
||||
|
||||
name = "homeMultihead";
|
||||
script = wallpaperScript;
|
||||
};
|
||||
};
|
||||
};
|
||||
swaync.enable = true;
|
||||
key-mapper.enable = true;
|
||||
};
|
||||
system = {
|
||||
i18n.enable = true;
|
||||
@ -96,88 +105,58 @@
|
||||
};
|
||||
virtualisation = {
|
||||
enable = true;
|
||||
gaming.enable = false;
|
||||
};
|
||||
};
|
||||
programs = {
|
||||
adb.enable = true;
|
||||
gnupg.agent.pinentryFlavor = "qt";
|
||||
evolution.enable = true;
|
||||
};
|
||||
|
||||
virtualisation = {
|
||||
docker = {
|
||||
podman = {
|
||||
enable = true;
|
||||
storageDriver = "btrfs";
|
||||
dockerCompat = true;
|
||||
};
|
||||
};
|
||||
|
||||
boot = let
|
||||
kernel = pkgs.linuxPackages_xanmod_latest;
|
||||
in {
|
||||
boot = {
|
||||
extraModprobeConfig = ''
|
||||
options kvm_amd nested=1
|
||||
options vfio-pci ids=1002:67df,1002:aaf0
|
||||
options amdgpu dpm=0
|
||||
'';
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
"xhci_pci"
|
||||
"ahci"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
"amdgpu"
|
||||
"vendor-reset"
|
||||
"winesync"
|
||||
];
|
||||
availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" "amdgpu" ]; #"vendor-reset" ];
|
||||
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"
|
||||
#"vendor-reset"
|
||||
];
|
||||
};
|
||||
kernelParams = [
|
||||
"amd_iommu=on"
|
||||
"iommu=on"
|
||||
"iommu=pt"
|
||||
"sysrq_always_enabled=1"
|
||||
"kvm.ignore_msrs=1"
|
||||
"kvm.report_ignored_msrs=N"
|
||||
"fbcon=rotate:3"
|
||||
"quiet"
|
||||
"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"
|
||||
"tsc=unstable"
|
||||
];
|
||||
kernel.sysctl = {
|
||||
# League of Legends under Linux
|
||||
"abi.vsyscall32" = 0;
|
||||
# Fedora 39
|
||||
"vm.max_map_count" = 2147483642;
|
||||
};
|
||||
|
||||
extraModulePackages = [ kernel.vendor-reset ];
|
||||
kernelPackages = kernel;
|
||||
#extraModulePackages = [ pkgs.linuxPackages_xanmod.vendor-reset ];
|
||||
|
||||
binfmt = {
|
||||
emulatedSystems = [ "aarch64-linux" ];
|
||||
registrations.aarch64-linux.fixBinary = true;
|
||||
};
|
||||
#extraModulePackages = [ pkgs.linuxPackages.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 = pkgs.linuxPackages_zen;
|
||||
};
|
||||
services = {
|
||||
ratbagd.enable = true;
|
||||
flatpak.enable = true;
|
||||
#etesync-dav.enable = true;
|
||||
etesync-dav.enable = true;
|
||||
connman.extraConfig = ''
|
||||
WriteResolvConf=false
|
||||
'';
|
||||
@ -185,80 +164,42 @@
|
||||
enable = true;
|
||||
layout = "de";
|
||||
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 = {
|
||||
displayManager.gdm = {
|
||||
enable = true;
|
||||
motherboard = "amd";
|
||||
wayland = true;
|
||||
};
|
||||
};
|
||||
|
||||
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 = {
|
||||
wantedBy = [ "default.target" ];
|
||||
script = ''
|
||||
echo "device_specific" > /sys/bus/pci/devices/0000:01:00.0/reset_method
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
};
|
||||
systemd.user.services = {
|
||||
scream = {
|
||||
description = "Audio receiver for the Scream virtual network sound card";
|
||||
#wantedBy = [ "default.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.scream}/bin/scream -i virbr0 -o pulse";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
user.services = {
|
||||
replaysorcery-kms = {
|
||||
description = "An open-source, instant-replay solution for Linux; KMS service";
|
||||
#wantedBy = [ "default.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.replaysorcery}/bin/replay-sorcery kms-service";
|
||||
Restart = "always";
|
||||
};
|
||||
replaysorcery-kms = {
|
||||
description = "An open-source, instant-replay solution for Linux; KMS service";
|
||||
#wantedBy = [ "default.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.replaysorcery}/bin/replay-sorcery kms-service";
|
||||
Restart = "always";
|
||||
};
|
||||
replaysorcery = {
|
||||
description = "An open-source, instant-replay solution for Linux";
|
||||
#wantedBy = [ "default.target" ];
|
||||
requires = [ "replaysorcery-kms.service" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.replaysorcery}/bin/replay-sorcery";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
replaysorcery = {
|
||||
description = "An open-source, instant-replay solution for Linux";
|
||||
#wantedBy = [ "default.target" ];
|
||||
requires = [ "replaysorcery-kms.service" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.replaysorcery}/bin/replay-sorcery";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
};
|
||||
*/
|
||||
}
|
||||
|
@ -1,10 +1,6 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = with inputs.nixos-hardware.nixosModules; [
|
||||
common-cpu-intel common-pc-ssd
|
||||
];
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/d06b511d-1970-421d-b006-231a7af91942";
|
||||
@ -18,12 +14,8 @@
|
||||
swapDevices = [ ]; # TODO
|
||||
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" "aesni-intel" ];
|
||||
availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "sdhci_pci" ];
|
||||
kernelModules = [ "dm-snapshot" ];
|
||||
luks.devices = {
|
||||
cryptroot = {
|
||||
device = "/dev/disk/by-uuid/e1011c40-e1a9-4ce6-b89f-f14b046639c1";
|
||||
@ -31,19 +23,14 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
kernelPackages = pkgs.linuxPackages_xanmod;
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
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 = false;
|
||||
sway.enable = true;
|
||||
emacs.enable = true;
|
||||
firefox.enable = true;
|
||||
tmux.enable = true;
|
||||
@ -53,14 +40,8 @@
|
||||
};
|
||||
zsh.enable = true;
|
||||
git.enable = true;
|
||||
office.enable = true;
|
||||
plasma.enable = true;
|
||||
direnv.enable = true;
|
||||
};
|
||||
services = {
|
||||
yubikey.enable = true;
|
||||
cups.enable = true;
|
||||
gnome.enable = false;
|
||||
kanshi = let
|
||||
horizontal = "Samsung Electric Company C27F398 H4ZR101145";
|
||||
|
||||
@ -116,6 +97,9 @@
|
||||
primaryInterface = "wlp5s0";
|
||||
};
|
||||
virtualisation.enable = true;
|
||||
hardware = {
|
||||
intel.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
@ -123,33 +107,19 @@
|
||||
enable = true;
|
||||
layout = "de";
|
||||
libinput.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation = {
|
||||
podman = {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
dockerSocket.enable = true;
|
||||
displayManager.gdm = {
|
||||
enable = true;
|
||||
wayland = 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";
|
||||
};
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
{ 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,14 +8,14 @@ let
|
||||
in {
|
||||
time.timeZone = "Europe/Berlin";
|
||||
ostylk.nftables = {
|
||||
enable = false;
|
||||
enable = true;
|
||||
|
||||
tables.firewall = {
|
||||
family = "inet";
|
||||
chains = {
|
||||
non-libvirt.extraConfig = let
|
||||
deviceIPString = lib.concatStringsSep "," (with network; [
|
||||
miku nishimiya tamaki mashu taihou # ayame
|
||||
miku nishimiya tamaki mashu # ayame
|
||||
]);
|
||||
in ''
|
||||
# Accept traffic from my devices
|
||||
@ -33,14 +33,7 @@ in {
|
||||
};
|
||||
networking = {
|
||||
useDHCP = false; # Done by the network manager
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
plugins = with pkgs; [
|
||||
networkmanager-vpnc
|
||||
networkmanager-openvpn
|
||||
networkmanager-openconnect
|
||||
];
|
||||
};
|
||||
networkmanager.enable = true;
|
||||
|
||||
#interfaces.*.useDHCP = false;
|
||||
|
||||
@ -51,7 +44,6 @@ in {
|
||||
#"${network.ayame}" = [ "ayame.local" ];
|
||||
"${network.tamaki}" = [ "tamaki.local" ];
|
||||
"${network.mashu}" = [ "mashu.local" ];
|
||||
"${network.taihou}" = [ "taihou.local" ];
|
||||
};
|
||||
};
|
||||
|
||||
@ -82,12 +74,6 @@ in {
|
||||
git-crypt
|
||||
gnupg
|
||||
python3
|
||||
unzip
|
||||
file
|
||||
ripgrep
|
||||
|
||||
# General utilities
|
||||
bandwhich bottom latencytop
|
||||
|
||||
# RT scheduling
|
||||
rtkit
|
||||
@ -108,20 +94,16 @@ 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-run"
|
||||
"discord" "discord-canary"
|
||||
"minecraft"
|
||||
"spotify" "spotify-unwrapped"
|
||||
"steam" "steam-original" "steam-runtime"
|
||||
"discord"
|
||||
];
|
||||
|
||||
services = {
|
||||
timesyncd.enable = true;
|
||||
# TODO: Is this correct? Maybe run once
|
||||
timesyncd.enable = false;
|
||||
|
||||
# Everyone needs sound
|
||||
pipewire = {
|
||||
@ -130,96 +112,6 @@ in {
|
||||
jack.enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
/*
|
||||
config.pipewire = {
|
||||
"context.modules" = [
|
||||
{
|
||||
name = "libpipewire-module-rtkit";
|
||||
args = {};
|
||||
flags = [ "ifexists" "nofail" ];
|
||||
}
|
||||
{ name = "libpipewire-module-protocol-native"; }
|
||||
{ name = "libpipewire-module-client-node"; }
|
||||
{ name = "libpipewire-module-adapter"; }
|
||||
{ name = "libpipewire-module-metadata"; }
|
||||
|
||||
{
|
||||
name = "libpipewire-module-filter-chain";
|
||||
args = {
|
||||
"node.name" = "effect_output.virtual-surround-7.1-hesuvi";
|
||||
"node.description" = "Virtual Surround Sink";
|
||||
"media.name" = "Virtual Surround Sink";
|
||||
"filter.graph" = {
|
||||
nodes = [
|
||||
{ type = "builtin"; label = "copy"; name = "copyFL"; }
|
||||
{ type = "builtin"; label = "copy"; name = "copyFR"; }
|
||||
{ type = "builtin"; label = "copy"; name = "copyFC"; }
|
||||
{ type = "builtin"; label = "copy"; name = "copyRL"; }
|
||||
{ type = "builtin"; label = "copy"; name = "copyRR"; }
|
||||
{ type = "builtin"; label = "copy"; name = "copySL"; }
|
||||
{ type = "builtin"; label = "copy"; name = "copySR"; }
|
||||
{ type = "builtin"; label = "copy"; name = "copyLFE"; }
|
||||
|
||||
{ type = "builtin"; label = "convolver"; name = "convFL_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 0; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convFL_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 1; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convSL_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 2; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convSL_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 3; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convRL_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 4; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convRL_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 5; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convFC_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 6; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convFR_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 7; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convFR_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 8; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convSR_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 9; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convSR_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 10; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convRR_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 11; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convRR_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 12; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convFC_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 13; }; }
|
||||
|
||||
{ type = "builtin"; label = "convolver"; name = "convLFE_L"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 6; }; }
|
||||
{ type = "builtin"; label = "convolver"; name = "convLFE_R"; config = { filename = "hrir_hesuvi/hrir.wav"; channel = 13; }; }
|
||||
|
||||
{ type = "builtin"; label = "mixer"; name = "mixL"; }
|
||||
{ type = "builtin"; label = "mixer"; name = "mixR"; }
|
||||
];
|
||||
links = let
|
||||
linkInput = channel: [
|
||||
{ output = "copy${channel}:Out"; input = "conv${channel}_L:In"; }
|
||||
{ output = "copy${channel}:Out"; input = "conv${channel}_R:In"; }
|
||||
];
|
||||
linkOutput = channel: n: [
|
||||
{ output = "conv${channel}_L:Out"; input = "mix_L:In ${builtins.toString n}"; }
|
||||
{ output = "conv${channel}_R:Out"; input = "mix_R:In ${builtins.toString n}"; }
|
||||
];
|
||||
in (builtins.concatMap (channel: linkInput channel) [ "FL" "SL" "RL" "FC" "FR" "SR" "RR" "LFE" ])
|
||||
++ [
|
||||
(linkOutput "FL" 1)
|
||||
(linkOutput "SL" 2)
|
||||
(linkOutput "RL" 3)
|
||||
(linkOutput "FC" 4)
|
||||
(linkOutput "FR" 5)
|
||||
(linkOutput "SR" 6)
|
||||
(linkOutput "RR" 7)
|
||||
(linkOutput "LFE" 8)
|
||||
];
|
||||
inputs = builtins.map (channel: "copy${channel}:In") [ "FL" "SL" "RL" "FC" "FR" "SR" "RR" "LFE" ];
|
||||
outputs = [ "mixL:Out" "mixR:Out" ];
|
||||
};
|
||||
|
||||
"capture.props" = {
|
||||
"media.class" = "Audio/Sink";
|
||||
"audio.channels" = 8;
|
||||
"audio.position" = [ "FL" "FR" "FC" "LFE" "RL" "RR" "SL" "SR" ];
|
||||
};
|
||||
"playback.props" = {
|
||||
"node.passive" = true;
|
||||
"audio.channels" = 2;
|
||||
"audio.positions" = [ "FL" "FR" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
# On desktop: Monitor keyboards, mice, ...
|
||||
@ -227,7 +119,7 @@ in {
|
||||
upower.enable = true;
|
||||
|
||||
# What generated entropy?
|
||||
#haveged.enable = true;
|
||||
haveged.enable = true;
|
||||
|
||||
printing.enable = lib.mkDefault false;
|
||||
avahi.enable = false;
|
||||
@ -244,10 +136,7 @@ in {
|
||||
};
|
||||
|
||||
# Don't wait for a network connection
|
||||
systemd = {
|
||||
services.NetworkManager-wait-online.enable = false;
|
||||
coredump.enable = false;
|
||||
};
|
||||
systemd.services.NetworkManager-wait-online.enable = false;
|
||||
|
||||
security.sudo.extraConfig = ''
|
||||
Defaults env_keep += "NIXOS_CONFIG"
|
||||
@ -274,25 +163,14 @@ in {
|
||||
nix = {
|
||||
package = pkgs.nixUnstable;
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes
|
||||
experimental-features = nix-command flakes ca-references
|
||||
'';
|
||||
registry = {
|
||||
nixpkgs.flake = inputs.nixpkgs;
|
||||
};
|
||||
settings = {
|
||||
substituters = [
|
||||
"https://cache.nixos.org/" # Official binary substitute
|
||||
"https://nix-community.cachix.org/" # For emacsGccPgtk
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"hydra.nixos.org-1:CNHJZBh9K4tP3EKF6FkkgeVYsS3ohTl+oS0Qa8bezVs=" # Official binary substitute
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" # nix-community
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
tmp.cleanOnBoot = true;
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
efi.canTouchEfiVariables = true;
|
||||
|
@ -15,7 +15,6 @@ Idea: Make miku.nix, mashu.nix, ... have the following structure
|
||||
{
|
||||
hostConfigFile
|
||||
, architecture ? "x86_64-linux"
|
||||
, bluray ? false
|
||||
}: let
|
||||
pkgs = inputs.nixpkgs;
|
||||
config = pkgs.lib;
|
||||
@ -38,27 +37,18 @@ 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)
|
||||
++ [
|
||||
# Always keep sandbox.nix as the last overlay
|
||||
(import ../overlays/sandbox.nix)
|
||||
];
|
||||
}
|
||||
|
||||
# My module system
|
||||
(import ../modules)
|
||||
inputs.ostylk.nixosModules.nftables
|
||||
inputs.tablet-mode.nixosModule
|
||||
|
||||
# Actual config
|
||||
(import ./baseSystem.nix)
|
||||
|
@ -2,9 +2,8 @@ rec {
|
||||
network-base = "192.168.178";
|
||||
|
||||
# A collection of IP addresses for various uses
|
||||
miku = "${network-base}.60";
|
||||
miku = "${network-base}.38";
|
||||
nishimiya = "${network-base}.59";
|
||||
tamaki = "${network-base}.27";
|
||||
mashu = "${network-base}.54";
|
||||
taihou = "${network-base}.21";
|
||||
}
|
||||
|
BIN
lib/ports.nix
Normal file
BIN
lib/ports.nix
Normal file
Binary file not shown.
196
lib/sandbox.nix
196
lib/sandbox.nix
@ -1,196 +0,0 @@
|
||||
{
|
||||
stdenv, lib
|
||||
, runCommandLocal, writeShellScriptBin, makeDesktopItem
|
||||
, bubblewrap, coreutils, glibc, pkgsi686Linux
|
||||
}:
|
||||
|
||||
{
|
||||
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 # 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 = [
|
||||
# Users, Groups, NSS
|
||||
"passwd"
|
||||
"group"
|
||||
"shadow"
|
||||
"hosts"
|
||||
"resolv.conf"
|
||||
"nsswitch.conf"
|
||||
# User profiles
|
||||
"profiles"
|
||||
# Time
|
||||
"localtime"
|
||||
"zoneinfo"
|
||||
# PAM
|
||||
"pam.d"
|
||||
# Fonts
|
||||
"fonts"
|
||||
]
|
||||
++ (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
|
||||
# issues running some binary with LD_LIBRARY_PATH
|
||||
createLdConfCache = ''
|
||||
cat > /etc/ld.so.conf <<EOF
|
||||
/lib
|
||||
/lib/x86_64-linux-gnu
|
||||
/lib64
|
||||
/usr/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib64
|
||||
/lib/i386-linux-gnu
|
||||
/lib32
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib32
|
||||
EOF
|
||||
ldconfig &> /dev/null
|
||||
'';
|
||||
sandboxInitScriptName = "${name}-wrapped-init.sh";
|
||||
sandboxInitScript = writeShellScriptBin sandboxInitScriptName ''
|
||||
source /etc/profile
|
||||
${createLdConfCache}
|
||||
exec ${binary} "$@"
|
||||
'';
|
||||
|
||||
|
||||
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=()
|
||||
|
||||
declare -a auto_mounts
|
||||
# loop through all directories in the root
|
||||
for dir in /*; do
|
||||
# if it is a directory and it is not in the blacklist
|
||||
if [[ -d "$dir" ]] && [[ ! "''${blacklist[@]}" =~ "$dir" ]]; then
|
||||
# add it to the mount list
|
||||
auto_mounts+=(--bind "$dir" "$dir")
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "${lib.optionalString (!mountHome) "1"}" = "1" ]]; then
|
||||
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 safeAdditionalMounts}; do
|
||||
auto_mounts+=(--bind "$entry" "$entry")
|
||||
done
|
||||
fi
|
||||
|
||||
cmd=(
|
||||
${bubblewrap}/bin/bwrap
|
||||
--dev-bind /dev /dev
|
||||
--proc /proc
|
||||
--chdir ${chdirTo}
|
||||
${lib.optionalString unshareUser "--unshare-user"}
|
||||
${lib.optionalString unshareIpc "--unshare-ipc"}
|
||||
${lib.optionalString unsharePid "--unshare-pid"}
|
||||
${lib.optionalString unshareNet "--unshare-net"}
|
||||
${lib.optionalString unshareUts "--unshare-uts"}
|
||||
${lib.optionalString unshareCgroup "--unshare-cgroup"}
|
||||
${lib.optionalString dieWithParent "--die-with-parent"}
|
||||
--ro-bind /nix /nix
|
||||
# Our glibc will look for the cache in its own path in `/nix/store`.
|
||||
# As such, we need a cache to exist there, because pressure-vessel
|
||||
# depends on the existence of an ld cache. However, adding one
|
||||
# globally proved to be a bad idea (see #100655), the solution we
|
||||
# settled on being mounting one via bwrap.
|
||||
# Also, the cache needs to go to both 32 and 64 bit glibcs, for games
|
||||
# of both architectures to work.
|
||||
--tmpfs ${glibc}/etc \
|
||||
--symlink /etc/ld.so.conf ${glibc}/etc/ld.so.conf \
|
||||
--symlink /etc/ld.so.cache ${glibc}/etc/ld.so.cache \
|
||||
--ro-bind ${glibc}/etc/rpc ${glibc}/etc/rpc \
|
||||
--remount-ro ${glibc}/etc \
|
||||
--tmpfs ${pkgsi686Linux.glibc}/etc \
|
||||
--symlink /etc/ld.so.conf ${pkgsi686Linux.glibc}/etc/ld.so.conf \
|
||||
--symlink /etc/ld.so.cache ${pkgsi686Linux.glibc}/etc/ld.so.cache \
|
||||
--ro-bind ${pkgsi686Linux.glibc}/etc/rpc ${pkgsi686Linux.glibc}/etc/rpc \
|
||||
--remount-ro ${pkgsi686Linux.glibc}/etc \
|
||||
${etcBindFlags}
|
||||
"''${ro_mounts[@]}"
|
||||
"''${symlinks[@]}"
|
||||
"''${auto_mounts[@]}"
|
||||
${extraEnvString}
|
||||
${sandboxInitScript}/bin/${sandboxInitScriptName}
|
||||
)
|
||||
exec "''${cmd[@]}" $@
|
||||
'';
|
||||
in stdenv.mkDerivation {
|
||||
pname = name;
|
||||
version = "1.0.0";
|
||||
|
||||
unpackPhase = ":";
|
||||
dontBuild = true;
|
||||
|
||||
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 ${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}
|
||||
'';
|
||||
}
|
@ -1,19 +1,20 @@
|
||||
{
|
||||
imports = [
|
||||
# Hardware modules
|
||||
./hardware/amdgpu.nix
|
||||
./hardware/amd.nix
|
||||
./hardware/intel.nix
|
||||
./hardware/mobile.nix
|
||||
./hardware/surface-pro6.nix
|
||||
./hardware/wifi.nix
|
||||
|
||||
# Programs
|
||||
./programs/alacritty
|
||||
./programs/emacs
|
||||
./programs/firefox
|
||||
./programs/gnome
|
||||
./programs/gdm
|
||||
./programs/sddm
|
||||
./programs/gnome-terminal
|
||||
./programs/mpv
|
||||
./programs/neovim
|
||||
./programs/git
|
||||
./programs/sway
|
||||
./programs/swaync
|
||||
@ -21,22 +22,13 @@
|
||||
./programs/waybar
|
||||
./programs/zsh
|
||||
./programs/xournalpp
|
||||
./programs/office
|
||||
./programs/gaming
|
||||
./programs/bluray
|
||||
./programs/direnv
|
||||
./programs/obs
|
||||
./programs/android
|
||||
./programs/plasma
|
||||
|
||||
# Services
|
||||
./services/kanshi
|
||||
./services/input-remapper
|
||||
./services/key-mapper
|
||||
./services/gamemode
|
||||
./services/i18n
|
||||
./services/greetd
|
||||
./services/cups
|
||||
./services/logiops
|
||||
./services/yubikey
|
||||
|
||||
# User
|
||||
#./users/default.nix
|
||||
@ -51,14 +43,7 @@
|
||||
./virtualisation/default.nix
|
||||
./virtualisation/gaming.nix
|
||||
|
||||
# Security
|
||||
./security/apparmor.nix
|
||||
|
||||
# Pure options
|
||||
./base.nix
|
||||
|
||||
# Desktop
|
||||
./desktop/phosh.nix
|
||||
./desktop/plasma.nix
|
||||
];
|
||||
}
|
||||
|
@ -1,29 +0,0 @@
|
||||
{ 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;
|
||||
};
|
||||
};
|
||||
}
|
@ -1,158 +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";
|
||||
};
|
||||
};
|
||||
/*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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
13
modules/hardware/amd.nix
Normal file
13
modules/hardware/amd.nix
Normal file
@ -0,0 +1,13 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.hardware.amdcpu;
|
||||
in {
|
||||
options.ptw.hardware.amdcpu = {
|
||||
enable = lib.mkEnableOption "Enable support for AMD CPUs";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
};
|
||||
}
|
19
modules/hardware/amdgpu.nix
Normal file
19
modules/hardware/amdgpu.nix
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
config, lib, pkgs, ...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.ptw.hardware.amdgpu;
|
||||
in {
|
||||
options.ptw.hardware.amdgpu = {
|
||||
enable = lib.mkEnableOption "Enable support for AMDGPU GPUs";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
unstable.mesa
|
||||
unstable.firmwareLinuxNonfree
|
||||
];
|
||||
services.xserver.videoDrivers = [ "amdgpu" ];
|
||||
};
|
||||
}
|
19
modules/hardware/intel.nix
Normal file
19
modules/hardware/intel.nix
Normal file
@ -0,0 +1,19 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.hardware.intel;
|
||||
in {
|
||||
options.ptw.hardware.intel = {
|
||||
enable = lib.mkEnableOption "Enable support for Intel CPUs";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
hardware = {
|
||||
cpu.intel.updateMicrocode = true;
|
||||
# NOTE: Assuming each Intel CPU has integrated graphics
|
||||
opengl.extraPackages = with pkgs; [ vaapiIntel intel-media-driver ];
|
||||
};
|
||||
# TODO: Remove?
|
||||
services.xserver.videoDrivers = [ "modesetting" "fbdev" ];
|
||||
};
|
||||
}
|
@ -1,9 +1,18 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.hardware.surface;
|
||||
fetchurl = pkgs.fetchurl;
|
||||
commit = "69d1e5826e6380c8ff0cd532e244482097562c3d";
|
||||
commit = "821d8f0685ebad0fa2c05c7080f45eafb28ad08c";
|
||||
kernelVersion = "5.14";
|
||||
mkPatch = name: sha256: {
|
||||
name = name;
|
||||
patch = fetchurl {
|
||||
inherit sha256;
|
||||
|
||||
url = "https://raw.githubusercontent.com/linux-surface/linux-surface/${commit}/patches/${kernelVersion}/${name}.patch";
|
||||
};
|
||||
};
|
||||
cfg = config.ptw.hardware.surface;
|
||||
in {
|
||||
options.ptw.hardware.surface = {
|
||||
enable = lib.mkEnableOption "Enable support for the Microsoft Surface Pro 6";
|
||||
@ -27,7 +36,7 @@ in {
|
||||
};
|
||||
hardware.video.hidpi.enable = true;
|
||||
|
||||
systemd.services.iptsd = lib.mkForce {
|
||||
systemd.services.iptsd = {
|
||||
description = "Userspace daemon for Intel Precise Touch & Stylus";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
wants = [ "dev-ipts-15.device" ];
|
||||
@ -47,32 +56,103 @@ in {
|
||||
sha256 = "1xj70n9agy41906jgm4yjmsx58i7pzsizpvv3rkzq78k95qjfmc9";
|
||||
};
|
||||
};
|
||||
|
||||
# from dev.ostylk.de/NixDistro/tablet-mode.git
|
||||
tablet-mode.enable = true;
|
||||
};
|
||||
|
||||
boot = {
|
||||
kernelPackages = pkgs.linuxPackages_5_14;
|
||||
kernelPatches = [
|
||||
(mkPatch "0001-surface3-oemb" "0ji3glnbaiy10kzi2zi80278vyf0pp23s7dqx8pwirbqxi6pygnp")
|
||||
(mkPatch "0002-mwifiex" "0d7jpfiyb74i5fm2gdhwa5bi9kd7ff4mb75yss0lvidga10r9hmp")
|
||||
(mkPatch "0003-ath10k" "0a6iwdw5wkjd24bnz32msncr1am2db36x6qpf652rx12czia8ndj")
|
||||
(mkPatch "0004-ipts" "0ib7bnh4xanz5cakr50nirshhzn3rb29x9kq4m0snp38fhyaa8dv")
|
||||
(mkPatch "0005-surface-sam" "19yjxgznhv65g1v6dcv6fklahi2inmf7gllbzmh6k98r3531kzjg")
|
||||
(mkPatch "0006-surface-sam-over-hid" "0np7zf8328yxy9xzbipqjw014kzy0kmm67c046fmgmvniibixvs7")
|
||||
(mkPatch "0007-surface-gpe" "164hhw0jh800qxmwiahw4hdsprghm760i8c6pwq89mh440wkfxnk")
|
||||
(mkPatch "0008-surface-button" "0w03azjlhwdz9isjc5swlpimj48zx7jgjws6ws8xxlb37vbg4lq6")
|
||||
(mkPatch "0009-surface-typecover" "0s2i13x780zmwbksv4rk1lryrv6n6mvc49ljn3zdy4d9yy10x272")
|
||||
(mkPatch "0010-cameras" "0vwz609vbrracc8qm1jzm471ls4imqlilf3hh2whsb2w2npmd0kf")
|
||||
(mkPatch "0011-amd-gpio" "09xjc0fl9vccz1nks6v62359digrk92svr75qz9zcvfmpyxg18z7") # TODO: Maybe drop
|
||||
|
||||
{
|
||||
name = "surface-config";
|
||||
patch = null;
|
||||
# Options from https://github.com/linux-surface/linux-surface/blob/master/configs/surface-5.13.config
|
||||
extraConfig = ''
|
||||
#
|
||||
# Other
|
||||
#
|
||||
# Prevent a non-fatal "kernel oops" at boot crashing udev
|
||||
# (https://github.com/linux-surface/linux-surface/issues/61#issuecomment-579298172)
|
||||
PINCTRL_INTEL y
|
||||
PINCTRL_SUNRISEPOINT y
|
||||
# Required for reading battery data
|
||||
# (https://github.com/linux-surface/surface-aggregator-module/wiki/Testing-and-Installing)
|
||||
SERIAL_DEV_BUS y
|
||||
SERIAL_DEV_CTRL_TTYPORT y
|
||||
MFD_INTEL_LPSS_PCI y
|
||||
INTEL_IDMA64 y
|
||||
'';
|
||||
#
|
||||
# Surface Aggregator Module
|
||||
#
|
||||
SURFACE_AGGREGATOR m
|
||||
SURFACE_AGGREGATOR_ERROR_INJECTION n
|
||||
SURFACE_AGGREGATOR_BUS y
|
||||
SURFACE_AGGREGATOR_CDEV m
|
||||
SURFACE_AGGREGATOR_REGISTRY m
|
||||
|
||||
SURFACE_ACPI_NOTIFY m
|
||||
SURFACE_DTX m
|
||||
SURFACE_PLATFORM_PROFILE m
|
||||
|
||||
SURFACE_HID m
|
||||
SURFACE_KBD m
|
||||
|
||||
BATTERY_SURFACE m
|
||||
CHARGER_SURFACE m
|
||||
|
||||
#
|
||||
# Surface Hotplug
|
||||
#
|
||||
SURFACE_HOTPLUG m
|
||||
|
||||
#
|
||||
# IPTS touchscreen
|
||||
#
|
||||
# This only enables the user interface for IPTS data.
|
||||
# For the touchscreen to work, you need to install iptsd.
|
||||
#
|
||||
MISC_IPTS m
|
||||
|
||||
#
|
||||
# Cameras: IPU3
|
||||
#
|
||||
#VIDEO_IPU3_IMGU m
|
||||
VIDEO_IPU3_CIO2 m
|
||||
CIO2_BRIDGE y
|
||||
#INTEL_SKL_INT3472 m
|
||||
|
||||
#
|
||||
# Cameras: Sensor drivers
|
||||
#
|
||||
#VIDEO_OV5693 m
|
||||
VIDEO_OV8865 m
|
||||
|
||||
#
|
||||
# ALS Sensor for Surface Book 3, Surface Laptop 3, Surface Pro 7
|
||||
#
|
||||
APDS9960 m
|
||||
|
||||
#
|
||||
# Other Drivers
|
||||
#
|
||||
INPUT_SOC_BUTTON_ARRAY m
|
||||
SURFACE_3_BUTTON m
|
||||
SURFACE_3_POWER_OPREGION m
|
||||
SURFACE_PRO3_BUTTON m
|
||||
SURFACE_GPE m
|
||||
SURFACE_BOOK1_DGPU_SWITCH m
|
||||
|
||||
#
|
||||
# Other
|
||||
#
|
||||
# Prevent a non-fatal "kernel oops" at boot crashing udev
|
||||
# (https://github.com/linux-surface/linux-surface/issues/61#issuecomment-579298172)
|
||||
PINCTRL_INTEL y
|
||||
PINCTRL_SUNRISEPOINT y
|
||||
# Required for reading battery data
|
||||
# (https://github.com/linux-surface/surface-aggregator-module/wiki/Testing-and-Installing)
|
||||
SERIAL_DEV_BUS y
|
||||
SERIAL_DEV_CTRL_TTYPORT y
|
||||
MFD_INTEL_LPSS_PCI y
|
||||
INTEL_IDMA64 y
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
|
BIN
modules/hardware/wifi.nix
Normal file
BIN
modules/hardware/wifi.nix
Normal file
Binary file not shown.
@ -10,7 +10,7 @@ in {
|
||||
config = lib.mkIf cfg.enable {
|
||||
boot.binfmt.emulatedSystems = [ "i686-linux" "aarch64-linux" ]; # For remote building
|
||||
environment.systemPackages = with pkgs; [ openssh ];
|
||||
nix.settings.trusted-users = [ "builder" ];
|
||||
nix.trustedUsers = [ "builder" ];
|
||||
|
||||
# TODO: Specify a firewall rule to only allow this from my other NixOS machines
|
||||
users = {
|
||||
|
@ -30,7 +30,6 @@ in {
|
||||
dynamic_title = true;
|
||||
decorations = "full";
|
||||
startup_mode = "Windowed";
|
||||
#opacity = 0.7;
|
||||
};
|
||||
|
||||
scrolling = {
|
||||
@ -48,6 +47,7 @@ in {
|
||||
x = 0;
|
||||
y = 0;
|
||||
};
|
||||
use_thin_strokes = true;
|
||||
};
|
||||
debug = {
|
||||
render_timer = false;
|
||||
@ -83,6 +83,7 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
background_opacity = 0.7;
|
||||
mouse_bindings = [ {
|
||||
mouse = "Middle";
|
||||
action = "PasteSelection";
|
||||
@ -110,6 +111,7 @@ in {
|
||||
|
||||
live_config_reload = true;
|
||||
enable_experimental_conpty_backend = false;
|
||||
alt_send_esc = true;
|
||||
|
||||
key_bindings = [
|
||||
{
|
||||
|
@ -1,15 +0,0 @@
|
||||
{ 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";
|
||||
};
|
||||
};
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
{ pkgs, config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.bluray;
|
||||
in {
|
||||
options.ptw.programs.bluray = {
|
||||
enable = lib.mkEnableOption "Enable bluray playback and decoding. Will rebuild a lot of packages";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
nixpkgs.config.overlays = [
|
||||
(import ../../../overlays/bluray.nix)
|
||||
];
|
||||
};
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{ 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;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -9,19 +9,17 @@ let
|
||||
rev = "e89a63a62e071180c9cdd9067679fadc3f7bf796";
|
||||
sha256 = "0gxlz9b7fvbjkqxsyb4l75g7jsxyms0i1vpnb6y499hl115akcaz";
|
||||
};
|
||||
|
||||
in {
|
||||
options.ptw.programs.emacs = {
|
||||
enable = lib.mkEnableOption "Configure emacs";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [ emacs28NativeComp ];
|
||||
services.emacs.package = pkgs.emacs28NativeComp;
|
||||
environment.systemPackages = with pkgs; [ emacsPgtkGcc ];
|
||||
services.emacs.package = pkgs.emacsPgtkGcc;
|
||||
|
||||
home-manager.users."${config.ptw.system.singleUser}" = {
|
||||
home.file = {
|
||||
#".emacs".text = builtins.replaceStrings [ "%%DARTLANG_ANALYSIS_SERVER_PATH%%" "" ] (builtins.readFile ./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";
|
||||
@ -50,8 +48,6 @@ in {
|
||||
json-mode
|
||||
rust-mode
|
||||
yaml-mode
|
||||
lsp-mode lsp-treemacs flycheck company
|
||||
dart-mode lsp-dart
|
||||
];
|
||||
};
|
||||
};
|
||||
|
@ -7,10 +7,8 @@
|
||||
(setq redisplay-dont-pause t)
|
||||
(setq jit-lock-defer-time 0)
|
||||
(setq fast-but-imprecise-scrolling t)
|
||||
(setq make-backup-files nil) (setq create-lockfiles nil)
|
||||
|
||||
; Disable the bell sounds
|
||||
(setq ring-bell-function 'ignore)
|
||||
(setq make-backup-files nil)
|
||||
(setq create-lockfiles nil)
|
||||
|
||||
;; 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
|
||||
@ -92,7 +90,6 @@
|
||||
(smartparens-global-mode t))
|
||||
(use-package undo-tree
|
||||
:config
|
||||
(setq undo-tree-auto-save-history nil)
|
||||
(global-undo-tree-mode))
|
||||
|
||||
(setq-default indent-tab-mode t)
|
||||
@ -211,18 +208,6 @@
|
||||
(use-package json-mode)
|
||||
(use-package rust-mode)
|
||||
(use-package yaml-mode)
|
||||
(add-hook 'dart-mode-hook 'lsp)
|
||||
(setq lsp-lens-enable t
|
||||
lsp-signature-auto-activate nil
|
||||
company-minimum-prefix-length 1
|
||||
read-process-output-max (* 1024 1024))
|
||||
(use-package lsp-mode
|
||||
:init
|
||||
(setq lsp-keymap-prefix "C-c l")
|
||||
:hook (
|
||||
(dart-mode . lsp)
|
||||
)
|
||||
:commands lsp)
|
||||
|
||||
;; Debugging
|
||||
;(use-package explain-pause-mode
|
||||
|
@ -24,18 +24,17 @@ 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;
|
||||
|
@ -1,59 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.gaming;
|
||||
in {
|
||||
options.ptw.programs.gaming = {
|
||||
enable = lib.mkEnableOption "Configure gaming options";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
# 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 pcsx2
|
||||
];
|
||||
})
|
||||
|
||||
#steam-wrapped # Custom package
|
||||
|
||||
# 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;
|
||||
};
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
{ 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)
|
||||
+ ".";
|
||||
};
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
{ pkgs, config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.gdm;
|
||||
in {
|
||||
options.ptw.services.gdm = {
|
||||
enable = lib.mkEnableOption "Enable GDM as a display manager";
|
||||
monitors = lib.mkOption {
|
||||
description = "The file to use as a monitors.xml";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.xserver.displayManager.gdm = {
|
||||
wayland = true;
|
||||
enable = true;
|
||||
|
||||
# TODO: Use monitors.xml
|
||||
# job
|
||||
};
|
||||
};
|
||||
}
|
@ -12,9 +12,6 @@ in {
|
||||
enable = true;
|
||||
userEmail = "papatutuwawa@polynom.me";
|
||||
userName = "Alexander \"PapaTutuWawa\"";
|
||||
|
||||
# The key on my Yubikey
|
||||
signing.key = "B688F70D0EC87D5A8A9D3D7A56C749835F3CE824";
|
||||
extraConfig = {
|
||||
init = {
|
||||
defaultBranch = "master";
|
||||
|
@ -10,41 +10,25 @@ 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
|
||||
gnomeExtensions.notification-timeout
|
||||
gnomeExtensions.window-is-ready-remover
|
||||
gnomeExtensions.notification-timeout # Custom package
|
||||
gnomeExtensions.windowisready-remover # Custom package
|
||||
gnomeExtensions.application-volume-mixer
|
||||
gnomeExtensions.tiling-assistant
|
||||
gnomeExtensions.tilingnome
|
||||
gnomeExtensions.tray-icons-reloaded
|
||||
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 = {
|
||||
@ -53,7 +37,7 @@ in {
|
||||
geoclue2.enable = false;
|
||||
dleyna-renderer.enable = false;
|
||||
dleyna-server.enable = false;
|
||||
gvfs.enable = true;
|
||||
gvfs.enable = lib.mkForce false;
|
||||
telepathy.enable = false;
|
||||
gnome = {
|
||||
chrome-gnome-shell.enable = false;
|
||||
@ -77,29 +61,27 @@ 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;
|
||||
};
|
||||
|
||||
qt5 = {
|
||||
style = "adwaita-dark";
|
||||
platformTheme = "gnome";
|
||||
enable = true;
|
||||
gtkUsePortal = true;
|
||||
};
|
||||
|
||||
home-manager.users."${config.ptw.system.singleUser}" = {
|
||||
#xdg.configFile = {
|
||||
# # Make QT apps use a dark theme
|
||||
# "Kvantum/kvantum.kvconfig".text = ''
|
||||
# [General]
|
||||
# theme=KvArcDark
|
||||
# '';
|
||||
#};
|
||||
xdg.configFile = {
|
||||
# Make QT apps use a dark theme
|
||||
"Kvantum/kvantum.kvconfig".text = ''
|
||||
[General]
|
||||
theme=KvArcDark
|
||||
'';
|
||||
};
|
||||
|
||||
dconf.settings = {
|
||||
# The packages come in from modules/programs/gnome
|
||||
@ -115,10 +97,7 @@ in {
|
||||
|
||||
# Extensions
|
||||
"org/gnome/shell" = {
|
||||
enabled-extensions = let
|
||||
isMiku = config.ptw.system.hostName == "miku";
|
||||
isNishimiya = config.ptw.system.hostName == "nishimiya";
|
||||
in [
|
||||
enabled-extensions = [
|
||||
"caffeine@patapon.info"
|
||||
"notification-timeout@chlumskyvaclav.gmail.com"
|
||||
"gnome-ui-tune@itstime.tech"
|
||||
@ -126,9 +105,7 @@ in {
|
||||
"windowIsReady_Remover@nunofarruca@gmail.com"
|
||||
"blur-my-shell@aunetx"
|
||||
"gsconnect@andyholmes.github.io"
|
||||
"trayIconsReloaded@selfmade.pl"
|
||||
] ++ (lib.optional isMiku "tiling-assistant@leleat-on-github")
|
||||
++ (lib.optional (isNishimiya || isMiku) "tilingnome@rliang.github.com");
|
||||
];
|
||||
};
|
||||
|
||||
"org/gnome/shell/extensions/caffeine" = {
|
||||
|
@ -1,14 +1,12 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
#mkAnime4kShader = shader: "${pkgs.anime4k}/usr/share/shaders/${shader}";
|
||||
mkDefaultShader = shader: "${pkgs.mpv-shader-pack}/usr/share/shaders/${shader}";
|
||||
makeMpvProfile = { shader ? null, gpuContext ? "waylandvk", additional ? {} }: {
|
||||
glsl-shaders = lib.mkIf (shader != null) shader;
|
||||
makeMpvProfile = { shader, additional ? {} }: {
|
||||
glsl-shaders = "${pkgs.anime4k}/usr/share/shaders/${shader}";
|
||||
scale = "ewa_lanczossharp";
|
||||
cscale = "ewa_lanczossharp";
|
||||
gpu-context = gpuContext;
|
||||
gpu-api = "vulkan";
|
||||
gpu-context = "wayland";
|
||||
gpu-api = "opengl";
|
||||
hwdec = "vaapi";
|
||||
vo = "gpu";
|
||||
video-sync = "display-resample";
|
||||
@ -17,7 +15,8 @@ let
|
||||
} // additional // (if config.ptw.programs.mpv != "" then {
|
||||
# Make mpv pop up on the primary screen
|
||||
screen-name = config.ptw.programs.mpv.primaryScreen;
|
||||
fs-screen-name = config.ptw.programs.mpv.primaryScreen;} else {});
|
||||
fs-screen-name = config.ptw.programs.mpv.primaryScreen;
|
||||
} else {});
|
||||
cfg = config.ptw.programs.mpv;
|
||||
in {
|
||||
options.ptw.programs.mpv = {
|
||||
@ -41,19 +40,13 @@ in {
|
||||
defaultProfiles = [ "anime" ];
|
||||
profiles = {
|
||||
anime = (makeMpvProfile {
|
||||
#shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||
shader = "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||
additional = {
|
||||
fullscreen = "";
|
||||
};
|
||||
});
|
||||
anime-denoise = (makeMpvProfile {
|
||||
#shader = mkAnime4kShader "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||
});
|
||||
non-anime = (makeMpvProfile {
|
||||
shader = mkDefaultShader "FSRCNNX_x2_8-0-4-1.glsl";
|
||||
});
|
||||
non-anime-strong = (makeMpvProfile {
|
||||
shader = mkDefaultShader "FSRCNNX_x2_16-0-4-1.glsl";
|
||||
"anime-denoise" = (makeMpvProfile {
|
||||
shader = "Anime4K_Upscale_Denoise_CNN_x2_VL.glsl";
|
||||
});
|
||||
};
|
||||
};
|
||||
|
@ -1,28 +0,0 @@
|
||||
{ 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
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
{ 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";
|
||||
};
|
||||
}))
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.office;
|
||||
in {
|
||||
options.ptw.programs.office.enable = lib.mkEnableOption "Install and configure office software";
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
/*libreoffice*/
|
||||
texlive.combined.scheme-basic
|
||||
thunderbird
|
||||
];
|
||||
};
|
||||
}
|
30
modules/programs/plasma/default.nix
Normal file
30
modules/programs/plasma/default.nix
Normal file
@ -0,0 +1,30 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.programs.plasma;
|
||||
in {
|
||||
options.ptw.programs.plasma = {
|
||||
enable = lib.mkEnableOption "Enable KDE Plasma";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.xserver.desktopManager.plasma5 = {
|
||||
enable = true;
|
||||
runUsingSystemd = true;
|
||||
supportDDC = true;
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = [ pkgs.xdg-desktop-portal-kde ];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
yakuake
|
||||
libsForQt5.okular
|
||||
libsForQt5.kdeconnect-kde
|
||||
index-fm
|
||||
kasts-git
|
||||
];
|
||||
};
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
{ 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;
|
||||
};
|
||||
};
|
||||
}
|
@ -35,10 +35,6 @@ let
|
||||
in {
|
||||
options.ptw.programs.sway = {
|
||||
enable = lib.mkEnableOption "Configure sway using HomeManager";
|
||||
extraSessionCommands = lib.mkOption {
|
||||
description = "Commands to be run before sway is started. See programs.sway.extraSessionCommands";
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
@ -52,7 +48,7 @@ in {
|
||||
qt5.style = "adwaita-dark";
|
||||
|
||||
environment = {
|
||||
systemPackages = with pkgs; [ adwaita-qt wdisplays ];
|
||||
systemPackages = with pkgs; [ adwaita-qt ];
|
||||
sessionVariables = {
|
||||
# sway
|
||||
#"_JAVA_AWT_NONREPARENTING" = 1;
|
||||
@ -65,14 +61,10 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
programs.sway = {
|
||||
enable = true;
|
||||
extraSessionCommands = cfg.extraSessionCommands;
|
||||
};
|
||||
programs.sway.enable = true;
|
||||
home-manager.users."${config.ptw.system.singleUser}" = {
|
||||
wayland.windowManager.sway = {
|
||||
enable = true;
|
||||
extraSessionCommands = cfg.extraSessionCommands;
|
||||
config = {
|
||||
bars = [ ];
|
||||
startup = [
|
||||
|
@ -14,16 +14,15 @@ in {
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home-manager.users."${config.ptw.system.singleUser}" = {
|
||||
xdg.configFile."waybar/style.css".source = lib.mkForce ./style.css;
|
||||
xdg.configFile."waybar/style.css".source = ./style.css;
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
style = builtins.readFile ./style.css;
|
||||
/*
|
||||
settings = [
|
||||
{
|
||||
output = [ "${cfg.output}" ];
|
||||
layer = "bottom";
|
||||
position = "top";
|
||||
position = "left";
|
||||
gtk-layer-shell = true;
|
||||
|
||||
modules-left = [ "custom/applauncher" "sway/workspaces" "sway/mode" ];
|
||||
@ -63,7 +62,6 @@ in {
|
||||
};
|
||||
}
|
||||
];
|
||||
*/
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,151 +1,133 @@
|
||||
/*
|
||||
Based on https://github.com/indicozy/wmtm/blob/main/configs/Flower/config/waybar/style.css
|
||||
*/
|
||||
@define-color background #323732;
|
||||
@define-color foreground #deddda;
|
||||
@define-color selection #44475a;
|
||||
@define-color unfocused #6272a4;
|
||||
@define-color cyan #5d7380;
|
||||
@define-color green #fff6f6;
|
||||
@define-color orange #d65d0e;
|
||||
@define-color pink #ff5370;
|
||||
@define-color purple #b16286;
|
||||
@define-color red #bf6374;
|
||||
@define-color yellow #d79921;
|
||||
@define-color fore #d1c29d;
|
||||
|
||||
|
||||
* {
|
||||
border: none;
|
||||
font-family: Iosevka Nerd Font, sans-serif;
|
||||
font-size: 13px;
|
||||
font-size: 14px;
|
||||
font-family: "Hack";
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
/* text-shadow:1px 1px 2px rgba(0,0,0,.6); */
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
/* background-color: rgba(18, 21, 29, 0.98); */
|
||||
background-color: #12151d;
|
||||
/* background-color: rgba(0, 0, 0, 0); */
|
||||
border-bottom: 3px solid #1e222a;
|
||||
color: #abb2bf;
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
color: @foreground;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
window#waybar.left {
|
||||
background: rgba(43, 48, 59, .85);
|
||||
border-top-left-radius: 0px;
|
||||
border-top-right-radius: 0px;
|
||||
border-top: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
window#waybar.bottom {
|
||||
padding-top: 0px;
|
||||
background: @green;
|
||||
border-bottom-left-radius: 0px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-center,
|
||||
.modules-right {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Base styling for modules */
|
||||
#workspaces,
|
||||
#mode,
|
||||
#cpu,
|
||||
#memory,
|
||||
#temperature,
|
||||
#custom-media,
|
||||
#custom-fans,
|
||||
#clock,
|
||||
#window,
|
||||
#idle_inhibitor,
|
||||
#language,
|
||||
#pulseaudio,
|
||||
#backlight,
|
||||
#battery,
|
||||
#network,
|
||||
#tray {
|
||||
background-color: #1e222a;
|
||||
padding: 0 10px;
|
||||
margin: 2px 4px 5px 4px;
|
||||
border: 3px solid rgba(0, 0, 0, 0);
|
||||
border-radius: 90px;
|
||||
background-clip: padding-box;
|
||||
#taskbar,
|
||||
#tray,
|
||||
#custom-menu {
|
||||
padding: 1px 0px 1px 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
min-width: 20px;
|
||||
color: #61afef;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background-color: rgba(0, 0, 0, 0.2)
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
color: #c678dd;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
color: #e06c75;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
color: #61afef;
|
||||
}
|
||||
|
||||
#memory {
|
||||
color: #c678dd;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
color: #d19a66;
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
background-color: #e06c75;
|
||||
color: #1e222a;
|
||||
}
|
||||
|
||||
#custom-media {
|
||||
background-color: #c678dd;
|
||||
color: #1e222a;
|
||||
}
|
||||
|
||||
#custom-fans {
|
||||
color: #98c379;
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: #61afef;
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
color: #abb2bf;
|
||||
}
|
||||
|
||||
#idle_inhibitor.activated {
|
||||
background-color: #abb2bf;
|
||||
color: #1e222a;
|
||||
}
|
||||
|
||||
#language {
|
||||
color: #56b6c2;
|
||||
#pulseaudio, #idle_inhibitor {
|
||||
font-size: 30px;
|
||||
margin: 0px 2px;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
color: #d19a66;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
background-color: #e06c75;
|
||||
color: #1e222a;
|
||||
#taskbar,
|
||||
#tray,
|
||||
#window {
|
||||
padding: 0;
|
||||
margin: 0 0px 0 0px;
|
||||
}
|
||||
#taskbar {
|
||||
margin-top: 0px;
|
||||
}
|
||||
#taskbar button {
|
||||
color: @foreground;
|
||||
border-radius: 0px;
|
||||
padding: 3px 0px 3px 0px;
|
||||
}
|
||||
#taskbar button.active {
|
||||
icon-shadow: 0px 0px 3px alpha(#111131, .9);
|
||||
border-style: dashed;
|
||||
border-width: 0 0 0 0;
|
||||
border-color: @foreground;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
color: #61afef;
|
||||
#tray {
|
||||
color: black;
|
||||
icon-shadow: 0px 1px 2px alpha(#020000, .9);
|
||||
padding: 2px 0px 2px 0px;
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: #98c379;
|
||||
#custom-menu,
|
||||
#custom-applauncher,
|
||||
#custom-notifications {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
#battery.charging, #battery.plugged {
|
||||
background-color: #98c379;
|
||||
color: #1e222a;
|
||||
#clock {
|
||||
font-size: 16px;
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #1e222a;
|
||||
color: #e06c75;
|
||||
}
|
||||
#workspaces {
|
||||
padding: 0px 0px 0px 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
#workspaces button {
|
||||
margin: 0;
|
||||
padding: 0px 0px 0px 0px;
|
||||
border-radius: 0px;
|
||||
color: @foreground;
|
||||
}
|
||||
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: #e06c75;
|
||||
color: #1e222a;
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: #c678dd
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
background-color: #e06c75;
|
||||
color: #1e222a;
|
||||
#workspaces button.focused {
|
||||
color: @foreground;
|
||||
background-color: @purple;
|
||||
border-style: solid;
|
||||
border-width: 0 0 0 0;
|
||||
border-color: @foreground;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
@ -21,10 +21,7 @@ in {
|
||||
home-manager.users."${config.ptw.system.singleUser}".programs.zsh = {
|
||||
enable = true;
|
||||
history.ignoreSpace = true;
|
||||
shellAliases = let
|
||||
home = "/home/${config.ptw.system.singleUser}/Development/Personal/nixos-config";
|
||||
nixosSwitch = "nixos-rebuild --flake .#${config.ptw.system.hostName} switch --use-remote-sudo";
|
||||
in {
|
||||
shellAliases = {
|
||||
ls = "ls --color=always";
|
||||
".." = "cd ..";
|
||||
"..." = "cd ../../";
|
||||
@ -36,8 +33,6 @@ in {
|
||||
gds = "git diff --staged";
|
||||
c = "clear";
|
||||
suspend = "systemctl suspend";
|
||||
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,14 +42,8 @@ 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
|
||||
|
||||
@ -101,17 +90,15 @@ in {
|
||||
sha256 = "1y8wkmhgkkyfz91y1f8crh6cg912n87gmcchc8xhnwji11n1mqrq";
|
||||
};
|
||||
}
|
||||
/*
|
||||
{
|
||||
name = "zsh-syntax-highlighting";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "zsh-users";
|
||||
repo = "zsh-syntax-highlighting";
|
||||
rev = "c5ce0014677a0f69a10b676b6038ad127f40c6b1";
|
||||
sha256 = "sha256-UqeK+xFcKMwdM62syL2xkV8jwkf/NWfubxOTtczWEwA=";
|
||||
rev = "6e0e950154a4c6983d9e077ed052298ad9126144";
|
||||
sha256 = "09bkg1a7qs6kvnq17jnw5cbcjhz9sk259mv0d5mklqaifd0hms4v";
|
||||
};
|
||||
}
|
||||
*/
|
||||
];
|
||||
};
|
||||
};
|
||||
|
@ -1,24 +0,0 @@
|
||||
{ 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
{ 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, pkgs, ... }:
|
||||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.gamemode;
|
||||
@ -7,15 +7,7 @@ in {
|
||||
enable = lib.mkEnableOption "Enable and configure gamemode";
|
||||
};
|
||||
|
||||
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}
|
||||
'';
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.gamemode = {
|
||||
enable = true;
|
||||
enableRenice = true;
|
||||
@ -31,35 +23,6 @@ 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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,53 +0,0 @@
|
||||
{ lib, config, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.greetd;
|
||||
in {
|
||||
options.ptw.services.greetd = {
|
||||
enable = lib.mkEnableOption "Enable greetd with gtkgreet";
|
||||
swayExtra = lib.mkOption {
|
||||
description = "Extra options to include in the sway config";
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
users.users.greeter = {
|
||||
isSystemUser = lib.mkForce false;
|
||||
isNormalUser = true;
|
||||
createHome = true;
|
||||
uid = 992;
|
||||
};
|
||||
|
||||
services = {
|
||||
greetd = {
|
||||
enable = true;
|
||||
restart = true;
|
||||
settings = {
|
||||
default_session = let
|
||||
swayConfig = pkgs.writeText "login-sway-config" ''
|
||||
exec ${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; ${pkgs.sway}/bin/swaymsg exit;
|
||||
|
||||
bindsym Mod4+shift+e exec swaynag \
|
||||
-t warning \
|
||||
-m 'What do you want to do?' \
|
||||
-b 'Poweroff' 'systemctl poweroff' \
|
||||
-b 'Reboot' 'systemctl reboot'
|
||||
|
||||
input "*" {
|
||||
xkb_layout de
|
||||
}
|
||||
|
||||
${cfg.swayExtra}
|
||||
|
||||
include /etc/sway/config.d/*
|
||||
'';
|
||||
in {
|
||||
command = "${pkgs.sway}/bin/sway --config ${swayConfig}";
|
||||
user = "greeter";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -10,8 +10,8 @@ in {
|
||||
config = lib.mkIf cfg.enable {
|
||||
# TODO: mozc cannot be configured for some reason
|
||||
i18n.inputMethod = {
|
||||
enabled = "fcitx5";
|
||||
fcitx5.addons = with pkgs; [ fcitx5-mozc ];
|
||||
enabled = "fcitx";
|
||||
fcitx.engines = with pkgs.fcitx-engines; [ mozc ];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [ fcitx5-configtool fcitx5-gtk ];
|
||||
|
@ -1,29 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.input-remapper;
|
||||
in {
|
||||
options.ptw.services.input-remapper = {
|
||||
enable = lib.mkEnableOption "Enable the input-remapper service and install it";
|
||||
postStartCommand = lib.mkOption {
|
||||
default = "";
|
||||
description = "Command to be executed after the input-remapper service has been started";
|
||||
# type = ;
|
||||
};
|
||||
};
|
||||
|
||||
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"
|
||||
# '';
|
||||
#};
|
||||
services.input-remapper = {
|
||||
enable = true;
|
||||
enableUdevRules = true;
|
||||
serviceWantedBy = [ "default.target" ];
|
||||
};
|
||||
};
|
||||
}
|
35
modules/services/key-mapper/default.nix
Normal file
35
modules/services/key-mapper/default.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.ptw.services.key-mapper;
|
||||
in {
|
||||
options.ptw.services.key-mapper = {
|
||||
enable = lib.mkEnableOption "Enable the key-mapper service and install it";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# TODO: Assert that uinput is in kernelModules
|
||||
services.udev = {
|
||||
packages = with pkgs; [ key-mapper ];
|
||||
extraRules = ''
|
||||
KERNEL=="uinput", GROUP="input", MODE="0660"
|
||||
'';
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.key-mapper # Custom package
|
||||
];
|
||||
|
||||
systemd.user.services.key-mapper = {
|
||||
description = "A tool to change the mapping of your input device buttons";
|
||||
wantedBy = [ "default.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.key-mapper}/bin/key-mapper-service";
|
||||
Restart = "always";
|
||||
# NOTE: The Tartarus may not be connected, so don't fail if we cannot set the preset
|
||||
ExecPostStart = "${pkgs.key-mapper}/bin/key-mapper --command start --preset NOOP --device \"Razer Razer Tartarus V2\"; exit 0";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
{ 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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
{ 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,14 +4,13 @@
|
||||
config = lib.mkIf (config.ptw.system.singleUser == "alexander") {
|
||||
users.users.alexander = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "wheel" "audio" "video" "kvm" "input" "libvirtd" "scanner" "lp" "alexander" "cdrom" ];
|
||||
hashedPassword = "$y$j9T$xhnK648hF0yzDnRy0rTT/.$HbDKvNetiGeY3Xjt6/YPIzoxSmdQ0SzhXengOT1Ga01";
|
||||
extraGroups = [ "wheel" "audio" "video" "kvm" "input" "libvirtd" ];
|
||||
hashedPassword = "$5$i4aZuQ/WXP.rFOc$lCzDqbrVsqBQt5954O.3bFPknD0jn27MmqzmE4DIAEC";
|
||||
shell = pkgs.zsh;
|
||||
useDefaultShell = false;
|
||||
uid = 1000;
|
||||
isSystemUser = false;
|
||||
};
|
||||
users.groups.alexander = {};
|
||||
|
||||
# Activate gpg
|
||||
programs.gnupg.agent.enable = true;
|
||||
@ -19,39 +18,35 @@
|
||||
# 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 = 1847;
|
||||
sshPort = (import ../../lib/ports.nix).sshPort;
|
||||
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";
|
||||
hostname = "git.polynom.me";
|
||||
identityFile = "~/.ssh/gitea_papatutuwawa";
|
||||
identityFile = "~/.ssh/gitea_papatutuwawa_ed";
|
||||
};
|
||||
"github.com" = {
|
||||
user = "git";
|
||||
hostname = "github.com";
|
||||
identityFile = "~/.ssh/github_polynomdivision";
|
||||
};
|
||||
"codeberg.org" = {
|
||||
user = "git";
|
||||
hostname = "codeberg.org";
|
||||
identityFile = "~/.ssh/codeberg_papatutuwawa";
|
||||
};
|
||||
"collaborating.tuhh.de" = {
|
||||
user = "git";
|
||||
hostname = "collaborating.tuhh.de";
|
||||
identityFile = "~/.ssh/gitlab_tuhh";
|
||||
"minecraft" = {
|
||||
port = sshPort;
|
||||
user = "alexander";
|
||||
hostname = "49.12.33.24";
|
||||
identityFile = "~/.ssh/polynom.me";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -8,7 +8,7 @@ in {
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [ virglrenderer unstable.qemu virt-manager ];
|
||||
environment.systemPackages = with pkgs; [ virglrenderer unstable.qemu ];
|
||||
services.spice-vdagentd.enable = true;
|
||||
|
||||
virtualisation.libvirtd = {
|
||||
@ -23,9 +23,11 @@ in {
|
||||
"/dev/random", "/dev/urandom",
|
||||
"/dev/ptmx", "/dev/kvm", "/dev/kqemu",
|
||||
"/dev/rtc","/dev/hpet",
|
||||
"/dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse",
|
||||
"/dev/input/by-id/usb-Razer_Razer_Tartarus_V2-event-kbd",
|
||||
"/dev/input/by-id/virtual-event-EvdevProxyMouse",
|
||||
"/dev/input/by-id/virtual-event-EvdevProxyKeyboard",
|
||||
"/dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse"
|
||||
"/dev/input/by-id/virtual-event-EvdevProxyTartarus",
|
||||
"/dev/input/by-id/usb-Razer_Razer_BlackWidow_Ultimate-event-kbd"
|
||||
]
|
||||
'';
|
||||
};
|
||||
|
@ -24,7 +24,7 @@ in {
|
||||
USBIDClass = {vendor=0x046d, model=0xc07c, class="Mouse"}
|
||||
[[device]]
|
||||
[device.Simple]
|
||||
name = "EvdevProxyKeyboard"
|
||||
name = "EvdevProxyTartarus"
|
||||
vendor = 0x1337
|
||||
model = 0x1338
|
||||
class = "Keyboard"
|
||||
@ -32,67 +32,67 @@ in {
|
||||
# the mapped version of the Tartarus evdev node.
|
||||
# (Useful for qemu)
|
||||
[[device.Simple.selector]]
|
||||
EVDEVClass = {phys="\"input-remapper\""}
|
||||
[[device.Simple.selector]]
|
||||
USBIDClass = {vendor=0x1532, model=0x011a, class="Keyboard"}
|
||||
EVDEVClass = {phys="\"key-mapper\""}
|
||||
'';
|
||||
# "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
|
||||
if [[ "$guest" = "win10" ]]; 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
|
||||
# '';
|
||||
sudo -u alexander systemctl --user start evdev-proxy.service
|
||||
sudo -u alexander systemctl --user start scream.service
|
||||
sleep 2
|
||||
|
||||
${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
|
||||
sudo -u alexander systemctl --user stop evdev-proxy.service
|
||||
sudo -u alexander systemctl --user stop scream.service
|
||||
|
||||
${pkgs.vfio-isolate}/bin/vfio-isolate \
|
||||
restore ${vfio-isolate-state}
|
||||
esac
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
# NOTE: Workaround for libvirt's SYSCONFDIR being set to /var/lib
|
||||
# (See https://github.com/NixOS/nixpkgs/issues/51152#issuecomment-899374407)
|
||||
system.activationScripts.libvirt-hooks.text = ''
|
||||
ln -Tfs /etc/libvirt/hooks /var/lib/libvirt/hooks
|
||||
'';
|
||||
ln -Tfs /etc/libvirt/hooks /var/lib/libvirt/hooks
|
||||
'';
|
||||
|
||||
services.udev.packages = with pkgs; [ evdev-proxy ];
|
||||
#services.udev.packages = with pkgs; [ evdev-proxy ];
|
||||
|
||||
systemd = {
|
||||
services = {
|
||||
libvirtd.path = with pkgs; [ /*vfio-isolate*/ systemd bash ];
|
||||
};
|
||||
|
||||
user.services.evdev-proxy = {
|
||||
description = "Creates virtual device to proxy evdev devices events";
|
||||
wantedBy = [ "default.target" ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.evdev-proxy}/bin/evdev-proxy";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
services.libvirtd.path = with pkgs; [ vfio-isolate systemd bash ];
|
||||
#user.services.evdev-proxy = {
|
||||
# description = "Creates virtual device to proxy evdev devices events";
|
||||
# #wantedBy = [ "default.target" ];
|
||||
# serviceConfig = {
|
||||
# Type = "simple";
|
||||
# ExecStart = "${pkgs.evdev-proxy}/bin/evdev-proxy";
|
||||
# Restart = "always";
|
||||
# };
|
||||
#};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -1,29 +0,0 @@
|
||||
final: prev:
|
||||
|
||||
let
|
||||
overrideWithAACS = pkgName: prev."${pkgName}".overrideAttrs (old: {
|
||||
buildInputs = with prev; old.buildInputs ++ [ libaacs ];
|
||||
});
|
||||
in {
|
||||
libbluray = prev.libbluray.override {
|
||||
withAACS = true;
|
||||
withBDplus = true;
|
||||
};
|
||||
|
||||
mpvUnwrapped = prev.mpvUnwrapped.overrideAttrs (old: {
|
||||
buildInputs = with prev; old.buildInputs ++ [ libaacs ];
|
||||
});
|
||||
|
||||
vlc = prev.vlc.overrideAttrs (old: {
|
||||
buildInputs = with prev; old.buildInputs ++ [ libaacs ];
|
||||
});
|
||||
|
||||
handbrake = prev.handbrake.overrideAttrs (old: {
|
||||
buildInputs = with prev; old.buildInputs ++ [ libaacs ];
|
||||
});
|
||||
|
||||
/*
|
||||
mpvUnwrapped = overrideWithAACS "mpvUnwrapped";
|
||||
handbrake = overrideWithAACS "handbrake";
|
||||
*/
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
{ pkgs, inputs }:
|
||||
{ pkgs }:
|
||||
|
||||
{
|
||||
simple = import ./simple.nix;
|
||||
#surface = import ./surface.nix pkgs;
|
||||
sandbox = import ./sandbox.nix;
|
||||
surface = import ./surface.nix pkgs;
|
||||
}
|
||||
|
@ -1,46 +0,0 @@
|
||||
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/
|
||||
'';
|
||||
});
|
||||
}
|
@ -1,140 +0,0 @@
|
||||
final: prev:
|
||||
|
||||
let
|
||||
wrapInSandbox = prev.callPackage ../lib/sandbox.nix {};
|
||||
in {
|
||||
discord-app-wrapped = wrapInSandbox {
|
||||
name = "discord-app-wrapped";
|
||||
launchScriptName = "discord-app";
|
||||
binary = "${prev.discord-app}/bin/discord-app";
|
||||
mountInHome = [ ".local/share/discord-app" ];
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
chdirTo = "/home/$USER";
|
||||
|
||||
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" ];
|
||||
};
|
||||
enableDesktopFile = true;
|
||||
};
|
||||
|
||||
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-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";
|
||||
|
||||
preDesktopFilePhase = ''
|
||||
cp -Lr ${prev.steam}/share/icons $out/share/icons
|
||||
'';
|
||||
desktopFileAttributes = {
|
||||
name = "steam-wrapped";
|
||||
icon = "steam";
|
||||
desktopName = "Steam (wrapped)";
|
||||
};
|
||||
enableDesktopFile = true;
|
||||
};
|
||||
|
||||
spotify-wrapped = wrapInSandbox {
|
||||
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-wrapped";
|
||||
launchScriptName = "lutris";
|
||||
binary = "${prev.lutris-free}/bin/lutris";
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
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,12 +1,34 @@
|
||||
final: prev: {
|
||||
final: prev:
|
||||
|
||||
let
|
||||
# NOTE: For some reason --fs-screen-name and --screen-name are not in
|
||||
# 0.33.1. So wait and then remove this.
|
||||
mpv-git = prev.mpv-unwrapped.overrideAttrs (old: {
|
||||
version = "0.34.0";
|
||||
src = builtins.fetchGit {
|
||||
url = "https://github.com/mpv-player/mpv.git";
|
||||
ref = "master";
|
||||
rev = "0b56e1c00a57fdb767674462c299a5c973a9e373";
|
||||
};
|
||||
patches = [];
|
||||
});
|
||||
in {
|
||||
mpv = prev.wrapMpv mpv-git {
|
||||
# Prevent the need for prefixing mpv with DRI_PRIME=1
|
||||
extraMakeWrapperArgs = [
|
||||
"--set" "DRI_PRIME" "1"
|
||||
];
|
||||
};
|
||||
|
||||
gajim = prev.gajim.overrideAttrs (old: {
|
||||
# Enable notification sounds
|
||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ prev.gsound ];
|
||||
});
|
||||
|
||||
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
|
||||
@ -37,43 +59,4 @@ final: prev: {
|
||||
myxer = prev.myxer.overrideAttrs (old: {
|
||||
cargoPatches = [ ../patches/myxer/0000-1.2.1-set-gio-version.patch ];
|
||||
});
|
||||
|
||||
xournalpp-git = prev.xournalpp.overrideAttrs (old: {
|
||||
version = "1.1.1";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "bhennion";
|
||||
repo = "xournalpp";
|
||||
rev = "5d1545b0c4303e45b4ddf4ef8a1565eba822a9af";
|
||||
sha256 = "1d17lvydlny9pvaxa9xy53wxs7i6d563lp5r9g3r1xpgnb7zli8v";
|
||||
};
|
||||
});
|
||||
|
||||
discord = prev.discord.overrideAttrs (old: rec {
|
||||
version = "0.0.18";
|
||||
src = prev.fetchurl {
|
||||
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
|
||||
];
|
||||
});
|
||||
}
|
||||
|
91
packages/applications/audio/sublime-music/default.nix
Normal file
91
packages/applications/audio/sublime-music/default.nix
Normal file
@ -0,0 +1,91 @@
|
||||
{ fetchFromGitLab
|
||||
, lib
|
||||
, python3Packages
|
||||
, gobject-introspection
|
||||
, gtk3
|
||||
, pango
|
||||
, wrapGAppsHook
|
||||
, xvfb-run
|
||||
, chromecastSupport ? false
|
||||
, serverSupport ? false
|
||||
, keyringSupport ? true
|
||||
, notifySupport ? true, libnotify
|
||||
, networkSupport ? true, networkmanager
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "sublime-music";
|
||||
version = "0.11.16";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "sublime-music";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0n06x7l4i9nqbc74yhrjgg10zffdb75jz43mbxd03hr5057fdglz";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gobject-introspection
|
||||
python3Packages.poetry-core
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
pango
|
||||
]
|
||||
++ lib.optional notifySupport libnotify
|
||||
++ lib.optional networkSupport networkmanager
|
||||
;
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
bleach
|
||||
dataclasses-json
|
||||
deepdiff
|
||||
fuzzywuzzy
|
||||
mpv
|
||||
peewee
|
||||
pygobject3
|
||||
python-Levenshtein
|
||||
python-dateutil
|
||||
requests
|
||||
semver
|
||||
]
|
||||
++ lib.optional chromecastSupport PyChromecast
|
||||
++ lib.optional keyringSupport keyring
|
||||
++ lib.optional serverSupport bottle
|
||||
;
|
||||
|
||||
# hook for gobject-introspection doesn't like strictDeps
|
||||
# https://github.com/NixOS/nixpkgs/issues/56943
|
||||
strictDeps = false;
|
||||
|
||||
# Use the test suite provided by the upstream project.
|
||||
doCheck = false;
|
||||
checkInputs = with python3Packages; [
|
||||
pytest
|
||||
pytest-cov
|
||||
];
|
||||
checkPhase = "${xvfb-run}/bin/xvfb-run pytest";
|
||||
|
||||
# Also run the python import check for sanity
|
||||
#pythonImportsCheck = [ "sublime_music" ];
|
||||
|
||||
postInstall = ''
|
||||
install -Dm444 sublime-music.desktop -t $out/share/applications
|
||||
install -Dm444 sublime-music.metainfo.xml -t $out/share/metainfo
|
||||
|
||||
for size in 16 22 32 48 64 72 96 128 192 512 1024; do
|
||||
install -Dm444 logo/rendered/"$size".png \
|
||||
$out/share/icons/hicolor/"$size"x"$size"/apps/sublime-music.png
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "GTK3 Subsonic/Airsonic client";
|
||||
homepage = "https://sublimemusic.app/";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ albakham sumnerevans ];
|
||||
};
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
{
|
||||
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 ];
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
{
|
||||
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/
|
||||
'';
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
{
|
||||
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,46 +0,0 @@
|
||||
{
|
||||
stdenv
|
||||
, makeDesktopItem, writeScript, fetchurl
|
||||
, chromium
|
||||
}:
|
||||
|
||||
let
|
||||
script = writeScript "run-discord-app.sh" ''
|
||||
${chromium}/bin/chromium \
|
||||
--class="Discord-App" \
|
||||
--app="https://discord.com/channels/@me" \
|
||||
--user-data-dir=$HOME/.local/share/discord-app
|
||||
'';
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "discord-app";
|
||||
desktopName = "Discord App";
|
||||
genericName = "All-in-one cross-platform voice and text chat for gamers";
|
||||
exec = "${script}";
|
||||
icon = "discord";
|
||||
type = "Application";
|
||||
categories = [ "Network" "InstantMessaging" ];
|
||||
startupWMClass = "Discord-App";
|
||||
};
|
||||
iconSvg = fetchurl {
|
||||
url = "https://discord.com/assets/3437c10597c1526c3dbd98c737c2bcae.svg";
|
||||
sha256 = "0w18j5pvqnaimnsx9flqm8n5yb7lnkc5jsvf1c9sk5a3jplq2j61";
|
||||
};
|
||||
in stdenv.mkDerivation {
|
||||
pname = "discord-app";
|
||||
version = "1.0.0";
|
||||
|
||||
buildInputs = [ chromium ];
|
||||
|
||||
phases = "installPhase";
|
||||
|
||||
installPhase = ''
|
||||
# Install the icon
|
||||
mkdir -p $out/share/pixmaps
|
||||
cp ${iconSvg} $out/share/pixmaps/discord.svg
|
||||
|
||||
mkdir -p $out/bin
|
||||
cp ${script} $out/bin/discord-app
|
||||
cp -r ${desktopItem}/share/* $out/share
|
||||
'';
|
||||
}
|
||||
|
@ -1,17 +1,16 @@
|
||||
{
|
||||
lib, stdenv, pkgs
|
||||
, extraStartupArgs ? ""
|
||||
, upstreamElectron ? pkgs.electron
|
||||
}:
|
||||
|
||||
pkgs.discord.overrideAttrs (old: let
|
||||
pkgs.unstable.discord.overrideAttrs (old: let
|
||||
asar = pkgs.nodePackages.asar;
|
||||
gtk3 = pkgs.gtk3;
|
||||
binaryName = "Discord";
|
||||
system-electron = "$out/opt/${binaryName}/system-electron.sh";
|
||||
in rec {
|
||||
version = "0.0.17";
|
||||
nativeBuildInputs = with pkgs.unstable; old.nativeBuildInputs ++ [ upstreamElectron asar ];
|
||||
version = "0.0.16";
|
||||
nativeBuildInputs = with pkgs.unstable; old.nativeBuildInputs ++ [ electron asar ];
|
||||
buildPhase = ''
|
||||
${asar}/bin/asar e resources/app.asar resources/app
|
||||
rm resources/app.asar
|
||||
|
@ -0,0 +1,82 @@
|
||||
{ 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 = "2804e759eee439eb5d660368358b685a3c0b4110";
|
||||
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-G5nvLlkEU89uAQZuYlZrPa0ycR7kx67sOLmUgORhNJw=";
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
{
|
||||
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
|
||||
'';
|
||||
}
|
@ -6,59 +6,19 @@ let
|
||||
discord-system-electron = prev.callPackage ./applications/networking/instant-messengers/discord {
|
||||
# Wayland
|
||||
# NOTE: electron under Wayland has no window titlebars
|
||||
upstreamElectron = prev.electron_16;
|
||||
extraStartupArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";
|
||||
#extraStartupArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-features=WebRTCPipeWireCapturer";
|
||||
};
|
||||
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=";
|
||||
};
|
||||
});
|
||||
wrapInSandbox = prev.callPackage ./sandbox.nix {};
|
||||
in {
|
||||
inherit discord-system-electron dfl-ipc dfl-applications dfl-utils wayqt;
|
||||
|
||||
key-mapper = prev.callPackage ./tools/games/key-mapper {};
|
||||
vfio-isolate = prev.callPackage ./tools/virtualisation/vfio-isolate {};
|
||||
mopidy-funkwhale = prev.callPackage ./applications/audio/mopidy/funkwhale.nix {};
|
||||
# Not as clean as I hoped, but it works
|
||||
gnomeExtensions = prev.gnomeExtensions // {
|
||||
notification-timeout = prev.callPackage ./desktop/gnome/extensions/notification-timeout {};
|
||||
windowisready-remover = prev.callPackage ./desktop/gnome/extensions/windowisready-remover {};
|
||||
};
|
||||
python3Packages = prev.python3Packages // {
|
||||
pySmartDL = pySmartDL;
|
||||
cfscrape = cfscrape;
|
||||
@ -66,59 +26,109 @@ in {
|
||||
|
||||
replaysorcery = prev.callPackage ./tools/games/replaysorcery {};
|
||||
evdev-proxy = prev.callPackage ./tools/virtualisation/evdev-proxy {};
|
||||
virtiofsd = prev.callPackage ./tools/virtualisation/virtiofsd {};
|
||||
anime4k = prev.callPackage ./misc/video/anime4k {};
|
||||
mpv-shader-pack = prev.callPackage ./misc/video/mpv-shader-pack {};
|
||||
anime-dl = prev.callPackage ./tools/video/animedl {
|
||||
pySmartDL = pySmartDL;
|
||||
cfscrape = cfscrape;
|
||||
};
|
||||
animdl = prev.callPackage ./misc/video/animdl {};
|
||||
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;";
|
||||
};
|
||||
};
|
||||
|
||||
sddm-sugar-dark = prev.callPackage ./sddm-sugar-dark {};
|
||||
|
||||
iptsd = prev.callPackage ./tools/daemons/iptsd {};
|
||||
surface-control = prev.callPackage ./tools/system/surface-control {};
|
||||
|
||||
trackma = prev.callPackage ./tools/video/trackma {};
|
||||
|
||||
multimc-wrapped = wrapInSandbox {
|
||||
name = "multimc";
|
||||
package = prev.multimc;
|
||||
binaryName = "multimc";
|
||||
mountInHome = [ ".local/share/multimc" ];
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
chdirTo = "/home/$USER";
|
||||
extraEnv = {
|
||||
DRI_PRIME = "1";
|
||||
};
|
||||
};
|
||||
|
||||
steam-wrapped = wrapInSandbox {
|
||||
name = "steam";
|
||||
package = prev.steam;
|
||||
binaryName = "steam";
|
||||
mountInHome = [ ".steam" ".local/share/Steam" ];
|
||||
additionalBlacklist = [ "/mnt" ];
|
||||
additionalMounts = [ "/mnt/Storage/Games/SteamLibrary" ];
|
||||
chdirTo = "/home/$USER";
|
||||
extraEnv = {
|
||||
DRI_PRIME = "1";
|
||||
};
|
||||
|
||||
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";
|
||||
};
|
||||
|
||||
xournalpp-git = prev.xournalpp.overrideAttrs (old: {
|
||||
version = "1.1.1";
|
||||
src = prev.fetchFromGitHub {
|
||||
owner = "xournalpp";
|
||||
repo = "xournalpp";
|
||||
rev = "master";
|
||||
sha256 = "1scwnjzlp27vx5gqx8zk3zy9swwn0xhv550ig4nmjjx609ic1j7n";
|
||||
};
|
||||
});
|
||||
|
||||
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 = "22aaefb2b36eb46a5306092496c2be680b167f61";
|
||||
sha256 = "sha256-7emxKdeDuQE6OkK+umw2p1drf94yZp+P00tdEfeI81M=";
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
swaync = prev.callPackage ./tools/desktop/swaync {};
|
||||
|
||||
sound-gambit = prev.callPackage tools/audio/sound-gambit {};
|
||||
ebu-norm = prev.callPackage tools/audio/ebu-norm {};
|
||||
# TODO: Remove once NixOS has version 0.11.16 in their repos
|
||||
sublime-music-no-test = prev.callPackage ./applications/audio/sublime-music {};
|
||||
|
||||
payload-dumper = prev.callPackage tools/system/payload-dumper {};
|
||||
# TODO: Remove once upstream has a new version tagged
|
||||
kasts-git = prev.libsForQt5.kasts.overrideAttrs (old: {
|
||||
src = builtins.fetchTarball {
|
||||
url = "https://invent.kde.org/plasma-mobile/kasts/-/archive/master/kasts-master.tar.gz";
|
||||
sha256 = "1n7j4011hgscmjj728iyjgifpbnwc1sy32b5aw834n1vgxfkq00l";
|
||||
};
|
||||
|
||||
psst = prev.callPackage tools/audio/psst {};
|
||||
|
||||
wlrootsqt = prev.libsForQt5.callPackage ./wlrootsqt.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 {};
|
||||
buildInputs = old.buildInputs ++ [ prev.taglib prev.libsForQt5.qtkeychain ];
|
||||
});
|
||||
}
|
||||
|
@ -0,0 +1,31 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-notification-timeout";
|
||||
version = "unstable-2021-07-25";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vchlum";
|
||||
repo = "notification-timeout";
|
||||
rev = "1f8c2a433383f974bd49869db5ae7a6d7a82d302";
|
||||
sha256 = "1ndr8gn52qggq45lbdc5miz62is8im34nzmzsghcnarrm73naq59";
|
||||
};
|
||||
|
||||
uuid = "notification-timeout@chlumskyvaclav.gmail.com";
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/gnome-shell/extensions/${uuid}
|
||||
cp -r metadata.json extension.js prefs.js schemas/ $out/share/gnome-shell/extensions/${uuid}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Gnome Shell extension for configuring notification timeout. ";
|
||||
homepage = "https://github.com/vchlum/notification-timeout";
|
||||
license = licenses.mit;
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "WindowIsReady-Remover";
|
||||
version = "1.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nunofarruca";
|
||||
repo = "WindowIsReady_Remover";
|
||||
rev = version;
|
||||
sha256 = "0yivd8q2mkb2c40n1pndwrsv9bi2lnm3r06wk04vhjc6f8x7qj52";
|
||||
};
|
||||
|
||||
uuid = "windowIsReady_Remover@nunofarruca@gmail.com";
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/gnome-shell/extensions/${uuid}
|
||||
cp -r ${uuid}/* $out/share/gnome-shell/extensions/${uuid}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Removes window is ready Notification";
|
||||
homepage = "https://github.com/nunofarruca/WindowIsReady_Remover";
|
||||
# NOTE: Wrong
|
||||
license = licenses.unlicense;
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
{
|
||||
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 ];
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
{
|
||||
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 ];
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
{
|
||||
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 ];
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
{
|
||||
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 ];
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
{
|
||||
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 ];
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
{
|
||||
pkgs
|
||||
, lib
|
||||
, python3Packages
|
||||
, fetchFromGitea
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "keyrings.gopass";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "git.polynom.me";
|
||||
owner = "PapaTutuWawa";
|
||||
repo = pname;
|
||||
rev = "9c3cd59e7f5ce0a742b238ff0c4761db28344713";
|
||||
sha256 = "1dg3a6zx3cm9vwsqgkmc604n3fqb760nsmnrfwyfv7y5bmh5822x";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with python3Packages; [ setuptools setuptools-scm ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://git.polynom.me/PapaTutuWawa/keyrings.gopass";
|
||||
description = "A python-keyring plugin for gopass";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{ 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;
|
||||
};
|
||||
}
|
@ -16,10 +16,10 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A High-Quality Real Time Upscaler for Anime Video";
|
||||
homepage = "https://bloc97.github.io/Anime4K/";
|
||||
description = "A High-Quality Real Time Upscaler for Anime Video ";
|
||||
homepage = "A High-Quality Real Time Upscaler for Anime Video ";
|
||||
license = licenses.mit;
|
||||
maintainers = [ ];
|
||||
platforms = platforms.all;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -1,25 +0,0 @@
|
||||
{ stdenv, lib, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mpv-prescalers";
|
||||
version = "20211110";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bjin";
|
||||
repo = "mpv-prescalers";
|
||||
rev = "cc02ed95c1fe05b72bc21d41257c4c085e6e409b";
|
||||
sha256 = "1gc1ka9i7xzxq58175q5svhvp8vr27hy477r4z4nkhp9q1cqj19d";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
find . -type f -iname '*.hook' -exec install -Dm 644 {} -t $out/usr/share/shaders/ \;
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "prescalers for mpv, as user shaders";
|
||||
homepage = "https://github.com/bjin/mpv-prescalers";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
{ stdenv, lib, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mpv-shader-pack";
|
||||
version = "2.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "iwalton3";
|
||||
repo = "default-shader-pack";
|
||||
rev = "v${version}";
|
||||
sha256 = "10383h2qq35whj3v1vs34yyqiflxjf1vlv2p4l6jrmljwpjpcj4k";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
# Packaged by the anime4k package
|
||||
rm shaders/Anime4K_*.glsl
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
find ./shaders -type f -exec install -Dm 644 {} -t $out/usr/share/shaders/ \;
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Preconfigured set of MPV shaders and configurations for MPV Shim media clients.";
|
||||
homepage = "https://github.com/iwalton3/default-shader-pack";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
{ 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; [ ];
|
||||
};
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
{ 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" ];
|
||||
};
|
||||
}
|
184
packages/sandbox.nix
Normal file
184
packages/sandbox.nix
Normal file
@ -0,0 +1,184 @@
|
||||
{
|
||||
stdenv, lib
|
||||
, runCommandLocal, writeShellScriptBin, makeDesktopItem
|
||||
, bubblewrap, coreutils, glibc, pkgsi686Linux
|
||||
}:
|
||||
|
||||
{
|
||||
name
|
||||
, package
|
||||
, binaryName
|
||||
, version ? "1.0.0"
|
||||
, desktopFileArgs ? null
|
||||
, copyIntoSandbox ? null
|
||||
, unshareUser ? true
|
||||
, unshareIpc ? true
|
||||
, unsharePid ? true
|
||||
, unshareNet ? false
|
||||
, unshareUts ? true
|
||||
, unshareCgroup ? true
|
||||
, dieWithParent ? true
|
||||
, mountInHome ? []
|
||||
, chdirTo ? "\"$(pwd)\""
|
||||
, additionalBlacklist ? []
|
||||
, additionalMounts ? []
|
||||
, extraEnv ? {}
|
||||
}:
|
||||
|
||||
let
|
||||
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"
|
||||
"shadow"
|
||||
"hosts"
|
||||
"resolv.conf"
|
||||
"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);
|
||||
|
||||
# Create this on the fly instead of linking from /nix
|
||||
# The container might have to modify it and re-run ldconfig if there are
|
||||
# issues running some binary with LD_LIBRARY_PATH
|
||||
createLdConfCache = ''
|
||||
cat > /etc/ld.so.conf <<EOF
|
||||
/lib
|
||||
/lib/x86_64-linux-gnu
|
||||
/lib64
|
||||
/usr/lib
|
||||
/usr/lib/x86_64-linux-gnu
|
||||
/usr/lib64
|
||||
/lib/i386-linux-gnu
|
||||
/lib32
|
||||
/usr/lib/i386-linux-gnu
|
||||
/usr/lib32
|
||||
EOF
|
||||
ldconfig &> /dev/null
|
||||
'';
|
||||
init = run: writeShellScriptBin "${binaryName}-init" ''
|
||||
source /etc/profile
|
||||
${createLdConfCache}
|
||||
exec ${run} "$@"
|
||||
'';
|
||||
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 ? "" }: ''
|
||||
blacklist=(/nix /dev /proc /etc ${lib.optionalString (!mountHome) "/home"} ${builtins.toString additionalBlacklist})
|
||||
ro_mounts=()
|
||||
symlinks=()
|
||||
|
||||
declare -a auto_mounts
|
||||
# loop through all directories in the root
|
||||
for dir in /*; do
|
||||
# if it is a directory and it is not in the blacklist
|
||||
if [[ -d "$dir" ]] && [[ ! "''${blacklist[@]}" =~ "$dir" ]]; then
|
||||
# add it to the mount list
|
||||
auto_mounts+=(--bind "$dir" "$dir")
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "${lib.optionalString (!mountHome) "1"}" = "1" ]]; then
|
||||
for entry in ${builtins.toString mountInHome}; 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
|
||||
auto_mounts+=(--bind "$entry" "$entry")
|
||||
done
|
||||
fi
|
||||
|
||||
cmd=(
|
||||
${bubblewrap}/bin/bwrap
|
||||
--dev-bind /dev /dev
|
||||
--proc /proc
|
||||
--chdir ${chdirTo}
|
||||
${lib.optionalString unshareUser "--unshare-user"}
|
||||
${lib.optionalString unshareIpc "--unshare-ipc"}
|
||||
${lib.optionalString unsharePid "--unshare-pid"}
|
||||
${lib.optionalString unshareNet "--unshare-net"}
|
||||
${lib.optionalString unshareUts "--unshare-uts"}
|
||||
${lib.optionalString unshareCgroup "--unshare-cgroup"}
|
||||
${lib.optionalString dieWithParent "--die-with-parent"}
|
||||
--ro-bind /nix /nix
|
||||
# Our glibc will look for the cache in its own path in `/nix/store`.
|
||||
# As such, we need a cache to exist there, because pressure-vessel
|
||||
# depends on the existence of an ld cache. However, adding one
|
||||
# globally proved to be a bad idea (see #100655), the solution we
|
||||
# settled on being mounting one via bwrap.
|
||||
# Also, the cache needs to go to both 32 and 64 bit glibcs, for games
|
||||
# of both architectures to work.
|
||||
--tmpfs ${glibc}/etc \
|
||||
--symlink /etc/ld.so.conf ${glibc}/etc/ld.so.conf \
|
||||
--symlink /etc/ld.so.cache ${glibc}/etc/ld.so.cache \
|
||||
--ro-bind ${glibc}/etc/rpc ${glibc}/etc/rpc \
|
||||
--remount-ro ${glibc}/etc \
|
||||
--tmpfs ${pkgsi686Linux.glibc}/etc \
|
||||
--symlink /etc/ld.so.conf ${pkgsi686Linux.glibc}/etc/ld.so.conf \
|
||||
--symlink /etc/ld.so.cache ${pkgsi686Linux.glibc}/etc/ld.so.cache \
|
||||
--ro-bind ${pkgsi686Linux.glibc}/etc/rpc ${pkgsi686Linux.glibc}/etc/rpc \
|
||||
--remount-ro ${pkgsi686Linux.glibc}/etc \
|
||||
${etcBindFlags}
|
||||
"''${ro_mounts[@]}"
|
||||
"''${symlinks[@]}"
|
||||
"''${auto_mounts[@]}"
|
||||
${extraEnvString}
|
||||
${initStr}/bin/${name}-init ${initArgs}
|
||||
)
|
||||
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;
|
||||
|
||||
unpackPhase = ":";
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
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;
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
{
|
||||
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
|
||||
'';
|
||||
}
|
@ -1,101 +0,0 @@
|
||||
{
|
||||
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";
|
||||
}
|
@ -1,143 +0,0 @@
|
||||
{ lib, stdenv
|
||||
, fetchurl
|
||||
, acl
|
||||
, cyrus_sasl
|
||||
, docbook_xsl
|
||||
, libepoxy
|
||||
, gettext
|
||||
, gobject-introspection
|
||||
, gst_all_1
|
||||
, gtk-doc
|
||||
, gtk3
|
||||
, hwdata
|
||||
, json-glib
|
||||
, libcacard
|
||||
, libcap_ng
|
||||
, libdrm
|
||||
, libjpeg_turbo
|
||||
, libopus
|
||||
, libsoup
|
||||
, libusb1
|
||||
, lz4
|
||||
, meson
|
||||
, ninja
|
||||
, openssl
|
||||
, perl
|
||||
, phodav
|
||||
, pixman
|
||||
, pkg-config
|
||||
, polkit
|
||||
, python3
|
||||
, spice-protocol
|
||||
, usbredir
|
||||
, vala
|
||||
, wayland-protocols
|
||||
, zlib
|
||||
, withPolkit ? true
|
||||
}:
|
||||
|
||||
# If this package is built with polkit support (withPolkit=true),
|
||||
# usb redirection reqires spice-client-glib-usb-acl-helper to run setuid root.
|
||||
# The helper confirms via polkit that the user has an active session,
|
||||
# then adds a device acl entry for that user.
|
||||
# Example NixOS config to create a setuid wrapper for the helper:
|
||||
# security.wrappers.spice-client-glib-usb-acl-helper.source =
|
||||
# "${pkgs.spice-gtk}/bin/spice-client-glib-usb-acl-helper";
|
||||
# On non-NixOS installations, make a setuid copy of the helper
|
||||
# outside the store and adjust PATH to find the setuid version.
|
||||
|
||||
# If this package is built without polkit support (withPolkit=false),
|
||||
# usb redirection requires read-write access to usb devices.
|
||||
# This can be granted by adding users to a custom group like "usb"
|
||||
# and using a udev rule to put all usb devices in that group.
|
||||
# Example NixOS config:
|
||||
# users.groups.usb = {};
|
||||
# users.users.dummy.extraGroups = [ "usb" ];
|
||||
# services.udev.extraRules = ''
|
||||
# KERNEL=="*", SUBSYSTEMS=="usb", MODE="0664", GROUP="usb"
|
||||
# '';
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "spice-gtk";
|
||||
version = "0.40";
|
||||
|
||||
outputs = [ "out" "dev" "devdoc" "man" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.spice-space.org/download/gtk/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-I/X/f6gLdWR85zzaXq+LMi80Mtu7f286g5Y0YYrbztM=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# get rid of absolute path to helper in store so we can use a setuid wrapper
|
||||
substituteInPlace src/usb-acl-helper.c \
|
||||
--replace 'ACL_HELPER_PATH"/' '"'
|
||||
# don't try to setcap/suid in a nix builder
|
||||
substituteInPlace src/meson.build \
|
||||
--replace "meson.add_install_script('../build-aux/setcap-or-suid'," \
|
||||
"# meson.add_install_script('../build-aux/setcap-or-suid',"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
docbook_xsl
|
||||
gettext
|
||||
gobject-introspection
|
||||
gtk-doc
|
||||
libsoup
|
||||
meson
|
||||
ninja
|
||||
perl
|
||||
pkg-config
|
||||
python3
|
||||
python3.pkgs.pyparsing
|
||||
python3.pkgs.six
|
||||
vala
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
cyrus_sasl
|
||||
libepoxy
|
||||
gtk3
|
||||
json-glib
|
||||
libcacard
|
||||
libcap_ng
|
||||
libdrm
|
||||
libjpeg_turbo
|
||||
libopus
|
||||
libusb1
|
||||
lz4
|
||||
openssl
|
||||
phodav
|
||||
pixman
|
||||
spice-protocol
|
||||
usbredir
|
||||
wayland-protocols
|
||||
zlib
|
||||
] ++ lib.optionals withPolkit [ polkit acl ] ;
|
||||
|
||||
PKG_CONFIG_POLKIT_GOBJECT_1_POLICYDIR = "${placeholder "out"}/share/polkit-1/actions";
|
||||
|
||||
mesonFlags = [
|
||||
"-Dusb-acl-helper-dir=${placeholder "out"}/bin"
|
||||
"-Dusb-ids-path=${hwdata}/share/hwdata/usb.ids"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "GTK 3 SPICE widget";
|
||||
longDescription = ''
|
||||
spice-gtk is a GTK 3 SPICE widget. It features glib-based
|
||||
objects for SPICE protocol parsing and a gtk widget for embedding
|
||||
the SPICE display into other applications such as virt-manager.
|
||||
Python bindings are available too.
|
||||
'';
|
||||
|
||||
homepage = "https://www.spice-space.org/";
|
||||
license = licenses.lgpl21;
|
||||
maintainers = [ maintainers.xeji ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
{
|
||||
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,111 +0,0 @@
|
||||
diff --git a/ebu-norm b/ebu-norm
|
||||
index ab5fdfe..57d4ca8 100755
|
||||
--- a/ebu-norm
|
||||
+++ b/ebu-norm
|
||||
@@ -12,21 +12,6 @@ THR=-1
|
||||
# sound-gambit release time (default 10, range 1 to 1000)
|
||||
REL=10
|
||||
|
||||
-# Check availability of dependencies
|
||||
-function checkAvail()
|
||||
-{
|
||||
- which "$1" >/dev/null 2>&1
|
||||
- ret=$?
|
||||
- if [ $ret -ne 0 ]
|
||||
- then
|
||||
- echo "tool \"$1\" not found." >&2
|
||||
- exit 1
|
||||
- fi
|
||||
-}
|
||||
-
|
||||
-for tool in {ffmpeg,bc,sound-gambit}; \
|
||||
- do checkAvail "$tool"; done
|
||||
-
|
||||
#Check for audio files
|
||||
NUMARG=0
|
||||
for file in "$@"; do
|
||||
diff --git a/ebu-plot b/ebu-plot
|
||||
index 5fb7438..4612fff 100755
|
||||
--- a/ebu-plot
|
||||
+++ b/ebu-plot
|
||||
@@ -23,21 +23,6 @@ then
|
||||
fi
|
||||
done
|
||||
|
||||
-# Check availability of dependencies
|
||||
-function checkAvail()
|
||||
-{
|
||||
- which "$1" >/dev/null 2>&1
|
||||
- ret=$?
|
||||
- if [ $ret -ne 0 ]
|
||||
- then
|
||||
- echo "tool \"$1\" not found." >&2
|
||||
- exit 1
|
||||
- fi
|
||||
-}
|
||||
-
|
||||
-for tool in {pwsh,ffmpeg,gnuplot}; \
|
||||
- do checkAvail "$tool"; done
|
||||
-
|
||||
# Command usage check
|
||||
if [ $# -eq 0 ]
|
||||
then
|
||||
@@ -82,4 +67,4 @@ echo "Done!"
|
||||
echo
|
||||
echo "Skipped items: $SKIPPED"
|
||||
cat $SKIPFILE
|
||||
-rm $SKIPFILE
|
||||
\ No newline at end of file
|
||||
+rm $SKIPFILE
|
||||
diff --git a/ebu-scan b/ebu-scan
|
||||
index 11736d6..8190223 100755
|
||||
--- a/ebu-scan
|
||||
+++ b/ebu-scan
|
||||
@@ -4,21 +4,6 @@
|
||||
|
||||
# Usage: ebu-scan <input files>.
|
||||
|
||||
-# Check availability of dependencies
|
||||
-function checkAvail()
|
||||
-{
|
||||
- which "$1" >/dev/null 2>&1
|
||||
- ret=$?
|
||||
- if [ $ret -ne 0 ]
|
||||
- then
|
||||
- echo "tool \"$1\" not found." >&2
|
||||
- exit 1
|
||||
- fi
|
||||
-}
|
||||
-
|
||||
-for tool in ffmpeg ; \
|
||||
- do checkAvail "$tool"; done
|
||||
-
|
||||
#Check for audio files and enumerate
|
||||
NUMARG=0
|
||||
for file in "$@"; do
|
||||
diff --git a/tp-norm b/tp-norm
|
||||
index b8e4997..894f440 100755
|
||||
--- a/tp-norm
|
||||
+++ b/tp-norm
|
||||
@@ -6,21 +6,6 @@
|
||||
# Option:
|
||||
# -t Specify true peak target, e.g. -t -2
|
||||
|
||||
-# Check availability of dependencies
|
||||
-function checkAvail()
|
||||
-{
|
||||
- which "$1" >/dev/null 2>&1
|
||||
- ret=$?
|
||||
- if [ $ret -ne 0 ]
|
||||
- then
|
||||
- echo "tool \"$1\" not found." >&2
|
||||
- exit 1
|
||||
- fi
|
||||
-}
|
||||
-
|
||||
-for tool in {ffmpeg,bc}; \
|
||||
- do checkAvail "$tool"; done
|
||||
-
|
||||
#Check for audio files
|
||||
NUMARG=0
|
||||
for file in "$@"; do
|
@ -1,41 +0,0 @@
|
||||
{ stdenv, ffmpeg, sound-gambit, gawk, bc, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ebu-norm";
|
||||
version = "2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "chrismhampson";
|
||||
repo = "ebu-norm";
|
||||
rev = "v${version}";
|
||||
sha256 = "120rpi0k3rq0v50ia9cyailgnx5wvpgkzbp8vi74xmr3c0lf26r4";
|
||||
};
|
||||
|
||||
patches = [ ./0000-remove-dep-check.patch ];
|
||||
|
||||
buildInputs = [
|
||||
ffmpeg sound-gambit gawk bc
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
for file in ebu-scan ebu-plot ebu-norm tp-norm; do
|
||||
sed --in-place \
|
||||
-e "s|ffmpeg|${ffmpeg}/bin/ffmpeg|g" \
|
||||
-e "s|bc|${bc}/bin/bc|g" \
|
||||
-e "s|sound-gambit|${sound-gambit}/bin/sound-gambit|g" \
|
||||
$file
|
||||
done
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp {ebu-scan,ebu-plot,ebu-norm,tp-norm} $out/bin/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "An advanced, professional batch normalizer and scanner for EBU R 128 and other target levels.";
|
||||
homepage = "https://github.com/chrismhampson/ebu-norm";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, cairo
|
||||
, openssl
|
||||
, alsa-lib
|
||||
, dbus
|
||||
, gtk3
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "psst";
|
||||
version = "1.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jpochyla";
|
||||
repo = "psst";
|
||||
rev = "8f142a3232a706537c8477bff43d2e52309f6b78";
|
||||
sha256 = "00pdijd70rq98lrrfgh6pzqa6w3pp49lmpzaviw7nrgfl7l6j3v0";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-/nbYi7n58D8V3qa9rStg7JfGh4sAhTxC2niFFW5Ta34=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [ cairo openssl gtk3 alsa-lib dbus ];
|
||||
|
||||
postInstall = ''
|
||||
# Install the desktop file
|
||||
mkdir -p $out/share
|
||||
cp .pkg/psst.desktop $out/share/
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A modern Volume Mixer for PulseAudio";
|
||||
homepage = "https://github.com/Aurailus/Myxer";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ erin ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
{ stdenv, lib, libsndfile, gnumake, pkg-config, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sound-gambit";
|
||||
version = "0.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "x42";
|
||||
repo = "sound-gambit";
|
||||
rev = "v${version}";
|
||||
sha256 = "18yf7sp6r8gqlifs9zq23ddsi5d46i6sadnh6jnvll3mhgm0h8bv";
|
||||
};
|
||||
|
||||
buildInputs = [ libsndfile pkg-config ];
|
||||
|
||||
makeFlags = [
|
||||
"PREFIX=${placeholder "out"}"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Audio File Peak Limiter";
|
||||
homepage = "https://github.com/x42/sound-gambit";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
42
packages/tools/daemons/iptsd/default.nix
Normal file
42
packages/tools/daemons/iptsd/default.nix
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
stdenv, lib
|
||||
, fetchFromGitHub
|
||||
, meson, cmake, ninja, pkg-config
|
||||
, inih, systemd
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "iptsd";
|
||||
version = "0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linux-surface";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0bh7rr37yck82g41dw2xcfkmyp1ncd27n1slb8xlknp7vs9f10qa";
|
||||
};
|
||||
|
||||
mesonFlags = [
|
||||
"-Dsample_config=false"
|
||||
"-Ddebug_tool=false"
|
||||
];
|
||||
|
||||
patches = [
|
||||
./meson.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
sed -e "s|@UDEVRULESDIR@|$out/lib/udev/rules.d/|" --in-place meson.build
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ meson cmake ninja pkg-config ];
|
||||
buildInputs = [ inih systemd ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/linux-surface/iptsd";
|
||||
description = "Userspace daemon for Intel Precise Touch & Stylus";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
32
packages/tools/daemons/iptsd/meson.patch
Normal file
32
packages/tools/daemons/iptsd/meson.patch
Normal file
@ -0,0 +1,32 @@
|
||||
diff --git a/meson.build b/meson.build
|
||||
index b74a177..ca41ba3 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -104,18 +104,19 @@ configure_file(
|
||||
service_manager = get_option('service_manager')
|
||||
if service_manager.contains('systemd')
|
||||
systemd = dependency('systemd')
|
||||
- unitdir = systemd.get_pkgconfig_variable('systemdsystemunitdir')
|
||||
+ #unitdir = systemd.get_pkgconfig_variable('systemdsystemunitdir')
|
||||
|
||||
udev = dependency('udev')
|
||||
- udevdir = udev.get_pkgconfig_variable('udevdir')
|
||||
- rulesdir = join_paths(udevdir, 'rules.d')
|
||||
+ #udevdir = udev.get_pkgconfig_variable('udevdir')
|
||||
+ #udevdir = '@UDEVDIR@';
|
||||
+ #rulesdir = join_paths('@UDEVDIR@', 'rules.d')
|
||||
|
||||
- install_data(
|
||||
- join_paths(meson.current_build_dir(), 'iptsd.service'),
|
||||
- install_dir: unitdir
|
||||
- )
|
||||
+########install_data(
|
||||
+######## join_paths(meson.current_build_dir(), 'iptsd.service'),
|
||||
+######## install_dir: unitdir
|
||||
+########)
|
||||
|
||||
- install_data('etc/udev/50-ipts.rules', install_dir: rulesdir)
|
||||
+ install_data('etc/udev/50-ipts.rules', install_dir: '@UDEVRULESDIR@')
|
||||
endif
|
||||
|
||||
if service_manager.contains('openrc')
|
17
packages/tools/games/key-mapper/add-scripts.patch
Normal file
17
packages/tools/games/key-mapper/add-scripts.patch
Normal file
@ -0,0 +1,17 @@
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 99d298e..74a7948 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -107,6 +107,12 @@ setup(
|
||||
('/usr/bin/', ['bin/key-mapper-control']),
|
||||
('/usr/bin/', ['bin/key-mapper-helper']),
|
||||
],
|
||||
+ scripts=[
|
||||
+ 'bin/key-mapper-gtk',
|
||||
+ 'bin/key-mapper-service',
|
||||
+ 'bin/key-mapper-control',
|
||||
+ 'bin/key-mapper-helper'
|
||||
+ ],
|
||||
install_requires=[
|
||||
'setuptools',
|
||||
'evdev',
|
74
packages/tools/games/key-mapper/default.nix
Normal file
74
packages/tools/games/key-mapper/default.nix
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
pkgs, lib
|
||||
, python3Packages, python3
|
||||
, gtk3, gobject-introspection, git, gnome
|
||||
, wrapGAppsHook
|
||||
, makeDesktopItem
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "key-mapper";
|
||||
version = "1.2.1";
|
||||
|
||||
buildInputs = [ gobject-introspection gtk3 gnome.adwaita-icon-theme ];
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook ];
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [ setuptools pydbus evdev pygobject3 ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sezanzeb";
|
||||
repo = "key-mapper";
|
||||
rev = version;
|
||||
sha256 = "07dgp4vays1w4chhd22vlp9bxc49lcgzkvmjqgbr00m3781yjsf7";
|
||||
};
|
||||
|
||||
doCheck = false;
|
||||
strictDeps = false;
|
||||
|
||||
patches = [
|
||||
./add-scripts.patch
|
||||
./hack-data-dir.patch
|
||||
];
|
||||
|
||||
# Fix keymapper not finding its data files
|
||||
preBuild = ''
|
||||
sed -e "s|@@NIXOS_OUT_PATH@@|$out/usr/share/key-mapper|" --in-place keymapper/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/key-mapper.rules $out/lib/udev/rules.d/key-mapper.rules
|
||||
sed --in-place -e "s|/bin/key-mapper-control|$out/bin/key-mapper-control|" $out/lib/udev/rules.d/key-mapper.rules
|
||||
|
||||
# Install the desktop file
|
||||
mkdir -p $out/share/icons/hicolor/scalable/apps/
|
||||
cp -r ${desktopItem}/share/applications $out/share/
|
||||
cp $out/usr/share/key-mapper/key-mapper.svg $out/share/icons/hicolor/scalable/apps/key-mapper.svg
|
||||
'';
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "key-mapper";
|
||||
exec = "key-mapper-gtk";
|
||||
icon = "key-mapper";
|
||||
desktopName = "key-mapper";
|
||||
genericName = "key-mapper";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/sezanzeb/key-mapper";
|
||||
description = "A tool to change the mapping of your input device buttons";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
12
packages/tools/games/key-mapper/hack-data-dir.patch
Normal file
12
packages/tools/games/key-mapper/hack-data-dir.patch
Normal file
@ -0,0 +1,12 @@
|
||||
diff --git a/keymapper/data.py b/keymapper/data.py
|
||||
index 6f3e428..8eded95 100644
|
||||
--- a/keymapper/data.py
|
||||
+++ b/keymapper/data.py
|
||||
@@ -68,6 +68,7 @@ def get_data_path(filename=""):
|
||||
"/usr/share/key-mapper",
|
||||
"/usr/local/share/key-mapper",
|
||||
os.path.join(site.USER_BASE, "share/key-mapper"),
|
||||
+ "@@NIXOS_OUT_PATH@@",
|
||||
]
|
||||
|
||||
if data is None:
|
@ -1,5 +1,5 @@
|
||||
{ stdenv, lib,
|
||||
pkg-config, cmake, ffmpeg, libdrm, libpulseaudio, xorg, libnotify,
|
||||
pkgconfig, cmake, ffmpeg, libdrm, libpulseaudio, xorg, libnotify,
|
||||
fetchgit }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@ -8,13 +8,13 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/matanui159/${pname}.git";
|
||||
rev = version;
|
||||
sha256 = "sha256-nzilMEAOOLrdtfal+y81WJr6LwOVaQpuheIsSN5m83A=";
|
||||
rev = "d8d5921988b5161004aed6209bd88251d721611d";
|
||||
sha256 = "14m67mlfp0zh9s0bhz1qxppivw2aignxqb51xb5cy3v8farxmcv4";
|
||||
deepClone = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config cmake
|
||||
pkgconfig cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
@ -1,62 +0,0 @@
|
||||
{ stdenv, lib,
|
||||
pkgconfig, cmake, ffmpeg, libdrm, libpulseaudio, xorg,
|
||||
libcap, wayland, libopus, boost, openssl, libevdev, mesa,
|
||||
fetchgit
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sunehine";
|
||||
version = "0.10.1";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://github.com/loki-47-6F-64/sunshine.git";
|
||||
rev = "v${version}";
|
||||
sha256 = "1aw8bis5v7rb3ixl378gqm34rx3sja7pp5g6kjd9b0yvl1bgxai6";
|
||||
deepClone = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkgconfig cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
wayland # Wayland
|
||||
libdrm libcap # KMS
|
||||
xorg.libxcb xorg.libX11 xorg.libXtst xorg.libXrandr xorg.libXfixes libevdev # X11
|
||||
libopus libpulseaudio boost ffmpeg openssl # Common
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [ mesa ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DSUNSHINE_ENABLE_X11=off"
|
||||
"-DSUNSHINE_ENABLE_CUDA=off"
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
];
|
||||
NIX_CFLAGS_COMPILE = "-Wformat";
|
||||
|
||||
patches = [ ./fuck.patch ];
|
||||
|
||||
preConfigure = ''
|
||||
# Fix hardcoded path to libevdev
|
||||
sed \
|
||||
-e "s|/usr/include/libevdev-1.0|${libevdev}/include/libevdev-1.0|" \
|
||||
-e "s|@@SUNSHINE_ASSETS_DIR@@|$out/share/sunshine|" \
|
||||
--in-place CMakeLists.txt
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $out/share/sunshine/
|
||||
cp -r ../assets $out/share/sunshine/assets
|
||||
mv sunshine $out/bin/sunshine
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Host for Moonlight Streaming Client ";
|
||||
homepage = "https://github.com/loki-47-6F-64/sunshine";
|
||||
license = licenses.gpl3;
|
||||
maintainers = [ ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 45d4bf7..bd8c638 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -241,9 +241,7 @@ else()
|
||||
list(APPEND SUNSHINE_COMPILE_OPTIONS -O3)
|
||||
endif()
|
||||
|
||||
-if(NOT SUNSHINE_ASSETS_DIR)
|
||||
- set(SUNSHINE_ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets")
|
||||
-endif()
|
||||
+set(SUNSHINE_ASSETS_DIR "@@SUNSHINE_ASSETS_DIR@@/assets")
|
||||
|
||||
if(NOT SUNSHINE_CONFIG_DIR)
|
||||
set(SUNSHINE_CONFIG_DIR "${SUNSHINE_ASSETS_DIR}")
|
@ -1,22 +0,0 @@
|
||||
{
|
||||
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 ];
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user