Compare commits
No commits in common. "master" and "nebula" have entirely different histories.
257
flake.lock
257
flake.lock
|
@ -1,27 +1,5 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"arion": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"haskell-flake": "haskell-flake",
|
|
||||||
"hercules-ci-effects": "hercules-ci-effects",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1720147808,
|
|
||||||
"narHash": "sha256-hlWEQGUbIwYb+vnd8egzlW/P++yKu3HjV/rOdOPVank=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "arion",
|
|
||||||
"rev": "236f9dd82d6ef6a2d9987c7a7df3e75f1bc8b318",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "arion",
|
|
||||||
"rev": "236f9dd82d6ef6a2d9987c7a7df3e75f1bc8b318",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-schemes": {
|
"base16-schemes": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -40,17 +18,18 @@
|
||||||
},
|
},
|
||||||
"devshell": {
|
"devshell": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixvim",
|
"nixvim",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722113426,
|
"lastModified": 1717408969,
|
||||||
"narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=",
|
"narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "devshell",
|
"repo": "devshell",
|
||||||
"rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae",
|
"rev": "1ebbe68d57457c8cae98145410b164b5477761f4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -111,48 +90,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"arion",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1719994518,
|
|
||||||
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"arion",
|
|
||||||
"hercules-ci-effects",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1712014858,
|
|
||||||
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"id": "flake-parts",
|
|
||||||
"type": "indirect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts_3": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nixvim",
|
"nixvim",
|
||||||
|
@ -160,11 +97,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1722555600,
|
"lastModified": 1717285511,
|
||||||
"narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
|
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
|
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -173,6 +110,24 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701680307,
|
||||||
|
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"git-hooks": {
|
"git-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_2",
|
||||||
|
@ -187,11 +142,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724857454,
|
"lastModified": 1719259945,
|
||||||
"narHash": "sha256-Qyl9Q4QMTLZnnBb/8OuQ9LSkzWjBU1T5l5zIzTxkkhk=",
|
"narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "4509ca64f1084e73bc7a721b20c669a8d4c5ebe6",
|
"rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -222,44 +177,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"haskell-flake": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1675296942,
|
|
||||||
"narHash": "sha256-u1X1sblozi5qYEcLp1hxcyo8FfDHnRUVX3dJ/tW19jY=",
|
|
||||||
"owner": "srid",
|
|
||||||
"repo": "haskell-flake",
|
|
||||||
"rev": "c2cafce9d57bfca41794dc3b99c593155006c71e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "srid",
|
|
||||||
"ref": "0.1.0",
|
|
||||||
"repo": "haskell-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hercules-ci-effects": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts_2",
|
|
||||||
"nixpkgs": [
|
|
||||||
"arion",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1719226092,
|
|
||||||
"narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "hercules-ci-effects",
|
|
||||||
"rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "hercules-ci-effects",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -267,11 +184,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720042825,
|
"lastModified": 1718530513,
|
||||||
"narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=",
|
"narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073",
|
"rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -289,11 +206,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720042825,
|
"lastModified": 1718530513,
|
||||||
"narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=",
|
"narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073",
|
"rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -305,11 +222,11 @@
|
||||||
},
|
},
|
||||||
"impermanence": {
|
"impermanence": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724489415,
|
"lastModified": 1719091691,
|
||||||
"narHash": "sha256-ey8vhwY/6XCKoh7fyTn3aIQs7WeYSYtLbYEG87VCzX4=",
|
"narHash": "sha256-AxaLX5cBEcGtE02PeGsfscSb/fWMnyS7zMWBXQWDKbE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "impermanence",
|
"repo": "impermanence",
|
||||||
"rev": "c7f5b394397398c023000cf843986ee2571a1fd7",
|
"rev": "23c1f06316b67cb5dabdfe2973da3785cfe9c34a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -345,11 +262,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724561770,
|
"lastModified": 1719128254,
|
||||||
"narHash": "sha256-zv8C9RNa86CIpyHwPIVO/k+5TfM8ZbjGwOOpTe1grls=",
|
"narHash": "sha256-I7jMpq0CAOZA/i70+HDQO/ulLttyQu/K70cSESiMX7A=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "ac5694a0b855a981e81b4d9f14052e3ff46ca39e",
|
"rev": "50581970f37f06a4719001735828519925ef8310",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -361,11 +278,11 @@
|
||||||
"nix-secrets": {
|
"nix-secrets": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726340825,
|
"lastModified": 1719601133,
|
||||||
"narHash": "sha256-6gv36ea3aAjJH7osZVzVU0GRoJeVR+iwSP9bSaJC+MI=",
|
"narHash": "sha256-2+e92LyX1fFj3mIZft+K8OzR9NT/1xtheO8hO/3DyRc=",
|
||||||
"ref": "refs/heads/master",
|
"ref": "refs/heads/master",
|
||||||
"rev": "73d4d304a201f7db200ffb5955c8a2f521f635a7",
|
"rev": "278ccbbd646e86cab5fd38d43d9134270d8123d0",
|
||||||
"revCount": 160,
|
"revCount": 141,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "ssh://git@git.bitlab21.com/sam/nix-secrets.git"
|
"url": "ssh://git@git.bitlab21.com/sam/nix-secrets.git"
|
||||||
},
|
},
|
||||||
|
@ -376,16 +293,16 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720031269,
|
"lastModified": 1719426051,
|
||||||
"narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=",
|
"narHash": "sha256-yJL9VYQhaRM7xs0M867ZFxwaONB9T2Q4LnGo1WovuR4=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9f4128e00b0ae8ec65918efeba59db998750ead6",
|
"rev": "89c49874fb15f4124bf71ca5f42a04f2ee5825fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-24.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
@ -407,27 +324,27 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1721524707,
|
"lastModified": 1719099622,
|
||||||
"narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=",
|
"narHash": "sha256-YzJECAxFt+U5LPYf/pCwW/e1iUd2PF21WITHY9B/BAs=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "556533a23879fc7e5f98dd2e0b31a6911a213171",
|
"rev": "5e8e3b89adbd0be63192f6e645e0a54080004924",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "release-24.05",
|
"ref": "release-23.11",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724819573,
|
"lastModified": 1719254875,
|
||||||
"narHash": "sha256-GnR7/ibgIH1vhoy8cYdmXE6iyZqKqFxQSVkFgosBh6w=",
|
"narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "71e91c409d1e654808b2621f28a327acfdad8dc2",
|
"rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -437,27 +354,11 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1724855419,
|
|
||||||
"narHash": "sha256-WXHSyOF4nBX0cvHN3DfmEMcLOVdKH6tnMk9FQ8wTNRc=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "ae2fc9e0e42caaf3f068c1bfdc11c71734125e06",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-24.05",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixvim": {
|
"nixvim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"devshell": "devshell",
|
"devshell": "devshell",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"flake-parts": "flake-parts_3",
|
"flake-parts": "flake-parts",
|
||||||
"git-hooks": "git-hooks",
|
"git-hooks": "git-hooks",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"nix-darwin": "nix-darwin",
|
"nix-darwin": "nix-darwin",
|
||||||
|
@ -467,11 +368,11 @@
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724910205,
|
"lastModified": 1719469291,
|
||||||
"narHash": "sha256-eH2yPsTkaGp87rtxATx9d2dGBQUXH3kQPEOTKmaEb0s=",
|
"narHash": "sha256-Efir01r7ThPabDBFOygX1UDyerJFHelbRGdMo/VNw14=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixvim",
|
"repo": "nixvim",
|
||||||
"rev": "d150ce320e4eda99d8865bbd4c74ee8c47a88097",
|
"rev": "8f52e4d1e34039937efb0ee05825b9963ef29739",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -483,11 +384,11 @@
|
||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725083573,
|
"lastModified": 1719596768,
|
||||||
"narHash": "sha256-F9WeDQi+U1+y6BDGvW8PYyi9LALbpo4DlpzfZONh5a0=",
|
"narHash": "sha256-quSWztqqMxvSJIKddYp1D0GdR7Kg8JjEVCIzMbtBTQ4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "83ead973ba76b6ecf2d72dff9b60b56749e29518",
|
"rev": "35e48702118124ec52a071e300f55c78a4b7b338",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -498,13 +399,12 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"arion": "arion",
|
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"impermanence": "impermanence",
|
"impermanence": "impermanence",
|
||||||
"nix-colors": "nix-colors",
|
"nix-colors": "nix-colors",
|
||||||
"nix-secrets": "nix-secrets",
|
"nix-secrets": "nix-secrets",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
|
@ -519,11 +419,11 @@
|
||||||
"nixpkgs-stable": "nixpkgs-stable"
|
"nixpkgs-stable": "nixpkgs-stable"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1723501126,
|
"lastModified": 1719268571,
|
||||||
"narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=",
|
"narHash": "sha256-pcUk2Fg5vPXLUEnFI97qaB8hto/IToRfqskFqsjvjb8=",
|
||||||
"owner": "mic92",
|
"owner": "mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "be0eec2d27563590194a9206f551a6f73d52fa34",
|
"rev": "c2ea1186c0cbfa4d06d406ae50f3e4b085ddc9b3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -532,6 +432,21 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
@ -540,11 +455,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724833132,
|
"lastModified": 1719243788,
|
||||||
"narHash": "sha256-F4djBvyNRAXGusJiNYInqR6zIMI3rvlp6WiKwsRISos=",
|
"narHash": "sha256-9T9mSY35EZSM1KAwb7K9zwQ78qTlLjosZgtUGnw4rn4=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "3ffd842a5f50f435d3e603312eefa4790db46af5",
|
"rev": "065a23edceff48f948816b795ea8cc6c0dee7cdf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
15
flake.nix
15
flake.nix
|
@ -21,11 +21,6 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Arion for docker
|
|
||||||
arion = {
|
|
||||||
url = "github:hercules-ci/arion/236f9dd82d6ef6a2d9987c7a7df3e75f1bc8b318";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Nix colors
|
# Nix colors
|
||||||
nix-colors.url = "github:misterio77/nix-colors";
|
nix-colors.url = "github:misterio77/nix-colors";
|
||||||
|
|
||||||
|
@ -130,16 +125,6 @@
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
citadel = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit specialArgs;
|
|
||||||
modules = [
|
|
||||||
./hosts/citadel
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,80 +0,0 @@
|
||||||
{config, ...}: {
|
|
||||||
imports = [
|
|
||||||
# Import users
|
|
||||||
./users/sam
|
|
||||||
|
|
||||||
./common/core
|
|
||||||
|
|
||||||
# Import optional
|
|
||||||
./common/optional/git.nix
|
|
||||||
./common/optional/sops.nix
|
|
||||||
./common/optional/syncthing.nix
|
|
||||||
./common/optional/desktop/dwm
|
|
||||||
./common/optional/desktop/common/themes/standard-dark.nix
|
|
||||||
./common/optional/notes.nix
|
|
||||||
./common/optional/yazi.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
colorScheme = {
|
|
||||||
slug = "serene";
|
|
||||||
name = "Serene";
|
|
||||||
author = "Bitlab21";
|
|
||||||
palette = {
|
|
||||||
base00 = "#1F1F28";
|
|
||||||
base01 = "#16161D";
|
|
||||||
base02 = "#223249";
|
|
||||||
base03 = "#363646";
|
|
||||||
base04 = "#727169";
|
|
||||||
base05 = "#DCD7BA";
|
|
||||||
base06 = "#C8C093";
|
|
||||||
base07 = "#717C7C";
|
|
||||||
base08 = "#C34043";
|
|
||||||
base09 = "#FFA066";
|
|
||||||
base0A = "#C0A36E";
|
|
||||||
base0B = "#76946A";
|
|
||||||
base0C = "#6A9589";
|
|
||||||
base0D = "#7E9CD8";
|
|
||||||
base0E = "#957FB8";
|
|
||||||
base0F = "#D27E99";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file.".Xresources" = {
|
|
||||||
recursive = true;
|
|
||||||
text = ''
|
|
||||||
! st
|
|
||||||
st.alpha: 0.8
|
|
||||||
St.font: monospace:pixelsize=31:antialias=true:autohint=true;
|
|
||||||
St.font2: NotoColorEmoji:pixelsize=24:antialias=true:autohint=true;
|
|
||||||
|
|
||||||
! dwm
|
|
||||||
dwm.borderpx: 6
|
|
||||||
dwm.font: monospace:size=14
|
|
||||||
dwm.col_base00: #${config.colorScheme.colors.base00}
|
|
||||||
dwm.col_base03: #${config.colorScheme.colors.base03}
|
|
||||||
dwm.col_base04: #${config.colorScheme.colors.base04}
|
|
||||||
dwm.col_base05: #${config.colorScheme.colors.base05}
|
|
||||||
dwm.col_base08: #${config.colorScheme.colors.base08}
|
|
||||||
dwm.col_base0B: #${config.colorScheme.colors.base0B}
|
|
||||||
|
|
||||||
! dmenu
|
|
||||||
dmenu.font: monospace:size=14
|
|
||||||
dmenu.font2: NotoColorEmoji:pixelsize=44:antialias=true:autohint=true
|
|
||||||
dmenu.topbar: 1
|
|
||||||
dmenu.normfgcolor: #${config.colorScheme.colors.base05}
|
|
||||||
dmenu.normbgcolor: #${config.colorScheme.colors.base03}
|
|
||||||
dmenu.selfgcolor: #${config.colorScheme.colors.base00}
|
|
||||||
dmenu.selbgcolor: #${config.colorScheme.colors.base0B}
|
|
||||||
|
|
||||||
Nsxiv.window.background: #${config.colorScheme.colors.base03}
|
|
||||||
Nsxiv.window.foreground: #${config.colorScheme.colors.base05}
|
|
||||||
Nsxiv.mark.foreground: #${config.colorScheme.colors.base08}
|
|
||||||
|
|
||||||
Nsxiv.bar.background: #${config.colorScheme.colors.base00}
|
|
||||||
Nsxiv.bar.foreground: #${config.colorScheme.colors.base05}
|
|
||||||
Nsxiv.bar.font: monospace:size=12
|
|
||||||
|
|
||||||
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -26,7 +26,6 @@
|
||||||
htop
|
htop
|
||||||
postgresql
|
postgresql
|
||||||
libqalculate
|
libqalculate
|
||||||
tmux
|
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
home.stateVersion = "24.05";
|
home.stateVersion = "24.05";
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
|
{ inputs, pkgs, ... }:
|
||||||
{
|
{
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nixvim.homeManagerModules.nixvim
|
inputs.nixvim.homeManagerModules.nixvim
|
||||||
./plugins
|
./plugins
|
||||||
|
@ -14,18 +11,10 @@
|
||||||
# Install home packages needed for nixvim
|
# Install home packages needed for nixvim
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.nixpkgs-fmt
|
pkgs.nixpkgs-fmt
|
||||||
pkgs.black
|
|
||||||
pkgs.yamllint
|
|
||||||
pkgs.yamlfmt
|
|
||||||
pkgs.prettierd
|
pkgs.prettierd
|
||||||
pkgs.sqlfmt
|
pkgs.sqlfmt
|
||||||
pkgs.nodePackages_latest.sql-formatter
|
|
||||||
pkgs.alejandra
|
|
||||||
pkgs.shellcheck
|
|
||||||
pkgs.shellharden
|
|
||||||
pkgs.shfmt
|
|
||||||
pkgs.stylua
|
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.nixvim = {
|
programs.nixvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableMan = true; # install man pages for nixvim options
|
enableMan = true; # install man pages for nixvim options
|
||||||
|
@ -53,11 +42,7 @@
|
||||||
let wiki_0.index = 'home'
|
let wiki_0.index = 'home'
|
||||||
let wiki_0.syntax = 'markdown'
|
let wiki_0.syntax = 'markdown'
|
||||||
let wiki_0.ext = '.md'
|
let wiki_0.ext = '.md'
|
||||||
|
|
||||||
" ==== dbui
|
|
||||||
let g:db_ui_hide_schemas = ['pg_catalog', 'pg_toast_temp.*', 'pg_toast']
|
|
||||||
let g:db_ui_use_nerd_fonts = 1
|
|
||||||
let g:db_ui_execute_on_save = 0
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,32 +2,32 @@
|
||||||
programs.nixvim.keymaps = [
|
programs.nixvim.keymaps = [
|
||||||
# Switching buffers
|
# Switching buffers
|
||||||
{
|
{
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
action = "<C-w>h";
|
action = "<C-W>h";
|
||||||
key = "<S-h>";
|
key = "<S-h>";
|
||||||
options = {
|
options = {
|
||||||
silent = true;
|
silent = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
action = "<C-w>j";
|
action = "<C-W>j";
|
||||||
key = "<S-j>";
|
key = "<S-j>";
|
||||||
options = {
|
options = {
|
||||||
silent = true;
|
silent = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
action = "<C-w>k";
|
action = "<C-W>k";
|
||||||
key = "<S-k>";
|
key = "<S-k>";
|
||||||
options = {
|
options = {
|
||||||
silent = true;
|
silent = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
action = "<C-w>l";
|
action = "<C-W>l";
|
||||||
key = "<S-l>";
|
key = "<S-l>";
|
||||||
options = {
|
options = {
|
||||||
silent = true;
|
silent = true;
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
# Toggle nvim-tree
|
# Toggle nvim-tree
|
||||||
{
|
{
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
action = "<cmd>NvimTreeFindFileToggle<CR>";
|
action = "<cmd>NvimTreeFindFileToggle<CR>";
|
||||||
key = "tt";
|
key = "tt";
|
||||||
options = {
|
options = {
|
||||||
|
@ -46,72 +46,40 @@
|
||||||
|
|
||||||
# Clear search highlighting
|
# Clear search highlighting
|
||||||
{
|
{
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
key = "<space><space>";
|
key = "<space><space>";
|
||||||
action = "<cmd>nohlsearch<CR>";
|
action = "<cmd>nohlsearch<CR>";
|
||||||
options = {noremap = true;};
|
options = { noremap = true; };
|
||||||
}
|
}
|
||||||
|
|
||||||
# Telescope Plugin
|
# Telescope Plugin
|
||||||
{
|
{
|
||||||
# find files
|
# find files
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
key = "<Leader>ff";
|
key = "<Leader>ff";
|
||||||
action = "<cmd>Telescope find_files<CR>";
|
action = "<cmd>Telescope find_files<CR>";
|
||||||
options = {noremap = true;};
|
options = { noremap = true; };
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
# live grep
|
# live grep
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
key = "<Leader>fg";
|
key = "<Leader>fg";
|
||||||
action = "<cmd>Telescope live_grep<CR>";
|
action = "<cmd>Telescope live_grep<CR>";
|
||||||
options = {noremap = true;};
|
options = { noremap = true; };
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
# buffers
|
# buffers
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
key = "<Leader>fb";
|
key = "<Leader>fb";
|
||||||
action = "<cmd>Telescope buffers<CR>";
|
action = "<cmd>Telescope buffers<CR>";
|
||||||
options = {noremap = true;};
|
options = { noremap = true; };
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
# help tags
|
# help tags
|
||||||
mode = ["n"];
|
mode = [ "n" ];
|
||||||
key = "<Leader>fh";
|
key = "<Leader>fh";
|
||||||
action = "<cmd>Telescope help_tags<CR>";
|
action = "<cmd>Telescope help_tags<CR>";
|
||||||
options = {noremap = true;};
|
options = { noremap = true; };
|
||||||
}
|
|
||||||
# paste over selected text without yanking it
|
|
||||||
{
|
|
||||||
mode = ["v"];
|
|
||||||
key = "p";
|
|
||||||
action = "\"_dP";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
|
||||||
# resize window
|
|
||||||
{
|
|
||||||
mode = ["n"];
|
|
||||||
key = "<Right>";
|
|
||||||
action = ":vertical resize +1<CR>";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = ["n"];
|
|
||||||
key = "<Left>";
|
|
||||||
action = ":vertical resize -1<CR>";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = ["n"];
|
|
||||||
key = "<Down>";
|
|
||||||
action = ":resize -1<CR>";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
|
||||||
{
|
|
||||||
mode = ["n"];
|
|
||||||
key = "<Up>";
|
|
||||||
action = ": resize +1<CR>";
|
|
||||||
options = {noremap = true;};
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,5 @@
|
||||||
ignorecase = true;
|
ignorecase = true;
|
||||||
smartcase = true;
|
smartcase = true;
|
||||||
backspace = "indent,eol,start"; # allow backspace in insert mode
|
backspace = "indent,eol,start"; # allow backspace in insert mode
|
||||||
spell = true;
|
|
||||||
spelllang = "en_gb";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
programs.nixvim.plugins = {
|
||||||
|
alpha = {
|
||||||
|
enable = true;
|
||||||
|
iconsEnabled = true;
|
||||||
|
theme = "dashboard";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
programs.nixvim.plugins.comment = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -6,39 +6,16 @@
|
||||||
timeoutMs = 500;
|
timeoutMs = 500;
|
||||||
};
|
};
|
||||||
notifyOnError = true;
|
notifyOnError = true;
|
||||||
logLevel = "debug";
|
|
||||||
formattersByFt = {
|
formattersByFt = {
|
||||||
html = ["prettierd"];
|
html = [["prettierd" "prettier"]];
|
||||||
css = ["prettierd"];
|
css = [["prettierd" "prettier"]];
|
||||||
javascript = ["prettierd"];
|
javascript = [["prettierd" "prettier"]];
|
||||||
python = ["black"];
|
python = ["black"];
|
||||||
lua = ["stylua"];
|
lua = ["stylua"];
|
||||||
nix = ["alejandra"];
|
nix = ["alejandra"];
|
||||||
markdown = ["prettierd"];
|
markdown = [["prettierd" "prettier"]];
|
||||||
yaml = ["yamlfmt"];
|
yaml = ["yamllint" "yamlfmt"];
|
||||||
sql = ["sql-formatter"];
|
sql = ["sqlfmt"];
|
||||||
bash = [
|
|
||||||
"shellcheck"
|
|
||||||
"shellharden"
|
|
||||||
"shfmt"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
formatters = {
|
|
||||||
sql-formatter = {
|
|
||||||
command = "sql-formatter";
|
|
||||||
args = "--config ~/.config/sql-formatter/config.json";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
home.file.".config/sql-formatter/config.json".text = ''
|
|
||||||
{
|
|
||||||
"language": "postgresql",
|
|
||||||
"tabWidth": 2,
|
|
||||||
"linesBetweenQueries": 1,
|
|
||||||
"expressionWidth": 88,
|
|
||||||
"newlineBeforeSemicolon": true
|
|
||||||
}
|
|
||||||
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
user = config.home.username;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
./cmp.nix
|
./cmp.nix
|
||||||
./colorizer.nix
|
./colorizer.nix
|
||||||
|
@ -18,10 +13,7 @@ in {
|
||||||
./surround.nix
|
./surround.nix
|
||||||
./telescope.nix
|
./telescope.nix
|
||||||
./treesitter.nix
|
./treesitter.nix
|
||||||
./fold.nix
|
./alpha.nix
|
||||||
./todo-comments.nix
|
|
||||||
./oil.nix
|
|
||||||
./comment.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Load Plugins that aren't provided as modules by nixvim
|
# Load Plugins that aren't provided as modules by nixvim
|
||||||
|
@ -32,6 +24,29 @@ in {
|
||||||
pkgs.vimPlugins.vim-dadbod-ui
|
pkgs.vimPlugins.vim-dadbod-ui
|
||||||
pkgs.vimPlugins.vim-dadbod-completion
|
pkgs.vimPlugins.vim-dadbod-completion
|
||||||
pkgs.vimPlugins.fugitive
|
pkgs.vimPlugins.fugitive
|
||||||
|
|
||||||
|
(pkgs.vimUtils.buildVimPlugin
|
||||||
|
{
|
||||||
|
name = "precognition.nvim";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "tris203";
|
||||||
|
repo = "precognition.nvim";
|
||||||
|
rev = "v1.0.0";
|
||||||
|
sha256 = "sha256-AqWYV/59ugKyOWALOCdycWVm0bZ7qb981xnuw/mAVzM=";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
# (pkgs.vimUtils.buildVimPlugin
|
||||||
|
# {
|
||||||
|
# name = "hardtime";
|
||||||
|
# src = pkgs.fetchFromGitHub {
|
||||||
|
# owner = "m4xshen";
|
||||||
|
# repo = "hardtime.nvim ";
|
||||||
|
# rev = "9a4e24f";
|
||||||
|
# #sha256 = "sha256-abe9ZGmL7U9rC+LxC3LO5/bOn8lHke1FCKO0V3TZGs0=";
|
||||||
|
# };
|
||||||
|
# })
|
||||||
|
#
|
||||||
(pkgs.vimUtils.buildVimPlugin
|
(pkgs.vimUtils.buildVimPlugin
|
||||||
{
|
{
|
||||||
name = "buffer_manager.nvim";
|
name = "buffer_manager.nvim";
|
||||||
|
@ -43,16 +58,6 @@ in {
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
(pkgs.vimUtils.buildVimPlugin
|
|
||||||
{
|
|
||||||
name = "vimwiki-sync";
|
|
||||||
src = pkgs.fetchFromGitHub {
|
|
||||||
owner = "michal-h21";
|
|
||||||
repo = "vimwiki-sync";
|
|
||||||
rev = "99eeab3";
|
|
||||||
sha256 = "sha256-cz0dSFphIbQAI4AOqwIUpDBTuj/3xlOkhSlIVMdgsqM=";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
# Keep vim-devicons as last entry
|
# Keep vim-devicons as last entry
|
||||||
pkgs.vimPlugins.vim-devicons
|
pkgs.vimPlugins.vim-devicons
|
||||||
|
@ -61,6 +66,11 @@ in {
|
||||||
-- buffer_manager.nvim
|
-- buffer_manager.nvim
|
||||||
local opts = {noremap = true}
|
local opts = {noremap = true}
|
||||||
|
|
||||||
|
require("precognition").setup(
|
||||||
|
{
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
require("buffer_manager").setup(
|
require("buffer_manager").setup(
|
||||||
{
|
{
|
||||||
line_keys = "1234567890",
|
line_keys = "1234567890",
|
||||||
|
@ -100,28 +110,7 @@ in {
|
||||||
opts
|
opts
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Setup vimwiki
|
|
||||||
|
|
||||||
vim.g.vimwiki_list = {
|
|
||||||
{
|
|
||||||
syntax = "markdown",
|
|
||||||
ext = ".md",
|
|
||||||
path = "/home/${user}/.local/share/notes",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Format function for conform.nvim
|
|
||||||
vim.api.nvim_create_user_command("Format", function(args)
|
|
||||||
local range = nil
|
|
||||||
if args.count ~= -1 then
|
|
||||||
local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1]
|
|
||||||
range = {
|
|
||||||
start = { args.line1, 0 },
|
|
||||||
["end"] = { args.line2, end_line:len() },
|
|
||||||
}
|
|
||||||
end
|
|
||||||
require("conform").format({ async = true, lsp_format = "fallback", range = range })
|
|
||||||
end, { range = true })
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
{
|
|
||||||
programs.nixvim.plugins.nvim-ufo = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
};
|
|
||||||
programs.nixvim.extraConfigLua = ''
|
|
||||||
-- default fold options
|
|
||||||
vim.o.foldcolumn = '1'
|
|
||||||
vim.o.foldlevel = 99
|
|
||||||
vim.o.foldlevelstart = 99
|
|
||||||
vim.o.foldenable = true
|
|
||||||
|
|
||||||
-- nvim_ufo options
|
|
||||||
vim.keymap.set('n', 'zR', require('ufo').openAllFolds, { desc = "Open all folds" })
|
|
||||||
vim.keymap.set('n', 'zM', require('ufo').closeAllFolds, { desc = "Close all folds" })
|
|
||||||
vim.keymap.set('n', 'zK', function()
|
|
||||||
local winid = require("ufo").peekFoldedLinesUnderCursor()
|
|
||||||
if not winid then
|
|
||||||
vim.lsp.buf.hover()
|
|
||||||
end
|
|
||||||
end , { desc = "Peed fold" })
|
|
||||||
|
|
||||||
require("ufo").setup({
|
|
||||||
provider_selector = function(bufnr, filetype, buftype)
|
|
||||||
return { 'lsp', 'indent' }
|
|
||||||
end
|
|
||||||
})
|
|
||||||
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,18 +1,15 @@
|
||||||
{
|
{
|
||||||
programs.nixvim.plugins = {
|
programs.nixvim.plugins.lsp = {
|
||||||
lsp = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
servers = {
|
servers = {
|
||||||
lua-ls = {enable = true;};
|
lua-ls = { enable = true; };
|
||||||
nixd = {enable = true;};
|
nixd = { enable = true; };
|
||||||
bashls = {enable = true;};
|
bashls = { enable = true; };
|
||||||
pyright = {enable = true;};
|
pyright = { enable = true; };
|
||||||
html = {enable = true;};
|
html = { enable = true; };
|
||||||
marksman = {enable = true;};
|
yamlls = { enable = true; };
|
||||||
ccls = {enable = true;};
|
marksman = { enable = true; };
|
||||||
cssls = {enable = true;};
|
#sqls = {enable = true;};
|
||||||
r-language-server = {enable = true;};
|
|
||||||
tsserver = {enable = true;};
|
|
||||||
};
|
};
|
||||||
keymaps = {
|
keymaps = {
|
||||||
lspBuf = {
|
lspBuf = {
|
||||||
|
@ -36,7 +33,7 @@
|
||||||
action = "type_definition";
|
action = "type_definition";
|
||||||
desc = "Type Definition";
|
desc = "Type Definition";
|
||||||
};
|
};
|
||||||
gK = {
|
K = {
|
||||||
action = "hover";
|
action = "hover";
|
||||||
desc = "Hover";
|
desc = "Hover";
|
||||||
};
|
};
|
||||||
|
@ -51,9 +48,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# TODO: enable otter.nvim when merged into nixvim stable
|
|
||||||
# otter = {
|
|
||||||
# enable = true;
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
programs.nixvim.plugins.oil = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
programs = {
|
|
||||||
nixvim = {
|
|
||||||
plugins.todo-comments = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
mode = [ "n" ];
|
|
||||||
action = "<cmd>TodoTelescope<cr>";
|
|
||||||
key = "<leader>ft";
|
|
||||||
options = {
|
|
||||||
silent = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
ll = "ls -l";
|
ll = "ls -l";
|
||||||
src = "cd ~/.local/share/src";
|
|
||||||
};
|
};
|
||||||
history.size = 10000;
|
history.size = 10000;
|
||||||
history.path = "${config.xdg.dataHome}/zsh/history";
|
history.path = "${config.xdg.dataHome}/zsh/history";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
./alacritty.nix
|
./alacritty.nix
|
||||||
|
@ -14,9 +14,5 @@
|
||||||
pkgs.xfce.thunar
|
pkgs.xfce.thunar
|
||||||
pkgs.kcolorchooser
|
pkgs.kcolorchooser
|
||||||
pkgs.zotero
|
pkgs.zotero
|
||||||
pkgs.transmission
|
|
||||||
pkgs.qgis
|
|
||||||
pkgs.mpv
|
|
||||||
pkgs.gnome.simple-scan
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{ pkgs, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
nerdfonts
|
nerdfonts
|
||||||
noto-fonts
|
noto-fonts
|
||||||
|
@ -10,10 +11,8 @@
|
||||||
libertine
|
libertine
|
||||||
font-awesome
|
font-awesome
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts = {
|
fonts = {
|
||||||
fontconfig = {
|
fontconfig = {
|
||||||
enable = true;
|
|
||||||
defaultFonts = {
|
defaultFonts = {
|
||||||
serif = [ "NotoSans Nerd Font" ];
|
serif = [ "NotoSans Nerd Font" ];
|
||||||
sansSerif = [ "Linux Biolinum O" ];
|
sansSerif = [ "Linux Biolinum O" ];
|
||||||
|
|
|
@ -1,48 +1,21 @@
|
||||||
{pkgs, ...}: {
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
# Prevent error when enabling gtk https://github.com/nix-community/home-manager/issues/3113
|
# Prevent error when enabling gtk https://github.com/nix-community/home-manager/issues/3113
|
||||||
# error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name ca.desrt.dconf was not provided by any .service files
|
# error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name ca.desrt.dconf was not provided by any .service files
|
||||||
home.packages = [
|
home.packages = [ pkgs.dconf ];
|
||||||
pkgs.dconf
|
gtk.enable = true;
|
||||||
];
|
|
||||||
|
home.file = {
|
||||||
|
".icons/bibata".source = "${pkgs.bibata-cursors}/share/icons/Bibata-Modern-Classic";
|
||||||
|
};
|
||||||
|
|
||||||
# Get details about theme package
|
# Get details about theme package
|
||||||
#cd $(nix build nixpkgs#kanagawa-gtk-theme --print-out-paths --no-link) && nix run nixpkgs#eza -- --tree --level 4
|
#cd $(nix build nixpkgs#kanagawa-gtk-theme --print-out-paths --no-link) && nix run nixpkgs#eza -- --tree --level 4
|
||||||
|
gtk.theme.package = pkgs.kanagawa-gtk-theme;
|
||||||
|
gtk.theme.name = "Kanagawa-B";
|
||||||
|
|
||||||
gtk = {
|
gtk.iconTheme.package = pkgs.kanagawa-icon-theme;
|
||||||
enable = true;
|
gtk.iconTheme.name = "Kanagawa";
|
||||||
theme = {
|
|
||||||
name = "Kanagawa-B";
|
|
||||||
package = pkgs.kanagawa-gtk-theme;
|
|
||||||
};
|
|
||||||
iconTheme = {
|
|
||||||
package = pkgs.gnome.adwaita-icon-theme;
|
|
||||||
name = "Adwaita";
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk3.extraConfig = {
|
|
||||||
Settings = ''
|
|
||||||
gtk-application-prefer-dark-theme=1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk4.extraConfig = {
|
|
||||||
Settings = ''
|
|
||||||
gtk-application-prefer-dark-theme=1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
#gtk.theme.package = pkgs.kanagawa-gtk-theme;
|
|
||||||
|
|
||||||
# gtk.cursorTheme = {
|
|
||||||
# name = "Vimix-Cursors";
|
|
||||||
# package = pkgs.vimix-cursor-theme;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# gtk.theme.name = "Kanagawa-B";
|
|
||||||
|
|
||||||
# gtk.iconTheme.package = pkgs.kanagawa-icon-theme;
|
|
||||||
# gtk.iconTheme.name = "Kanagawa";
|
|
||||||
|
|
||||||
qt.enable = true;
|
qt.enable = true;
|
||||||
qt.platformTheme.name = "gtk";
|
qt.platformTheme.name = "gtk";
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
./xinitrc.nix
|
./xinitrc.nix
|
||||||
./sxhkdrc.nix
|
./sxhkdrc.nix
|
||||||
./picom.nix
|
./picom.nix
|
||||||
|
./xresources.nix
|
||||||
./dunst.nix
|
./dunst.nix
|
||||||
./music_player.nix
|
|
||||||
|
|
||||||
# Status bar scripts
|
# Status bar scripts
|
||||||
./scripts/sb-cpu-pct.nix
|
./scripts/sb-cpu-pct.nix
|
||||||
|
@ -16,11 +16,9 @@
|
||||||
./scripts/sb-volume.nix
|
./scripts/sb-volume.nix
|
||||||
./scripts/sb-network-status.nix
|
./scripts/sb-network-status.nix
|
||||||
./scripts/sb-updates.nix
|
./scripts/sb-updates.nix
|
||||||
./scripts/sb-battery.nix
|
|
||||||
|
|
||||||
# Notification scripts
|
# Notification scripts
|
||||||
./scripts/dunstify-volume-notification.nix
|
./scripts/dunstify-volume-notification.nix
|
||||||
./scripts/dunstify-battery-notification.nix
|
|
||||||
|
|
||||||
# Helper scripts
|
# Helper scripts
|
||||||
./scripts/emoji-picker.nix
|
./scripts/emoji-picker.nix
|
||||||
|
@ -29,8 +27,6 @@
|
||||||
./scripts/get-focused-monitor.nix
|
./scripts/get-focused-monitor.nix
|
||||||
./scripts/git-commit-ai.nix
|
./scripts/git-commit-ai.nix
|
||||||
./scripts/aichat-wrapper.nix
|
./scripts/aichat-wrapper.nix
|
||||||
./scripts/dmenu-wifi.nix
|
|
||||||
./scripts/battery-status.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#format = ''%I %s %p\n%b'';
|
#format = ''%I %s %p\n%b'';
|
||||||
format = ''<b>%s:</b>\n%b\n\n%a '';
|
format = ''<b>%s:</b>\n%b\n\n%a '';
|
||||||
|
|
||||||
|
#TODO dynamic fonts
|
||||||
font = "monospace";
|
font = "monospace";
|
||||||
|
|
||||||
# Options are "left", "center", and "right".
|
# Options are "left", "center", and "right".
|
||||||
|
@ -171,7 +172,7 @@
|
||||||
urgency_critical = {
|
urgency_critical = {
|
||||||
background = "#${config.colorScheme.colors.base08}";
|
background = "#${config.colorScheme.colors.base08}";
|
||||||
foreground = "#${config.colorScheme.colors.base05}";
|
foreground = "#${config.colorScheme.colors.base05}";
|
||||||
frame_color = "#${config.colorScheme.colors.base05}";
|
frame_color = "#${config.colorScheme.colors.base00}";
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
{ pkgs, config, ... }:
|
|
||||||
{
|
|
||||||
home.file."mus/music_data".source = config.lib.file.mkOutOfStoreSymlink /media/media/music/music_data;
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
pkgs.ffmpeg
|
|
||||||
pkgs.nsxiv
|
|
||||||
pkgs.kunst
|
|
||||||
pkgs.mpc-cli
|
|
||||||
pkgs.jq
|
|
||||||
pkgs.imagemagick
|
|
||||||
];
|
|
||||||
|
|
||||||
services.mpd = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mpd;
|
|
||||||
extraConfig = ''
|
|
||||||
|
|
||||||
music_directory "~/mus/music_data"
|
|
||||||
playlist_directory "~/.local/share/mpd/playlists"
|
|
||||||
|
|
||||||
log_file "~/.local/share/mpd/log"
|
|
||||||
db_file "~/.local/share/mpd/database"
|
|
||||||
pid_file "~/.local/share/mpd/pid"
|
|
||||||
state_file "~/.local/share/mpd/state"
|
|
||||||
sticker_file "~/.local/share/mpd/sticker.sql"
|
|
||||||
|
|
||||||
auto_update "yes"
|
|
||||||
|
|
||||||
audio_output {
|
|
||||||
type "pipewire"
|
|
||||||
name "PipeWire Sound Server"
|
|
||||||
}
|
|
||||||
|
|
||||||
audio_output {
|
|
||||||
type "fifo"
|
|
||||||
name "Visualizer feed"
|
|
||||||
path "/tmp/mpd.fifo"
|
|
||||||
format "44100:16:2"
|
|
||||||
}
|
|
||||||
|
|
||||||
bind_to_address "127.0.0.1"
|
|
||||||
'';
|
|
||||||
musicDirectory = "~/mus/music_data";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ncmpcpp = {
|
|
||||||
enable = true;
|
|
||||||
package = (pkgs.ncmpcpp.override { visualizerSupport = true; });
|
|
||||||
mpdMusicDir = "~/mus/music_data";
|
|
||||||
settings = {
|
|
||||||
mpd_host = "127.0.0.1";
|
|
||||||
mpd_port = "6600";
|
|
||||||
visualizer_data_source = "/tmp/mpd.fifo";
|
|
||||||
visualizer_output_name = "Visualizer Feed";
|
|
||||||
visualizer_in_stereo = "yes";
|
|
||||||
visualizer_type = "spectrum";
|
|
||||||
visualizer_fps = "60";
|
|
||||||
visualizer_autoscale = "no";
|
|
||||||
visualizer_look = "●▮";
|
|
||||||
visualizer_color = "169, 170, 169, 135, 134, 133, 129, 128, 127, 126, 125, 124";
|
|
||||||
visualizer_spectrum_smooth_look = "yes";
|
|
||||||
visualizer_spectrum_dft_size = "3";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "battery-status" ''
|
|
||||||
|
|
||||||
# Get the current power consumption of the laptop battery
|
|
||||||
power=$(cat /sys/class/power_supply/BAT0/power_now)
|
|
||||||
power_watts=$(${pkgs.bc}/bin/bc <<< "scale=3; $power / 1000000")
|
|
||||||
|
|
||||||
# Get the current battery charge capacity
|
|
||||||
energy=$(cat /sys/class/power_supply/BAT0/energy_now)
|
|
||||||
|
|
||||||
# Get the current battery status (charging or discharging)
|
|
||||||
battery_status=$(cat /sys/class/power_supply/BAT0/status)
|
|
||||||
|
|
||||||
# Calculate the time remaining until the battery is empty or full
|
|
||||||
if [ "$battery_status" == "Charging" ]; then
|
|
||||||
# Calculate the time remaining until the battery is full
|
|
||||||
hours=$(${pkgs.bc}/bin/bc <<< "scale=2; $power / $energy")
|
|
||||||
hours_int=$(${pkgs.bc}/bin/bc <<< "scale=0; $hours / 1")
|
|
||||||
minutes=$(${pkgs.bc}/bin/bc <<< "scale=0; 60 * ($hours - $hours_int)/1")
|
|
||||||
|
|
||||||
if [ "$hours_int" -gt "0" ]; then
|
|
||||||
# Show hours and minutes if time remaining is greater than or equal to 1 hour
|
|
||||||
echo "Full in: $hours_int hours $minutes minutes"
|
|
||||||
else
|
|
||||||
# Show minutes if time remaining is less than 1 hour
|
|
||||||
echo "Full in: $minutes minutes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$battery_status" == "Discharging" ]; then
|
|
||||||
# Calculate the time remaining until the battery is empty
|
|
||||||
hours=$(${pkgs.bc}/bin/bc <<< "scale=2; $energy / $power")
|
|
||||||
hours_int=$(${pkgs.bc}/bin/bc <<< "scale=0; $hours / 1")
|
|
||||||
minutes=$(${pkgs.bc}/bin/bc <<< "scale=0; 60 * ($hours - $hours_int)/1")
|
|
||||||
|
|
||||||
if [ "$hours_int" -gt "0" ]; then
|
|
||||||
# Show hours and minutes if time remaining is greater than or equal to 1 hour
|
|
||||||
echo "Empty in: $hours_int hours $minutes minutes"
|
|
||||||
else
|
|
||||||
# Show minutes if time remaining is less than 1 hour
|
|
||||||
echo "Empty in: $minutes minutes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [ "$battery_status" == "Full" ]; then
|
|
||||||
echo "Battery full"
|
|
||||||
elif [ "$battery_status" == "Not charging" ]; then
|
|
||||||
echo "Battery full - not charging"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Power consumption: $power_watts W"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -14,7 +14,7 @@
|
||||||
*image*)
|
*image*)
|
||||||
echo "$(${xclip}/bin/xclip -selection clipboard -t TARGETS -o)"
|
echo "$(${xclip}/bin/xclip -selection clipboard -t TARGETS -o)"
|
||||||
filename=$(${xclip}/bin/xclip -selection clipboard -t image/png -o | ${openssl}/bin/openssl sha1 | cut -b 49-)
|
filename=$(${xclip}/bin/xclip -selection clipboard -t image/png -o | ${openssl}/bin/openssl sha1 | cut -b 49-)
|
||||||
file_exists=$(ls $image_location | grep $filename | sed "s/\..*//")
|
file_exists=$(/bin/ls $image_location | grep $filename | sed "s/\..*//")
|
||||||
[[ $filename != "$file_exists" ]] &&
|
[[ $filename != "$file_exists" ]] &&
|
||||||
xclip -selection clipboard -t image/png -o > "$image_location/$filename.png" &&
|
xclip -selection clipboard -t image/png -o > "$image_location/$filename.png" &&
|
||||||
notify-send -t 5000 "Image Copied" "$image_location/$filename.png"
|
notify-send -t 5000 "Image Copied" "$image_location/$filename.png"
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
*UTF8_STRING*)
|
*UTF8_STRING*)
|
||||||
echo "$(${xclip}/bin/xclip -selection clipboard -t TARGETS -o)"
|
echo "$(${xclip}/bin/xclip -selection clipboard -t TARGETS -o)"
|
||||||
filename=$(${xclip}/bin/xclip -selection clipboard -t UTF8_STRING -o | ${openssl}/bin/openssl sha1 | cut -b 49-)
|
filename=$(${xclip}/bin/xclip -selection clipboard -t UTF8_STRING -o | ${openssl}/bin/openssl sha1 | cut -b 49-)
|
||||||
file_exists=$(ls "$text_location" | grep "$filename" | sed "s/\..*//")
|
file_exists=$(/bin/ls "$text_location" | grep "$filename" | sed "s/\..*//")
|
||||||
echo "$filename" "$file_exists"
|
echo "$filename" "$file_exists"
|
||||||
[[ "$filename" != "$file_exists" ]] &&
|
[[ "$filename" != "$file_exists" ]] &&
|
||||||
xclip -selection clipboard -t UTF8_STRING -o > "$text_location/$filename"
|
xclip -selection clipboard -t UTF8_STRING -o > "$text_location/$filename"
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
(writeShellScriptBin "dmenu-wifi" ''
|
|
||||||
nmcli dev wifi rescan
|
|
||||||
ssid_list=$(nmcli -f in-use,bssid,ssid,mode,chan,freq,rate,signal,bars,security dev wifi)
|
|
||||||
available_connections=$(echo "$ssid_list" | sed '/--.*Infra/d')
|
|
||||||
|
|
||||||
connection=$( echo "$available_connections" | dmenu -l 20)
|
|
||||||
bssid=$(echo "$connection" | sed 's/^.\s*//;s/\s\s.*$//')
|
|
||||||
ssid=$(echo "$connection" | sed 's/^.\s*[0-9;A-Z;:]*\s\s//;s/\s*Infra\s*[0-9].*$//')
|
|
||||||
[[ "$connection" = "" ]] && notify-send -t 5000 "Wifi Connect" "Cancelled" && exit 0
|
|
||||||
[[ $( echo "$connection" | grep "IN-USE" -o) = "IN-USE" ]] && notify-send -t 5000 "Wifi Connect" "Please select valid network" && exit 0
|
|
||||||
[[ -n "$(echo "$connection" | grep '\*')" ]] && notify-send -t 5000 "Wifi Connect" "Already Connected to: $(echo "$ssid")" && exit 0
|
|
||||||
|
|
||||||
notify-send -t 5000 "Network Manager" "Attempting to connect to $ssid..."
|
|
||||||
nmcli connection modify "$ssid" 802-11-wireless.bssid "$bssid"
|
|
||||||
nmcli device wifi connect "$bssid"
|
|
||||||
return_code=$?
|
|
||||||
if [ $return_code == 4 ];
|
|
||||||
then
|
|
||||||
notify-send -t 5000 "Wifi Connect" "Please enter password for '$ssid'..."
|
|
||||||
prompt="Enter Password for '$ssid'"
|
|
||||||
pwd=$(echo "" | dmenu -p "$prompt")
|
|
||||||
nmcli device wifi connect "$bssid" password "$pwd"
|
|
||||||
return_code=$?
|
|
||||||
fi
|
|
||||||
case "$return_code" in
|
|
||||||
0) notify-send -t 5000 "Wifi Connect" "Successfully connected to: $ssid!"
|
|
||||||
pkill -RTMIN+12 dwmblocks
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
3) notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Timeout expired?"
|
|
||||||
pkill -RTMIN+12 dwmblocks
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
4)
|
|
||||||
notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Possibly wrong password?"
|
|
||||||
nmcli connection delete id "$ssid"
|
|
||||||
pkill -RTMIN+12 dwmblocks
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
*) notify-send -t 5000 "Wifi Connect" "Connection to $ssid failed. Error code $?"
|
|
||||||
echo "Failed. Exiting"
|
|
||||||
pkill -RTMIN+12 dwmblocks
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "dunstify-battery-notification" ''
|
|
||||||
msgTag="battery-notify"
|
|
||||||
${pkgs.dunst}/bin/dunstify -a "batteryNotify" -u critical -i battery-notify -h string:x-dunst-stack-tag:$msgTag "Battery Status" "$(battery-status)" -t 5000
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
(writeShellScriptBin "sb-battery" ''
|
|
||||||
BAT=/sys/class/power_supply/BAT0/capacity
|
|
||||||
|
|
||||||
# Exit script if no battery detected
|
|
||||||
[ ! -f "$BAT" ] && exit
|
|
||||||
|
|
||||||
STATUS=$(cat /sys/class/power_supply/BAT0/uevent | grep "POWER_SUPPLY_STATUS" | sed "s/^.*=//")
|
|
||||||
capacity=$(cat "$BAT")
|
|
||||||
|
|
||||||
if [ "$STATUS" == "Charging" ] || [ "$STATUS" == "Not charging" ]; then
|
|
||||||
echo "[ $capacity%] "
|
|
||||||
else
|
|
||||||
case $capacity in
|
|
||||||
100) echo "[ $capacity%] ";;
|
|
||||||
9[0-9]) echo "[ $capacity%] ";;
|
|
||||||
8[0-9]) echo "[ $capacity%] ";;
|
|
||||||
7[0-9]) echo "[ $capacity%] ";;
|
|
||||||
6[0-9]) echo "[ $capacity%] ";;
|
|
||||||
5[0-9]) echo "[ $capacity%] ";;
|
|
||||||
4[0-9]) echo "[ $capacity%] ";;
|
|
||||||
3[0-9]) echo "[ $capacity%] ";;
|
|
||||||
2[0-9]) echo "[ $capacity%] ";;
|
|
||||||
1[0-9]) echo "[ $capacity%] ";;
|
|
||||||
[6-9]) echo "[ $capacity%] ";;
|
|
||||||
[0-5]) echo "[ $capacity%] ";;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $capacity -le 20 && $STATUS != "Charging" ]]; then
|
|
||||||
dunstify-battery-notification
|
|
||||||
fi
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -4,10 +4,10 @@
|
||||||
(writeShellScriptBin "sb-updates" ''
|
(writeShellScriptBin "sb-updates" ''
|
||||||
# Gets number of flake inputs that are ready for update
|
# Gets number of flake inputs that are ready for update
|
||||||
# Checks every 60 minutes
|
# Checks every 60 minutes
|
||||||
# inputs=$(cd /etc/nixos &&
|
inputs=$(cd /etc/nixos &&
|
||||||
# nix flake update --output-lock-file <(cat flake.nix) 2> /tmp/update &&
|
nix flake update --output-lock-file <(cat flake.nix) 2> /tmp/update &&
|
||||||
# cat /tmp/update | grep -c Update)
|
cat /tmp/update | grep -c Update)
|
||||||
# printf "[ $inputs] "
|
printf "[ $inputs] "
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
# TODO: add emoji and dmenu-dict scripts
|
# TODO add emoji and dmenu-dict scripts
|
||||||
home.file.".config/sxhkd/sxhkdrc" = {
|
home.file.".config/sxhkd/sxhkdrc" = {
|
||||||
recursive = true;
|
recursive = true;
|
||||||
text = ''
|
text = ''
|
||||||
|
@ -15,14 +15,26 @@
|
||||||
XF86AudioMicMute
|
XF86AudioMicMute
|
||||||
pamixer --default-source --toggle-mute && dunstify-volume-notification && pkill -RTMIN+10 dwmblocks && exit 1
|
pamixer --default-source --toggle-mute && dunstify-volume-notification && pkill -RTMIN+10 dwmblocks && exit 1
|
||||||
|
|
||||||
|
XF86MonBrightnessUp
|
||||||
|
light -A 5 && dunstify-brightness-notification
|
||||||
|
|
||||||
|
XF86MonBrightnessDown
|
||||||
|
light -U 5 && dunstify-brightness-notification
|
||||||
|
|
||||||
XF86Messenger
|
XF86Messenger
|
||||||
dunstify-battery-notification
|
dunstify-battery-notification
|
||||||
|
|
||||||
|
control + Home
|
||||||
|
bookmark-add
|
||||||
|
|
||||||
|
control + Insert
|
||||||
|
bookmark-insert
|
||||||
|
|
||||||
control + F8
|
control + F8
|
||||||
clipboard-image-recall /tmp/clipboard/images/
|
clipboard-image-recall /tmp/clipboard/images/
|
||||||
|
|
||||||
Print
|
Print
|
||||||
env QT_AUTO_SCREEN_SCALE_FACTOR=1.5 QT_SCREEN_SCALE_FACTORS="" flameshot gui
|
flameshot gui
|
||||||
|
|
||||||
control + F7
|
control + F7
|
||||||
emoji-picker
|
emoji-picker
|
||||||
|
|
|
@ -1,11 +1,18 @@
|
||||||
{pkgs, ...}: {
|
{ config, ... }:
|
||||||
# TODO: configure x11 to look in .config/x11
|
let
|
||||||
|
|
||||||
|
monitor = "${toString (builtins.map (m: "xrandr --output ${ m.name } --mode ${ toString( m.width )}x${ toString( m.height )} --pos ${ toString( m.x)}x${ toString( m.y)}" ) config.monitors)}";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# TODO configure x11 to look in .config/x11
|
||||||
home.file.".xinitrc" = {
|
home.file.".xinitrc" = {
|
||||||
recursive = true;
|
recursive = true;
|
||||||
text = ''
|
text = ''
|
||||||
|
|
||||||
picom -b --config ~/.config/picom/picom.conf
|
picom -b --config ~/.config/picom/picom.conf
|
||||||
xrdb -merge ~/.Xresources
|
xrdb ~/.Xresources
|
||||||
|
|
||||||
|
${monitor}
|
||||||
|
|
||||||
autostart="clipboard-save dwmblocks feh-wallpaper-changer sxhkd"
|
autostart="clipboard-save dwmblocks feh-wallpaper-changer sxhkd"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
home.file.".Xresources" = {
|
||||||
|
recursive = true;
|
||||||
|
text = ''
|
||||||
|
! scale
|
||||||
|
Xft.dpi: 144
|
||||||
|
|
||||||
|
! st
|
||||||
|
st.alpha: 0.8
|
||||||
|
St.font: monospace:pixelsize=21:antialias=true:autohint=true;
|
||||||
|
St.font2: NotoColorEmoji:pixelsize=19:antialias=true:autohint=true;
|
||||||
|
|
||||||
|
! dwm
|
||||||
|
dwm.borderpx: 3
|
||||||
|
dwm.font: monospace:size=12
|
||||||
|
dwm.col_base00: #${config.colorScheme.colors.base00}
|
||||||
|
dwm.col_base03: #${config.colorScheme.colors.base03}
|
||||||
|
dwm.col_base04: #${config.colorScheme.colors.base04}
|
||||||
|
dwm.col_base05: #${config.colorScheme.colors.base05}
|
||||||
|
dwm.col_base08: #${config.colorScheme.colors.base08}
|
||||||
|
dwm.col_base0B: #${config.colorScheme.colors.base0B}
|
||||||
|
|
||||||
|
! dmenu
|
||||||
|
dmenu.font: monospace:size=12
|
||||||
|
dmenu.font2: NotoColorEmoji:pixelsize=22:antialias=true:autohint=true
|
||||||
|
dmenu.topbar: 1
|
||||||
|
dmenu.normfgcolor: #${config.colorScheme.colors.base05}
|
||||||
|
dmenu.normbgcolor: #${config.colorScheme.colors.base03}
|
||||||
|
dmenu.selfgcolor: #${config.colorScheme.colors.base00}
|
||||||
|
dmenu.selbgcolor: #${config.colorScheme.colors.base0B}
|
||||||
|
|
||||||
|
Nsxiv.window.background: #${config.colorScheme.colors.base03}
|
||||||
|
Nsxiv.window.foreground: #${config.colorScheme.colors.base05}
|
||||||
|
Nsxiv.mark.foreground: #${config.colorScheme.colors.base08}
|
||||||
|
|
||||||
|
Nsxiv.bar.background: #${config.colorScheme.colors.base00}
|
||||||
|
Nsxiv.bar.foreground: #${config.colorScheme.colors.base05}
|
||||||
|
Nsxiv.bar.font: monospace:size=12
|
||||||
|
|
||||||
|
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,18 +0,0 @@
|
||||||
{ pkgs, config, lib, ... }:
|
|
||||||
let
|
|
||||||
user = config.home.username;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.activation.get-notes = lib.hm.dag.entryAfter [ "installPackages" ] ''
|
|
||||||
notes_dir=/home/${user}/.local/share/notes
|
|
||||||
remote=git@git.bitlab21.com:sam/notes
|
|
||||||
if [ -d "$notes_dir" ];
|
|
||||||
then
|
|
||||||
cd "$notes_dir"
|
|
||||||
[ ! -d .git ] && PATH="${pkgs.git}/bin:${pkgs.openssh}/bin:$PATH" git clone "$remote" "$notes_dir"
|
|
||||||
else
|
|
||||||
mkdir -p "$notes_dir" && PATH="${pkgs.git}/bin:${pkgs.openssh}/bin:$PATH" git clone "$remote" "$notes_dir"
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -1,120 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.yazi = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.yazi;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
log = {
|
|
||||||
enabled = true;
|
|
||||||
};
|
|
||||||
manager = {
|
|
||||||
show_hidden = false;
|
|
||||||
sort_by = "modified";
|
|
||||||
sort_dir_first = true;
|
|
||||||
sort_reverse = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
theme = {
|
|
||||||
manager = {
|
|
||||||
marker_copied = { fg = "#98bb6c"; bg = "#98bb6c"; };
|
|
||||||
marker_cut = { fg = "#e46876"; bg = "#e46876"; };
|
|
||||||
marker_marked = { fg = "#957fb8"; bg = "#957fb8"; };
|
|
||||||
marker_selected = { fg = "#ffa066"; bg = "#ffa066"; };
|
|
||||||
cwd = { fg = "#e6c384"; };
|
|
||||||
hovered = { reversed = true; };
|
|
||||||
preview_hovered = { reversed = true; };
|
|
||||||
tab_active = { reversed = true; };
|
|
||||||
tab_inactive = { };
|
|
||||||
tab_width = 1;
|
|
||||||
count_copied = { fg = "#1f1f28"; bg = "#98bb6c"; };
|
|
||||||
count_cut = { fg = "#1f1f28"; bg = "#e46876"; };
|
|
||||||
count_selected = { fg = "#1f1f28"; bg = "#e6c384"; };
|
|
||||||
border_symbol = "│";
|
|
||||||
border_style = { fg = "#dcd7ba"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
status = {
|
|
||||||
separator_open = "";
|
|
||||||
separator_close = "";
|
|
||||||
separator_style = { fg = "reset"; bg = "#363646"; };
|
|
||||||
mode_normal = { fg = "#1f1f28"; bg = "#85a6ea"; bold = true; };
|
|
||||||
mode_select = { fg = "#1f1f28"; bg = "#957fb8"; bold = true; };
|
|
||||||
mode_unset = { fg = "#1f1f28"; bg = "#e6c384"; bold = true; };
|
|
||||||
progress_label = { fg = "#85a6ea"; bg = "#363646"; bold = true; };
|
|
||||||
progress_normal = { fg = "#363646"; bg = "#1f1f28"; };
|
|
||||||
progress_error = { fg = "#363646"; bg = "#1f1f28"; };
|
|
||||||
permissions_t = { fg = "#98bb6c"; };
|
|
||||||
permissions_r = { fg = "#e6c384"; };
|
|
||||||
permissions_w = { fg = "#e82424"; };
|
|
||||||
permissions_x = { fg = "#7aa89f"; };
|
|
||||||
permissions_s = { fg = "#938aa9"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
select = {
|
|
||||||
border = { fg = "#7fb4ca"; };
|
|
||||||
active = { fg = "#938aa9"; bold = true; };
|
|
||||||
inactive = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
input = {
|
|
||||||
border = { fg = "#7fb4ca"; };
|
|
||||||
title = { };
|
|
||||||
value = { };
|
|
||||||
selected = { reversed = true; };
|
|
||||||
};
|
|
||||||
|
|
||||||
completion = {
|
|
||||||
border = { fg = "#7fb4ca"; };
|
|
||||||
active = { reversed = true; };
|
|
||||||
inactive = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
tasks = {
|
|
||||||
border = { fg = "#7fb4ca"; };
|
|
||||||
title = { };
|
|
||||||
hovered = { fg = "#938aa9"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
which = {
|
|
||||||
cols = 2;
|
|
||||||
separator = " - ";
|
|
||||||
separator_style = { fg = "#727169"; };
|
|
||||||
mask = { bg = "#16161d"; };
|
|
||||||
rest = { fg = "#727169"; };
|
|
||||||
cand = { fg = "#85a6ea"; };
|
|
||||||
desc = { fg = "#565666"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
help = {
|
|
||||||
on = { fg = "#7aa89f"; };
|
|
||||||
run = { fg = "#938aa9"; };
|
|
||||||
desc = { };
|
|
||||||
hovered = { reversed = true; bold = true; };
|
|
||||||
footer = { fg = "#090618"; bg = "#dcd7ba"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
notify = {
|
|
||||||
title_info = { fg = "#98bb6c"; };
|
|
||||||
title_warn = { fg = "#e6c384"; };
|
|
||||||
title_error = { fg = "#e82424"; };
|
|
||||||
};
|
|
||||||
|
|
||||||
filetype = {
|
|
||||||
rules = [
|
|
||||||
{ mime = "image/*"; fg = "#e6c384"; }
|
|
||||||
{ mime = "{audio,video}/*"; fg = "#957fb8"; }
|
|
||||||
{ mime = "application/{,g}zip"; fg = "#e46876"; }
|
|
||||||
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}"; fg = "#e46876"; }
|
|
||||||
{ mime = "application/{pdf,doc,rtf,vnd.*}"; fg = "#6a9589"; }
|
|
||||||
{ name = "*"; is = "orphan"; fg = "#e46876"; }
|
|
||||||
{ name = "*"; is = "exec"; fg = "#957fb8"; }
|
|
||||||
{ name = "*/"; fg = "#85a6ea"; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +1,4 @@
|
||||||
{
|
{ ...
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Import users
|
# Import users
|
||||||
|
@ -15,8 +12,28 @@
|
||||||
./common/optional/syncthing.nix
|
./common/optional/syncthing.nix
|
||||||
./common/optional/desktop/dwm
|
./common/optional/desktop/dwm
|
||||||
./common/optional/desktop/common/themes/standard-dark.nix
|
./common/optional/desktop/common/themes/standard-dark.nix
|
||||||
./common/optional/notes.nix
|
|
||||||
./common/optional/yazi.nix
|
];
|
||||||
|
# ------
|
||||||
|
# | DP-1
|
||||||
|
# ------
|
||||||
|
monitors = [
|
||||||
|
{
|
||||||
|
name = "DP-1";
|
||||||
|
width = 2560;
|
||||||
|
height = 1440;
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
workspace = "1";
|
||||||
|
primary = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "DP-2";
|
||||||
|
width = 2560;
|
||||||
|
height = 1440;
|
||||||
|
x = 2560;
|
||||||
|
y = 0;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
colorScheme = {
|
colorScheme = {
|
||||||
|
@ -43,37 +60,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xresources.extraConfig = ''
|
|
||||||
! st
|
|
||||||
st.alpha: 0.8
|
|
||||||
St.font: monospace:pixelsize=21:antialias=true:autohint=true;
|
|
||||||
St.font2: NotoColorEmoji:pixelsize=19:antialias=true:autohint=true;
|
|
||||||
|
|
||||||
! dwm
|
|
||||||
dwm.borderpx: 3
|
|
||||||
dwm.font: monospace:size=12
|
|
||||||
dwm.col_base00: #${config.colorScheme.colors.base00}
|
|
||||||
dwm.col_base03: #${config.colorScheme.colors.base03}
|
|
||||||
dwm.col_base04: #${config.colorScheme.colors.base04}
|
|
||||||
dwm.col_base05: #${config.colorScheme.colors.base05}
|
|
||||||
dwm.col_base08: #${config.colorScheme.colors.base08}
|
|
||||||
dwm.col_base0B: #${config.colorScheme.colors.base0B}
|
|
||||||
|
|
||||||
! dmenu
|
|
||||||
dmenu.font: monospace:size=12
|
|
||||||
dmenu.font2: NotoColorEmoji:pixelsize=22:antialias=true:autohint=true
|
|
||||||
dmenu.topbar: 1
|
|
||||||
dmenu.normfgcolor: #${config.colorScheme.colors.base05}
|
|
||||||
dmenu.normbgcolor: #${config.colorScheme.colors.base03}
|
|
||||||
dmenu.selfgcolor: #${config.colorScheme.colors.base00}
|
|
||||||
dmenu.selbgcolor: #${config.colorScheme.colors.base0B}
|
|
||||||
|
|
||||||
Nsxiv.window.background: #${config.colorScheme.colors.base03}
|
|
||||||
Nsxiv.window.foreground: #${config.colorScheme.colors.base05}
|
|
||||||
Nsxiv.mark.foreground: #${config.colorScheme.colors.base08}
|
|
||||||
|
|
||||||
Nsxiv.bar.background: #${config.colorScheme.colors.base00}
|
|
||||||
Nsxiv.bar.foreground: #${config.colorScheme.colors.base05}
|
|
||||||
Nsxiv.bar.font: monospace:size=12
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,25 @@
|
||||||
{outputs, ...}: {
|
{ outputs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
home.username = "sam";
|
home.username = "sam";
|
||||||
home.homeDirectory = "/home/sam";
|
home.homeDirectory = "/home/sam";
|
||||||
|
|
||||||
imports =
|
imports = [
|
||||||
[
|
] ++ (builtins.attrValues outputs.homeManagerModules); # import all homeManagerModules?
|
||||||
]
|
|
||||||
++ (builtins.attrValues outputs.homeManagerModules); # import all homeManagerModules?
|
|
||||||
|
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
matchBlocks = {
|
matchBlocks = {
|
||||||
"git.bitlab21.com" = {
|
"git.bitlab21.com" = {
|
||||||
identitiesOnly = true;
|
identitiesOnly = true;
|
||||||
identityFile = ["~/.ssh/id_ed25519"];
|
identityFile = [ "~/.ssh/id_ed25519" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.sessionPath = [
|
||||||
|
];
|
||||||
|
|
||||||
xdg.userDirs = {
|
xdg.userDirs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
createDirectories = true;
|
createDirectories = true;
|
||||||
|
@ -36,6 +39,6 @@
|
||||||
READER = "zathura";
|
READER = "zathura";
|
||||||
IMAGE_VIEWER = "nsxiv";
|
IMAGE_VIEWER = "nsxiv";
|
||||||
IMAGE_EDITOR = "drawing";
|
IMAGE_EDITOR = "drawing";
|
||||||
PATH = "$PATH:$HOME/.scripts";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,117 +0,0 @@
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# Disko setup
|
|
||||||
fsType = "btrfs"; # one of ext4 or btrfs. Use btrfs if using impermanence
|
|
||||||
dev = "/dev/nvme0n1"; # depends on target hardware
|
|
||||||
encrypted = true; # currrently only applies to btrfs
|
|
||||||
btrfsMountDevice =
|
|
||||||
if encrypted
|
|
||||||
then "/dev/mapper/crypted"
|
|
||||||
else "/dev/root_vg/root";
|
|
||||||
user = "sam";
|
|
||||||
impermanence = true;
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
# Create users for this host
|
|
||||||
../common/users/${user}
|
|
||||||
|
|
||||||
# Disk configuration
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
(import ../common/disks {
|
|
||||||
device = dev;
|
|
||||||
impermanence = impermanence;
|
|
||||||
fsType = fsType;
|
|
||||||
encrypted = encrypted;
|
|
||||||
})
|
|
||||||
|
|
||||||
# Impermanence
|
|
||||||
(import ../common/disks/btrfs/impermanence.nix {
|
|
||||||
btrfsMountDevice = btrfsMountDevice;
|
|
||||||
lib = lib;
|
|
||||||
})
|
|
||||||
|
|
||||||
# Import core options
|
|
||||||
./hardware-configuration.nix
|
|
||||||
../common/core
|
|
||||||
|
|
||||||
# Import optional options
|
|
||||||
../common/optional/persistence.nix
|
|
||||||
../common/optional/pipewire.nix
|
|
||||||
../common/optional/openssh.nix
|
|
||||||
../common/optional/dwm.nix
|
|
||||||
../common/optional/nfs-mounts/media.nix
|
|
||||||
../common/optional/nfs-mounts/homeshare.nix
|
|
||||||
../common/optional/nfs-mounts/photos.nix
|
|
||||||
../common/optional/printing.nix
|
|
||||||
../common/optional/backlight.nix
|
|
||||||
../common/optional/xmodmap-arrow-remaps.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
blacklistedKernelModules = ["snd_hda_intel" "snd_soc_skl"];
|
|
||||||
kernelModules = ["iwlwifi"];
|
|
||||||
initrd.kernelModules = ["thinkpad-acpi" "acpi-call"];
|
|
||||||
kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
|
|
||||||
extraModulePackages = [
|
|
||||||
config.boot.kernelPackages.acpi_call
|
|
||||||
];
|
|
||||||
loader = {
|
|
||||||
systemd-boot.enable = true;
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
timeout = 3;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
libinput.touchpad.accelSpeed = "0.5";
|
|
||||||
xserver = {
|
|
||||||
xkb.options = "caps:swapescape";
|
|
||||||
dpi = 196;
|
|
||||||
upscaleDefaultCursor = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.variables = {
|
|
||||||
GDK_SCALE = "2.2";
|
|
||||||
GDK_DPI_SCALE = "0.8";
|
|
||||||
_JAVA_OPTIONS = "-Dsun.java2d.uiScale=2.2";
|
|
||||||
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
|
||||||
XCURSOR_SIZE = "64";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.tlp = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
CPU_SCALING_GOVERNOR_ON_AC = "ondemand";
|
|
||||||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
|
||||||
|
|
||||||
START_CHARGE_THRESH_BAT0 = 50;
|
|
||||||
STOP_CHARGE_THRESH_BAT0 = 95;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware = {
|
|
||||||
bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
powerOnBoot = true;
|
|
||||||
};
|
|
||||||
enableRedistributableFirmware = true;
|
|
||||||
firmware = [
|
|
||||||
pkgs.sof-firmware
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "citadel";
|
|
||||||
networkmanager.enable = true;
|
|
||||||
enableIPv6 = false;
|
|
||||||
nameservers = ["10.0.10.60" "8.8.8.8"];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.libinput.enable = true;
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko -- --mode disko ./zspeed.nix
|
|
|
@ -1,70 +0,0 @@
|
||||||
{
|
|
||||||
disko.devices = {
|
|
||||||
disk = {
|
|
||||||
x = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
zfs = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "zfs";
|
|
||||||
pool = "zspeed";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
y = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi3";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
zfs = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "zfs";
|
|
||||||
pool = "zspeed";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
zpool = {
|
|
||||||
zspeed = {
|
|
||||||
type = "zpool";
|
|
||||||
mode = "mirror";
|
|
||||||
rootFsOptions = {
|
|
||||||
"compression" = "zstd-4";
|
|
||||||
"com.sun:auto-snapshot" = "false";
|
|
||||||
"xattr" = "sa";
|
|
||||||
"atime" = "off";
|
|
||||||
};
|
|
||||||
options = {
|
|
||||||
"ashift" = "13";
|
|
||||||
};
|
|
||||||
postCreateHook = "zfs list -t snapshot -H -o name | grep -E '^zspeed@blank$' || zfs snapshot zspeed@blank";
|
|
||||||
|
|
||||||
datasets = {
|
|
||||||
postgres = {
|
|
||||||
type = "zfs_volume";
|
|
||||||
size = "10G -s";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "btrfs";
|
|
||||||
mountpoint = "/postgres";
|
|
||||||
};
|
|
||||||
options = {
|
|
||||||
"com.sun:auto-snapshot:daily" = "true";
|
|
||||||
"volblocksize" = "8k";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.brightnessctl
|
|
||||||
];
|
|
||||||
services.illum.enable = true;
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
{ pkgs, inputs, ... }:
|
|
||||||
{
|
|
||||||
|
|
||||||
imports = [ inputs.arion.nixosModules.arion ];
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.arion
|
|
||||||
];
|
|
||||||
|
|
||||||
# Arion works with Docker, but for NixOS-based containers, you need Podman
|
|
||||||
# since NixOS 21.05.
|
|
||||||
virtualisation = {
|
|
||||||
podman = {
|
|
||||||
enable = true;
|
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
|
||||||
};
|
|
||||||
docker = {
|
|
||||||
enable = true;
|
|
||||||
storageDriver = "btrfs";
|
|
||||||
rootless = {
|
|
||||||
enable = true;
|
|
||||||
setSocketVariable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,143 +0,0 @@
|
||||||
{ pkgs, lib, inputs, config, ... }:
|
|
||||||
let
|
|
||||||
admin_dbPasswordFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."software/postgres/admin_db/password".path;
|
|
||||||
initScript = pkgs.writeText "init.sh" ''
|
|
||||||
#!/bin/bash
|
|
||||||
function create_user_and_database() {
|
|
||||||
local database=$1
|
|
||||||
local user=$2
|
|
||||||
local extensions=$3
|
|
||||||
echo "### admin user: $POSTGRES_USER ###"
|
|
||||||
echo " Creating database '$database'"
|
|
||||||
echo " Creating user '$user'"
|
|
||||||
psql -v --username "$POSTGRES_USER" -d "$POSTGRES_DB" <<-EOSQL
|
|
||||||
CREATE USER $user;
|
|
||||||
CREATE DATABASE $database;
|
|
||||||
GRANT ALL PRIVILEGES ON DATABASE $database TO $user;
|
|
||||||
EOSQL
|
|
||||||
|
|
||||||
# Loop through extensions and create them
|
|
||||||
for ext in $(echo "$extensions" | tr ',' ' '); do
|
|
||||||
echo " - Installing extention $ext"
|
|
||||||
psql -v --username "$POSTGRES_USER" -d "$database" -c "CREATE EXTENSION $ext;"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; then
|
|
||||||
|
|
||||||
# Parse the JSON string
|
|
||||||
database_names=$(echo "$POSTGRES_MULTIPLE_DATABASES" | jq -r '.[0] | keys[]')
|
|
||||||
echo "Multiple database creation requested: $(echo "$database_names" | tr "\n" " ")"
|
|
||||||
|
|
||||||
# Loop through each database and create it
|
|
||||||
for db_name in $database_names; do
|
|
||||||
user=$(echo "$POSTGRES_MULTIPLE_DATABASES" | jq -r ".[0] | .''${db_name} | .user")
|
|
||||||
extensions=$(echo "$POSTGRES_MULTIPLE_DATABASES" | jq -r ".[0] | .''${db_name} | .extensions | join(\",\")")
|
|
||||||
create_user_and_database "$db_name" "$user" "$extensions"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
pg_hbaConfig = pkgs.writeText "pg_hba.conf" ''
|
|
||||||
none
|
|
||||||
'';
|
|
||||||
|
|
||||||
pgsqlConfig = pkgs.writeText "postgresql.conf" ''
|
|
||||||
listen_addresses = '*'
|
|
||||||
port = 5432
|
|
||||||
max_connections = 100
|
|
||||||
shared_buffers = 24GB
|
|
||||||
work_mem = 1GB
|
|
||||||
maintenance_work_mem = 10GB
|
|
||||||
autovacuum_work_mem = 2GB
|
|
||||||
dynamic_shared_memory_type = posix
|
|
||||||
wal_level = minimal
|
|
||||||
checkpoint_timeout = 60min
|
|
||||||
checkpoint_completion_target = 0.9
|
|
||||||
max_wal_size = 10GB
|
|
||||||
min_wal_size = 80MB
|
|
||||||
max_wal_senders = 0
|
|
||||||
random_page_cost = 1.0
|
|
||||||
effective_cache_size = 25GB
|
|
||||||
jit = off
|
|
||||||
log_line_prefix = '%m [%p] %q%u@%d '
|
|
||||||
log_timezone = 'Etc/UTC'
|
|
||||||
cluster_name = 'postgres-docker'
|
|
||||||
datestyle = 'iso, dmy'
|
|
||||||
timezone = 'Etc/UTC'
|
|
||||||
default_text_search_config = 'pg_catalog.english'
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
sops.secrets = {
|
|
||||||
"software/postgres/admin_db/password" = { };
|
|
||||||
};
|
|
||||||
virtualisation.arion = {
|
|
||||||
backend = "docker";
|
|
||||||
projects = {
|
|
||||||
"db".settings.services."db".service = {
|
|
||||||
restart = "unless-stopped";
|
|
||||||
build.context = "/nix/store";
|
|
||||||
build.dockerfile = builtins.baseNameOf "${pkgs.writeText "pgDockerfile" ''
|
|
||||||
FROM postgres:16
|
|
||||||
# install packages
|
|
||||||
RUN apt-get update \
|
|
||||||
&& apt-get install -y --no-install-recommends \
|
|
||||||
postgresql-16-postgis \
|
|
||||||
jq \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
''}";
|
|
||||||
command = [ "postgres" "-c" "config_file=/etc/postgresql/postgresql.conf" ];
|
|
||||||
environment = {
|
|
||||||
POSTGRES_PASSWORD_FILE = admin_dbPasswordFile;
|
|
||||||
POSTGRES_USER = "admin";
|
|
||||||
POSTGRES_DB = "admin_db";
|
|
||||||
PGDATA = "/var/lib/postgresql/data/pgdata";
|
|
||||||
POSTGRES_MULTIPLE_DATABASES = ''
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"osm": {
|
|
||||||
"user": "gis",
|
|
||||||
"extensions": [
|
|
||||||
"hstore",
|
|
||||||
"postgis"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"bitcoin": {
|
|
||||||
"user": "satoshi",
|
|
||||||
"extensions": []
|
|
||||||
},
|
|
||||||
"btc_models": {
|
|
||||||
"user": "dbt",
|
|
||||||
"extensions": []
|
|
||||||
},
|
|
||||||
"dev_btc_models": {
|
|
||||||
"user": "dbt",
|
|
||||||
"extensions": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
ports = [ "5432:5432" ];
|
|
||||||
volumes = [
|
|
||||||
|
|
||||||
# Mount pgdata to external zfs volume
|
|
||||||
"/mnt/postgres:/var/lib/postgresql/data"
|
|
||||||
|
|
||||||
# Mount config files
|
|
||||||
# "${pg_hbaConfig}:/var/lib/postgres/data/pgdata/pg_hba.conf"
|
|
||||||
"${pgsqlConfig}:/etc/postgresql/postgresql.conf"
|
|
||||||
|
|
||||||
# Need to mount secret file
|
|
||||||
"${admin_dbPasswordFile}:${admin_dbPasswordFile}"
|
|
||||||
|
|
||||||
# PG init script to parse json specified in POSTGRES_MULTIPLE_DATABASES
|
|
||||||
# creates databases, users and installs extensions for each database.
|
|
||||||
"${initScript}:/docker-entrypoint-initdb.d/init.sh"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
services = {
|
services = {
|
||||||
libinput.enable = true;
|
libinput.enable = true;
|
||||||
xserver = {
|
xserver = {
|
||||||
autoRepeatDelay = 300;
|
autoRepeatDelay = 250;
|
||||||
autoRepeatInterval = 15;
|
autoRepeatInterval = 30;
|
||||||
enable = true;
|
enable = true;
|
||||||
xkb.layout = "gb";
|
xkb.layout = "gb";
|
||||||
displayManager.startx.enable = true;
|
displayManager.startx.enable = true;
|
||||||
|
@ -12,11 +12,12 @@
|
||||||
windowManager.dwm = {
|
windowManager.dwm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.dwm.overrideAttrs {
|
package = pkgs.dwm.overrideAttrs {
|
||||||
#src = /home/sam/.local/share/src/dwm;
|
src = pkgs.fetchFromGitea {
|
||||||
src = pkgs.fetchgit {
|
domain = "git.bitlab21.com";
|
||||||
url = "https://git.bitlab21.com/sam/dwm";
|
owner = "sam";
|
||||||
rev = "49dd30c0d9970ce480ada51dfcaac1a071804c64";
|
repo = "dwm";
|
||||||
sha256 = "0ywca25a1pdjvb4cgv5gx36x3yd6922pqvn9a5f60lcn5fv2a96n";
|
rev = "e34d0ecdd98e52164c135b560a5583aa11be89b7";
|
||||||
|
sha256 = "sha256-er1zi2xYK7AB6oR7JmfkfehesKTw9P4bcgjafj2lIIU=";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
fileSystems."/media/homeshare" = {
|
|
||||||
device = "10.0.10.30:/mnt/homeshare";
|
|
||||||
fsType = "nfs";
|
|
||||||
options = [ "noatime" "_netdev" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
fileSystems."/media/media" = {
|
|
||||||
device = "10.0.10.30:/mnt/media";
|
|
||||||
fsType = "nfs";
|
|
||||||
options = ["noatime" "_netdev"];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
fileSystems."/media/photos" = {
|
|
||||||
device = "10.0.10.30:/mnt/photos";
|
|
||||||
fsType = "nfs";
|
|
||||||
options = [ "noatime" "_netdev" "ro" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
{pkgs, ...}: {
|
|
||||||
services = {
|
|
||||||
udev.packages = [pkgs.sane-airscan];
|
|
||||||
printing = {
|
|
||||||
enable = true;
|
|
||||||
drivers = [pkgs.gutenprint pkgs.hplip];
|
|
||||||
};
|
|
||||||
avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware = {
|
|
||||||
sane = {
|
|
||||||
enable = true;
|
|
||||||
extraBackends = [pkgs.sane-airscan];
|
|
||||||
netConf = "10.0.10.2";
|
|
||||||
};
|
|
||||||
printers = {
|
|
||||||
ensurePrinters = [
|
|
||||||
{
|
|
||||||
name = "HP_ENVY_6000";
|
|
||||||
description = "Network printer hosted on bob";
|
|
||||||
location = "bob";
|
|
||||||
deviceUri = "ipp://bob/printers/HP_ENVY_6000_series";
|
|
||||||
model = "everywhere";
|
|
||||||
ppdOptions = {
|
|
||||||
PageSize = "A4";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
{pkgs, ...}: let
|
|
||||||
customLayout = pkgs.writeText "xkb-layout" ''
|
|
||||||
keycode 64 = Mode_switch
|
|
||||||
keycode 43 = h H Left H
|
|
||||||
keycode 44 = j J Down J
|
|
||||||
keycode 45 = k K Up K
|
|
||||||
keycode 46 = l L Right L
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
# Remap Alt_L +[hjkl] to left down up right
|
|
||||||
services.xserver.displayManager.sessionCommands = "sleep 5 && ${pkgs.xorg.xmodmap}/bin/xmodmap ${customLayout}";
|
|
||||||
}
|
|
|
@ -1,6 +1,5 @@
|
||||||
{ pkgs, inputs, config, lib, ... }:
|
{ pkgs, inputs, config, lib, ... }:
|
||||||
let
|
let
|
||||||
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
|
||||||
username = "admin";
|
username = "admin";
|
||||||
pubKeys = lib.filesystem.listFilesRecursive (../keys);
|
pubKeys = lib.filesystem.listFilesRecursive (../keys);
|
||||||
hostname = config.networking.hostName;
|
hostname = config.networking.hostName;
|
||||||
|
@ -16,14 +15,7 @@ in
|
||||||
hashedPasswordFile = sopsHashedPasswordFile;
|
hashedPasswordFile = sopsHashedPasswordFile;
|
||||||
openssh.authorizedKeys.keys = lib.lists.forEach pubKeys (key: builtins.readFile key);
|
openssh.authorizedKeys.keys = lib.lists.forEach pubKeys (key: builtins.readFile key);
|
||||||
|
|
||||||
extraGroups = [
|
extraGroups = ["wheel"];
|
||||||
"wheel"
|
|
||||||
] ++ ifTheyExist [
|
|
||||||
"docker"
|
|
||||||
"lxc"
|
|
||||||
"git"
|
|
||||||
"podman"
|
|
||||||
];
|
|
||||||
|
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
];
|
];
|
||||||
|
|
|
@ -1,26 +1,22 @@
|
||||||
{
|
{ pkgs, inputs, config, lib, ... }:
|
||||||
pkgs,
|
let
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
username = "media";
|
username = "media";
|
||||||
pubKeys = lib.filesystem.listFilesRecursive ../keys;
|
pubKeys = lib.filesystem.listFilesRecursive (../keys);
|
||||||
hostname = config.networking.hostName;
|
hostname = config.networking.hostName;
|
||||||
sopsHashedPasswordFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."passwords/${username}".path;
|
sopsHashedPasswordFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."passwords/${username}".path;
|
||||||
secretsDirectory = builtins.toString inputs.nix-secrets;
|
secretsDirectory = builtins.toString inputs.nix-secrets;
|
||||||
secretsFile = "${secretsDirectory}/secrets.yaml";
|
secretsFile = "${secretsDirectory}/secrets.yaml";
|
||||||
in {
|
|
||||||
|
in
|
||||||
|
{
|
||||||
users.users.${username} = {
|
users.users.${username} = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = pkgs.zsh; # default shell
|
shell = pkgs.zsh; # default shell
|
||||||
hashedPasswordFile = sopsHashedPasswordFile;
|
hashedPasswordFile = sopsHashedPasswordFile;
|
||||||
openssh.authorizedKeys.keys = lib.lists.forEach pubKeys (key: builtins.readFile key);
|
openssh.authorizedKeys.keys = lib.lists.forEach pubKeys (key: builtins.readFile key);
|
||||||
|
|
||||||
extraGroups = [
|
extraGroups =
|
||||||
"scanner"
|
[
|
||||||
"lp"
|
|
||||||
"wheel"
|
"wheel"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -69,11 +65,13 @@ in {
|
||||||
# The containing ssh folders are created as root and if this is the first ~/.ssh/ entry when writing keys,
|
# The containing ssh folders are created as root and if this is the first ~/.ssh/ entry when writing keys,
|
||||||
# the ownership is busted and home-manager can't target because it can't write into .ssh...
|
# the ownership is busted and home-manager can't target because it can't write into .ssh...
|
||||||
# FIXME: We might not need this depending on how https://github.com/Mic92/sops-nix/issues/381 is fixed
|
# FIXME: We might not need this depending on how https://github.com/Mic92/sops-nix/issues/381 is fixed
|
||||||
system.activationScripts.sopsSetSshOwnwership = let
|
system.activationScripts.sopsSetSshOwnwership =
|
||||||
|
let
|
||||||
sshFolder = "/home/${username}/.ssh";
|
sshFolder = "/home/${username}/.ssh";
|
||||||
user = config.users.users.${username}.name;
|
user = config.users.users.${username}.name;
|
||||||
group = config.users.users.${username}.group;
|
group = config.users.users.${username}.group;
|
||||||
in ''
|
in
|
||||||
|
''
|
||||||
mkdir -p ${sshFolder} || true
|
mkdir -p ${sshFolder} || true
|
||||||
chown -R ${user}:${group} /home/${username}/.ssh
|
chown -R ${user}:${group} /home/${username}/.ssh
|
||||||
'';
|
'';
|
||||||
|
@ -84,7 +82,7 @@ in {
|
||||||
programs.fuse.userAllowOther = true;
|
programs.fuse.userAllowOther = true;
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = {inherit inputs;};
|
extraSpecialArgs = { inherit inputs; };
|
||||||
users = {
|
users = {
|
||||||
${username} = import ../../../../home/${hostname}.nix;
|
${username} = import ../../../../home/${hostname}.nix;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,17 +1,13 @@
|
||||||
{
|
{ pkgs, inputs, config, lib, ... }:
|
||||||
pkgs,
|
let
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hostname = config.networking.hostName;
|
hostname = config.networking.hostName;
|
||||||
pubKeys = lib.filesystem.listFilesRecursive ../keys;
|
pubKeys = lib.filesystem.listFilesRecursive (../keys);
|
||||||
sopsHashedPasswordFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."passwords/sam".path;
|
sopsHashedPasswordFile = lib.optionalString (lib.hasAttr "sops-nix" inputs) config.sops.secrets."passwords/sam".path;
|
||||||
secretsDirectory = builtins.toString inputs.nix-secrets;
|
secretsDirectory = builtins.toString inputs.nix-secrets;
|
||||||
secretsFile = "${secretsDirectory}/secrets.yaml";
|
secretsFile = "${secretsDirectory}/secrets.yaml";
|
||||||
username = "sam";
|
username = "sam";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
users.users.${username} = {
|
users.users.${username} = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
shell = pkgs.zsh; # default shell
|
shell = pkgs.zsh; # default shell
|
||||||
|
@ -20,10 +16,8 @@ in {
|
||||||
|
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"wheel"
|
"wheel"
|
||||||
"networkmanager"
|
|
||||||
"scanner"
|
|
||||||
"lp"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
|
@ -44,24 +38,18 @@ in {
|
||||||
"github-access-token" = {
|
"github-access-token" = {
|
||||||
mode = "0655";
|
mode = "0655";
|
||||||
};
|
};
|
||||||
"software/postgres/baseddata_models/password" = {};
|
"software/postgres/btc_models/password" = { };
|
||||||
"software/postgres/baseddata_models/ip" = {};
|
"software/postgres/btc_models/ip" = { };
|
||||||
"software/postgres/baseddata_models/username" = {};
|
"software/postgres/btc_models/username" = { };
|
||||||
"software/postgres/osm/password" = {};
|
"software/zotero/username" = { };
|
||||||
"software/postgres/osm/ip" = {};
|
"software/zotero/password" = { };
|
||||||
"software/postgres/osm/username" = {};
|
"software/zotero/guid" = { };
|
||||||
"software/postgres/bitcoin/password" = {};
|
|
||||||
"software/postgres/bitcoin/ip" = {};
|
|
||||||
"software/postgres/bitcoin/username" = {};
|
|
||||||
"software/zotero/username" = {};
|
|
||||||
"software/zotero/password" = {};
|
|
||||||
"software/zotero/guid" = {};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# Setup software specific templates for user
|
# Setup software specific templates for user
|
||||||
# Should be part of home-manager - waiting for templates functionality
|
# Should be part of home-manager - waiting for templates functionality
|
||||||
# See here https://github.com/Mic92/sops-nix/issues/423 and here https://github.com/Mic92/sops-nix/issues/498
|
# See here https://github.com/Mic92/sops-nix/issues/423 and here https://github.com/Mic92/sops-nix/issues/498
|
||||||
# TODO: migrate db_ui connection to home-manager when issue 423 and 498 are resolved in github:Mic92/sops-nix
|
# TODO migrate db_ui connection to home-manager when issue 423 and 498 are resolved in github:Mic92/sops-nix
|
||||||
sops.templates."dbui_connections.json" = {
|
sops.templates."dbui_connections.json" = {
|
||||||
path = "/home/${username}/.local/share/db_ui/connections.json";
|
path = "/home/${username}/.local/share/db_ui/connections.json";
|
||||||
owner = "${username}";
|
owner = "${username}";
|
||||||
|
@ -69,20 +57,12 @@ in {
|
||||||
content = ''
|
content = ''
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"url": "postgresql://${config.sops.placeholder."software/postgres/baseddata_models/username"}:${config.sops.placeholder."software/postgres/baseddata_models/password"}@${config.sops.placeholder."software/postgres/baseddata_models/ip"}/btc_models",
|
"url": "postgresql://${config.sops.placeholder."software/postgres/btc_models/username"}:${config.sops.placeholder."software/postgres/btc_models/password"}@${config.sops.placeholder."software/postgres/btc_models/ip"}/btc_models",
|
||||||
"name": "baseddata_models"
|
"name": "btc_models"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"url": "postgresql://${config.sops.placeholder."software/postgres/baseddata_models/username"}:${config.sops.placeholder."software/postgres/baseddata_models/password"}@${config.sops.placeholder."software/postgres/baseddata_models/ip"}/dev_baseddata_models",
|
"url": "postgresql://${config.sops.placeholder."software/postgres/btc_models/username"}:${config.sops.placeholder."software/postgres/btc_models/password"}@${config.sops.placeholder."software/postgres/btc_models/ip"}/dev_btc_models",
|
||||||
"name": "dev_baseddata_models"
|
"name": "dev_btc_models"
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "postgresql://${config.sops.placeholder."software/postgres/osm/username"}:${config.sops.placeholder."software/postgres/osm/password"}@${config.sops.placeholder."software/postgres/osm/ip"}/osm",
|
|
||||||
"name": "osm"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "postgresql://${config.sops.placeholder."software/postgres/bitcoin/username"}:${config.sops.placeholder."software/postgres/bitcoin/password"}@${config.sops.placeholder."software/postgres/bitcoin/ip"}/bitcoin",
|
|
||||||
"name": "bitcoin"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
'';
|
'';
|
||||||
|
@ -93,27 +73,27 @@ in {
|
||||||
owner = "${username}";
|
owner = "${username}";
|
||||||
mode = "0600";
|
mode = "0600";
|
||||||
content = ''
|
content = ''
|
||||||
baseddata:
|
bitcoin:
|
||||||
target: dev
|
target: dev
|
||||||
outputs:
|
outputs:
|
||||||
dev:
|
dev:
|
||||||
dbname: dev_baseddata_models
|
dbname: dev_btc_models
|
||||||
host: ${config.sops.placeholder."software/postgres/baseddata_models/ip"}
|
host: ${config.sops.placeholder."software/postgres/btc_models/ip"}
|
||||||
pass: '${config.sops.placeholder."software/postgres/baseddata_models/password"}'
|
pass: '${config.sops.placeholder."software/postgres/btc_models/password"}'
|
||||||
port: 5432
|
port: 5432
|
||||||
schema: models
|
schema: models
|
||||||
threads: 6
|
threads: 6
|
||||||
type: postgres
|
type: postgres
|
||||||
user: ${config.sops.placeholder."software/postgres/baseddata_models/username"}
|
user: ${config.sops.placeholder."software/postgres/btc_models/username"}
|
||||||
prod:
|
prod:
|
||||||
dbname: baseddata_models
|
dbname: btc_models
|
||||||
host: ${config.sops.placeholder."software/postgres/baseddata_models/ip"}
|
host: ${config.sops.placeholder."software/postgres/btc_models/ip"}
|
||||||
pass: '${config.sops.placeholder."software/postgres/baseddata_models/password"}'
|
pass: '${config.sops.placeholder."software/postgres/btc_models/password"}'
|
||||||
port: 5432
|
port: 5432
|
||||||
schema: models
|
schema: models
|
||||||
threads: 6
|
threads: 6
|
||||||
type: postgres
|
type: postgres
|
||||||
user: ${config.sops.placeholder."software/postgres/baseddata_models/username"}
|
user: ${config.sops.placeholder."software/postgres/btc_models/username"}
|
||||||
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -127,11 +107,13 @@ in {
|
||||||
# The containing folders are created as root and if this is the first entry when writing files,
|
# The containing folders are created as root and if this is the first entry when writing files,
|
||||||
# the ownership is busted and home-manager can't target because it can't write to these dirs...
|
# the ownership is busted and home-manager can't target because it can't write to these dirs...
|
||||||
# FIXME: We might not need this depending on how https://github.com/Mic92/sops-nix/issues/381 is fixed
|
# FIXME: We might not need this depending on how https://github.com/Mic92/sops-nix/issues/381 is fixed
|
||||||
system.activationScripts.sopsSetOwnwership = let
|
system.activationScripts.sopsSetOwnwership =
|
||||||
|
let
|
||||||
sshFolder = "/home/${username}/.ssh";
|
sshFolder = "/home/${username}/.ssh";
|
||||||
user = config.users.users.${username}.name;
|
user = config.users.users.${username}.name;
|
||||||
group = config.users.users.${username}.group;
|
group = config.users.users.${username}.group;
|
||||||
in ''
|
in
|
||||||
|
''
|
||||||
mkdir -p ${sshFolder} || true
|
mkdir -p ${sshFolder} || true
|
||||||
chown -R ${user}:${group} /home/${username}/.ssh
|
chown -R ${user}:${group} /home/${username}/.ssh
|
||||||
'';
|
'';
|
||||||
|
@ -145,7 +127,7 @@ in {
|
||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = {inherit inputs;};
|
extraSpecialArgs = { inherit inputs; };
|
||||||
users = {
|
users = {
|
||||||
${username} = import ../../../../home/${hostname}.nix;
|
${username} = import ../../../../home/${hostname}.nix;
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
{ inputs, config, lib, pkgs, outputs, configLib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
# Import core options
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../common/core
|
||||||
|
|
||||||
|
# Import optional options
|
||||||
|
../common/optional/openssh
|
||||||
|
../common/optional/fileserver-nfs-mount.nix
|
||||||
|
|
||||||
|
# Create users for this host
|
||||||
|
../common/users/admin
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
overlays = [
|
||||||
|
outputs.overlays.additions
|
||||||
|
outputs.overlays.modifications
|
||||||
|
outputs.overlays.unstable-packages
|
||||||
|
];
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
|
||||||
|
boot.loader.grub.enable = true;
|
||||||
|
boot.loader.grub.device = "/dev/vda";
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "fileserver";
|
||||||
|
networkmanager.enable = true;
|
||||||
|
enableIPv6 = false;
|
||||||
|
hosts = { "192.168.122.223" = [ "fileserver" ]; };
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Europe/London";
|
||||||
|
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -8,11 +8,18 @@
|
||||||
[ (modulesPath + "/profiles/qemu-guest.nix")
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
|
||||||
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/9bed98b2-5ee2-4408-a9b1-6d40e9b68135";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# 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
|
# (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
|
# still possible to use this option, but it's recommended to use it in conjunction
|
|
@ -1,10 +1,11 @@
|
||||||
{ inputs, ... }:
|
{ inputs, config, lib, pkgs, outputs, ... }:
|
||||||
let
|
let
|
||||||
# Disko setup
|
# Disko setup
|
||||||
fsType = "btrfs"; # one of ext4 or btrfs. Use btrfs if using impermanence
|
fsType = "btrfs"; # one of ext4 or btrfs. Use btrfs if using impermanence
|
||||||
dev = "/dev/disk/by-id/ata-QEMU_HARDDISK_QM00005";
|
dev = "/dev/sda"; # depends on target hardware
|
||||||
encrypted = false; # currrently only applies to btrfs
|
encrypted = false; # currrently only applies to btrfs
|
||||||
impermanence = false;
|
impermanence = false; # currrently only applies to btrfs
|
||||||
|
btrfsMountDevice = if encrypted then "/dev/mapper/crypted" else "/dev/root_vg/root";
|
||||||
user = "admin";
|
user = "admin";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
@ -13,7 +14,7 @@ in
|
||||||
# Create users for this host
|
# Create users for this host
|
||||||
../common/users/${user}
|
../common/users/${user}
|
||||||
|
|
||||||
# Root disk configuration
|
# Disk configuration
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
(import ../common/disks { device = dev; impermanence = impermanence; fsType = fsType; encrypted = encrypted; })
|
(import ../common/disks { device = dev; impermanence = impermanence; fsType = fsType; encrypted = encrypted; })
|
||||||
|
|
||||||
|
@ -23,8 +24,7 @@ in
|
||||||
|
|
||||||
# Import optional options
|
# Import optional options
|
||||||
../common/optional/openssh.nix
|
../common/optional/openssh.nix
|
||||||
../common/optional/docker
|
|
||||||
../common/optional/docker/postgres.nix
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ in
|
||||||
boot.supportedFilesystems = [ "zfs" ];
|
boot.supportedFilesystems = [ "zfs" ];
|
||||||
boot.zfs.forceImportRoot = false;
|
boot.zfs.forceImportRoot = false;
|
||||||
networking.hostId = "18aec5d7";
|
networking.hostId = "18aec5d7";
|
||||||
boot.zfs.extraPools = [ "zspeed" ];
|
|
||||||
|
|
||||||
services.libinput.enable = true;
|
services.libinput.enable = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
{ inputs, config, lib, pkgs, outputs,... }:
|
||||||
|
let
|
||||||
|
dev = "/dev/vda";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
# Import core options
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../common/core
|
||||||
|
|
||||||
|
# Import optional options
|
||||||
|
../common/optional/pipewire.nix
|
||||||
|
../common/optional/hyprland.nix
|
||||||
|
../common/optional/displayManager/sddm.nix
|
||||||
|
../common/optional/openssh.nix
|
||||||
|
|
||||||
|
# Create users for this host
|
||||||
|
../common/users/sam
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader.grub.enable = true;
|
||||||
|
boot.loader.grub.device = "${dev}";
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "nixdev";
|
||||||
|
networkmanager.enable = true;
|
||||||
|
enableIPv6 = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.libinput.enable = true;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
# 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 =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/f9abe09a-de68-4913-b6c5-ad55b473a961";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/fe24d2ba-2fbc-4ef5-8139-a26f4fc3f3e3"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# 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.enp1s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
|
@ -1,38 +1,25 @@
|
||||||
{
|
{ inputs, config, lib, pkgs, outputs, ... }:
|
||||||
inputs,
|
let
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
# Disko setup
|
# Disko setup
|
||||||
fsType = "btrfs"; # one of ext4 or btrfs. Use btrfs if using impermanence
|
fsType = "btrfs"; # one of ext4 or btrfs. Use btrfs if using impermanence
|
||||||
dev = "/dev/nvme0n1"; # depends on target hardware
|
dev = "/dev/nvme0n1"; # depends on target hardware
|
||||||
encrypted = true; # currrently only applies to btrfs
|
encrypted = true; # currrently only applies to btrfs
|
||||||
btrfsMountDevice =
|
btrfsMountDevice = if encrypted then "/dev/mapper/crypted" else "/dev/root_vg/root";
|
||||||
if encrypted
|
|
||||||
then "/dev/mapper/crypted"
|
|
||||||
else "/dev/root_vg/root";
|
|
||||||
user = "sam";
|
user = "sam";
|
||||||
impermanence = true;
|
impermanence = true;
|
||||||
in {
|
in
|
||||||
imports = [
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
# Create users for this host
|
# Create users for this host
|
||||||
../common/users/${user}
|
../common/users/${user}
|
||||||
|
|
||||||
# Disk configuration
|
# Disk configuration
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
(import ../common/disks {
|
(import ../common/disks { device = dev; impermanence = impermanence; fsType = fsType; encrypted = encrypted; })
|
||||||
device = dev;
|
|
||||||
impermanence = impermanence;
|
|
||||||
fsType = fsType;
|
|
||||||
encrypted = encrypted;
|
|
||||||
})
|
|
||||||
|
|
||||||
# Impermanence
|
# Impermanence
|
||||||
(import ../common/disks/btrfs/impermanence.nix {
|
(import ../common/disks/btrfs/impermanence.nix { btrfsMountDevice = btrfsMountDevice; lib = lib; })
|
||||||
btrfsMountDevice = btrfsMountDevice;
|
|
||||||
lib = lib;
|
|
||||||
})
|
|
||||||
|
|
||||||
# Import core options
|
# Import core options
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
@ -43,13 +30,11 @@ in {
|
||||||
../common/optional/pipewire.nix
|
../common/optional/pipewire.nix
|
||||||
../common/optional/openssh.nix
|
../common/optional/openssh.nix
|
||||||
../common/optional/dwm.nix
|
../common/optional/dwm.nix
|
||||||
../common/optional/nfs-mounts/media.nix
|
|
||||||
../common/optional/nfs-mounts/homeshare.nix
|
|
||||||
../common/optional/printing.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
blacklistedKernelModules = ["snd_hda_intel" "snd_soc_skl"];
|
blacklistedKernelModules = [ "snd_hda_intel" "snd_soc_skl" ];
|
||||||
kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
|
kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot.enable = true;
|
systemd-boot.enable = true;
|
||||||
|
@ -58,21 +43,6 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
|
||||||
xserver = {
|
|
||||||
dpi = 144;
|
|
||||||
upscaleDefaultCursor = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.variables = {
|
|
||||||
GDK_SCALE = "2";
|
|
||||||
GDK_DPI_SCALE = "0.6";
|
|
||||||
_JAVA_OPTIONS = "-Dsun.java2d.uiScale=1.8";
|
|
||||||
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
|
||||||
XCURSOR_SIZE = "32";
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.firmware = [
|
hardware.firmware = [
|
||||||
pkgs.sof-firmware
|
pkgs.sof-firmware
|
||||||
];
|
];
|
||||||
|
@ -81,7 +51,6 @@ in {
|
||||||
hostName = "semita";
|
hostName = "semita";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
enableIPv6 = false;
|
enableIPv6 = false;
|
||||||
nameservers = ["10.0.10.60" "8.8.8.8"];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services.libinput.enable = true;
|
services.libinput.enable = true;
|
||||||
|
|
|
@ -27,9 +27,7 @@ in
|
||||||
# Import optional options
|
# Import optional options
|
||||||
../common/optional/openssh.nix
|
../common/optional/openssh.nix
|
||||||
../common/optional/persistence.nix
|
../common/optional/persistence.nix
|
||||||
../common/optional/nfs-mounts/media.nix
|
|
||||||
../common/optional/gaming.nix
|
../common/optional/gaming.nix
|
||||||
../common/optional/printing.nix
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
4
justfile
4
justfile
|
@ -1,4 +1,4 @@
|
||||||
SOPS_FILE := "~/.local/share/src/nix-secrets/secrets.yaml"
|
SOPS_FILE := "../nix-secrets/secrets.yaml"
|
||||||
|
|
||||||
# default recipe to display help information
|
# default recipe to display help information
|
||||||
default:
|
default:
|
||||||
|
@ -26,7 +26,7 @@ edit-sops:
|
||||||
|
|
||||||
# update keys in secrets.yaml and push to remote
|
# update keys in secrets.yaml and push to remote
|
||||||
update-sops-secrets:
|
update-sops-secrets:
|
||||||
cd ~/.local/share/src/nix-secrets && (\
|
cd ../nix-secrets && (\
|
||||||
nix-shell -p sops --run "sops updatekeys -y secrets.yaml" && \
|
nix-shell -p sops --run "sops updatekeys -y secrets.yaml" && \
|
||||||
git add -u && (git commit -m "updated secrets" || true) && git push \
|
git add -u && (git commit -m "updated secrets" || true) && git push \
|
||||||
)
|
)
|
||||||
|
|
|
@ -5,5 +5,4 @@ pkgs: {
|
||||||
dmenu = pkgs.callPackage ./dmenu { };
|
dmenu = pkgs.callPackage ./dmenu { };
|
||||||
nsxiv = pkgs.callPackage ./nsxiv { };
|
nsxiv = pkgs.callPackage ./nsxiv { };
|
||||||
sqlfmt = pkgs.callPackage ./sqlfmt { };
|
sqlfmt = pkgs.callPackage ./sqlfmt { };
|
||||||
kunst = pkgs.callPackage ./kunst { };
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
{ pkgs ? import <nixpkgs> { }
|
|
||||||
, fetchFromGitea ? pkgs.fetchFromGitea
|
|
||||||
}:
|
|
||||||
pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "kunst";
|
|
||||||
name = "kunst";
|
|
||||||
|
|
||||||
src = fetchFromGitea {
|
|
||||||
domain = "git.bitlab21.com";
|
|
||||||
owner = "sam";
|
|
||||||
repo = "kunst";
|
|
||||||
rev = "efff362ab9ea14cae2bb6c5d246601011e345732";
|
|
||||||
sha256 = "sha256-AeAYh2z2Ty9rYfgm+EhYB99OI87aWqLURDbfT0N3wUg=";
|
|
||||||
};
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/bin
|
|
||||||
mv kunst $out/bin
|
|
||||||
chmod 755 $out/bin/kunst
|
|
||||||
'';
|
|
||||||
|
|
||||||
}
|
|
|
@ -2,17 +2,14 @@
|
||||||
, fetchurl ? pkgs.fetchurl
|
, fetchurl ? pkgs.fetchurl
|
||||||
, buildPythonPackage ? pkgs.python311Packages.buildPythonPackage
|
, buildPythonPackage ? pkgs.python311Packages.buildPythonPackage
|
||||||
}:
|
}:
|
||||||
let
|
|
||||||
version = "0.21.4"; # this needs to be fetched from github to get the latest
|
|
||||||
in
|
|
||||||
buildPythonPackage {
|
buildPythonPackage {
|
||||||
pname = "shandy-sqlfmt";
|
pname = "shandy-sqlfmt";
|
||||||
|
version = "0.21.3";
|
||||||
format = "wheel";
|
format = "wheel";
|
||||||
version = version;
|
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/tconbeer/sqlfmt/releases/download/v${version}/shandy_sqlfmt-${version}-py3-none-any.whl";
|
url = "https://github.com/tconbeer/sqlfmt/releases/download/v0.21.3/shandy_sqlfmt-0.21.3-py3-none-any.whl";
|
||||||
sha256 = "sha256-mS8afZtQxN/blaVgG2cBD/wnRZGxAwQWPJqtTji1IJk=";
|
sha256 = "sha256-gb/gLAcGD7F/0LL6WllfX1CW4Tug//jNDA0v9O5tedA=";
|
||||||
};
|
};
|
||||||
|
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
|
@ -45,7 +45,7 @@ echo "Creating '$hostname' ssh keys"
|
||||||
ssh-keygen -t ed25519 -f "$temp$persist/etc/ssh/ssh_host_ed25519_key" -C root@"$hostname" -N ""
|
ssh-keygen -t ed25519 -f "$temp$persist/etc/ssh/ssh_host_ed25519_key" -C root@"$hostname" -N ""
|
||||||
|
|
||||||
# Extract luks key from secrets
|
# Extract luks key from secrets
|
||||||
luks_secret=$(nix-shell -p sops --run "SOPS_AGE_KEY_FILE=~/.config/sops/age/keys.txt sops -d --extract '[""\"luks_passphrase""\"][""\"$hostname""\"]' ~/.local/share/src/nix-secrets/secrets.yaml")
|
luks_secret=$(nix-shell -p sops --run "SOPS_AGE_KEY_FILE=~/.config/sops/age/keys.txt sops -d --extract '[""\"luks_passphrase""\"][""\"$hostname""\"]' ../nix-secrets/secrets.yaml")
|
||||||
echo "$luks_secret" > /tmp/luks_secret.key
|
echo "$luks_secret" > /tmp/luks_secret.key
|
||||||
|
|
||||||
# Generate age key from target host and user public ssh key
|
# Generate age key from target host and user public ssh key
|
||||||
|
@ -54,7 +54,7 @@ HOST_AGE_KEY=$(nix-shell -p ssh-to-age --run "cat $temp$persist/etc/ssh/ssh_host
|
||||||
echo -e "Host age key:\n$HOST_AGE_KEY\n"
|
echo -e "Host age key:\n$HOST_AGE_KEY\n"
|
||||||
|
|
||||||
# Update .sops.yaml with new age key:
|
# Update .sops.yaml with new age key:
|
||||||
SOPS_FILE="$HOME/.local/share/src/nix-secrets/.sops.yaml"
|
SOPS_FILE="../nix-secrets/.sops.yaml"
|
||||||
sed -i "{
|
sed -i "{
|
||||||
# Remove any * and & entries for this host
|
# Remove any * and & entries for this host
|
||||||
/[*&]$hostname/ d;
|
/[*&]$hostname/ d;
|
||||||
|
@ -63,14 +63,13 @@ sed -i "{
|
||||||
/age:/{n; p; s/\(.*- \*\).*/\1$hostname/};
|
/age:/{n; p; s/\(.*- \*\).*/\1$hostname/};
|
||||||
# Inject a new hosts: entry
|
# Inject a new hosts: entry
|
||||||
/&hosts:/{n; p; s/\(.*- &\).*/\1$hostname $HOST_AGE_KEY/}
|
/&hosts:/{n; p; s/\(.*- &\).*/\1$hostname $HOST_AGE_KEY/}
|
||||||
}" "$SOPS_FILE"
|
}" $SOPS_FILE
|
||||||
|
|
||||||
# Commit and push changes to sops file
|
# Commit and push changes to sops file
|
||||||
just update-sops-secrets && just update-flake-secrets && just update-flake
|
just update-sops-secrets && just update-flake-secrets && just update-flake
|
||||||
|
|
||||||
# Copy current nix config over to target
|
# Copy current nix config over to target
|
||||||
echo "copying current nix config to host"
|
cp -prv . "$temp$persist/etc/nixos"
|
||||||
cp -pr . "$temp$persist/etc/nixos"
|
|
||||||
|
|
||||||
# Install Nixos to target
|
# Install Nixos to target
|
||||||
SHELL=/bin/sh nix run github:nix-community/nixos-anywhere/1.3.0 -- --extra-files "$temp" --disk-encryption-keys /tmp/luks_secret.key /tmp/luks_secret.key --flake .#"$config" root@"$ip" -i "$HOME/.ssh/id_ed25519"
|
SHELL=/bin/sh nix run github:nix-community/nixos-anywhere/1.3.0 -- --extra-files "$temp" --disk-encryption-keys /tmp/luks_secret.key /tmp/luks_secret.key --flake .#"$config" root@"$ip" -i "$HOME/.ssh/id_ed25519"
|
||||||
|
|
Loading…
Reference in New Issue