Compare commits
40 Commits
8d7af1285b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 32dba1cfaa | |||
| 27da4a1f07 | |||
| bc575ee116 | |||
|
|
787e1020c0
|
||
| 91756e662e | |||
| 392392f937 | |||
| d425db9f19 | |||
| 075557a871 | |||
| 242ee062de | |||
| 7d0974ea92 | |||
| 0e8a37c000 | |||
| 0240531a02 | |||
| 7fbc6f180e | |||
| c23e6d9621 | |||
|
a13add9b81
|
|||
| 0b0dd1a1ba | |||
| 6651d3e417 | |||
| 71b6c1638b | |||
| 3570ff6b5d | |||
| 2675e4077e | |||
| 65ab024e29 | |||
| dd81c4f902 | |||
|
3b73704165
|
|||
|
d6b6751ebd
|
|||
|
fc166785ee
|
|||
|
cf289c8c48
|
|||
|
5e6abe53f2
|
|||
|
0df3b7ebde
|
|||
| 574e91135f | |||
| 763b460f65 | |||
|
5c784e659f
|
|||
|
a5c8c05c7c
|
|||
|
bb919f666b
|
|||
|
a4ae2287b5
|
|||
|
88b3ff784a
|
|||
| 5ca75f28db | |||
| d3139a9101 | |||
| 4916a4b47c | |||
| 2da64a04e2 | |||
| 206293fb46 |
@@ -1,57 +0,0 @@
|
||||
# https://github.com/NixOS/nixpkgs/issues/126590#issuecomment-3194531220
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
nixpkgs.overlays = lib.singleton (final: prev: {
|
||||
kdePackages =
|
||||
prev.kdePackages
|
||||
// {
|
||||
plasma-workspace = let
|
||||
# the package we want to override
|
||||
basePkg = prev.kdePackages.plasma-workspace;
|
||||
|
||||
# a helper package that merges all the XDG_DATA_DIRS into a single directory
|
||||
xdgdataPkg = pkgs.stdenv.mkDerivation {
|
||||
name = "${basePkg.name}-xdgdata";
|
||||
buildInputs = [basePkg];
|
||||
dontUnpack = true;
|
||||
dontFixup = true;
|
||||
dontWrapQtApps = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out/share
|
||||
( IFS=:
|
||||
for DIR in $XDG_DATA_DIRS; do
|
||||
if [[ -d "$DIR" ]]; then
|
||||
cp -r $DIR/. $out/share/
|
||||
chmod -R u+w $out/share
|
||||
fi
|
||||
done
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
# undo the XDG_DATA_DIRS injection that is usually done in the qt wrapper
|
||||
# script and instead inject the path of the above helper package
|
||||
derivedPkg = basePkg.overrideAttrs {
|
||||
preFixup = ''
|
||||
for index in "''${!qtWrapperArgs[@]}"; do
|
||||
if [[ ''${qtWrapperArgs[$((index+0))]} == "--prefix" ]] && [[ ''${qtWrapperArgs[$((index+1))]} == "XDG_DATA_DIRS" ]]; then
|
||||
unset -v "qtWrapperArgs[$((index+0))]"
|
||||
unset -v "qtWrapperArgs[$((index+1))]"
|
||||
unset -v "qtWrapperArgs[$((index+2))]"
|
||||
unset -v "qtWrapperArgs[$((index+3))]"
|
||||
fi
|
||||
done
|
||||
qtWrapperArgs=("''${qtWrapperArgs[@]}")
|
||||
qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "${xdgdataPkg}/share")
|
||||
qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "$out/share")
|
||||
'';
|
||||
};
|
||||
in
|
||||
derivedPkg;
|
||||
};
|
||||
});
|
||||
}
|
||||
810
flake.lock
generated
@@ -1,60 +1,5 @@
|
||||
{
|
||||
"nodes": {
|
||||
"aquamarine": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773436376,
|
||||
"narHash": "sha256-OUPRrprbgN27BXHuWkMAPSCfLLQ/uwpWghEfKYN2iAg=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "43f10d24391692bba3d762931ee35e7f17f8e8b8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"audio": {
|
||||
"inputs": {
|
||||
"mucap": "mucap",
|
||||
"nix-buildproxy": "nix-buildproxy",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773237019,
|
||||
"narHash": "sha256-86wsDo6d4+pyETbjHTwTQ9w7YYGAuq7SVaN7BzH992w=",
|
||||
"owner": "polygon",
|
||||
"repo": "audio.nix",
|
||||
"rev": "0c1b594b941dd46b29da107f03dfc91b34d820dd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "polygon",
|
||||
"repo": "audio.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -62,11 +7,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773889306,
|
||||
"narHash": "sha256-PAqwnsBSI9SVC2QugvQ3xeYCB0otOwCacB1ueQj2tgw=",
|
||||
"lastModified": 1776613567,
|
||||
"narHash": "sha256-gC9Cp5ibBmGD5awCA9z7xy6MW6iJufhazTYJOiGlCUI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "5ad85c82cc52264f4beddc934ba57f3789f28347",
|
||||
"rev": "32f4236bfc141ae930b5ba2fb604f561fed5219d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -95,30 +40,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"fenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"audio",
|
||||
"mucap",
|
||||
"naersk",
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-analyzer-src": "rust-analyzer-src"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1752475459,
|
||||
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "fenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"firefox-addons": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -127,11 +48,11 @@
|
||||
},
|
||||
"locked": {
|
||||
"dir": "pkgs/firefox-addons",
|
||||
"lastModified": 1773892995,
|
||||
"narHash": "sha256-kRGAztxZcaErtp4FoXnKgOX0OebUdkAIoSXRU1fybKA=",
|
||||
"lastModified": 1777176175,
|
||||
"narHash": "sha256-l/0TJCLEarrsyHIKNhAjI4+7lkyGsFqojyx1X1h64Ks=",
|
||||
"owner": "rycee",
|
||||
"repo": "nur-expressions",
|
||||
"rev": "394a8d49da42d2a63e8845c7262c636051f0f823",
|
||||
"rev": "515c8c1296021efe49ba1b1318ff27a43e93442b",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
@@ -142,22 +63,6 @@
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
@@ -173,41 +78,21 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1746162366,
|
||||
"narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"pre-commit-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"lastModified": 1775087534,
|
||||
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"repo": "flake-parts",
|
||||
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -218,11 +103,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773681845,
|
||||
"narHash": "sha256-o8hrZrigP0JYcwnglCp8Zi8jQafWsxbDtRRPzuVwFxY=",
|
||||
"lastModified": 1775425411,
|
||||
"narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "0759e0e137305bc9d0c52c204c6d8dffe6f601a6",
|
||||
"rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -232,439 +117,35 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprcursor": {
|
||||
"inputs": {
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"import-tree": {
|
||||
"locked": {
|
||||
"lastModified": 1772461003,
|
||||
"narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7",
|
||||
"lastModified": 1773693634,
|
||||
"narHash": "sha256-BtZ2dtkBdSUnFPPFc+n0kcMbgaTxzFNPv2iaO326Ffg=",
|
||||
"owner": "vic",
|
||||
"repo": "import-tree",
|
||||
"rev": "c41e7d58045f9057880b0d85e1152d6a4430dbf1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprgraphics": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772461523,
|
||||
"narHash": "sha256-mI6A51do+hEUzeJKk9YSWfVHdI/SEEIBi2tp5Whq5mI=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"rev": "7d63c04b4a2dd5e59ef943b4b143f46e713df804",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland": {
|
||||
"inputs": {
|
||||
"aquamarine": "aquamarine",
|
||||
"hyprcursor": "hyprcursor",
|
||||
"hyprgraphics": "hyprgraphics",
|
||||
"hyprland-guiutils": "hyprland-guiutils",
|
||||
"hyprland-protocols": "hyprland-protocols",
|
||||
"hyprlang": "hyprlang",
|
||||
"hyprutils": "hyprutils",
|
||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||
"hyprwire": "hyprwire",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit-hooks": "pre-commit-hooks",
|
||||
"systems": "systems",
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773926276,
|
||||
"narHash": "sha256-dasCo1RATJvJWjPaVkbXPvjbWE+4f69bnRNGwtsh7Ao=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "ad46ff635bcf7b4877b03e97d8e85468f025f4a1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-guiutils": {
|
||||
"inputs": {
|
||||
"aquamarine": [
|
||||
"hyprland",
|
||||
"aquamarine"
|
||||
],
|
||||
"hyprgraphics": [
|
||||
"hyprland",
|
||||
"hyprgraphics"
|
||||
],
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprtoolkit": "hyprtoolkit",
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772467975,
|
||||
"narHash": "sha256-kipyuDBxrZq+beYpZqWzGvFWm4QbayW9agAvi94vDXY=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-guiutils",
|
||||
"rev": "5e1c6b9025aaf4d578f3eff7c0eb1f0c197a9507",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-guiutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-plugins": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland-plugins",
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland-plugins",
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1771865848,
|
||||
"narHash": "sha256-xwNa+1D8WPsDnJtUofDrtyDCZKZotbUymzV/R5s+M0I=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"rev": "b85a56b9531013c79f2f3846fd6ee2ff014b8960",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-protocols": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772460177,
|
||||
"narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprlang": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772459629,
|
||||
"narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "7615ee388de18239a4ab1400946f3d0e498a8186",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprtoolkit": {
|
||||
"inputs": {
|
||||
"aquamarine": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"aquamarine"
|
||||
],
|
||||
"hyprgraphics": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"hyprgraphics"
|
||||
],
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"hyprland-guiutils",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772462885,
|
||||
"narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprtoolkit",
|
||||
"rev": "9af245a69fa6b286b88ddfc340afd288e00a6998",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprtoolkit",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprutils": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773436263,
|
||||
"narHash": "sha256-n+2xFJngUkBqUJD5FsbVnYEHBTyDFSqtBIwQIGPXWWo=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "5e228db6821380a5875d5643176c5c46a47b8134",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprwayland-scanner": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772459835,
|
||||
"narHash": "sha256-978jRz/y/9TKmZb/qD4lEYHCQGHpEXGqy+8X2lFZsak=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"rev": "0a692d4a645165eebd65f109146b8861e3a925e7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprwire": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773074819,
|
||||
"narHash": "sha256-qRqYnXiKoJLRTcfaRukn7EifmST2IVBUMZOeZMAc5UA=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwire",
|
||||
"rev": "f68afd0e73687598cc2774804fedad76693046f0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwire",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mucap": {
|
||||
"inputs": {
|
||||
"naersk": "naersk",
|
||||
"nixpkgs": [
|
||||
"audio",
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765670987,
|
||||
"narHash": "sha256-LqcywUPXsQMrcl4zakVYHotLGfq2rzASMYuHrQp3KaY=",
|
||||
"owner": "polygon",
|
||||
"repo": "mucap",
|
||||
"rev": "f798f8c4757e0dc80de5c1ddcb8be14aac916b99",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "polygon",
|
||||
"repo": "mucap",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"naersk": {
|
||||
"inputs": {
|
||||
"fenix": "fenix",
|
||||
"nixpkgs": [
|
||||
"audio",
|
||||
"mucap",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763384566,
|
||||
"narHash": "sha256-r+wgI+WvNaSdxQmqaM58lVNvJYJ16zoq+tKN20cLst4=",
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"rev": "d4155d6ebb70fbe2314959842f744aa7cabbbf6a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "naersk",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-buildproxy": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"audio",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1708455753,
|
||||
"narHash": "sha256-qP79WfPiTl92KrZkmvacba9Xas4WwSFln5DjkP2Q/Lg=",
|
||||
"owner": "polygon",
|
||||
"repo": "nix-buildproxy",
|
||||
"rev": "77d486cb4b0458cb4c4a296c3140f7a6c36ab3e6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "polygon",
|
||||
"ref": "v0.1.0",
|
||||
"repo": "nix-buildproxy",
|
||||
"owner": "vic",
|
||||
"repo": "import-tree",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-minecraft": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-compat": "flake-compat",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_2"
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1774407052,
|
||||
"narHash": "sha256-rUkn7Bo3PAlpcZl8+0FDsTwFyDwvS4xwMT9+RJ+XJoE=",
|
||||
"lastModified": 1777001712,
|
||||
"narHash": "sha256-9JX9msZU1NvHzjKM24PRorP76Ge8GBy6LAkJKA21mlY=",
|
||||
"owner": "Infinidoge",
|
||||
"repo": "nix-minecraft",
|
||||
"rev": "70daf1f48885f0b4a70797076cd2ff5d9139b46e",
|
||||
"rev": "394d3bfd943458baf29e4798bc9b256d824a3bb9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -673,36 +154,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-cosmic": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"rust-overlay": "rust-overlay_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751591814,
|
||||
"narHash": "sha256-A4lgvuj4v+Pr8MniXz1FBG0DXOygi8tTECR+j53FMhM=",
|
||||
"owner": "lilyinstarlight",
|
||||
"repo": "nixos-cosmic",
|
||||
"rev": "fef2d0c78c4e4d6c600a88795af193131ff51bdc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lilyinstarlight",
|
||||
"repo": "nixos-cosmic",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1773533765,
|
||||
"narHash": "sha256-qonGfS2lzCgCl59Zl63jF6dIRRpvW3AJooBGMaXjHiY=",
|
||||
"lastModified": 1776983936,
|
||||
"narHash": "sha256-ZOQyNqSvJ8UdrrqU1p7vaFcdL53idK+LOM8oRWEWh6o=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "f8e82243fd601afb9f59ad230958bd073795cbfe",
|
||||
"rev": "2096f3f411ce46e88a79ae4eafcfc9df8ed41c61",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -714,11 +172,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1773814637,
|
||||
"narHash": "sha256-GNU+ooRmrHLfjlMsKdn0prEKVa0faVanm0jrgu1J/gY=",
|
||||
"lastModified": 1776734388,
|
||||
"narHash": "sha256-vl3dkhlE5gzsItuHoEMVe+DlonsK+0836LIRDnm6MXQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "fea3b367d61c1a6592bc47c72f40a9f3e6a53e96",
|
||||
"rev": "10e7ad5bbcb421fe07e3a4ad53a634b0cd57ffac",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -728,29 +186,28 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1751048012,
|
||||
"narHash": "sha256-MYbotu4UjWpTsq01wglhN5xDRfZYLFtNk7SBY0BcjkU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a684c58d46ebbede49f280b653b9e56100aa3877",
|
||||
"lastModified": 1774748309,
|
||||
"narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "333c4e0545a6da976206c74db8773a1645b5870a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-24.11",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1773821835,
|
||||
"narHash": "sha256-TJ3lSQtW0E2JrznGVm8hOQGVpXjJyXY2guAxku2O9A4=",
|
||||
"lastModified": 1776877367,
|
||||
"narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b40629efe5d6ec48dd1efba650c797ddbd39ace0",
|
||||
"rev": "0726a0ecb6d4e08f6adced58726b95db924cef57",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -760,130 +217,21 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plasma-manager": {
|
||||
"inputs": {
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772361940,
|
||||
"narHash": "sha256-B1Cz+ydL1iaOnGlwOFld/C8lBECPtzhiy/pP93/CuyY=",
|
||||
"owner": "pjones",
|
||||
"repo": "plasma-manager",
|
||||
"rev": "a4b33606111c9c5dcd10009042bb710307174f51",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "pjones",
|
||||
"repo": "plasma-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772893680,
|
||||
"narHash": "sha256-JDqZMgxUTCq85ObSaFw0HhE+lvdOre1lx9iI6vYyOEs=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "8baab586afc9c9b57645a734c820e4ac0a604af9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"audio": "audio",
|
||||
"disko": "disko",
|
||||
"dzgui-nix": "dzgui-nix",
|
||||
"firefox-addons": "firefox-addons",
|
||||
"flake-parts": "flake-parts",
|
||||
"home-manager": "home-manager",
|
||||
"hyprland": "hyprland",
|
||||
"hyprland-plugins": "hyprland-plugins",
|
||||
"import-tree": "import-tree",
|
||||
"nix-minecraft": "nix-minecraft",
|
||||
"nixos-cosmic": "nixos-cosmic",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"plasma-manager": "plasma-manager",
|
||||
"sops-nix": "sops-nix"
|
||||
}
|
||||
},
|
||||
"rust-analyzer-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1752428706,
|
||||
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
|
||||
"owner": "rust-lang",
|
||||
"repo": "rust-analyzer",
|
||||
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rust-lang",
|
||||
"ref": "nightly",
|
||||
"repo": "rust-analyzer",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"audio",
|
||||
"mucap",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762655942,
|
||||
"narHash": "sha256-hOM12KcQNQALrhB9w6KJmV5hPpm3GA763HRe9o7JUiI=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "6ac961b02d4235572692241e333d0470637f5492",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixos-cosmic",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751251399,
|
||||
"narHash": "sha256-y+viCuy/eKKpkX1K2gDvXIJI/yzvy6zA3HObapz9XZ0=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "b22d5ee8c60ed1291521f2dde48784edd6bf695b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"sops-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -891,11 +239,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773889674,
|
||||
"narHash": "sha256-+ycaiVAk3MEshJTg35cBTUa0MizGiS+bgpYw/f8ohkg=",
|
||||
"lastModified": 1776771786,
|
||||
"narHash": "sha256-DRFGPfFV6hbrfO9a1PH1FkCi7qR5FgjSqsQGGvk1rdI=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "29b6519f3e0780452bca0ac0be4584f04ac16cc5",
|
||||
"rev": "bef289e2248991f7afeb95965c82fbcd8ff72598",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -905,21 +253,6 @@
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
@@ -933,47 +266,6 @@
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xdph": {
|
||||
"inputs": {
|
||||
"hyprland-protocols": [
|
||||
"hyprland",
|
||||
"hyprland-protocols"
|
||||
],
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772669058,
|
||||
"narHash": "sha256-XhnY0aRuDo5LT8pmJVPofPOgO2hAR7T+XRoaQxtNPzQ=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "906d0ac159803a7df2dc1f948df9327670380f69",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
||||
250
flake.nix
@@ -4,6 +4,8 @@
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
import-tree.url = "github:vic/import-tree";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.11";
|
||||
@@ -15,250 +17,36 @@
|
||||
};
|
||||
disko.url = "github:nix-community/disko";
|
||||
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||
plasma-manager = {
|
||||
url = "github:pjones/plasma-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.home-manager.follows = "home-manager";
|
||||
};
|
||||
firefox-addons = {
|
||||
url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprland = {
|
||||
url = "github:hyprwm/Hyprland";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
nixos-cosmic = {
|
||||
url = "github:lilyinstarlight/nixos-cosmic";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
dzgui-nix = {
|
||||
url = "github:lelgenio/dzgui-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
audio = {
|
||||
url = "github:polygon/audio.nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-minecraft.url = "github:Infinidoge/nix-minecraft";
|
||||
nix-minecraft.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
nixpkgs-unstable,
|
||||
nixos-hardware,
|
||||
home-manager,
|
||||
nixos-cosmic,
|
||||
audio,
|
||||
outputs = inputs @ {
|
||||
flake-parts,
|
||||
import-tree,
|
||||
...
|
||||
} @ inputs: let
|
||||
system = "x86_64-linux";
|
||||
overlay-unstable = final: prev: {
|
||||
unstable = import nixpkgs-unstable {
|
||||
system = prev.system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
};
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
comfy-station = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
isHM = false;
|
||||
};
|
||||
modules = [
|
||||
({...}: {nixpkgs.overlays = [overlay-unstable self.overlays.default audio.overlays.default];})
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
nixos-hardware.nixosModules.msi-b550-a-pro
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.nix-minecraft.overlay
|
||||
inputs.nix-minecraft.nixosModules.minecraft-servers
|
||||
./modules
|
||||
./hosts/comfy-station/configuration.nix
|
||||
];
|
||||
};
|
||||
monolith = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
isHM = false;
|
||||
};
|
||||
modules = [
|
||||
({...}: {
|
||||
nixpkgs.overlays = [
|
||||
overlay-unstable
|
||||
self.overlays.default
|
||||
audio.overlays.default
|
||||
inputs.nix-minecraft.overlay
|
||||
];
|
||||
})
|
||||
({...}: {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.config.nvidia.acceptLicense = true;
|
||||
})
|
||||
{
|
||||
nix.settings = {
|
||||
substituters = ["https://cosmic.cachix.org/"];
|
||||
trusted-public-keys = ["cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="];
|
||||
};
|
||||
}
|
||||
nixos-hardware.nixosModules.lenovo-thinkpad-t14-amd-gen1
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
nixos-cosmic.nixosModules.default
|
||||
inputs.nix-minecraft.nixosModules.minecraft-servers
|
||||
./fixes/plasma-fix.nix
|
||||
./modules
|
||||
./hosts/monolith/configuration.nix
|
||||
];
|
||||
};
|
||||
harbor = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
isHM = false;
|
||||
};
|
||||
modules = [
|
||||
({...}: {
|
||||
nixpkgs.overlays = [
|
||||
overlay-unstable
|
||||
self.overlays.default
|
||||
audio.overlays.default
|
||||
inputs.nix-minecraft.overlay
|
||||
];
|
||||
})
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.disko.nixosModules.disko
|
||||
inputs.nix-minecraft.nixosModules.minecraft-servers
|
||||
./modules
|
||||
./hosts/harbor/configuration.nix
|
||||
];
|
||||
};
|
||||
vm = nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
};
|
||||
modules = [
|
||||
./hosts/vm/configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
homeConfigurations."jonas@comfy-station" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
# Specify your home configuration modules here, for example,
|
||||
# the path to your home.nix.
|
||||
modules = [
|
||||
({...}: {nixpkgs.overlays = [overlay-unstable self.overlays.default audio.overlays.default];})
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
./modules
|
||||
(./home + "/jonas@comfy-station.nix")
|
||||
}:
|
||||
flake-parts.lib.mkFlake {inherit inputs;} {
|
||||
systems = ["x86_64-linux"];
|
||||
imports = [
|
||||
inputs.home-manager.flakeModules.home-manager
|
||||
./hosts/comfy-station
|
||||
./hosts/monolith
|
||||
./hosts/harbor
|
||||
(./home + "/jonas@comfy-station")
|
||||
(./home + "/jonas@monolith")
|
||||
(./home + "/jonas@harbor")
|
||||
(./home + "/admin-jroeger")
|
||||
(import-tree ./modules)
|
||||
(import-tree ./templates)
|
||||
];
|
||||
|
||||
# Optionally use extraSpecialArgs
|
||||
# to pass through arguments to home.nix
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
isHM = true;
|
||||
};
|
||||
};
|
||||
homeConfigurations."jonas@harbor" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
# Specify your home configuration modules here, for example,
|
||||
# the path to your home.nix.
|
||||
modules = [
|
||||
({...}: {nixpkgs.overlays = [overlay-unstable self.overlays.default audio.overlays.default];})
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
./modules
|
||||
(./home + "/jonas@harbor.nix")
|
||||
];
|
||||
|
||||
# Optionally use extraSpecialArgs
|
||||
# to pass through arguments to home.nix
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
isHM = true;
|
||||
};
|
||||
};
|
||||
homeConfigurations."jonas@monolith" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
# Specify your home configuration modules here, for example,
|
||||
# the path to your home.nix.
|
||||
modules = [
|
||||
({...}: {nixpkgs.overlays = [overlay-unstable self.overlays.default audio.overlays.default];})
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
./modules
|
||||
(./home + "/jonas@monolith.nix")
|
||||
];
|
||||
|
||||
# Optionally use extraSpecialArgs
|
||||
# to pass through arguments to home.nix
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
isHM = true;
|
||||
};
|
||||
};
|
||||
homeConfigurations."admin-jroeger" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
# Specify your home configuration modules here, for example,
|
||||
# the path to your home.nix.
|
||||
modules = [
|
||||
({...}: {nixpkgs.overlays = [overlay-unstable self.overlays.default audio.overlays.default];})
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
./modules
|
||||
./home/admin-jroeger.nix
|
||||
];
|
||||
|
||||
# Optionally use extraSpecialArgs
|
||||
# to pass through arguments to home.nix
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
isHM = true;
|
||||
};
|
||||
};
|
||||
|
||||
devShells.${system} = {
|
||||
bulk-transcode = (import ./pkgs/bulk-transcode/shell.nix) {pkgs = nixpkgs.legacyPackages.${system};};
|
||||
spotify-shortcuts = (import ./pkgs/spotify-shortcuts/shell.nix) {pkgs = nixpkgs.legacyPackages.${system};};
|
||||
};
|
||||
|
||||
overlays.default = import ./pkgs;
|
||||
|
||||
templates = {
|
||||
rust = {
|
||||
path = ./templates/rust;
|
||||
description = "A simple rust binary template";
|
||||
welcomeText = ''
|
||||
# Rust template
|
||||
This is a simple rust binary template.
|
||||
To build the project run `cargo build`.
|
||||
To run the project run `cargo run`.
|
||||
Before running nix build, make sure to run `cargo generate-lockfile` first.
|
||||
'';
|
||||
};
|
||||
cmake-c = {
|
||||
path = ./templates/cmake-c;
|
||||
description = "A simple cmake c project.";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,12 +5,7 @@
|
||||
home.homeDirectory = "/home/admin-jroeger";
|
||||
|
||||
# hive modules
|
||||
hive.kitty.enable = true;
|
||||
hive.ranger.enable = true;
|
||||
hive.yubikey.enable = true;
|
||||
hive.yubikey.pinentry = "gnome3";
|
||||
hive.nix-scripts.enable = true;
|
||||
hive.zsh.enable = true;
|
||||
hive.doom.enable = true;
|
||||
hive.doom.asDefaultEditor = true;
|
||||
hive.doom.enableCopilot = true;
|
||||
@@ -18,7 +13,6 @@
|
||||
hive.doom.withShellPkgs = true;
|
||||
hive.doom.withCXXPkgs = true;
|
||||
hive.doom.withPythonPkgs = true;
|
||||
hive.jj.enable = true;
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||
21
home/admin-jroeger/default.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.homeConfigurations."admin-jroeger" = inputs.home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import inputs.nixpkgs {system = "x86_64-linux";};
|
||||
modules = [
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
|
||||
./configuration.nix
|
||||
|
||||
self.homeModules.ranger
|
||||
self.homeModules.yubikey
|
||||
self.homeModules.zsh
|
||||
self.homeModules.nix-scripts
|
||||
self.homeModules.doom
|
||||
self.homeModules.jj
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
(./. + "/jonas@comfy-station/" + /borg.nix)
|
||||
./borg.nix
|
||||
];
|
||||
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
@@ -17,38 +17,17 @@
|
||||
};
|
||||
|
||||
# hive modules
|
||||
hive.themes.layan.enable = true;
|
||||
hive.themes.layan.pkgsInHome = true;
|
||||
hive.hyprland.enable = true;
|
||||
hive.swaync.enable = true;
|
||||
hive.waybar.enable = true;
|
||||
hive.wlogout.enable = true;
|
||||
hive.wofi.enable = true;
|
||||
hive.kitty.enable = true;
|
||||
hive.nextcloud.enable = true;
|
||||
hive.firefox = {
|
||||
enable = true;
|
||||
plasmaIntegration = true;
|
||||
passFF = true;
|
||||
};
|
||||
hive.kdeconnect.enable = true;
|
||||
hive.ranger.enable = true;
|
||||
hive.ssh = {
|
||||
enable = true;
|
||||
sopsFile = ../secrets/jonas/ssh.yaml;
|
||||
sopsFile = ../../secrets/jonas/ssh.yaml;
|
||||
keys = ["borg" "passgit"];
|
||||
};
|
||||
hive.yubikey.enable = true;
|
||||
hive.yubikey.withCCID = false;
|
||||
hive.zsh.enable = true;
|
||||
hive.nix-scripts.enable = true;
|
||||
hive.doom.enable = true;
|
||||
hive.doom.asDefaultEditor = true;
|
||||
hive.doom.enableCopilot = true;
|
||||
hive.doom.withNixPkgs = true;
|
||||
hive.doom.withShellPkgs = true;
|
||||
hive.doom.withPythonPkgs = true;
|
||||
hive.jj.enable = true;
|
||||
|
||||
# Make session variables available in systemd units
|
||||
# SEE: https://github.com/nix-community/home-manager/pull/5543
|
||||
34
home/jonas@comfy-station/default.nix
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.homeConfigurations."jonas@comfy-station" = inputs.home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import inputs.nixpkgs {system = "x86_64-linux";};
|
||||
modules = [
|
||||
({...}: {nixpkgs.overlays = [self.overlays.unstable];})
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
|
||||
./configuration.nix
|
||||
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
self.homeModules.layan
|
||||
self.homeModules.hyprland
|
||||
self.homeModules.swaync
|
||||
self.homeModules.waybar
|
||||
self.homeModules.wlogout
|
||||
self.homeModules.wofi
|
||||
self.homeModules.kitty
|
||||
self.homeModules.nextcloud-client
|
||||
self.homeModules.firefox
|
||||
self.homeModules.kdeconnect
|
||||
self.homeModules.ranger
|
||||
self.homeModules.ssh
|
||||
self.homeModules.yubikey
|
||||
self.homeModules.zsh
|
||||
self.homeModules.nix-scripts
|
||||
self.homeModules.doom
|
||||
self.homeModules.jj
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -5,9 +5,6 @@
|
||||
home.homeDirectory = "/home/jonas";
|
||||
|
||||
# hive modules
|
||||
hive.zsh.enable = true;
|
||||
hive.nix-scripts.enable = true;
|
||||
hive.ranger.enable = true;
|
||||
hive.doom.enable = true;
|
||||
hive.doom.asDefaultEditor = true;
|
||||
hive.doom.withNixPkgs = true;
|
||||
21
home/jonas@harbor/default.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.homeConfigurations."jonas@harbor" = inputs.home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import inputs.nixpkgs {system = "x86_64-linux";};
|
||||
modules = [
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
|
||||
./configuration.nix
|
||||
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
self.homeModules.ranger
|
||||
self.homeModules.zsh
|
||||
self.homeModules.nix-scripts
|
||||
self.homeModules.doom
|
||||
self.homeModules.jj
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -12,11 +12,11 @@
|
||||
age.keyFile = "${home.homeDirectory}/.config/sops/age/keys.txt";
|
||||
};
|
||||
sops.secrets.gotifyDaemonToken = {
|
||||
sopsFile = ../secrets/jonas/gotify.yaml;
|
||||
sopsFile = ../../secrets/jonas/gotify.yaml;
|
||||
key = "monolithDesktopToken";
|
||||
};
|
||||
sops.secrets.gotifyCLIToken = {
|
||||
sopsFile = ../secrets/jonas/gotify.yaml;
|
||||
sopsFile = ../../secrets/jonas/gotify.yaml;
|
||||
key = "cliToken";
|
||||
};
|
||||
|
||||
@@ -28,22 +28,7 @@
|
||||
hive.doom.withNixPkgs = true;
|
||||
hive.doom.withShellPkgs = true;
|
||||
hive.doom.withPythonPkgs = true;
|
||||
hive.firefox = {
|
||||
enable = true;
|
||||
plasmaIntegration = false;
|
||||
passFF = true;
|
||||
};
|
||||
hive.kdeconnect.enable = false;
|
||||
hive.kdeconnect.indicatorOnly = false;
|
||||
hive.nextcloud.enable = false; # kwallet bug
|
||||
hive.nix-scripts.enable = true;
|
||||
hive.ranger.enable = true;
|
||||
hive.themes.layan.enable = true;
|
||||
hive.yubikey.enable = true;
|
||||
hive.zsh.enable = true;
|
||||
hive.jj.enable = true;
|
||||
hive.gotify = {
|
||||
cli.enable = true;
|
||||
daemon.enable = true;
|
||||
cli.tokenSopsKey = config.sops.secrets.gotifyCLIToken.name;
|
||||
daemon.tokenSopsKey = config.sops.secrets.gotifyDaemonToken.name;
|
||||
27
home/jonas@monolith/default.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.homeConfigurations."jonas@monolith" = inputs.home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import inputs.nixpkgs {system = "x86_64-linux";};
|
||||
modules = [
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
|
||||
./configuration.nix
|
||||
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
self.homeModules.layan
|
||||
self.homeModules.nextcloud-client
|
||||
self.homeModules.firefox
|
||||
self.homeModules.kdeconnect
|
||||
self.homeModules.ranger
|
||||
self.homeModules.yubikey
|
||||
self.homeModules.zsh
|
||||
self.homeModules.nix-scripts
|
||||
self.homeModules.doom
|
||||
self.homeModules.jj
|
||||
self.homeModules.gotify
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -28,23 +28,16 @@
|
||||
programs.zsh.enable = true;
|
||||
|
||||
# hive modules
|
||||
hive.nix-scripts.enable = true;
|
||||
hive.displayManager.name = "sddm";
|
||||
hive.hyprland.enable = true;
|
||||
hive.hyprland.autologin = "jonas";
|
||||
hive.kwallet.enable = true;
|
||||
hive.kwallet.forUsers = ["jonas"];
|
||||
hive.virt-manager.enable = true;
|
||||
hive.virt-manager.forUsers = ["jonas"];
|
||||
hive.bluetooth.enable = true;
|
||||
hive.sound.enable = true;
|
||||
hive.yubikey.enable = true;
|
||||
hive.wg.client.enable = true;
|
||||
hive.wg.client.privateKeyFile = config.sops.secrets.wg-priv.path;
|
||||
hive.wg.client.peer = "comfy-station";
|
||||
hive.programs.games.enable = true;
|
||||
hive.programs.games.steam = true;
|
||||
hive.programs.creative = {
|
||||
enable = true;
|
||||
image-management = true;
|
||||
image-raw-processing = true;
|
||||
video-editing-light = true;
|
||||
@@ -79,7 +72,6 @@
|
||||
nix-index
|
||||
nix-output-monitor
|
||||
obsidian
|
||||
openhantek6022
|
||||
qalculate-qt
|
||||
qtpass
|
||||
ranger
|
||||
@@ -96,7 +88,6 @@
|
||||
"electron-25.9.0" # required by obsidian
|
||||
];
|
||||
services.avahi.enable = true;
|
||||
services.udev.packages = [pkgs.openhantek6022];
|
||||
virtualisation.docker.enable = true;
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
@@ -120,8 +111,6 @@
|
||||
trusted-users = [
|
||||
"@wheel"
|
||||
];
|
||||
max-jobs = 2;
|
||||
cores = 8;
|
||||
};
|
||||
gc = {
|
||||
automatic = true;
|
||||
|
||||
32
hosts/comfy-station/default.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
inputs,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
flake.nixosConfigurations.comfy-station = inputs.nixpkgs.lib.nixosSystem {
|
||||
modules = [
|
||||
({...}: {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
})
|
||||
|
||||
./configuration.nix
|
||||
|
||||
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-t14-amd-gen1
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
self.nixosModules.nix-scripts
|
||||
self.nixosModules.hyprland
|
||||
self.nixosModules.kwallet
|
||||
self.nixosModules.virt-manager
|
||||
self.nixosModules.bluetooth
|
||||
self.nixosModules.sound
|
||||
self.nixosModules.yubikey
|
||||
self.nixosModules.wireguard-client
|
||||
self.nixosModules.games
|
||||
self.nixosModules.creative
|
||||
self.nixosModules.openhantek
|
||||
self.nixosModules.firefox
|
||||
self.nixosModules.kdeconnect
|
||||
self.nixosModules.ntsync
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -77,7 +77,7 @@
|
||||
hive.nextcloud-instance.ssl = true;
|
||||
hive.nextcloud-instance.adminPasswordFile = config.sops.secrets.nextcloud-admin-pass.path;
|
||||
hive.nextcloud-instance.instanceFQDN = "nextcloud.jroeger.de";
|
||||
hive.nix-scripts.enable = true;
|
||||
hive.minecraft-server.enable = true;
|
||||
hive.borg-server.enable = true;
|
||||
hive.borg-server.repositories.comfy-station.ssh_public_key = builtins.readFile (../../static/keys + "/borg-jonas@comfy-station.pub");
|
||||
hive.wg.server.enable = true;
|
||||
|
||||
25
hosts/harbor/default.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
inputs,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
flake.nixosConfigurations.harbor = inputs.nixpkgs.lib.nixosSystem {
|
||||
modules = [
|
||||
({...}: {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
})
|
||||
|
||||
./configuration.nix
|
||||
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
inputs.disko.nixosModules.disko
|
||||
self.nixosModules.nix-scripts
|
||||
self.nixosModules.gitea-instance
|
||||
self.nixosModules.gotify-instance
|
||||
self.nixosModules.nextcloud-instance
|
||||
self.nixosModules.minecraft-server
|
||||
self.nixosModules.borg-server
|
||||
self.nixosModules.wireguard-server
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -49,45 +49,34 @@
|
||||
];
|
||||
|
||||
# hive modules
|
||||
hive.nix-scripts.enable = true;
|
||||
hive.displayManager.name = "sddm";
|
||||
hive.themes.layan.enable = true;
|
||||
hive.plasma.enable = true;
|
||||
hive.plasma.autologin = "jonas";
|
||||
hive.kwallet.enable = true;
|
||||
hive.kwallet.forUsers = ["jonas"];
|
||||
hive.virt-manager.enable = true;
|
||||
hive.virt-manager.forUsers = ["jonas"];
|
||||
hive.bluetooth.enable = true;
|
||||
hive.sound.enable = true;
|
||||
hive.sound.noisetorch = true;
|
||||
hive.yubikey.enable = true;
|
||||
hive.services.kdeconnect.enable = true;
|
||||
hive.wg.client.enable = true;
|
||||
hive.wg.client.privateKeyFile = config.sops.secrets.wg-priv.path;
|
||||
hive.wg.client.peer = "monolith";
|
||||
hive.programs.games.enable = true;
|
||||
hive.programs.games.dayz = true;
|
||||
hive.programs.games.lutris = true;
|
||||
hive.programs.games.steam = true;
|
||||
hive.programs.games.wine = true;
|
||||
hive.programs.creative = {
|
||||
enable = true;
|
||||
image-management = true;
|
||||
image-editing = true;
|
||||
image-raw-processing = true;
|
||||
video-editing-light = true;
|
||||
video-editing-heavy = true;
|
||||
daws = true;
|
||||
};
|
||||
hive.programs.utils = {
|
||||
enable = true;
|
||||
camera = true;
|
||||
};
|
||||
hive.programs.spotify-shortcuts = {
|
||||
enable = true;
|
||||
clientIdSopsKey = config.sops.secrets.spotifyShortcutsClientId.name;
|
||||
clientSecretSopsKey = config.sops.secrets.spotifyShortcutsClientSecret.name;
|
||||
};
|
||||
hive.ntsync.enable = true;
|
||||
|
||||
services.flatpak.enable = true;
|
||||
|
||||
# system packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
@@ -114,7 +103,6 @@
|
||||
nix-index
|
||||
nix-output-monitor
|
||||
obsidian
|
||||
openhantek6022
|
||||
qalculate-qt
|
||||
qdirstat
|
||||
qtpass
|
||||
@@ -131,23 +119,8 @@
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
"electron-25.9.0" # required by obsidian
|
||||
];
|
||||
services.udev.packages = [pkgs.openhantek6022];
|
||||
virtualisation.docker.enable = true;
|
||||
|
||||
# Corsair drivers
|
||||
hardware.ckb-next = {
|
||||
enable = true;
|
||||
# Workarount until https://github.com/NixOS/nixpkgs/issues/444209
|
||||
# is fixed
|
||||
package = pkgs.ckb-next.overrideAttrs (prev: {
|
||||
cmakeFlags =
|
||||
(prev.cmakeFlags or [])
|
||||
++ [
|
||||
"-DUSE_DBUS_MENU=0"
|
||||
];
|
||||
});
|
||||
};
|
||||
|
||||
# dpi correction
|
||||
services.xserver.dpi = 91;
|
||||
environment.variables = {
|
||||
@@ -169,46 +142,6 @@
|
||||
"QT_AUTO_SCREEN_SCALE_FACTOR"
|
||||
];
|
||||
|
||||
# Enable OpenGL
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
extraPackages = [pkgs.rocmPackages.clr];
|
||||
};
|
||||
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
services.xserver.videoDrivers = ["nvidia"];
|
||||
|
||||
hardware.nvidia = {
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||
# of just the bare essentials.
|
||||
powerManagement.enable = false;
|
||||
|
||||
# Fine-grained power management. Turns off GPU when not in use.
|
||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
open = false;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
@@ -241,6 +174,7 @@
|
||||
boot.plymouth.enable = true;
|
||||
boot.initrd.systemd.enable = true;
|
||||
boot.supportedFilesystems = ["ntfs"];
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
# Configure console keymap
|
||||
console.keyMap = "de";
|
||||
|
||||
38
hosts/monolith/default.nix
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
inputs,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
flake.nixosConfigurations.monolith = inputs.nixpkgs.lib.nixosSystem {
|
||||
modules = [
|
||||
({...}: {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.config.nvidia.acceptLicense = true;
|
||||
})
|
||||
|
||||
./configuration.nix
|
||||
|
||||
inputs.nixos-hardware.nixosModules.msi-b550-a-pro
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
self.nixosModules.nvidia
|
||||
self.nixosModules.ckb-next
|
||||
self.nixosModules.plasma
|
||||
self.nixosModules.plasma-fix
|
||||
self.nixosModules.layan
|
||||
self.nixosModules.nix-scripts
|
||||
self.nixosModules.kwallet
|
||||
self.nixosModules.virt-manager
|
||||
self.nixosModules.bluetooth
|
||||
self.nixosModules.sound
|
||||
self.nixosModules.yubikey
|
||||
self.nixosModules.wireguard-client
|
||||
self.nixosModules.games
|
||||
self.nixosModules.creative
|
||||
self.nixosModules.openhantek
|
||||
self.nixosModules.firefox
|
||||
self.nixosModules.kdeconnect
|
||||
self.nixosModules.spotify-shortcuts
|
||||
self.nixosModules.ntsync
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,113 +0,0 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
../../modules/hardware/bluetooth.nix
|
||||
../../modules/hardware/printing.nix
|
||||
../../modules/hardware/sound.nix
|
||||
../../modules/services/docker.nix
|
||||
../../modules/desktop/dm
|
||||
../../modules/desktop/de
|
||||
];
|
||||
|
||||
desktop.dm.name = "sddm";
|
||||
desktop.dm.autologin = "jonas";
|
||||
desktop.de.plasma.enable = true;
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.jonas = {
|
||||
isNormalUser = true;
|
||||
description = "Jonas";
|
||||
extraGroups = ["networkmanager" "wheel" "docker"];
|
||||
packages = with pkgs; [];
|
||||
};
|
||||
users.defaultUserShell = pkgs.zsh;
|
||||
|
||||
programs.zsh.enable = true;
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
docker
|
||||
git
|
||||
ranger
|
||||
vim
|
||||
wget
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
# services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "24.11"; # Did you read the comment?
|
||||
|
||||
# boot
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
# Configure console keymap
|
||||
console.keyMap = "de";
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Berlin";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "de_DE.UTF-8";
|
||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
||||
LC_MONETARY = "de_DE.UTF-8";
|
||||
LC_NAME = "de_DE.UTF-8";
|
||||
LC_NUMERIC = "de_DE.UTF-8";
|
||||
LC_PAPER = "de_DE.UTF-8";
|
||||
LC_TELEPHONE = "de_DE.UTF-8";
|
||||
LC_TIME = "de_DE.UTF-8";
|
||||
};
|
||||
|
||||
networking.hostName = "vm"; # Define your hostname.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}: {
|
||||
imports = [];
|
||||
|
||||
boot.initrd.availableKernelModules = ["ata_piix" "ohci_pci" "ehci_pci" "ahci" "sd_mod" "sr_mod"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.kernelModules = [];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/a28cd2c0-67f3-4492-9cd9-996fdbe2b8ef";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/0134-2DF5";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp0s3.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
virtualisation.virtualbox.guest.enable = true;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}: {}
|
||||
@@ -1,60 +0,0 @@
|
||||
{
|
||||
isHM ? null,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
assertions = [
|
||||
{
|
||||
assertion = isHM != null;
|
||||
message = "The \"home-manager\" flag isHM is required.";
|
||||
}
|
||||
];
|
||||
imports =
|
||||
[
|
||||
# modules containing both system and home-manager configs
|
||||
./bin/nix-scripts.nix
|
||||
]
|
||||
++ lib.optionals (! isHM) [
|
||||
# pure system modules
|
||||
./desktop/de
|
||||
./desktop/dm
|
||||
./desktop/themes
|
||||
./hardware/bluetooth.nix
|
||||
./hardware/sound.nix
|
||||
./hardware/yubikey.nix
|
||||
./networking/wireguard
|
||||
./programs/creative.nix
|
||||
./programs/games.nix
|
||||
./programs/spotify-shortcuts.nix
|
||||
./programs/utils.nix
|
||||
./services/borg-server.nix
|
||||
./services/gitea-instance.nix
|
||||
./services/gotify-instance.nix
|
||||
./services/kdeconnect.nix
|
||||
./services/minecraft-server
|
||||
./services/nextcloud-instance.nix
|
||||
./services/virt-manager.nix
|
||||
]
|
||||
++ lib.optionals isHM [
|
||||
# pure home-manager modules
|
||||
./home/doom
|
||||
./home/firefox.nix
|
||||
./home/flameshot.nix
|
||||
./home/gotify.nix
|
||||
./home/hyprland
|
||||
./home/jj.nix
|
||||
./home/kdeconnect.nix
|
||||
./home/kitty
|
||||
./home/nextcloud
|
||||
./home/plasma.nix
|
||||
./home/ranger
|
||||
./home/ssh.nix
|
||||
./home/swaync
|
||||
./home/themes/layan.nix
|
||||
./home/waybar
|
||||
./home/wlogout
|
||||
./home/wofi
|
||||
./home/yubikey.nix
|
||||
./home/zsh
|
||||
];
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
./hyprland.nix
|
||||
./kwallet.nix
|
||||
./plasma.nix
|
||||
];
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.hyprland;
|
||||
in {
|
||||
options.hive.hyprland = {
|
||||
enable = lib.mkEnableOption "enable hyprland desktop environment";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
services = {
|
||||
libinput.enable = true;
|
||||
dbus.enable = true;
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-hyprland
|
||||
kdePackages.xdg-desktop-portal-kde
|
||||
];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [spaceFM];
|
||||
|
||||
services.udisks2.enable = true;
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
withUWSM = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
programs.hyprlock.enable = true;
|
||||
security.pam.services.hyprlock = {};
|
||||
};
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.kwallet;
|
||||
in {
|
||||
options.hive.kwallet = {
|
||||
enable = lib.mkEnableOption "Enable kwallet";
|
||||
forUsers = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
List of users that should unlock kwallet via pam.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs.kdePackages; [
|
||||
kwallet
|
||||
kwalletmanager
|
||||
];
|
||||
security.pam.services = builtins.listToAttrs (map (user: {
|
||||
name = user;
|
||||
value = {
|
||||
kwallet.enable = true;
|
||||
kwallet.forceRun = true;
|
||||
kwallet.package = pkgs.kdePackages.kwallet-pam;
|
||||
};
|
||||
})
|
||||
cfg.forUsers);
|
||||
};
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.plasma;
|
||||
in {
|
||||
options.hive.plasma = {
|
||||
enable = lib.mkEnableOption "Enable Plasma desktop environment with sddm";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [
|
||||
kdePackages.xdg-desktop-portal-kde
|
||||
xdg-desktop-portal-gtk
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.displayManager;
|
||||
in {
|
||||
options.hive.displayManager = with lib; {
|
||||
name = mkOption {
|
||||
type = types.enum ["sddm" "gdm" "cosmic"];
|
||||
default = "sddm";
|
||||
description = "The display manager to use.";
|
||||
};
|
||||
autologin = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "The autologin username or null for no autologin.";
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
./gdm.nix
|
||||
./sddm.nix
|
||||
];
|
||||
|
||||
config = {
|
||||
services.xserver.enable = true;
|
||||
services.xserver = {
|
||||
xkb.layout = "de";
|
||||
xkb.variant = "";
|
||||
xkb.options = "caps:ctrl_modifier";
|
||||
};
|
||||
services.displayManager.autoLogin.enable = cfg.autologin != null;
|
||||
services.displayManager.autoLogin.user = cfg.autologin;
|
||||
};
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.displayManager;
|
||||
in {
|
||||
config = lib.mkIf (cfg.name == "gdm") {
|
||||
services.xserver.displayManager.gdm = {
|
||||
enable = true;
|
||||
wayland = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.displayManager;
|
||||
in {
|
||||
config = lib.mkIf (cfg.name == "sddm") {
|
||||
services.displayManager.sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,38 +1,104 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.hyprland;
|
||||
screenshot = pkgs.writeShellScriptBin "screenshot" ''
|
||||
region=0
|
||||
clip=0
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
flake.nixosModules.hyprland = {
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.hyprland;
|
||||
in {
|
||||
options.hive.hyprland = with lib; {
|
||||
enable = mkEnableOption "Enable Hyprland Wayland compositor";
|
||||
autologin = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = "The autologin username or null for no autologin.";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.displayManager = {
|
||||
autoLogin.enable = cfg.autologin != null;
|
||||
autoLogin.user = cfg.autologin;
|
||||
sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
withUWSM = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
services.libinput.enable = true;
|
||||
services.dbus.enable = true;
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-hyprland
|
||||
kdePackages.xdg-desktop-portal-kde
|
||||
];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [spaceFM];
|
||||
services.udisks2.enable = true;
|
||||
programs.hyprlock.enable = true;
|
||||
security.pam.services.hyprlock = {};
|
||||
};
|
||||
};
|
||||
|
||||
flake.homeModules.hyprland = {pkgs, ...}: let
|
||||
screenshot = pkgs.writeShellScriptBin "screenshot" ''
|
||||
region=0
|
||||
clip=0
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
--region) region=1; ;;
|
||||
--clip) clip=1; ;;
|
||||
*) echo "Unknown parameter passed: $1"; exit 1 ;;
|
||||
--region) region=1; ;;
|
||||
--clip) clip=1; ;;
|
||||
*) echo "Unknown parameter passed: $1"; exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
done
|
||||
|
||||
if [[ $region -eq 1 ]]; then
|
||||
if [[ $region -eq 1 ]]; then
|
||||
if [[ $clip -eq 1 ]]; then
|
||||
${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||
${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||
else
|
||||
${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" ~/Pictures/Screenshots/$(${pkgs.coreutils}/bin/date +'%Y-%m-%d_%H-%M-%S').png
|
||||
${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" ~/Pictures/Screenshots/$(${pkgs.coreutils}/bin/date +'%Y-%m-%d_%H-%M-%S').png
|
||||
fi
|
||||
else
|
||||
else
|
||||
if [[ $clip -eq 1 ]]; then
|
||||
${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||
${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||
else
|
||||
${pkgs.grim}/bin/grim ~/Pictures/Screenshots/$(${pkgs.coreutils}/bin/date +'%Y-%m-%d_%H-%M-%S').png
|
||||
${pkgs.grim}/bin/grim ~/Pictures/Screenshots/$(${pkgs.coreutils}/bin/date +'%Y-%m-%d_%H-%M-%S').png
|
||||
fi
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
config = lib.mkIf cfg.enable {
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = false;
|
||||
systemd.variables = ["--all"];
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
services.wpaperd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default = {
|
||||
path = ../../static/wallpaper/stones.jpg;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.hypridle.enable = true;
|
||||
services.hypridle.settings = {
|
||||
general = {
|
||||
# lock_cmd = notify-send "lock!" # dbus/sysd lock command (loginctl lock-session)
|
||||
15
modules/desktop/kdeconnect.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
flake.homeModules.kdeconnect = {
|
||||
services.kdeconnect.indicator = true;
|
||||
};
|
||||
|
||||
flake.nixosModules.kdeconnect = {
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
programs.kdeconnect.enable = true;
|
||||
# Use qt-6 version
|
||||
programs.kdeconnect.package = lib.mkForce pkgs.kdePackages.kdeconnect-kde;
|
||||
};
|
||||
}
|
||||
@@ -1,15 +1,5 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.kitty;
|
||||
in {
|
||||
options.hive.kitty = {
|
||||
enable = lib.mkEnableOption "Enable kitty terminal";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
flake.homeModules.kitty = {pkgs, ...}: {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
shellIntegration.enableZshIntegration = true;
|
||||
37
modules/desktop/kwallet.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
flake.nixosModules.kwallet = {
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.kwallet;
|
||||
in {
|
||||
options.hive.kwallet = {
|
||||
enable = lib.mkEnableOption "Enable kwallet integration with pam.";
|
||||
forUsers = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
List of users that should unlock kwallet via pam.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs.kdePackages; [
|
||||
kwallet
|
||||
kwalletmanager
|
||||
];
|
||||
security.pam.services = builtins.listToAttrs (map (user: {
|
||||
name = user;
|
||||
value = {
|
||||
kwallet.enable = true;
|
||||
kwallet.forceRun = true;
|
||||
kwallet.package = pkgs.kdePackages.kwallet-pam;
|
||||
};
|
||||
})
|
||||
cfg.forUsers);
|
||||
};
|
||||
};
|
||||
}
|
||||
9
modules/desktop/nextcloud-client.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
flake.homeModules.nextcloud-client = {pkgs, ...}: {
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
startInBackground = true;
|
||||
package = pkgs.nextcloud-client;
|
||||
};
|
||||
};
|
||||
}
|
||||
58
modules/desktop/plasma-fix.nix
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
# https://github.com/NixOS/nixpkgs/issues/126590#issuecomment-3194531220
|
||||
flake.nixosModules.plasma-fix = {
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
nixpkgs.overlays = lib.singleton (final: prev: {
|
||||
kdePackages =
|
||||
prev.kdePackages
|
||||
// {
|
||||
plasma-workspace = let
|
||||
# the package we want to override
|
||||
basePkg = prev.kdePackages.plasma-workspace;
|
||||
|
||||
# a helper package that merges all the XDG_DATA_DIRS into a single directory
|
||||
xdgdataPkg = pkgs.stdenv.mkDerivation {
|
||||
name = "${basePkg.name}-xdgdata";
|
||||
buildInputs = [basePkg];
|
||||
dontUnpack = true;
|
||||
dontFixup = true;
|
||||
dontWrapQtApps = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out/share
|
||||
( IFS=:
|
||||
for DIR in $XDG_DATA_DIRS; do
|
||||
if [[ -d "$DIR" ]]; then
|
||||
cp -r $DIR/. $out/share/
|
||||
chmod -R u+w $out/share
|
||||
fi
|
||||
done
|
||||
)
|
||||
'';
|
||||
};
|
||||
|
||||
# undo the XDG_DATA_DIRS injection that is usually done in the qt wrapper
|
||||
# script and instead inject the path of the above helper package
|
||||
derivedPkg = basePkg.overrideAttrs {
|
||||
preFixup = ''
|
||||
for index in "''${!qtWrapperArgs[@]}"; do
|
||||
if [[ ''${qtWrapperArgs[$((index+0))]} == "--prefix" ]] && [[ ''${qtWrapperArgs[$((index+1))]} == "XDG_DATA_DIRS" ]]; then
|
||||
unset -v "qtWrapperArgs[$((index+0))]"
|
||||
unset -v "qtWrapperArgs[$((index+1))]"
|
||||
unset -v "qtWrapperArgs[$((index+2))]"
|
||||
unset -v "qtWrapperArgs[$((index+3))]"
|
||||
fi
|
||||
done
|
||||
qtWrapperArgs=("''${qtWrapperArgs[@]}")
|
||||
qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "${xdgdataPkg}/share")
|
||||
qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "$out/share")
|
||||
'';
|
||||
};
|
||||
in
|
||||
derivedPkg;
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
38
modules/desktop/plasma.nix
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
flake.nixosModules.plasma = {
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.plasma;
|
||||
in {
|
||||
options.hive.plasma = {
|
||||
enable = lib.mkEnableOption "Enable Plasma 6 desktop environment";
|
||||
autologin = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "The autologin username or null for no autologin.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.displayManager = {
|
||||
autoLogin.enable = cfg.autologin != null;
|
||||
autoLogin.user = cfg.autologin;
|
||||
sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
};
|
||||
};
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [
|
||||
kdePackages.xdg-desktop-portal-kde
|
||||
xdg-desktop-portal-gtk
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -1,15 +1,5 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.swaync;
|
||||
in {
|
||||
options.hive.swaync = {
|
||||
enable = lib.mkEnableOption "Enable swaync";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
flake.homeModules.swaync = {pkgs, ...}: {
|
||||
xdg.enable = true;
|
||||
xdg.configFile = {
|
||||
"swaync/themes" = {
|
||||
@@ -1,5 +0,0 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
./layan.nix
|
||||
];
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.themes.layan;
|
||||
in {
|
||||
options.hive.themes.layan = {
|
||||
enable = lib.mkEnableOption "Layan theme configuration";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [
|
||||
pkgs.hive.layan-qt6
|
||||
pkgs.kdePackages.qtstyleplugin-kvantum
|
||||
pkgs.unstable.layan-cursors
|
||||
pkgs.layan-gtk-theme
|
||||
pkgs.tela-circle-icon-theme
|
||||
];
|
||||
};
|
||||
}
|
||||
18
modules/desktop/themes/layan/layan-qt6.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{self, ...}: {
|
||||
flake.homeModules.layan-qt6-overlay = {
|
||||
nixpkgs.overlays = [
|
||||
self.overlays.layan-qt6
|
||||
];
|
||||
};
|
||||
flake.nixosModules.layan-qt6-overlay = {
|
||||
nixpkgs.overlays = [
|
||||
self.overlays.layan-qt6
|
||||
];
|
||||
};
|
||||
flake.overlays.layan-qt6 = final: prev: {
|
||||
layan-qt6 = final.kdePackages.callPackage ./_derivation.nix {};
|
||||
};
|
||||
perSystem = {pkgs, ...}: {
|
||||
packages.layan-qt6 = pkgs.callPackage ./_derivation.nix {};
|
||||
};
|
||||
}
|
||||
@@ -1,23 +1,29 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.themes.layan;
|
||||
in {
|
||||
options.hive.themes.layan = {
|
||||
enable = lib.mkEnableOption "Layan theme configuration";
|
||||
pkgsInHome = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether to install Layan theme packages in the user's home directory.";
|
||||
};
|
||||
{self, ...}: {
|
||||
flake.nixosModules.layan = {pkgs, ...}: {
|
||||
imports = [
|
||||
self.nixosModules.unstable-overlay
|
||||
self.nixosModules.layan-qt6-overlay
|
||||
];
|
||||
environment.systemPackages = [
|
||||
pkgs.layan-qt6
|
||||
pkgs.kdePackages.qtstyleplugin-kvantum
|
||||
pkgs.unstable.layan-cursors
|
||||
pkgs.layan-gtk-theme
|
||||
pkgs.tela-circle-icon-theme
|
||||
];
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
home.packages = lib.optionals cfg.pkgsInHome [
|
||||
pkgs.hive.layan-qt6
|
||||
flake.homeModules.layan = {
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
self.homeModules.layan-qt6-overlay
|
||||
self.homeModules.unstable-overlay
|
||||
];
|
||||
home.packages = [
|
||||
pkgs.layan-qt6
|
||||
pkgs.kdePackages.qtstyleplugin-kvantum
|
||||
pkgs.unstable.layan-cursors
|
||||
pkgs.layan-gtk-theme
|
||||
@@ -1,15 +1,10 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.waybar;
|
||||
in {
|
||||
options.hive.waybar = {
|
||||
enable = lib.mkEnableOption "Enable Waybar";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
flake.homeModules.waybar = {
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.waybar.enable = true;
|
||||
programs.waybar.systemd.enable = true;
|
||||
|
||||
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
@@ -1,14 +1,5 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.wlogout;
|
||||
in {
|
||||
options.hive.wlogout = {
|
||||
enable = lib.mkEnableOption "Enable Wlogout";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
flake.homeModules.wlogout = {
|
||||
programs.wlogout.enable = true;
|
||||
programs.wlogout.layout = [
|
||||
{
|
||||
@@ -1,14 +1,5 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.wofi;
|
||||
in {
|
||||
options.hive.wofi = {
|
||||
enable = lib.mkEnableOption "Enable Wofi";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
flake.homeModules.wofi = {
|
||||
programs.wofi.enable = true;
|
||||
programs.wofi.settings = {
|
||||
location = "center";
|
||||
32
modules/docs.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
perSystem = {
|
||||
pkgs,
|
||||
lib,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
packages.docs = let
|
||||
nixos = inputs.nixpkgs.lib.nixosSystem {
|
||||
inherit system;
|
||||
modules =
|
||||
[
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
]
|
||||
++ lib.attrValues self.nixosModules;
|
||||
};
|
||||
doc = pkgs.nixosOptionsDoc {options.hive = nixos.options.hive;};
|
||||
in
|
||||
pkgs.stdenvNoCC.mkDerivation {
|
||||
name = ".hive-docs";
|
||||
buildCommand = ''
|
||||
mkdir -p $out
|
||||
cp ${doc.optionsCommonMark} $out/docs.md
|
||||
${pkgs.pandoc}/bin/pandoc -o $out/docs.html $out/docs.md
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
295
modules/doom/doom.nix
Normal file
@@ -0,0 +1,295 @@
|
||||
{self, ...}: {
|
||||
flake.homeModules.doom = {
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.doom;
|
||||
doom-pkgs = with pkgs; [
|
||||
cmake
|
||||
emacs-all-the-icons-fonts
|
||||
fira
|
||||
fira-code-symbols
|
||||
fontconfig
|
||||
gcc
|
||||
nerd-fonts.fira-code
|
||||
];
|
||||
default-core-pkgs = with pkgs; [
|
||||
(ripgrep.override {withPCRE2 = true;})
|
||||
(aspellWithDicts (d: [d.en d.de d.en-computers d.en-science]))
|
||||
binutils
|
||||
editorconfig-core-c
|
||||
fd
|
||||
git
|
||||
gnumake
|
||||
gnutls
|
||||
ispell
|
||||
libtool
|
||||
vscode-langservers-extracted
|
||||
(pkgs.stdenvNoCC.mkDerivation {
|
||||
name = "epdfinfo";
|
||||
phases = "installPhase";
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
ln -s $(${pkgs.findutils}/bin/find ${pkgs.emacsPackages.pdf-tools}/ -name epdfinfo) $out/bin/
|
||||
'';
|
||||
})
|
||||
];
|
||||
default-shell-pkgs = with pkgs; [
|
||||
bash-language-server
|
||||
];
|
||||
default-nix-pkgs = with pkgs; [
|
||||
alejandra
|
||||
nixd
|
||||
];
|
||||
default-latex-pkgs = with pkgs; [
|
||||
pandoc
|
||||
poppler
|
||||
texlab
|
||||
texlive.combined.scheme-medium
|
||||
];
|
||||
default-cxx-pkgs = with pkgs; [
|
||||
clang
|
||||
clang-tools
|
||||
cmake
|
||||
cppcheck
|
||||
doxygen
|
||||
gdb
|
||||
ninja
|
||||
];
|
||||
default-python-pkgs = with pkgs; [
|
||||
python312
|
||||
python312Packages.black
|
||||
pyright
|
||||
];
|
||||
doom-path-pkgs =
|
||||
lib.optionals cfg.withLatexPkgs (cfg.overrideLatexPkgs default-latex-pkgs)
|
||||
++ lib.optionals cfg.withShellPkgs (cfg.overrideShellPkgs default-shell-pkgs)
|
||||
++ lib.optionals cfg.withNixPkgs (cfg.overrideNixPkgs default-nix-pkgs)
|
||||
++ lib.optionals cfg.withCXXPkgs (cfg.overrideCXXPkgs default-cxx-pkgs)
|
||||
++ lib.optionals cfg.withPythonPkgs (cfg.overridePythonPkgs default-python-pkgs)
|
||||
++ lib.optional cfg.enableCopilot pkgs.unstable.copilot-language-server
|
||||
++ default-core-pkgs;
|
||||
doom-socket-name = "main";
|
||||
wrapped-emacs = pkgs.symlinkJoin {
|
||||
name = "wrapped-emacs";
|
||||
paths = [pkgs.emacs30];
|
||||
nativeBuildInputs = [pkgs.makeBinaryWrapper];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/emacs \
|
||||
--prefix PATH : ${lib.makeBinPath doom-path-pkgs} \
|
||||
--add-flags "--init-directory=${config.xdg.configHome}/doom-emacs" \
|
||||
--set DOOMDIR "${config.home.sessionVariables.DOOMDIR}" \
|
||||
--set DOOMLOCALDIR "${config.home.sessionVariables.DOOMLOCALDIR}"
|
||||
|
||||
wrapProgram $out/bin/emacsclient \
|
||||
--prefix PATH : ${lib.makeBinPath doom-path-pkgs} \
|
||||
--set DOOMDIR "${config.home.sessionVariables.DOOMDIR}" \
|
||||
--set DOOMLOCALDIR "${config.home.sessionVariables.DOOMLOCALDIR}"
|
||||
'';
|
||||
};
|
||||
doom-setup = pkgs.writeShellScript "doom-setup" ''
|
||||
export PATH="${lib.makeBinPath doom-path-pkgs}:$PATH"
|
||||
export EMACS="${wrapped-emacs}/bin/emacs"
|
||||
export DOOMDIR="${config.home.sessionVariables.DOOMDIR}"
|
||||
export DOOMLOCALDIR="${config.home.sessionVariables.DOOMLOCALDIR}"
|
||||
if [ ! -d "$DOOMLOCALDIR" ]; then
|
||||
${config.xdg.configHome}/doom-emacs/bin/doom install --force --no-env
|
||||
else
|
||||
${config.xdg.configHome}/doom-emacs/bin/doom "$@"
|
||||
fi
|
||||
'';
|
||||
doom-open = pkgs.writeShellScriptBin "doom-open" ''
|
||||
export EMACS_SOCKET_NAME="$XDG_RUNTIME_DIR/emacs/${doom-socket-name}"
|
||||
if [ -t 0 ]; then
|
||||
exec ${wrapped-emacs}/bin/emacsclient -t "$@"
|
||||
else
|
||||
exec ${wrapped-emacs}/bin/emacsclient -c "$@"
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
options.hive.doom = {
|
||||
enable = lib.mkEnableOption "Enable Doom Emacs";
|
||||
asDefaultEditor = lib.mkEnableOption "set the EDITOR variable to use the current emacs server (graphical/non-graphical)";
|
||||
enableCopilot = lib.mkEnableOption "Enable Copilot in Doom Emacs";
|
||||
enableTidal = lib.mkEnableOption "Enable TidalCycles";
|
||||
withLatexPkgs = lib.mkEnableOption "Enable LaTeX packages in doom path";
|
||||
withShellPkgs = lib.mkEnableOption "Enable shell packages in doom path";
|
||||
withNixPkgs = lib.mkEnableOption "Enable LaTeX packages in doom path";
|
||||
withCXXPkgs = lib.mkEnableOption "Enable CXX packages in doom path";
|
||||
withPythonPkgs = lib.mkEnableOption "Enable python packages in doom path";
|
||||
overrideLatexPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
texlive.combined.scheme-full
|
||||
]
|
||||
'';
|
||||
description = "Override the default LaTeX packages in the doom path.";
|
||||
};
|
||||
overrideShellPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
shellcheck
|
||||
]
|
||||
'';
|
||||
description = "Override the default shell packages in the doom path.";
|
||||
};
|
||||
overrideNixPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
nixpkgs-fmt
|
||||
]
|
||||
'';
|
||||
description = "Override the default Nix packages in the doom path.";
|
||||
};
|
||||
overrideCXXPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
openmp
|
||||
]
|
||||
'';
|
||||
description = "Override the default C++ packages in the doom path.";
|
||||
};
|
||||
overridePythonPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
pythonPackages.black
|
||||
]
|
||||
'';
|
||||
description = "Override the default Python packages in the doom path.";
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
# for copilot ls
|
||||
self.homeModules.unstable-overlay
|
||||
];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
programs.emacs = {
|
||||
enable = true;
|
||||
package = wrapped-emacs;
|
||||
};
|
||||
|
||||
home = {
|
||||
sessionPath = ["${config.xdg.configHome}/doom-emacs/bin"];
|
||||
sessionVariables =
|
||||
{
|
||||
DOOMDIR = "${config.xdg.configHome}/doom-config";
|
||||
DOOMLOCALDIR = "${config.xdg.configHome}/doom-local";
|
||||
}
|
||||
// lib.optionalAttrs cfg.asDefaultEditor {
|
||||
EDITOR = "${doom-open.name}";
|
||||
};
|
||||
packages = doom-pkgs ++ lib.optional cfg.asDefaultEditor doom-open;
|
||||
};
|
||||
|
||||
systemd.user.services.doom-emacs-server = {
|
||||
Unit = {
|
||||
Description = "Doom Emacs Server";
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${wrapped-emacs}/bin/emacs --fg-daemon=${doom-socket-name}";
|
||||
SuccessExitStatus = 15;
|
||||
};
|
||||
Install = {
|
||||
WantedBy = []; # Lazy start by socket
|
||||
};
|
||||
};
|
||||
systemd.user.sockets.doom-emacs-server = {
|
||||
Socket = {
|
||||
ListenStream = "/run/user/%U/emacs/${doom-socket-name}";
|
||||
DirectoryMode = "0700";
|
||||
};
|
||||
Install = {
|
||||
WantedBy = ["sockets.target"];
|
||||
};
|
||||
};
|
||||
|
||||
xdg = {
|
||||
enable = true;
|
||||
configFile = {
|
||||
"doom-config/splash.png" = {
|
||||
source = ./static/splash.png;
|
||||
};
|
||||
"doom-config/config.el" = {
|
||||
source = ./static/config.el;
|
||||
};
|
||||
"doom-config/config.d/copilot.el" = {
|
||||
enable = cfg.enableCopilot;
|
||||
source = ./static/config.d/copilot.el;
|
||||
};
|
||||
"doom-config/packages/treesit-docgen.el" = {
|
||||
source = ./static/packages/treesit-docgen.el;
|
||||
};
|
||||
"doom-config/init.el" = {
|
||||
source = ./static/init.el;
|
||||
onChange = "${doom-setup} sync --force -e";
|
||||
};
|
||||
"doom-config/packages.el" = {
|
||||
source = ./static/packages.el;
|
||||
onChange = "${doom-setup} sync --force -u -e";
|
||||
};
|
||||
"doom-config/packages.d/copilot.el" = {
|
||||
enable = cfg.enableCopilot;
|
||||
source = ./static/packages.d/copilot.el;
|
||||
onChange = "${doom-setup} sync --force -u -e";
|
||||
};
|
||||
"doom-config/packages.d/tidal.el" = {
|
||||
enable = cfg.enableTidal;
|
||||
source = ./static/packages.d/tidal.el;
|
||||
onChange = "${doom-setup} sync --force -u -e";
|
||||
};
|
||||
"doom-emacs" = {
|
||||
source = builtins.fetchGit {
|
||||
url = "https://github.com/doomemacs/doomemacs";
|
||||
rev = "a0d6aac43fc94def29c98826e2f0088bcb703d13";
|
||||
};
|
||||
onChange = "${doom-setup} --force sync -u -e";
|
||||
};
|
||||
};
|
||||
desktopEntries = {
|
||||
emacs = {
|
||||
name = "Doom Emacs";
|
||||
genericName = "Text Editor";
|
||||
icon = ./static/icon.png;
|
||||
exec = "${wrapped-emacs}/bin/emacs %F";
|
||||
terminal = false;
|
||||
categories = ["Application" "Development" "TextEditor"];
|
||||
mimeType = ["text/*"];
|
||||
settings = {
|
||||
StartupWMClass = "Doom Emacs";
|
||||
};
|
||||
};
|
||||
emacsclient = {
|
||||
name = "Doom Emacs (Client)";
|
||||
genericName = "Text Editor";
|
||||
icon = ./static/icon.png;
|
||||
exec = ''
|
||||
sh -c "if [ -n \\"\\$*\\" ]; then exec ${wrapped-emacs}/bin/emacsclient --alternate-editor= --display=\\"\\$DISPLAY\\" \\"\\$@\\"; else exec emacsclient --alternate-editor= --create-frame; fi" sh %F
|
||||
'';
|
||||
terminal = false;
|
||||
categories = ["Application" "Development" "TextEditor"];
|
||||
mimeType = ["text/*"];
|
||||
settings = {
|
||||
StartupWMClass = "Doom Emacs";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
@@ -92,7 +92,7 @@
|
||||
;;collab ; buffers with friends
|
||||
(debugger +realgud +lsp) ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
docker
|
||||
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||
ein ; tame Jupyter notebooks with emacs
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 165 KiB |
@@ -1,20 +1,5 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.bluetooth;
|
||||
in {
|
||||
options = {
|
||||
hive.bluetooth.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Enable Bluetooth";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Enable Bluetooth
|
||||
flake.nixosModules.bluetooth = {
|
||||
hardware.bluetooth.enable = true;
|
||||
};
|
||||
}
|
||||
|
||||
17
modules/hardware/ckb-next.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
flake.nixosModules.ckb-next = {pkgs, ...}: {
|
||||
# Corsair drivers
|
||||
hardware.ckb-next = {
|
||||
enable = true;
|
||||
# Workarount until https://github.com/NixOS/nixpkgs/issues/444209
|
||||
# is fixed
|
||||
package = pkgs.ckb-next.overrideAttrs (prev: {
|
||||
cmakeFlags =
|
||||
(prev.cmakeFlags or [])
|
||||
++ [
|
||||
"-DUSE_DBUS_MENU=0"
|
||||
];
|
||||
});
|
||||
};
|
||||
};
|
||||
}
|
||||
47
modules/hardware/nvidia.nix
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
flake.nixosModules.nvidia = {
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# Enable OpenGL
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
extraPackages = [pkgs.rocmPackages.clr];
|
||||
};
|
||||
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
services.xserver.videoDrivers = ["nvidia"];
|
||||
|
||||
hardware.nvidia = {
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||
# of just the bare essentials.
|
||||
powerManagement.enable = false;
|
||||
|
||||
# Fine-grained power management. Turns off GPU when not in use.
|
||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
open = false;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,75 +1,72 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.sound;
|
||||
in {
|
||||
options = {
|
||||
hive.sound = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Enable sound with pipewire.";
|
||||
};
|
||||
noisetorch = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Enable Noisetorch for noise cancellation.";
|
||||
};
|
||||
noisetorch-threshold = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = -1;
|
||||
description = "Set the noise cancellation threshold for Noisetorch.";
|
||||
flake.nixosModules.sound = {
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.sound;
|
||||
in {
|
||||
options = {
|
||||
hive.sound = {
|
||||
noisetorch = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Enable Noisetorch for noise cancellation.";
|
||||
};
|
||||
noisetorch-threshold = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = -1;
|
||||
description = "Set the noise cancellation threshold for Noisetorch.";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Enable sound with pipewire.
|
||||
services.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
# If you want to use JACK applications, uncomment this
|
||||
#jack.enable = true;
|
||||
config = {
|
||||
# Enable sound with pipewire.
|
||||
services.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
# If you want to use JACK applications, uncomment this
|
||||
#jack.enable = true;
|
||||
|
||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
||||
# no need to redefine it in your config for now)
|
||||
#media-session.enable = true;
|
||||
};
|
||||
programs.noisetorch.enable = cfg.noisetorch;
|
||||
systemd.user.services.noisetorch-autoload = lib.mkIf cfg.noisetorch {
|
||||
description = "Automatically load Noisetorch on user login";
|
||||
after = ["pipewire.service"];
|
||||
requires = ["pipewire.service"];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.writeShellScript "load-noisetorch" ''
|
||||
set -euo pipefail
|
||||
NOISETORCH="${pkgs.noisetorch}/bin/noisetorch"
|
||||
WPCTL="${pkgs.wireplumber}/bin/wpctl"
|
||||
GREP="${pkgs.gnugrep}/bin/grep"
|
||||
AWK="${pkgs.gawk}/bin/awk"
|
||||
HEAD="${pkgs.coreutils}/bin/head"
|
||||
|
||||
sleep 2
|
||||
$NOISETORCH -i -t ${toString cfg.noisetorch-threshold};
|
||||
sleep 2
|
||||
FILTER_ID=$($WPCTL status | $GREP NoiseTorch | $AWK 'match($0, /[0-9]+(\.[0-9]+)?/) { print substr($0, RSTART, RLENGTH) }' | head -n1)
|
||||
if [ -n "$FILTER_ID" ]; then
|
||||
$WPCTL set-default $FILTER_ID
|
||||
else
|
||||
echo "Noisetorch filter not found, skipping setting default source."
|
||||
fi
|
||||
''}";
|
||||
ExecStop = "${pkgs.noisetorch}/bin/noisetorch -u";
|
||||
RemainAfterExit = true;
|
||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
||||
# no need to redefine it in your config for now)
|
||||
#media-session.enable = true;
|
||||
};
|
||||
programs.noisetorch.enable = cfg.noisetorch;
|
||||
systemd.user.services.noisetorch-autoload = lib.mkIf cfg.noisetorch {
|
||||
description = "Automatically load Noisetorch on user login";
|
||||
after = ["pipewire.service"];
|
||||
requires = ["pipewire.service"];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.writeShellScript "load-noisetorch" ''
|
||||
set -euo pipefail
|
||||
NOISETORCH="${pkgs.noisetorch}/bin/noisetorch"
|
||||
WPCTL="${pkgs.wireplumber}/bin/wpctl"
|
||||
GREP="${pkgs.gnugrep}/bin/grep"
|
||||
AWK="${pkgs.gawk}/bin/awk"
|
||||
HEAD="${pkgs.coreutils}/bin/head"
|
||||
|
||||
sleep 2
|
||||
$NOISETORCH -i -t ${toString cfg.noisetorch-threshold};
|
||||
sleep 2
|
||||
FILTER_ID=$($WPCTL status | $GREP NoiseTorch | $AWK 'match($0, /[0-9]+(\.[0-9]+)?/) { print substr($0, RSTART, RLENGTH) }' | head -n1)
|
||||
if [ -n "$FILTER_ID" ]; then
|
||||
$WPCTL set-default $FILTER_ID
|
||||
else
|
||||
echo "Noisetorch filter not found, skipping setting default source."
|
||||
fi
|
||||
''}";
|
||||
ExecStop = "${pkgs.noisetorch}/bin/noisetorch -u";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
wantedBy = ["default.target"];
|
||||
};
|
||||
wantedBy = ["default.target"];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,20 +1,5 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.yubikey;
|
||||
in {
|
||||
options = {
|
||||
hive.yubikey.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Enable Yubikey support.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
{self, ...}: {
|
||||
flake.nixosModules.yubikey = {pkgs, ...}: {
|
||||
services.udev.packages = with pkgs; [
|
||||
yubikey-personalization
|
||||
];
|
||||
@@ -32,4 +17,67 @@ in {
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
};
|
||||
|
||||
flake.homeModules.yubikey = {
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.yubikey;
|
||||
in {
|
||||
options.hive.yubikey = with lib; {
|
||||
pinentry = mkOption {
|
||||
type = types.enum ["qt" "gnome3"];
|
||||
default = "qt";
|
||||
description = "The pinentry flavour to use";
|
||||
};
|
||||
withCCID = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Use stand-alone CCID (instead of a running pcscd service)";
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
mutableKeys = false;
|
||||
mutableTrust = false;
|
||||
publicKeys = [
|
||||
{
|
||||
source = self + /static/keys/my_pub.asc;
|
||||
trust = "ultimate";
|
||||
}
|
||||
];
|
||||
scdaemonSettings = lib.mkIf (!cfg.withCCID) {
|
||||
disable-ccid = true;
|
||||
};
|
||||
};
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
enableZshIntegration = true;
|
||||
pinentry =
|
||||
if cfg.pinentry == "gnome3"
|
||||
then {
|
||||
package = pkgs.pinentry-gnome3;
|
||||
program = "pinentry-gnome3";
|
||||
}
|
||||
else if cfg.pinentry == "qt"
|
||||
then {
|
||||
package = pkgs.pinentry-qt;
|
||||
program = "pinentry-qt";
|
||||
}
|
||||
else {};
|
||||
sshKeys = [config.programs.git.signing.key];
|
||||
};
|
||||
home.sessionVariables = {
|
||||
SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh";
|
||||
};
|
||||
systemd.user.settings.Manager.DefaultEnvironment = {
|
||||
SSH_AUTH_SOCK = "/run/user/%U/gnupg/S.gpg-agent.ssh";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
./doom.nix
|
||||
];
|
||||
}
|
||||
@@ -1,288 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.doom;
|
||||
doom-pkgs = with pkgs; [
|
||||
cmake
|
||||
emacs-all-the-icons-fonts
|
||||
fira
|
||||
fira-code-symbols
|
||||
fontconfig
|
||||
gcc
|
||||
nerd-fonts.fira-code
|
||||
];
|
||||
default-core-pkgs = with pkgs; [
|
||||
(ripgrep.override {withPCRE2 = true;})
|
||||
(aspellWithDicts (d: [d.en d.de d.en-computers d.en-science]))
|
||||
binutils
|
||||
editorconfig-core-c
|
||||
fd
|
||||
git
|
||||
gnumake
|
||||
gnutls
|
||||
ispell
|
||||
libtool
|
||||
vscode-langservers-extracted
|
||||
(pkgs.stdenvNoCC.mkDerivation {
|
||||
name = "epdfinfo";
|
||||
phases = "installPhase";
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
ln -s $(${pkgs.findutils}/bin/find ${pkgs.emacsPackages.pdf-tools}/ -name epdfinfo) $out/bin/
|
||||
'';
|
||||
})
|
||||
];
|
||||
default-shell-pkgs = with pkgs; [
|
||||
bash-language-server
|
||||
];
|
||||
default-nix-pkgs = with pkgs; [
|
||||
alejandra
|
||||
nixd
|
||||
];
|
||||
default-latex-pkgs = with pkgs; [
|
||||
pandoc
|
||||
poppler
|
||||
texlab
|
||||
texlive.combined.scheme-medium
|
||||
];
|
||||
default-cxx-pkgs = with pkgs; [
|
||||
clang
|
||||
clang-tools
|
||||
cmake
|
||||
cppcheck
|
||||
doxygen
|
||||
gdb
|
||||
ninja
|
||||
];
|
||||
default-python-pkgs = with pkgs; [
|
||||
python312
|
||||
python312Packages.black
|
||||
pyright
|
||||
];
|
||||
doom-path-pkgs =
|
||||
lib.optionals cfg.withLatexPkgs (cfg.overrideLatexPkgs default-latex-pkgs)
|
||||
++ lib.optionals cfg.withShellPkgs (cfg.overrideShellPkgs default-shell-pkgs)
|
||||
++ lib.optionals cfg.withNixPkgs (cfg.overrideNixPkgs default-nix-pkgs)
|
||||
++ lib.optionals cfg.withCXXPkgs (cfg.overrideCXXPkgs default-cxx-pkgs)
|
||||
++ lib.optionals cfg.withPythonPkgs (cfg.overridePythonPkgs default-python-pkgs)
|
||||
++ lib.optional cfg.enableCopilot pkgs.unstable.copilot-language-server
|
||||
++ default-core-pkgs;
|
||||
doom-socket-name = "main";
|
||||
wrapped-emacs = pkgs.symlinkJoin {
|
||||
name = "wrapped-emacs";
|
||||
paths = [pkgs.emacs30];
|
||||
nativeBuildInputs = [pkgs.makeBinaryWrapper];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/emacs \
|
||||
--prefix PATH : ${lib.makeBinPath doom-path-pkgs} \
|
||||
--add-flags "--init-directory=${config.xdg.configHome}/doom-emacs" \
|
||||
--set DOOMDIR "${config.home.sessionVariables.DOOMDIR}" \
|
||||
--set DOOMLOCALDIR "${config.home.sessionVariables.DOOMLOCALDIR}"
|
||||
|
||||
wrapProgram $out/bin/emacsclient \
|
||||
--prefix PATH : ${lib.makeBinPath doom-path-pkgs} \
|
||||
--set DOOMDIR "${config.home.sessionVariables.DOOMDIR}" \
|
||||
--set DOOMLOCALDIR "${config.home.sessionVariables.DOOMLOCALDIR}"
|
||||
'';
|
||||
};
|
||||
doom-setup = pkgs.writeShellScript "doom-setup" ''
|
||||
export PATH="${lib.makeBinPath doom-path-pkgs}:$PATH"
|
||||
export EMACS="${wrapped-emacs}/bin/emacs"
|
||||
export DOOMDIR="${config.home.sessionVariables.DOOMDIR}"
|
||||
export DOOMLOCALDIR="${config.home.sessionVariables.DOOMLOCALDIR}"
|
||||
if [ ! -d "$DOOMLOCALDIR" ]; then
|
||||
${config.xdg.configHome}/doom-emacs/bin/doom install --force --no-env
|
||||
else
|
||||
${config.xdg.configHome}/doom-emacs/bin/doom "$@"
|
||||
fi
|
||||
'';
|
||||
doom-open = pkgs.writeShellScriptBin "doom-open" ''
|
||||
export EMACS_SOCKET_NAME="$XDG_RUNTIME_DIR/emacs/${doom-socket-name}"
|
||||
if [ -t 0 ]; then
|
||||
exec ${wrapped-emacs}/bin/emacsclient -t "$@"
|
||||
else
|
||||
exec ${wrapped-emacs}/bin/emacsclient -c "$@"
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
options.hive.doom = {
|
||||
enable = lib.mkEnableOption "Enable Doom Emacs";
|
||||
asDefaultEditor = lib.mkEnableOption "set the EDITOR variable to use the current emacs server (graphical/non-graphical)";
|
||||
enableCopilot = lib.mkEnableOption "Enable Copilot in Doom Emacs";
|
||||
enableTidal = lib.mkEnableOption "Enable TidalCycles";
|
||||
withLatexPkgs = lib.mkEnableOption "Enable LaTeX packages in doom path";
|
||||
withShellPkgs = lib.mkEnableOption "Enable shell packages in doom path";
|
||||
withNixPkgs = lib.mkEnableOption "Enable LaTeX packages in doom path";
|
||||
withCXXPkgs = lib.mkEnableOption "Enable CXX packages in doom path";
|
||||
withPythonPkgs = lib.mkEnableOption "Enable python packages in doom path";
|
||||
overrideLatexPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
texlive.combined.scheme-full
|
||||
]
|
||||
'';
|
||||
description = "Override the default LaTeX packages in the doom path.";
|
||||
};
|
||||
overrideShellPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
shellcheck
|
||||
]
|
||||
'';
|
||||
description = "Override the default shell packages in the doom path.";
|
||||
};
|
||||
overrideNixPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
nixpkgs-fmt
|
||||
]
|
||||
'';
|
||||
description = "Override the default Nix packages in the doom path.";
|
||||
};
|
||||
overrideCXXPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
openmp
|
||||
]
|
||||
'';
|
||||
description = "Override the default C++ packages in the doom path.";
|
||||
};
|
||||
overridePythonPkgs = lib.mkOption {
|
||||
type = lib.types.functionTo (lib.types.listOf lib.types.package);
|
||||
default = pkgs: pkgs;
|
||||
example = ''
|
||||
prev: with pkgs; [
|
||||
pythonPackages.black
|
||||
]
|
||||
'';
|
||||
description = "Override the default Python packages in the doom path.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
programs.emacs = {
|
||||
enable = true;
|
||||
package = wrapped-emacs;
|
||||
};
|
||||
|
||||
home = {
|
||||
sessionPath = ["${config.xdg.configHome}/doom-emacs/bin"];
|
||||
sessionVariables =
|
||||
{
|
||||
DOOMDIR = "${config.xdg.configHome}/doom-config";
|
||||
DOOMLOCALDIR = "${config.xdg.configHome}/doom-local";
|
||||
}
|
||||
// lib.optionalAttrs cfg.asDefaultEditor {
|
||||
EDITOR = "${doom-open.name}";
|
||||
};
|
||||
packages = doom-pkgs ++ lib.optional cfg.asDefaultEditor doom-open;
|
||||
};
|
||||
|
||||
systemd.user.services.doom-emacs-server = {
|
||||
Unit = {
|
||||
Description = "Doom Emacs Server";
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${wrapped-emacs}/bin/emacs --fg-daemon=${doom-socket-name}";
|
||||
SuccessExitStatus = 15;
|
||||
};
|
||||
Install = {
|
||||
WantedBy = []; # Lazy start by socket
|
||||
};
|
||||
};
|
||||
systemd.user.sockets.doom-emacs-server = {
|
||||
Socket = {
|
||||
ListenStream = "/run/user/%U/emacs/${doom-socket-name}";
|
||||
DirectoryMode = "0700";
|
||||
};
|
||||
Install = {
|
||||
WantedBy = ["sockets.target"];
|
||||
};
|
||||
};
|
||||
|
||||
xdg = {
|
||||
enable = true;
|
||||
configFile = {
|
||||
"doom-config/splash.png" = {
|
||||
source = ./static/splash.png;
|
||||
};
|
||||
"doom-config/config.el" = {
|
||||
source = ./static/config.el;
|
||||
};
|
||||
"doom-config/config.d/copilot.el" = {
|
||||
enable = cfg.enableCopilot;
|
||||
source = ./static/config.d/copilot.el;
|
||||
};
|
||||
"doom-config/packages/treesit-docgen.el" = {
|
||||
source = ./static/packages/treesit-docgen.el;
|
||||
};
|
||||
"doom-config/init.el" = {
|
||||
source = ./static/init.el;
|
||||
onChange = "${doom-setup} sync --force -e";
|
||||
};
|
||||
"doom-config/packages.el" = {
|
||||
source = ./static/packages.el;
|
||||
onChange = "${doom-setup} sync --force -u -e";
|
||||
};
|
||||
"doom-config/packages.d/copilot.el" = {
|
||||
enable = cfg.enableCopilot;
|
||||
source = ./static/packages.d/copilot.el;
|
||||
onChange = "${doom-setup} sync --force -u -e";
|
||||
};
|
||||
"doom-config/packages.d/tidal.el" = {
|
||||
enable = cfg.enableTidal;
|
||||
source = ./static/packages.d/tidal.el;
|
||||
onChange = "${doom-setup} sync --force -u -e";
|
||||
};
|
||||
"doom-emacs" = {
|
||||
source = builtins.fetchGit {
|
||||
url = "https://github.com/doomemacs/doomemacs";
|
||||
rev = "a0d6aac43fc94def29c98826e2f0088bcb703d13";
|
||||
};
|
||||
onChange = "${doom-setup} --force sync -u -e";
|
||||
};
|
||||
};
|
||||
desktopEntries = {
|
||||
emacs = {
|
||||
name = "Doom Emacs";
|
||||
genericName = "Text Editor";
|
||||
icon = ./static/icon.png;
|
||||
exec = "${wrapped-emacs}/bin/emacs %F";
|
||||
terminal = false;
|
||||
categories = ["Application" "Development" "TextEditor"];
|
||||
mimeType = ["text/*"];
|
||||
settings = {
|
||||
StartupWMClass = "Doom Emacs";
|
||||
};
|
||||
};
|
||||
emacsclient = {
|
||||
name = "Doom Emacs (Client)";
|
||||
genericName = "Text Editor";
|
||||
icon = ./static/icon.png;
|
||||
exec = ''
|
||||
sh -c "if [ -n \\"\\$*\\" ]; then exec ${wrapped-emacs}/bin/emacsclient --alternate-editor= --display=\\"\\$DISPLAY\\" \\"\\$@\\"; else exec emacsclient --alternate-editor= --create-frame; fi" sh %F
|
||||
'';
|
||||
terminal = false;
|
||||
categories = ["Application" "Development" "TextEditor"];
|
||||
mimeType = ["text/*"];
|
||||
settings = {
|
||||
StartupWMClass = "Doom Emacs";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.flameshot;
|
||||
in {
|
||||
options.hive.flameshot.enable = lib.mkEnableOption "Flameshot service.";
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.flameshot.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.gotify;
|
||||
cli-config = {
|
||||
token = config.sops.placeholder.${cfg.cli.tokenSopsKey};
|
||||
inherit (cfg.cli) url defaultPriority;
|
||||
};
|
||||
daemon-config = {
|
||||
gotify =
|
||||
{
|
||||
inherit (cfg.daemon) url;
|
||||
token = config.sops.placeholder.${cfg.daemon.tokenSopsKey};
|
||||
auto_delete = cfg.daemon.autoDelete;
|
||||
min_priority = cfg.daemon.minPriority;
|
||||
}
|
||||
// lib.optionalAttrs (cfg.daemon.onMsgCommand != null) {
|
||||
on_msg_command = cfg.daemon.onMsgCommand;
|
||||
};
|
||||
};
|
||||
|
||||
valueToString = val:
|
||||
if (builtins.typeOf val == "string")
|
||||
then "\"${val}\""
|
||||
else
|
||||
(
|
||||
if (builtins.typeOf val == "int")
|
||||
then "${toString val}"
|
||||
else
|
||||
(
|
||||
if (builtins.typeOf val == "bool")
|
||||
then
|
||||
(
|
||||
if val
|
||||
then "true"
|
||||
else "false"
|
||||
)
|
||||
else (abort "Expected string int or bool, got ${builtins.typeOf val} with value ${toString val}")
|
||||
)
|
||||
);
|
||||
|
||||
toTOML = attrs:
|
||||
lib.concatStrings (
|
||||
lib.attrValues (
|
||||
lib.mapAttrs (
|
||||
name: config: ''
|
||||
[${name}]
|
||||
${lib.concatStringsSep "\n" (lib.attrValues (lib.mapAttrs (k: v: "${k} = ${valueToString v}") config))}
|
||||
''
|
||||
)
|
||||
attrs
|
||||
)
|
||||
);
|
||||
in {
|
||||
options.hive.gotify = {
|
||||
cli = {
|
||||
enable = lib.mkEnableOption "Enable Gotify cli tool";
|
||||
url = lib.mkOption {
|
||||
type = lib.types.singleLineStr;
|
||||
default = "https://${cfg.host}:${toString cfg.port}";
|
||||
example = "http://gotify.example.com";
|
||||
description = "The http url of the gotify server (for the cli tool)";
|
||||
};
|
||||
tokenSopsKey = lib.mkOption {
|
||||
type = lib.types.singleLineStr;
|
||||
description = "The sops key of the token secret";
|
||||
};
|
||||
defaultPriority = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = 0;
|
||||
example = 3;
|
||||
description = "The default priority of the dispatched messages";
|
||||
};
|
||||
};
|
||||
daemon = {
|
||||
enable = lib.mkEnableOption "Enable the Gotify desktop notification daemon";
|
||||
url = lib.mkOption {
|
||||
type = lib.types.singleLineStr;
|
||||
default = "wss://${cfg.host}:${toString cfg.port}";
|
||||
example = "ws://gotify.example.com";
|
||||
description = "The websocket url of the gotify server (for the desktop tool)";
|
||||
};
|
||||
tokenSopsKey = lib.mkOption {
|
||||
type = lib.types.singleLineStr;
|
||||
description = "The sops key of the token secret";
|
||||
};
|
||||
autoDelete = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
example = true;
|
||||
description = "Delete messages that have been handled";
|
||||
};
|
||||
minPriority = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = 0;
|
||||
example = 1;
|
||||
description = "Ignore messages with priority lower than given value";
|
||||
};
|
||||
onMsgCommand = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.singleLineStr;
|
||||
default = null;
|
||||
example = "/usr/bin/beep";
|
||||
description = '' A command to tun for each message with env vars
|
||||
GOTIFY_MSG_PRIORITY, GOTIFY_MSG_TITLE and GOTIFY_MSG_TEXTs
|
||||
If unset use the standard desktop notification passing
|
||||
'';
|
||||
};
|
||||
};
|
||||
host = lib.mkOption {
|
||||
type = lib.types.singleLineStr;
|
||||
example = "example.com";
|
||||
description = "The hostname of the gotify server";
|
||||
};
|
||||
port = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = 443;
|
||||
example = 443;
|
||||
description = "The port of the gotify server";
|
||||
};
|
||||
};
|
||||
|
||||
config = let
|
||||
cli = lib.mkIf cfg.cli.enable {
|
||||
home.packages = [pkgs.gotify-cli];
|
||||
sops.templates."gotify-cli-json" = {
|
||||
content = lib.generators.toJSON {} cli-config;
|
||||
path = "${config.xdg.configHome}/gotify/cli.json";
|
||||
};
|
||||
};
|
||||
daemon = lib.mkIf cfg.daemon.enable {
|
||||
systemd.user.services.gotify-desktop = {
|
||||
Unit = {
|
||||
Description = "Gotify Desktop notification service";
|
||||
After = ["sops-nix.service"]; # After the secrets have been rendered
|
||||
};
|
||||
Service = {
|
||||
ExecStart = "${pkgs.gotify-desktop}/bin/gotify-desktop";
|
||||
};
|
||||
Install = {
|
||||
WantedBy = ["multi-user.target"];
|
||||
};
|
||||
};
|
||||
sops.templates."gotify-daemon-toml" = {
|
||||
content = toTOML daemon-config;
|
||||
path = "${config.xdg.configHome}/gotify-desktop/config.toml";
|
||||
};
|
||||
};
|
||||
in
|
||||
lib.mkMerge [cli daemon];
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{lib, ...}: {
|
||||
options.hive.hyprland = {
|
||||
enable = lib.mkEnableOption "Enable Hyprland configuration";
|
||||
};
|
||||
|
||||
imports = [
|
||||
./config.nix
|
||||
./hyprland.nix
|
||||
];
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.hive.hyprland;
|
||||
in {
|
||||
config = lib.mkIf cfg.enable {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = false;
|
||||
systemd.variables = ["--all"];
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
services.hypridle.enable = true;
|
||||
|
||||
services.wpaperd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default = {
|
||||
path = ../../../static/wallpaper/stones.jpg;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||